Bläddra i källkod

添加iot调试工具模块

fengyanjie 4 år sedan
förälder
incheckning
c762c905d2

+ 59 - 0
iot-admin/pom.xml

@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>dmp</artifactId>
+        <groupId>com.persagy</groupId>
+        <version>4.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.persagy</groupId>
+    <artifactId>iot-admin</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.persagy</groupId>
+            <artifactId>dmp-common</artifactId>
+            <version>4.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>iot-admin</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <fork>true</fork>
+                    <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 36 - 0
iot-admin/src/main/java/com/persagy/dmp/admin/IotAdminApp.java

@@ -0,0 +1,36 @@
+package com.persagy.dmp.admin;
+
+import com.persagy.dmp.common.SpringUtils;
+import com.persagy.dmp.common.http.HttpUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.annotation.Bean;
+
+/**
+ * @author: yaoll
+ * @date: 2020-12-29
+ * @verison: 1.0
+ */
+@Slf4j
+@SpringBootApplication
+public class IotAdminApp {
+
+    public static void main(String[] args) {
+        SpringApplication app = new SpringApplication(IotAdminApp.class);
+        ConfigurableApplicationContext ctx = app.run(args);
+
+    }
+
+    @Bean
+    public HttpUtils httpUtils() {
+        return new HttpUtils();
+    }
+
+    @Bean
+    public SpringUtils springUtils() {
+        return new SpringUtils();
+    }
+
+}

+ 78 - 0
iot-admin/src/main/java/com/persagy/dmp/admin/controller/DmpGatewayController.java

@@ -0,0 +1,78 @@
+package com.persagy.dmp.admin.controller;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.persagy.common.web.ServletUtils;
+import com.persagy.dmp.common.http.HttpUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * @author: yaoll
+ * @date: 2020-12-29
+ * @verison: 1.0
+ */
+@RestController
+@RequestMapping("/admin/dmp")
+public class DmpGatewayController {
+
+    @Autowired
+    private HttpUtils httpUtils;
+
+    @PostMapping("/report/**")
+    public void report(HttpServletRequest request, HttpServletResponse response, @RequestBody JsonNode param) {
+        dispatch(request, response, param);
+    }
+
+    @PostMapping("/dic/**")
+    public void dic(HttpServletRequest request, HttpServletResponse response, @RequestBody JsonNode param) {
+        dispatch(request, response, param);
+    }
+
+    @PostMapping("/org/**")
+    public void org(HttpServletRequest request, HttpServletResponse response, @RequestBody JsonNode param) {
+        dispatch(request, response, param);
+    }
+
+    @PostMapping("/rwd/**")
+    public void rwd(HttpServletRequest request, HttpServletResponse response, @RequestBody JsonNode param) {
+        dispatch(request, response, param);
+    }
+
+    private void dispatch(HttpServletRequest request, HttpServletResponse response, @RequestBody JsonNode param) {
+        Map<String, String[]> parameterMap = request.getParameterMap();
+        String[] dmpServers = parameterMap.get("dmpServer");
+        if (dmpServers == null) {
+            return;
+        }
+        StringBuilder url = new StringBuilder(dmpServers[0]);
+        String uri = request.getRequestURI().replace("/admin/dmp", "");
+        url.append(uri);
+        String queryString = request.getQueryString();
+        if (!"/rwd/def/class".equalsIgnoreCase(uri) && !"/rwd/def/funcid".equalsIgnoreCase(uri)) {
+            queryString = appendParamIfNotExists(queryString, "appId", "iotTool");
+            queryString = appendParamIfNotExists(queryString, "userId", "admin");
+        }
+        url.append("?").append(queryString);
+
+        HttpUtils.HttpResult post = httpUtils.post(url.toString(), param.toString(), 30000);
+        String content = post.getContent();
+        ServletUtils.writeJson(response, content);
+    }
+
+    private String appendParamIfNotExists(String queryString, String key, String value) {
+        if (queryString == null) {
+            return key + "=" + value;
+        } else {
+            return queryString + "&" + key + "=" + value;
+        }
+    }
+
+}

+ 5 - 0
iot-admin/src/main/resources/application-aliyun-test.yml

@@ -0,0 +1,5 @@
+server:
+  port: 8837
+spring:
+  application:
+    name: iot-admin

+ 2 - 0
iot-admin/src/main/resources/application-dev.yml

@@ -0,0 +1,2 @@
+server:
+  port: 8837

+ 5 - 0
iot-admin/src/main/resources/application-test.yml

@@ -0,0 +1,5 @@
+server:
+  port: 8837
+spring:
+  application:
+    name: iot-admin

+ 8 - 0
iot-admin/src/main/resources/application.yml

@@ -0,0 +1,8 @@
+server:
+  port: 8837
+spring:
+  application:
+    name: iot-admin
+  profiles:
+    active:
+    - dev,log-dev

+ 55 - 0
iot-admin/src/main/resources/logback-spring.xml

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+
+    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
+    <property name="log_pattern" value="%-30thread %d{yyyyMMdd HH:mm:ss.SSS} %-5level %logger{140} - %msg%n"/>
+    <property name="app_name" value="admin"/>
+    <springProperty scope="context" name="log_path" source="persagy.log.path"/>
+    <property name="log_file" value="${log_path}/${app_name}"/>
+    <contextName>${app_name}</contextName>
+
+    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <pattern>${log_pattern}</pattern>
+        </layout>
+    </appender>
+
+    <!-- 日志文件 -->
+    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log_file}-%d{yyyyMMdd}.log</fileNamePattern>
+            <maxHistory>7</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log_pattern}</pattern>
+        </encoder>
+    </appender>
+
+    <logger name="org.hibernate" level="INFO"/>
+    <logger name="org.springframework" level="INFO"/>
+    <logger name="com.netflix" level="WARN"/>
+    <logger name="org.apache.http" level="INFO"/>
+
+    <springProfile name="log-dev">
+        <logger name="org.hibernate.SQL" level="DEBUG"/>
+        <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
+        <root level="info">
+            <appender-ref ref="stdout"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="log-test">
+        <logger name="org.hibernate.SQL" level="DEBUG"/>
+        <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
+        <root level="info">
+            <appender-ref ref="file"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="log-prod">
+        <root level="info">
+            <appender-ref ref="file"/>
+        </root>
+    </springProfile>
+
+</configuration>