From 301ac7fa6f583f19b4f4a97bd9b469049b5ff10a Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 15 七月 2025 17:22:50 +0800
Subject: [PATCH] 添加3个模块

---
 se-publish/src/main/resources/banner.txt                                        |    9 
 se-publish/src/main/java/com/terra/publish/controller/TestController.java       |   29 
 se-publish/src/main/resources/bootstrap.yml                                     |   31 
 se-discover/src/main/java/com/terra/discover/controller/TestController.java     |   29 
 se-discover/src/main/java/com/terra/discover/controller/all/BaseController.java |   44 +
 sm.txt                                                                          |   28 
 se-discover/src/main/resources/mybatis.xml                                      |   37 +
 se-discover/src/main/resources/banner.txt                                       |   10 
 se-collect/src/main/java/com/terra/collect/controller/all/BaseController.java   |   44 +
 se-collect/src/main/resources/logback.xml                                       |   74 ++
 se-collect/src/main/resources/bootstrap.yml                                     |   31 
 se-discover/src/main/resources/logback.xml                                      |   74 ++
 se-publish/src/main/java/com/terra/publish/controller/all/BaseController.java   |   44 +
 se-discover/pom.xml                                                             |  239 ++++++
 se-collect/src/main/resources/mybatis.xml                                       |   37 +
 se-discover/src/main/resources/bootstrap.yml                                    |   31 
 se-publish/src/main/java/com/terra/publish/entity/all/ResponseMsg.java          |  107 ++
 se-collect/src/main/resources/banner.txt                                        |    8 
 se-publish/src/main/java/com/terra/publish/SePublishApp.java                    |   20 
 se-collect/src/main/java/com/terra/collect/entity/all/HttpStatus.java           |  104 ++
 se-collect/src/main/java/com/terra/collect/SeCollectApp.java                    |   20 
 se-publish/src/main/java/com/terra/publish/entity/all/HttpStatus.java           |  104 ++
 se-collect/src/main/java/com/terra/collect/controller/TestController.java       |   29 
 se-publish/pom.xml                                                              |  239 ++++++
 se-discover/src/main/java/com/terra/discover/SeDiscoverApp.java                 |   20 
 se-discover/src/main/java/com/terra/discover/entity/all/HttpStatus.java         |  104 ++
 se-publish/src/main/resources/logback.xml                                       |   74 ++
 se-collect/pom.xml                                                              |  239 ++++++
 se-discover/src/main/java/com/terra/discover/entity/all/ResponseMsg.java        |  107 ++
 se-publish/src/main/resources/mybatis.xml                                       |   37 +
 se-collect/src/main/java/com/terra/collect/entity/all/ResponseMsg.java          |  107 ++
 31 files changed, 2,095 insertions(+), 15 deletions(-)

diff --git a/se-collect/pom.xml b/se-collect/pom.xml
new file mode 100644
index 0000000..0ea80c2
--- /dev/null
+++ b/se-collect/pom.xml
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>com.terra</groupId>
+        <artifactId>terra</artifactId>
+        <version>1.0.2</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+	
+    <artifactId>se-collect</artifactId>
+
+    <description>
+        鏁版嵁姹囬泦
+    </description>
+	
+    <dependencies>
+    	
+    	<!-- SpringCloud Alibaba Nacos -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+        
+        <!-- SpringCloud Alibaba Nacos Config -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+        
+    	<!-- SpringCloud Alibaba Sentinel -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
+
+
+
+        <!-- SpringBoot Web -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <!--lombok-->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <!--mybatis-plus-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.1</version>
+        </dependency>
+
+        <!--redis-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+
+        <!--postgresql-->
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-pool2</artifactId>
+        </dependency>
+
+        <!--aop-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+        </dependency>
+
+        <!--fastjson-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.47</version>
+        </dependency>
+
+        <!--鏁村悎druid鏁版嵁婧�-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+            <version>1.2.25</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+            <version>1.2.25</version>
+        </dependency>
+
+        <!--text-->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-text</artifactId>
+            <version>1.1</version>
+        </dependency>
+
+        <!--swagger-->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>27.0-jre</version>
+        </dependency>
+
+        <!--httpclient-->
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+        </dependency>
+
+        <!--websocket-->
+        <dependency>
+            <groupId>javax.websocket</groupId>
+            <artifactId>javax.websocket-api</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+
+        <!--hutool-->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.7.20</version>
+        </dependency>
+
+        <!--commons-fileupload-->
+        <dependency>
+            <groupId>commons-fileupload</groupId>
+            <artifactId>commons-fileupload</artifactId>
+            <version>1.4</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.11.0</version>
+        </dependency>
+
+        <!--gdal-->
+        <dependency>
+            <groupId>org.gdal</groupId>
+            <artifactId>gdal</artifactId>
+            <version>3.2.0</version>
+        </dependency>
+
+        <!--zip4j-->
+        <dependency>
+            <groupId>net.lingala.zip4j</groupId>
+            <artifactId>zip4j</artifactId>
+            <version>2.6.4</version>
+        </dependency>
+
+        <!--easyexcel-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>2.2.10</version>
+        </dependency>
+
+        <!--servlet-->
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>3.1.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!--apache.poi-->
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>3.16</version>
+        </dependency>
+
+        <!--proj4j-->
+        <dependency>
+            <groupId>org.osgeo</groupId>
+            <artifactId>proj4j</artifactId>
+            <version>0.1.0</version>
+        </dependency>
+
+        <!--JTS-->
+        <dependency>
+            <groupId>org.locationtech.jts</groupId>
+            <artifactId>jts-core</artifactId>
+            <version>1.19.0</version>
+        </dependency>
+
+        <!-- se-common -->
+        <dependency>
+            <groupId>com.terra</groupId>
+            <artifactId>se-common</artifactId>
+            <version>1.0.2</version>
+            <scope>compile</scope>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+   
+</project>
\ No newline at end of file
diff --git a/se-collect/src/main/java/com/terra/collect/SeCollectApp.java b/se-collect/src/main/java/com/terra/collect/SeCollectApp.java
new file mode 100644
index 0000000..d8287b8
--- /dev/null
+++ b/se-collect/src/main/java/com/terra/collect/SeCollectApp.java
@@ -0,0 +1,20 @@
+package com.terra.collect;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.scheduling.annotation.EnableAsync;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@EnableAsync
+@EnableSwagger2
+@EnableAspectJAutoProxy(exposeProxy = true)
+@SpringBootApplication(scanBasePackages = {"com.terra.collect.*"})
+public class SeCollectApp
+{
+    public static void main(String[] args)
+    {
+        SpringApplication.run(SeCollectApp.class, args);
+        System.out.println("----------鏁版嵁姹囬泦鍚姩鎴愬姛----------  \n");
+    }
+}
diff --git a/se-collect/src/main/java/com/terra/collect/controller/TestController.java b/se-collect/src/main/java/com/terra/collect/controller/TestController.java
new file mode 100644
index 0000000..838127a
--- /dev/null
+++ b/se-collect/src/main/java/com/terra/collect/controller/TestController.java
@@ -0,0 +1,29 @@
+package com.terra.collect.controller;
+
+import com.terra.collect.controller.all.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+import com.terra.collect.entity.all.ResponseMsg;
+import java.util.Date;
+
+import java.text.SimpleDateFormat;
+
+@Api(tags = "鏁版嵁姹囬泦\\娴嬭瘯鏈嶅姟")
+@RestController
+@RequestMapping("/test")
+public class TestController extends BaseController {
+    public static final SimpleDateFormat YMDHMS_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    @ApiOperation(value = "Test")
+    @GetMapping(value = "/test")
+    public ResponseMsg<Object> test() {
+        try {
+            String date = YMDHMS_FORMAT.format(new Date());
+
+            return success(date);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+}
diff --git a/se-collect/src/main/java/com/terra/collect/controller/all/BaseController.java b/se-collect/src/main/java/com/terra/collect/controller/all/BaseController.java
new file mode 100644
index 0000000..0b7fe53
--- /dev/null
+++ b/se-collect/src/main/java/com/terra/collect/controller/all/BaseController.java
@@ -0,0 +1,44 @@
+package com.terra.collect.controller.all;
+
+import com.terra.collect.entity.all.HttpStatus;
+import com.terra.collect.entity.all.ResponseMsg;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Controller鍩虹被
+ * @author WWW
+ */
+public class BaseController {
+    public Log log = LogFactory.getLog(getClass());
+
+    public <T> ResponseMsg<T> success(T result) {
+        return new ResponseMsg<T>(HttpStatus.OK, result);
+    }
+
+    public <T> ResponseMsg<T> success(String msg, T result) {
+        return new ResponseMsg<T>(HttpStatus.OK, msg, result);
+    }
+
+    public <T> ResponseMsg<T> success(long count, T result) {
+        return new ResponseMsg<T>(HttpStatus.OK, count, result);
+    }
+
+    public <T> ResponseMsg<T> success(String msg, long count, T result) {
+        return new ResponseMsg<T>(HttpStatus.OK, msg, count, result);
+    }
+
+    public <T> ResponseMsg<T> fail(T result) {
+        return new ResponseMsg<T>(HttpStatus.ERROR, result);
+    }
+
+    public <T> ResponseMsg<T> fail(String msg, T result) {
+        return new ResponseMsg<T>(HttpStatus.ERROR, msg, result);
+    }
+
+    public <T> ResponseMsg<T> fail(Exception ex, T result) {
+        log.error(ex.getMessage(), ex);
+
+        return new ResponseMsg<T>(HttpStatus.ERROR, ex.getMessage(), result);
+    }
+}
diff --git a/se-collect/src/main/java/com/terra/collect/entity/all/HttpStatus.java b/se-collect/src/main/java/com/terra/collect/entity/all/HttpStatus.java
new file mode 100644
index 0000000..de74e60
--- /dev/null
+++ b/se-collect/src/main/java/com/terra/collect/entity/all/HttpStatus.java
@@ -0,0 +1,104 @@
+package com.terra.collect.entity.all;
+
+/**
+ * Http鐘舵�佺爜绫�
+ * @author WWW
+ */
+public enum HttpStatus {
+    /**
+     * 璇锋眰鎴愬姛
+     */
+    OK(200,"璇锋眰鎴愬姛"),
+
+    /**
+     * 璇锋眰鏃犳晥
+     */
+    BAD_REQUEST(400,"璇锋眰鏃犳晥"),
+
+    /**
+     * 鏈粡鎺堟潈璁块棶
+     */
+    UNAUTHORIZED(401,"鏈粡鎺堟潈璁块棶"),
+
+    /**
+     * 鏈嶅姟璇锋眰鏈壘鍒�
+     */
+    NOT_FOUND(404,"鏈嶅姟璇锋眰鏈壘鍒�"),
+
+    /**
+     * 绯荤粺閿欒
+     */
+    ERROR(500,"绯荤粺閿欒"),
+
+    /**
+     * 瀛樺湪閲嶅鐨勬暟鎹�
+     */
+    UNIQUE_ERROR(500100,"瀛樺湪閲嶅鐨勬暟鎹�"),
+
+    /**
+     * 鍙傛暟鏍¢獙閿欒
+     */
+    VALIDATE_ERROR(500101,"鍙傛暟鏍¢獙閿欒"),
+
+    /**
+     * token閿欒
+     */
+    TOKEN_ERROR(500102,"token閿欒"),
+
+    /**
+     * 鐢ㄦ埛鏈櫥闄�
+     */
+    NO_LOGIN_ERROR(500104,"鐢ㄦ埛鏈櫥闄�"),
+
+    /**
+     * 鐧婚檰澶辫触
+     */
+    LOGIN_ERROR(500105,"鐧婚檰澶辫触"),
+
+    /**
+     * 鏃犳潈闄愯闂�
+     */
+    NO_AUTH_ERROR(500106,"鏃犳潈闄愯闂�"),
+
+    /**
+     * 鐢ㄦ埛鍚嶉敊璇�
+     */
+    LOGIN_USER_ERROR(500107,"鐢ㄦ埛鍚嶉敊璇�"),
+
+    /**
+     * 瀵嗙爜閿欒
+     */
+    LOGIN_PWD_ERROR(500108,"瀵嗙爜閿欒"),
+
+    /**
+     * 鐢ㄦ埛琚攣瀹�
+     */
+    USER_LOCK_ERROR(500109,"鐢ㄦ埛琚攣瀹�"),
+
+    /**
+     * 瀵嗙爜涓嶅悎瑙勮寖
+     */
+    PWD_NONSTANDARD(500111,"瀵嗙爜涓嶅悎瑙勮寖"),
+
+    /**
+     * 瀵嗙爜杩囨湡
+     */
+    LOGIN_PWD_EXPIRE(500116,"瀵嗙爜杩囨湡");
+
+    private HttpStatus(int value, String msg) {
+        this.value = value;
+        this.msg = msg;
+    }
+
+    private int value;
+
+    private String msg;
+
+    public int getValue() {
+        return value;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}
diff --git a/se-collect/src/main/java/com/terra/collect/entity/all/ResponseMsg.java b/se-collect/src/main/java/com/terra/collect/entity/all/ResponseMsg.java
new file mode 100644
index 0000000..709ab69
--- /dev/null
+++ b/se-collect/src/main/java/com/terra/collect/entity/all/ResponseMsg.java
@@ -0,0 +1,107 @@
+package com.terra.collect.entity.all;
+
+/**
+ * 鍝嶅簲娑堟伅绫�
+ * @author www
+ * @param <T> 娉涘瀷
+ */
+public class ResponseMsg<T> {
+    public ResponseMsg() {
+        this.time = System.currentTimeMillis();
+    }
+
+    public ResponseMsg(HttpStatus code, T result) {
+        this.code = code.getValue();
+        this.msg = this.code == 200 ? "鎴愬姛" : "澶辫触";
+        this.result = result;
+        this.time = System.currentTimeMillis();
+    }
+
+    public ResponseMsg(HttpStatus code, String msg, T result) {
+        this.code = code.getValue();
+        this.msg = msg;
+        this.result = result;
+        this.time = System.currentTimeMillis();
+    }
+
+    public ResponseMsg(int code, String msg, T result, long time) {
+        this.code = code;
+        this.msg = msg;
+        this.result = result;
+        this.time = time;
+    }
+
+    public ResponseMsg(HttpStatus code, long count, T result) {
+        this.code = code.getValue();
+        this.msg = this.code == 200 ? "鎴愬姛" : "澶辫触";
+        this.count = count;
+        this.result = result;
+        this.time = System.currentTimeMillis();
+    }
+
+    public ResponseMsg(HttpStatus code, String msg, long count, T result) {
+        this.code = code.getValue();
+        this.msg = msg;
+        this.count = count;
+        this.result = result;
+        this.time = System.currentTimeMillis();
+    }
+
+    public ResponseMsg(int code, String msg, long count, T result, long time) {
+        this.code = code;
+        this.msg = msg;
+        this.count = count;
+        this.result = result;
+        this.time = time;
+    }
+
+    private int code;
+
+    private String msg;
+
+    private long count;
+
+    private T result;
+
+    private long time;
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public long getCount() {
+        return count;
+    }
+
+    public void setCount(long count) {
+        this.count = count;
+    }
+
+    public T getResult() {
+        return result;
+    }
+
+    public void setResult(T result) {
+        this.result = result;
+    }
+
+    public long getTime() {
+        return time;
+    }
+
+    public void setTime(long time) {
+        this.time = time;
+    }
+}
diff --git a/se-collect/src/main/resources/banner.txt b/se-collect/src/main/resources/banner.txt
new file mode 100644
index 0000000..02ee55d
--- /dev/null
+++ b/se-collect/src/main/resources/banner.txt
@@ -0,0 +1,8 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
+  _____      _ _           _
+ / ____|    | | |         | |
+| |     ___ | | | ___  ___| |_
+| |    / _ \| | |/ _ \/ __| __|
+| |___| (_) | | |  __/ (__| |_
+ \_____\___/|_|_|\___|\___|\__|
\ No newline at end of file
diff --git a/se-collect/src/main/resources/bootstrap.yml b/se-collect/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..1992d76
--- /dev/null
+++ b/se-collect/src/main/resources/bootstrap.yml
@@ -0,0 +1,31 @@
+# Tomcat
+server:
+  port: 8003
+
+# Spring
+spring: 
+  application:
+    # 搴旂敤鍚嶇О
+    name: se-collect
+  profiles:
+    # 鐜閰嶇疆
+    active: dev
+  cloud:
+    nacos:
+      username: nacos
+      password: nAcos_!9#_admIn
+      discovery:
+        # 鏈嶅姟娉ㄥ唽鍦板潃
+        server-addr: 127.0.0.1:8848
+      config:
+        group: JHS_GROUP
+        # 閰嶇疆涓績鍦板潃
+        server-addr: 127.0.0.1:8848
+        # 閰嶇疆鏂囦欢鏍煎紡
+        file-extension: yml
+        # 鍏变韩閰嶇疆
+        shared-configs:
+          - data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+            group: JHS_GROUP
+        # 鍏佽鍒锋柊
+        refresh-enabled: true
diff --git a/se-collect/src/main/resources/logback.xml b/se-collect/src/main/resources/logback.xml
new file mode 100644
index 0000000..f1bd416
--- /dev/null
+++ b/se-collect/src/main/resources/logback.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+    <!-- 鏃ュ織瀛樻斁璺緞 -->
+    <property name="log.path" value="logs/se-collect" />
+    <!-- 鏃ュ織杈撳嚭鏍煎紡 -->
+    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
+
+    <!-- 鎺у埗鍙拌緭鍑� -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- 绯荤粺鏃ュ織杈撳嚭 -->
+    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/info.log</file>
+        <!-- 寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠� -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 鏃ュ織鏂囦欢鍚嶆牸寮� -->
+            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 鏃ュ織鏈�澶х殑鍘嗗彶 60澶� -->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 杩囨护鐨勭骇鍒� -->
+            <level>INFO</level>
+            <!-- 鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛� -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛� -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/error.log</file>
+        <!-- 寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠� -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 鏃ュ織鏂囦欢鍚嶆牸寮� -->
+            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 鏃ュ織鏈�澶х殑鍘嗗彶 60澶� -->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 杩囨护鐨勭骇鍒� -->
+            <level>ERROR</level>
+            <!-- 鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛� -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛� -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 绯荤粺妯″潡鏃ュ織绾у埆鎺у埗  -->
+    <logger name="com.terra" level="info" />
+    <!-- Spring鏃ュ織绾у埆鎺у埗  -->
+    <logger name="org.springframework" level="warn" />
+
+    <root level="info">
+        <appender-ref ref="console" />
+    </root>
+
+    <!--绯荤粺鎿嶄綔鏃ュ織-->
+    <root level="info">
+        <appender-ref ref="file_info" />
+        <appender-ref ref="file_error" />
+    </root>
+</configuration>
\ No newline at end of file
diff --git a/se-collect/src/main/resources/mybatis.xml b/se-collect/src/main/resources/mybatis.xml
new file mode 100644
index 0000000..df5e6f4
--- /dev/null
+++ b/se-collect/src/main/resources/mybatis.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE configuration
+        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-config.dtd">
+<configuration>
+    <settings>
+        <!--閰嶇疆褰卞搷鎵�鏈夋槧灏勫櫒涓厤缃紦瀛�-->
+        <setting name="cacheEnabled" value="true"/>
+        <!--寤惰繜鍔犺浇-->
+        <setting name="lazyLoadingEnabled" value="true"/>
+        <!--鏄惁鍏佽鍗曚竴璇彞杩斿洖澶氱粨鏋滈泦-->
+        <setting name="multipleResultSetsEnabled" value="true"/>
+        <!--浣跨敤鍒楁爣绛句唬鏇垮垪鍚�-->
+        <setting name="useColumnLabel" value="true"/>
+        <!--鍏佽JDBC 鏀寔鑷姩鐢熸垚涓婚敭-->
+        <setting name="useGeneratedKeys" value="false"/>
+        <!--璁剧疆SQL瓒呮椂鏃堕棿锛岀-->
+        <setting name="defaultStatementTimeout" value="360"/>
+        <!--榛樿杩斿洖鐨勬潯鏁伴檺鍒�-->
+        <setting name="defaultFetchSize" value="1000"/>
+        <!--鏄惁寮�鍚嚜鍔ㄩ┘宄板懡鍚嶈鍒欐槧灏勶紝鍗充粠缁忓吀鏁版嵁搴撳垪鍚� A_COLUMN 鍒扮粡鍏� Java 灞炴�у悕 aColumn 鐨勭被浼兼槧灏�-->
+        <setting name="mapUnderscoreToCamelCase" value="true"/>
+        <!--MyBatis 鍒╃敤鏈湴缂撳瓨鏈哄埗锛圠ocal Cache锛夐槻姝㈠惊鐜紩鐢紙circular references锛夊拰鍔犻�熻仈澶嶅祵濂楁熁璇€��-->
+        <setting name="localCacheScope" value="SESSION"/>
+        <!--褰撴病鏈変负鍙傛暟鎻愪緵鐗瑰畾鐨� JDBC 绫诲瀷鏃讹紝涓虹┖鍊兼寚瀹� JDBC 绫诲瀷-->
+        <setting name="jdbcTypeForNull" value="NULL"/>
+        <!--鎸囧畾鍝釜瀵硅薄鐨勬柟娉曡Е鍙戜竴娆″欢杩熷姞杞�-->
+        <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
+        <!--鎸囧畾褰撶粨鏋滈泦涓�间负 null 鏃讹紝鏄惁璋冪敤鏄犲皠瀵硅薄鐨� setter锛坢ap 瀵硅薄鏃朵负 put锛夋柟娉�-->
+        <setting name="callSettersOnNulls" value="true"/>
+        <!--鎸囧畾 MyBatis 鎵�鐢ㄦ棩蹇楃殑鍏蜂綋瀹炵幇锛歀OG4J/LOG4J2/SLF4J/STDOUT_LOGGING/NO_LOGGING-->
+        <setting name="logImpl" value="NO_LOGGING" />
+    </settings>
+    <typeAliases>
+        <package name="com.terra.collect.entity"/>
+    </typeAliases>
+</configuration>
\ No newline at end of file
diff --git a/se-discover/pom.xml b/se-discover/pom.xml
new file mode 100644
index 0000000..9d43166
--- /dev/null
+++ b/se-discover/pom.xml
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>com.terra</groupId>
+        <artifactId>terra</artifactId>
+        <version>1.0.2</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+	
+    <artifactId>se-discover</artifactId>
+
+    <description>
+        鐭ヨ瘑鍙戠幇
+    </description>
+	
+    <dependencies>
+    	
+    	<!-- SpringCloud Alibaba Nacos -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+        
+        <!-- SpringCloud Alibaba Nacos Config -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+        
+    	<!-- SpringCloud Alibaba Sentinel -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
+
+
+
+        <!-- SpringBoot Web -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <!--lombok-->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <!--mybatis-plus-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.1</version>
+        </dependency>
+
+        <!--redis-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+
+        <!--postgresql-->
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-pool2</artifactId>
+        </dependency>
+
+        <!--aop-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+        </dependency>
+
+        <!--fastjson-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.47</version>
+        </dependency>
+
+        <!--鏁村悎druid鏁版嵁婧�-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+            <version>1.2.25</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+            <version>1.2.25</version>
+        </dependency>
+
+        <!--text-->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-text</artifactId>
+            <version>1.1</version>
+        </dependency>
+
+        <!--swagger-->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>27.0-jre</version>
+        </dependency>
+
+        <!--httpclient-->
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+        </dependency>
+
+        <!--websocket-->
+        <dependency>
+            <groupId>javax.websocket</groupId>
+            <artifactId>javax.websocket-api</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+
+        <!--hutool-->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.7.20</version>
+        </dependency>
+
+        <!--commons-fileupload-->
+        <dependency>
+            <groupId>commons-fileupload</groupId>
+            <artifactId>commons-fileupload</artifactId>
+            <version>1.4</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.11.0</version>
+        </dependency>
+
+        <!--gdal-->
+        <dependency>
+            <groupId>org.gdal</groupId>
+            <artifactId>gdal</artifactId>
+            <version>3.2.0</version>
+        </dependency>
+
+        <!--zip4j-->
+        <dependency>
+            <groupId>net.lingala.zip4j</groupId>
+            <artifactId>zip4j</artifactId>
+            <version>2.6.4</version>
+        </dependency>
+
+        <!--easyexcel-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>2.2.10</version>
+        </dependency>
+
+        <!--servlet-->
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>3.1.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!--apache.poi-->
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>3.16</version>
+        </dependency>
+
+        <!--proj4j-->
+        <dependency>
+            <groupId>org.osgeo</groupId>
+            <artifactId>proj4j</artifactId>
+            <version>0.1.0</version>
+        </dependency>
+
+        <!--JTS-->
+        <dependency>
+            <groupId>org.locationtech.jts</groupId>
+            <artifactId>jts-core</artifactId>
+            <version>1.19.0</version>
+        </dependency>
+
+        <!-- se-common -->
+        <dependency>
+            <groupId>com.terra</groupId>
+            <artifactId>se-common</artifactId>
+            <version>1.0.2</version>
+            <scope>compile</scope>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+   
+</project>
\ No newline at end of file
diff --git a/se-discover/src/main/java/com/terra/discover/SeDiscoverApp.java b/se-discover/src/main/java/com/terra/discover/SeDiscoverApp.java
new file mode 100644
index 0000000..0ae62e7
--- /dev/null
+++ b/se-discover/src/main/java/com/terra/discover/SeDiscoverApp.java
@@ -0,0 +1,20 @@
+package com.terra.discover;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.scheduling.annotation.EnableAsync;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@EnableAsync
+@EnableSwagger2
+@EnableAspectJAutoProxy(exposeProxy = true)
+@SpringBootApplication(scanBasePackages = {"com.terra.discover.*"})
+public class SeDiscoverApp
+{
+    public static void main(String[] args)
+    {
+        SpringApplication.run(SeDiscoverApp.class, args);
+        System.out.println("----------鐭ヨ瘑鍙戠幇鍚姩鎴愬姛----------  \n");
+    }
+}
diff --git a/se-discover/src/main/java/com/terra/discover/controller/TestController.java b/se-discover/src/main/java/com/terra/discover/controller/TestController.java
new file mode 100644
index 0000000..57f27fc
--- /dev/null
+++ b/se-discover/src/main/java/com/terra/discover/controller/TestController.java
@@ -0,0 +1,29 @@
+package com.terra.discover.controller;
+
+import com.terra.discover.controller.all.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+import com.terra.discover.entity.all.ResponseMsg;
+import java.util.Date;
+
+import java.text.SimpleDateFormat;
+
+@Api(tags = "鐭ヨ瘑鍙戠幇\\娴嬭瘯鏈嶅姟")
+@RestController
+@RequestMapping("/test")
+public class TestController extends BaseController {
+    public static final SimpleDateFormat YMDHMS_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    @ApiOperation(value = "Test")
+    @GetMapping(value = "/test")
+    public ResponseMsg<Object> test() {
+        try {
+            String date = YMDHMS_FORMAT.format(new Date());
+
+            return success(date);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+}
diff --git a/se-discover/src/main/java/com/terra/discover/controller/all/BaseController.java b/se-discover/src/main/java/com/terra/discover/controller/all/BaseController.java
new file mode 100644
index 0000000..b9a37ce
--- /dev/null
+++ b/se-discover/src/main/java/com/terra/discover/controller/all/BaseController.java
@@ -0,0 +1,44 @@
+package com.terra.discover.controller.all;
+
+import com.terra.discover.entity.all.HttpStatus;
+import com.terra.discover.entity.all.ResponseMsg;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Controller鍩虹被
+ * @author WWW
+ */
+public class BaseController {
+    public Log log = LogFactory.getLog(getClass());
+
+    public <T> ResponseMsg<T> success(T result) {
+        return new ResponseMsg<T>(HttpStatus.OK, result);
+    }
+
+    public <T> ResponseMsg<T> success(String msg, T result) {
+        return new ResponseMsg<T>(HttpStatus.OK, msg, result);
+    }
+
+    public <T> ResponseMsg<T> success(long count, T result) {
+        return new ResponseMsg<T>(HttpStatus.OK, count, result);
+    }
+
+    public <T> ResponseMsg<T> success(String msg, long count, T result) {
+        return new ResponseMsg<T>(HttpStatus.OK, msg, count, result);
+    }
+
+    public <T> ResponseMsg<T> fail(T result) {
+        return new ResponseMsg<T>(HttpStatus.ERROR, result);
+    }
+
+    public <T> ResponseMsg<T> fail(String msg, T result) {
+        return new ResponseMsg<T>(HttpStatus.ERROR, msg, result);
+    }
+
+    public <T> ResponseMsg<T> fail(Exception ex, T result) {
+        log.error(ex.getMessage(), ex);
+
+        return new ResponseMsg<T>(HttpStatus.ERROR, ex.getMessage(), result);
+    }
+}
diff --git a/se-discover/src/main/java/com/terra/discover/entity/all/HttpStatus.java b/se-discover/src/main/java/com/terra/discover/entity/all/HttpStatus.java
new file mode 100644
index 0000000..0493a47
--- /dev/null
+++ b/se-discover/src/main/java/com/terra/discover/entity/all/HttpStatus.java
@@ -0,0 +1,104 @@
+package com.terra.discover.entity.all;
+
+/**
+ * Http鐘舵�佺爜绫�
+ * @author WWW
+ */
+public enum HttpStatus {
+    /**
+     * 璇锋眰鎴愬姛
+     */
+    OK(200,"璇锋眰鎴愬姛"),
+
+    /**
+     * 璇锋眰鏃犳晥
+     */
+    BAD_REQUEST(400,"璇锋眰鏃犳晥"),
+
+    /**
+     * 鏈粡鎺堟潈璁块棶
+     */
+    UNAUTHORIZED(401,"鏈粡鎺堟潈璁块棶"),
+
+    /**
+     * 鏈嶅姟璇锋眰鏈壘鍒�
+     */
+    NOT_FOUND(404,"鏈嶅姟璇锋眰鏈壘鍒�"),
+
+    /**
+     * 绯荤粺閿欒
+     */
+    ERROR(500,"绯荤粺閿欒"),
+
+    /**
+     * 瀛樺湪閲嶅鐨勬暟鎹�
+     */
+    UNIQUE_ERROR(500100,"瀛樺湪閲嶅鐨勬暟鎹�"),
+
+    /**
+     * 鍙傛暟鏍¢獙閿欒
+     */
+    VALIDATE_ERROR(500101,"鍙傛暟鏍¢獙閿欒"),
+
+    /**
+     * token閿欒
+     */
+    TOKEN_ERROR(500102,"token閿欒"),
+
+    /**
+     * 鐢ㄦ埛鏈櫥闄�
+     */
+    NO_LOGIN_ERROR(500104,"鐢ㄦ埛鏈櫥闄�"),
+
+    /**
+     * 鐧婚檰澶辫触
+     */
+    LOGIN_ERROR(500105,"鐧婚檰澶辫触"),
+
+    /**
+     * 鏃犳潈闄愯闂�
+     */
+    NO_AUTH_ERROR(500106,"鏃犳潈闄愯闂�"),
+
+    /**
+     * 鐢ㄦ埛鍚嶉敊璇�
+     */
+    LOGIN_USER_ERROR(500107,"鐢ㄦ埛鍚嶉敊璇�"),
+
+    /**
+     * 瀵嗙爜閿欒
+     */
+    LOGIN_PWD_ERROR(500108,"瀵嗙爜閿欒"),
+
+    /**
+     * 鐢ㄦ埛琚攣瀹�
+     */
+    USER_LOCK_ERROR(500109,"鐢ㄦ埛琚攣瀹�"),
+
+    /**
+     * 瀵嗙爜涓嶅悎瑙勮寖
+     */
+    PWD_NONSTANDARD(500111,"瀵嗙爜涓嶅悎瑙勮寖"),
+
+    /**
+     * 瀵嗙爜杩囨湡
+     */
+    LOGIN_PWD_EXPIRE(500116,"瀵嗙爜杩囨湡");
+
+    private HttpStatus(int value, String msg) {
+        this.value = value;
+        this.msg = msg;
+    }
+
+    private int value;
+
+    private String msg;
+
+    public int getValue() {
+        return value;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}
diff --git a/se-discover/src/main/java/com/terra/discover/entity/all/ResponseMsg.java b/se-discover/src/main/java/com/terra/discover/entity/all/ResponseMsg.java
new file mode 100644
index 0000000..8bbc6c7
--- /dev/null
+++ b/se-discover/src/main/java/com/terra/discover/entity/all/ResponseMsg.java
@@ -0,0 +1,107 @@
+package com.terra.discover.entity.all;
+
+/**
+ * 鍝嶅簲娑堟伅绫�
+ * @author www
+ * @param <T> 娉涘瀷
+ */
+public class ResponseMsg<T> {
+    public ResponseMsg() {
+        this.time = System.currentTimeMillis();
+    }
+
+    public ResponseMsg(HttpStatus code, T result) {
+        this.code = code.getValue();
+        this.msg = this.code == 200 ? "鎴愬姛" : "澶辫触";
+        this.result = result;
+        this.time = System.currentTimeMillis();
+    }
+
+    public ResponseMsg(HttpStatus code, String msg, T result) {
+        this.code = code.getValue();
+        this.msg = msg;
+        this.result = result;
+        this.time = System.currentTimeMillis();
+    }
+
+    public ResponseMsg(int code, String msg, T result, long time) {
+        this.code = code;
+        this.msg = msg;
+        this.result = result;
+        this.time = time;
+    }
+
+    public ResponseMsg(HttpStatus code, long count, T result) {
+        this.code = code.getValue();
+        this.msg = this.code == 200 ? "鎴愬姛" : "澶辫触";
+        this.count = count;
+        this.result = result;
+        this.time = System.currentTimeMillis();
+    }
+
+    public ResponseMsg(HttpStatus code, String msg, long count, T result) {
+        this.code = code.getValue();
+        this.msg = msg;
+        this.count = count;
+        this.result = result;
+        this.time = System.currentTimeMillis();
+    }
+
+    public ResponseMsg(int code, String msg, long count, T result, long time) {
+        this.code = code;
+        this.msg = msg;
+        this.count = count;
+        this.result = result;
+        this.time = time;
+    }
+
+    private int code;
+
+    private String msg;
+
+    private long count;
+
+    private T result;
+
+    private long time;
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public long getCount() {
+        return count;
+    }
+
+    public void setCount(long count) {
+        this.count = count;
+    }
+
+    public T getResult() {
+        return result;
+    }
+
+    public void setResult(T result) {
+        this.result = result;
+    }
+
+    public long getTime() {
+        return time;
+    }
+
+    public void setTime(long time) {
+        this.time = time;
+    }
+}
diff --git a/se-discover/src/main/resources/banner.txt b/se-discover/src/main/resources/banner.txt
new file mode 100644
index 0000000..d09883a
--- /dev/null
+++ b/se-discover/src/main/resources/banner.txt
@@ -0,0 +1,10 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
+  _____  _     _
+ |  __ \(_)   | |
+ | |  | |_  __| | ___  ___ _ __
+ | |  | | |/ _` |/ _ \/ _ \ '_ \
+ | |__| | | (_| |  __/  __/ |_) |
+ |_____/|_|\__,_|\___|\___| .__/
+                          | |
+                          |_|
\ No newline at end of file
diff --git a/se-discover/src/main/resources/bootstrap.yml b/se-discover/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..8337212
--- /dev/null
+++ b/se-discover/src/main/resources/bootstrap.yml
@@ -0,0 +1,31 @@
+# Tomcat
+server:
+  port: 8004
+
+# Spring
+spring: 
+  application:
+    # 搴旂敤鍚嶇О
+    name: se-discover
+  profiles:
+    # 鐜閰嶇疆
+    active: dev
+  cloud:
+    nacos:
+      username: nacos
+      password: nAcos_!9#_admIn
+      discovery:
+        # 鏈嶅姟娉ㄥ唽鍦板潃
+        server-addr: 127.0.0.1:8848
+      config:
+        group: JHS_GROUP
+        # 閰嶇疆涓績鍦板潃
+        server-addr: 127.0.0.1:8848
+        # 閰嶇疆鏂囦欢鏍煎紡
+        file-extension: yml
+        # 鍏变韩閰嶇疆
+        shared-configs:
+          - data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+            group: JHS_GROUP
+        # 鍏佽鍒锋柊
+        refresh-enabled: true
diff --git a/se-discover/src/main/resources/logback.xml b/se-discover/src/main/resources/logback.xml
new file mode 100644
index 0000000..bc4a65d
--- /dev/null
+++ b/se-discover/src/main/resources/logback.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+    <!-- 鏃ュ織瀛樻斁璺緞 -->
+    <property name="log.path" value="logs/se-discover" />
+    <!-- 鏃ュ織杈撳嚭鏍煎紡 -->
+    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
+
+    <!-- 鎺у埗鍙拌緭鍑� -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- 绯荤粺鏃ュ織杈撳嚭 -->
+    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/info.log</file>
+        <!-- 寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠� -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 鏃ュ織鏂囦欢鍚嶆牸寮� -->
+            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 鏃ュ織鏈�澶х殑鍘嗗彶 60澶� -->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 杩囨护鐨勭骇鍒� -->
+            <level>INFO</level>
+            <!-- 鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛� -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛� -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/error.log</file>
+        <!-- 寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠� -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 鏃ュ織鏂囦欢鍚嶆牸寮� -->
+            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 鏃ュ織鏈�澶х殑鍘嗗彶 60澶� -->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 杩囨护鐨勭骇鍒� -->
+            <level>ERROR</level>
+            <!-- 鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛� -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛� -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 绯荤粺妯″潡鏃ュ織绾у埆鎺у埗  -->
+    <logger name="com.terra" level="info" />
+    <!-- Spring鏃ュ織绾у埆鎺у埗  -->
+    <logger name="org.springframework" level="warn" />
+
+    <root level="info">
+        <appender-ref ref="console" />
+    </root>
+
+    <!--绯荤粺鎿嶄綔鏃ュ織-->
+    <root level="info">
+        <appender-ref ref="file_info" />
+        <appender-ref ref="file_error" />
+    </root>
+</configuration>
\ No newline at end of file
diff --git a/se-discover/src/main/resources/mybatis.xml b/se-discover/src/main/resources/mybatis.xml
new file mode 100644
index 0000000..3526522
--- /dev/null
+++ b/se-discover/src/main/resources/mybatis.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE configuration
+        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-config.dtd">
+<configuration>
+    <settings>
+        <!--閰嶇疆褰卞搷鎵�鏈夋槧灏勫櫒涓厤缃紦瀛�-->
+        <setting name="cacheEnabled" value="true"/>
+        <!--寤惰繜鍔犺浇-->
+        <setting name="lazyLoadingEnabled" value="true"/>
+        <!--鏄惁鍏佽鍗曚竴璇彞杩斿洖澶氱粨鏋滈泦-->
+        <setting name="multipleResultSetsEnabled" value="true"/>
+        <!--浣跨敤鍒楁爣绛句唬鏇垮垪鍚�-->
+        <setting name="useColumnLabel" value="true"/>
+        <!--鍏佽JDBC 鏀寔鑷姩鐢熸垚涓婚敭-->
+        <setting name="useGeneratedKeys" value="false"/>
+        <!--璁剧疆SQL瓒呮椂鏃堕棿锛岀-->
+        <setting name="defaultStatementTimeout" value="360"/>
+        <!--榛樿杩斿洖鐨勬潯鏁伴檺鍒�-->
+        <setting name="defaultFetchSize" value="1000"/>
+        <!--鏄惁寮�鍚嚜鍔ㄩ┘宄板懡鍚嶈鍒欐槧灏勶紝鍗充粠缁忓吀鏁版嵁搴撳垪鍚� A_COLUMN 鍒扮粡鍏� Java 灞炴�у悕 aColumn 鐨勭被浼兼槧灏�-->
+        <setting name="mapUnderscoreToCamelCase" value="true"/>
+        <!--MyBatis 鍒╃敤鏈湴缂撳瓨鏈哄埗锛圠ocal Cache锛夐槻姝㈠惊鐜紩鐢紙circular references锛夊拰鍔犻�熻仈澶嶅祵濂楁熁璇€��-->
+        <setting name="localCacheScope" value="SESSION"/>
+        <!--褰撴病鏈変负鍙傛暟鎻愪緵鐗瑰畾鐨� JDBC 绫诲瀷鏃讹紝涓虹┖鍊兼寚瀹� JDBC 绫诲瀷-->
+        <setting name="jdbcTypeForNull" value="NULL"/>
+        <!--鎸囧畾鍝釜瀵硅薄鐨勬柟娉曡Е鍙戜竴娆″欢杩熷姞杞�-->
+        <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
+        <!--鎸囧畾褰撶粨鏋滈泦涓�间负 null 鏃讹紝鏄惁璋冪敤鏄犲皠瀵硅薄鐨� setter锛坢ap 瀵硅薄鏃朵负 put锛夋柟娉�-->
+        <setting name="callSettersOnNulls" value="true"/>
+        <!--鎸囧畾 MyBatis 鎵�鐢ㄦ棩蹇楃殑鍏蜂綋瀹炵幇锛歀OG4J/LOG4J2/SLF4J/STDOUT_LOGGING/NO_LOGGING-->
+        <setting name="logImpl" value="NO_LOGGING" />
+    </settings>
+    <typeAliases>
+        <package name="com.terra.discover.entity"/>
+    </typeAliases>
+</configuration>
\ No newline at end of file
diff --git a/se-publish/pom.xml b/se-publish/pom.xml
new file mode 100644
index 0000000..9ac6e53
--- /dev/null
+++ b/se-publish/pom.xml
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>com.terra</groupId>
+        <artifactId>terra</artifactId>
+        <version>1.0.2</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+	
+    <artifactId>se-publish</artifactId>
+
+    <description>
+        鏁版嵁鍙戝竷
+    </description>
+	
+    <dependencies>
+    	
+    	<!-- SpringCloud Alibaba Nacos -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+        
+        <!-- SpringCloud Alibaba Nacos Config -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+        
+    	<!-- SpringCloud Alibaba Sentinel -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
+
+
+
+        <!-- SpringBoot Web -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <!--lombok-->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <!--mybatis-plus-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.1</version>
+        </dependency>
+
+        <!--redis-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+
+        <!--postgresql-->
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-pool2</artifactId>
+        </dependency>
+
+        <!--aop-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+        </dependency>
+
+        <!--fastjson-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.47</version>
+        </dependency>
+
+        <!--鏁村悎druid鏁版嵁婧�-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+            <version>1.2.25</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+            <version>1.2.25</version>
+        </dependency>
+
+        <!--text-->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-text</artifactId>
+            <version>1.1</version>
+        </dependency>
+
+        <!--swagger-->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>27.0-jre</version>
+        </dependency>
+
+        <!--httpclient-->
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+        </dependency>
+
+        <!--websocket-->
+        <dependency>
+            <groupId>javax.websocket</groupId>
+            <artifactId>javax.websocket-api</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+
+        <!--hutool-->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.7.20</version>
+        </dependency>
+
+        <!--commons-fileupload-->
+        <dependency>
+            <groupId>commons-fileupload</groupId>
+            <artifactId>commons-fileupload</artifactId>
+            <version>1.4</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.11.0</version>
+        </dependency>
+
+        <!--gdal-->
+        <dependency>
+            <groupId>org.gdal</groupId>
+            <artifactId>gdal</artifactId>
+            <version>3.2.0</version>
+        </dependency>
+
+        <!--zip4j-->
+        <dependency>
+            <groupId>net.lingala.zip4j</groupId>
+            <artifactId>zip4j</artifactId>
+            <version>2.6.4</version>
+        </dependency>
+
+        <!--easyexcel-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>2.2.10</version>
+        </dependency>
+
+        <!--servlet-->
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>3.1.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!--apache.poi-->
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>3.16</version>
+        </dependency>
+
+        <!--proj4j-->
+        <dependency>
+            <groupId>org.osgeo</groupId>
+            <artifactId>proj4j</artifactId>
+            <version>0.1.0</version>
+        </dependency>
+
+        <!--JTS-->
+        <dependency>
+            <groupId>org.locationtech.jts</groupId>
+            <artifactId>jts-core</artifactId>
+            <version>1.19.0</version>
+        </dependency>
+
+        <!-- se-common -->
+        <dependency>
+            <groupId>com.terra</groupId>
+            <artifactId>se-common</artifactId>
+            <version>1.0.2</version>
+            <scope>compile</scope>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+   
+</project>
\ No newline at end of file
diff --git a/se-publish/src/main/java/com/terra/publish/SePublishApp.java b/se-publish/src/main/java/com/terra/publish/SePublishApp.java
new file mode 100644
index 0000000..b4a885b
--- /dev/null
+++ b/se-publish/src/main/java/com/terra/publish/SePublishApp.java
@@ -0,0 +1,20 @@
+package com.terra.publish;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.scheduling.annotation.EnableAsync;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@EnableAsync
+@EnableSwagger2
+@EnableAspectJAutoProxy(exposeProxy = true)
+@SpringBootApplication(scanBasePackages = {"com.terra.publish.*"})
+public class SePublishApp
+{
+    public static void main(String[] args)
+    {
+        SpringApplication.run(SePublishApp.class, args);
+        System.out.println("----------鏁版嵁鍙戝竷鍚姩鎴愬姛----------  \n");
+    }
+}
diff --git a/se-publish/src/main/java/com/terra/publish/controller/TestController.java b/se-publish/src/main/java/com/terra/publish/controller/TestController.java
new file mode 100644
index 0000000..ca65b42
--- /dev/null
+++ b/se-publish/src/main/java/com/terra/publish/controller/TestController.java
@@ -0,0 +1,29 @@
+package com.terra.publish.controller;
+
+import com.terra.publish.controller.all.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+import com.terra.publish.entity.all.ResponseMsg;
+import java.util.Date;
+
+import java.text.SimpleDateFormat;
+
+@Api(tags = "鏁版嵁鍙戝竷\\娴嬭瘯鏈嶅姟")
+@RestController
+@RequestMapping("/test")
+public class TestController extends BaseController {
+    public static final SimpleDateFormat YMDHMS_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    @ApiOperation(value = "Test")
+    @GetMapping(value = "/test")
+    public ResponseMsg<Object> test() {
+        try {
+            String date = YMDHMS_FORMAT.format(new Date());
+
+            return success(date);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+}
diff --git a/se-publish/src/main/java/com/terra/publish/controller/all/BaseController.java b/se-publish/src/main/java/com/terra/publish/controller/all/BaseController.java
new file mode 100644
index 0000000..8f88139
--- /dev/null
+++ b/se-publish/src/main/java/com/terra/publish/controller/all/BaseController.java
@@ -0,0 +1,44 @@
+package com.terra.publish.controller.all;
+
+import com.terra.publish.entity.all.HttpStatus;
+import com.terra.publish.entity.all.ResponseMsg;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Controller鍩虹被
+ * @author WWW
+ */
+public class BaseController {
+    public Log log = LogFactory.getLog(getClass());
+
+    public <T> ResponseMsg<T> success(T result) {
+        return new ResponseMsg<T>(HttpStatus.OK, result);
+    }
+
+    public <T> ResponseMsg<T> success(String msg, T result) {
+        return new ResponseMsg<T>(HttpStatus.OK, msg, result);
+    }
+
+    public <T> ResponseMsg<T> success(long count, T result) {
+        return new ResponseMsg<T>(HttpStatus.OK, count, result);
+    }
+
+    public <T> ResponseMsg<T> success(String msg, long count, T result) {
+        return new ResponseMsg<T>(HttpStatus.OK, msg, count, result);
+    }
+
+    public <T> ResponseMsg<T> fail(T result) {
+        return new ResponseMsg<T>(HttpStatus.ERROR, result);
+    }
+
+    public <T> ResponseMsg<T> fail(String msg, T result) {
+        return new ResponseMsg<T>(HttpStatus.ERROR, msg, result);
+    }
+
+    public <T> ResponseMsg<T> fail(Exception ex, T result) {
+        log.error(ex.getMessage(), ex);
+
+        return new ResponseMsg<T>(HttpStatus.ERROR, ex.getMessage(), result);
+    }
+}
diff --git a/se-publish/src/main/java/com/terra/publish/entity/all/HttpStatus.java b/se-publish/src/main/java/com/terra/publish/entity/all/HttpStatus.java
new file mode 100644
index 0000000..0a38b51
--- /dev/null
+++ b/se-publish/src/main/java/com/terra/publish/entity/all/HttpStatus.java
@@ -0,0 +1,104 @@
+package com.terra.publish.entity.all;
+
+/**
+ * Http鐘舵�佺爜绫�
+ * @author WWW
+ */
+public enum HttpStatus {
+    /**
+     * 璇锋眰鎴愬姛
+     */
+    OK(200,"璇锋眰鎴愬姛"),
+
+    /**
+     * 璇锋眰鏃犳晥
+     */
+    BAD_REQUEST(400,"璇锋眰鏃犳晥"),
+
+    /**
+     * 鏈粡鎺堟潈璁块棶
+     */
+    UNAUTHORIZED(401,"鏈粡鎺堟潈璁块棶"),
+
+    /**
+     * 鏈嶅姟璇锋眰鏈壘鍒�
+     */
+    NOT_FOUND(404,"鏈嶅姟璇锋眰鏈壘鍒�"),
+
+    /**
+     * 绯荤粺閿欒
+     */
+    ERROR(500,"绯荤粺閿欒"),
+
+    /**
+     * 瀛樺湪閲嶅鐨勬暟鎹�
+     */
+    UNIQUE_ERROR(500100,"瀛樺湪閲嶅鐨勬暟鎹�"),
+
+    /**
+     * 鍙傛暟鏍¢獙閿欒
+     */
+    VALIDATE_ERROR(500101,"鍙傛暟鏍¢獙閿欒"),
+
+    /**
+     * token閿欒
+     */
+    TOKEN_ERROR(500102,"token閿欒"),
+
+    /**
+     * 鐢ㄦ埛鏈櫥闄�
+     */
+    NO_LOGIN_ERROR(500104,"鐢ㄦ埛鏈櫥闄�"),
+
+    /**
+     * 鐧婚檰澶辫触
+     */
+    LOGIN_ERROR(500105,"鐧婚檰澶辫触"),
+
+    /**
+     * 鏃犳潈闄愯闂�
+     */
+    NO_AUTH_ERROR(500106,"鏃犳潈闄愯闂�"),
+
+    /**
+     * 鐢ㄦ埛鍚嶉敊璇�
+     */
+    LOGIN_USER_ERROR(500107,"鐢ㄦ埛鍚嶉敊璇�"),
+
+    /**
+     * 瀵嗙爜閿欒
+     */
+    LOGIN_PWD_ERROR(500108,"瀵嗙爜閿欒"),
+
+    /**
+     * 鐢ㄦ埛琚攣瀹�
+     */
+    USER_LOCK_ERROR(500109,"鐢ㄦ埛琚攣瀹�"),
+
+    /**
+     * 瀵嗙爜涓嶅悎瑙勮寖
+     */
+    PWD_NONSTANDARD(500111,"瀵嗙爜涓嶅悎瑙勮寖"),
+
+    /**
+     * 瀵嗙爜杩囨湡
+     */
+    LOGIN_PWD_EXPIRE(500116,"瀵嗙爜杩囨湡");
+
+    private HttpStatus(int value, String msg) {
+        this.value = value;
+        this.msg = msg;
+    }
+
+    private int value;
+
+    private String msg;
+
+    public int getValue() {
+        return value;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}
diff --git a/se-publish/src/main/java/com/terra/publish/entity/all/ResponseMsg.java b/se-publish/src/main/java/com/terra/publish/entity/all/ResponseMsg.java
new file mode 100644
index 0000000..1ecc3c2
--- /dev/null
+++ b/se-publish/src/main/java/com/terra/publish/entity/all/ResponseMsg.java
@@ -0,0 +1,107 @@
+package com.terra.publish.entity.all;
+
+/**
+ * 鍝嶅簲娑堟伅绫�
+ * @author www
+ * @param <T> 娉涘瀷
+ */
+public class ResponseMsg<T> {
+    public ResponseMsg() {
+        this.time = System.currentTimeMillis();
+    }
+
+    public ResponseMsg(HttpStatus code, T result) {
+        this.code = code.getValue();
+        this.msg = this.code == 200 ? "鎴愬姛" : "澶辫触";
+        this.result = result;
+        this.time = System.currentTimeMillis();
+    }
+
+    public ResponseMsg(HttpStatus code, String msg, T result) {
+        this.code = code.getValue();
+        this.msg = msg;
+        this.result = result;
+        this.time = System.currentTimeMillis();
+    }
+
+    public ResponseMsg(int code, String msg, T result, long time) {
+        this.code = code;
+        this.msg = msg;
+        this.result = result;
+        this.time = time;
+    }
+
+    public ResponseMsg(HttpStatus code, long count, T result) {
+        this.code = code.getValue();
+        this.msg = this.code == 200 ? "鎴愬姛" : "澶辫触";
+        this.count = count;
+        this.result = result;
+        this.time = System.currentTimeMillis();
+    }
+
+    public ResponseMsg(HttpStatus code, String msg, long count, T result) {
+        this.code = code.getValue();
+        this.msg = msg;
+        this.count = count;
+        this.result = result;
+        this.time = System.currentTimeMillis();
+    }
+
+    public ResponseMsg(int code, String msg, long count, T result, long time) {
+        this.code = code;
+        this.msg = msg;
+        this.count = count;
+        this.result = result;
+        this.time = time;
+    }
+
+    private int code;
+
+    private String msg;
+
+    private long count;
+
+    private T result;
+
+    private long time;
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public long getCount() {
+        return count;
+    }
+
+    public void setCount(long count) {
+        this.count = count;
+    }
+
+    public T getResult() {
+        return result;
+    }
+
+    public void setResult(T result) {
+        this.result = result;
+    }
+
+    public long getTime() {
+        return time;
+    }
+
+    public void setTime(long time) {
+        this.time = time;
+    }
+}
diff --git a/se-publish/src/main/resources/banner.txt b/se-publish/src/main/resources/banner.txt
new file mode 100644
index 0000000..ecc2d34
--- /dev/null
+++ b/se-publish/src/main/resources/banner.txt
@@ -0,0 +1,9 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
+
+  _____       _     _ _
+ |  __ \     | |   | | |
+ | |__) |   _| |__ | | |__
+ |  ___/ | | | '_ \| | '_ \
+ | |   | |_| | |_) | | | | |
+ |_|    \__,_|_.__/|_|_| |_|
\ No newline at end of file
diff --git a/se-publish/src/main/resources/bootstrap.yml b/se-publish/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..ac2acf3
--- /dev/null
+++ b/se-publish/src/main/resources/bootstrap.yml
@@ -0,0 +1,31 @@
+# Tomcat
+server:
+  port: 8005
+
+# Spring
+spring: 
+  application:
+    # 搴旂敤鍚嶇О
+    name: se-publish
+  profiles:
+    # 鐜閰嶇疆
+    active: dev
+  cloud:
+    nacos:
+      username: nacos
+      password: nAcos_!9#_admIn
+      discovery:
+        # 鏈嶅姟娉ㄥ唽鍦板潃
+        server-addr: 127.0.0.1:8848
+      config:
+        group: JHS_GROUP
+        # 閰嶇疆涓績鍦板潃
+        server-addr: 127.0.0.1:8848
+        # 閰嶇疆鏂囦欢鏍煎紡
+        file-extension: yml
+        # 鍏变韩閰嶇疆
+        shared-configs:
+          - data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+            group: JHS_GROUP
+        # 鍏佽鍒锋柊
+        refresh-enabled: true
diff --git a/se-publish/src/main/resources/logback.xml b/se-publish/src/main/resources/logback.xml
new file mode 100644
index 0000000..63d5969
--- /dev/null
+++ b/se-publish/src/main/resources/logback.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+    <!-- 鏃ュ織瀛樻斁璺緞 -->
+    <property name="log.path" value="logs/se-publish" />
+    <!-- 鏃ュ織杈撳嚭鏍煎紡 -->
+    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
+
+    <!-- 鎺у埗鍙拌緭鍑� -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- 绯荤粺鏃ュ織杈撳嚭 -->
+    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/info.log</file>
+        <!-- 寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠� -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 鏃ュ織鏂囦欢鍚嶆牸寮� -->
+            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 鏃ュ織鏈�澶х殑鍘嗗彶 60澶� -->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 杩囨护鐨勭骇鍒� -->
+            <level>INFO</level>
+            <!-- 鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛� -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛� -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/error.log</file>
+        <!-- 寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠� -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 鏃ュ織鏂囦欢鍚嶆牸寮� -->
+            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 鏃ュ織鏈�澶х殑鍘嗗彶 60澶� -->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 杩囨护鐨勭骇鍒� -->
+            <level>ERROR</level>
+            <!-- 鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛� -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛� -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 绯荤粺妯″潡鏃ュ織绾у埆鎺у埗  -->
+    <logger name="com.terra" level="info" />
+    <!-- Spring鏃ュ織绾у埆鎺у埗  -->
+    <logger name="org.springframework" level="warn" />
+
+    <root level="info">
+        <appender-ref ref="console" />
+    </root>
+
+    <!--绯荤粺鎿嶄綔鏃ュ織-->
+    <root level="info">
+        <appender-ref ref="file_info" />
+        <appender-ref ref="file_error" />
+    </root>
+</configuration>
\ No newline at end of file
diff --git a/se-publish/src/main/resources/mybatis.xml b/se-publish/src/main/resources/mybatis.xml
new file mode 100644
index 0000000..cbb7a27
--- /dev/null
+++ b/se-publish/src/main/resources/mybatis.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE configuration
+        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-config.dtd">
+<configuration>
+    <settings>
+        <!--閰嶇疆褰卞搷鎵�鏈夋槧灏勫櫒涓厤缃紦瀛�-->
+        <setting name="cacheEnabled" value="true"/>
+        <!--寤惰繜鍔犺浇-->
+        <setting name="lazyLoadingEnabled" value="true"/>
+        <!--鏄惁鍏佽鍗曚竴璇彞杩斿洖澶氱粨鏋滈泦-->
+        <setting name="multipleResultSetsEnabled" value="true"/>
+        <!--浣跨敤鍒楁爣绛句唬鏇垮垪鍚�-->
+        <setting name="useColumnLabel" value="true"/>
+        <!--鍏佽JDBC 鏀寔鑷姩鐢熸垚涓婚敭-->
+        <setting name="useGeneratedKeys" value="false"/>
+        <!--璁剧疆SQL瓒呮椂鏃堕棿锛岀-->
+        <setting name="defaultStatementTimeout" value="360"/>
+        <!--榛樿杩斿洖鐨勬潯鏁伴檺鍒�-->
+        <setting name="defaultFetchSize" value="1000"/>
+        <!--鏄惁寮�鍚嚜鍔ㄩ┘宄板懡鍚嶈鍒欐槧灏勶紝鍗充粠缁忓吀鏁版嵁搴撳垪鍚� A_COLUMN 鍒扮粡鍏� Java 灞炴�у悕 aColumn 鐨勭被浼兼槧灏�-->
+        <setting name="mapUnderscoreToCamelCase" value="true"/>
+        <!--MyBatis 鍒╃敤鏈湴缂撳瓨鏈哄埗锛圠ocal Cache锛夐槻姝㈠惊鐜紩鐢紙circular references锛夊拰鍔犻�熻仈澶嶅祵濂楁熁璇€��-->
+        <setting name="localCacheScope" value="SESSION"/>
+        <!--褰撴病鏈変负鍙傛暟鎻愪緵鐗瑰畾鐨� JDBC 绫诲瀷鏃讹紝涓虹┖鍊兼寚瀹� JDBC 绫诲瀷-->
+        <setting name="jdbcTypeForNull" value="NULL"/>
+        <!--鎸囧畾鍝釜瀵硅薄鐨勬柟娉曡Е鍙戜竴娆″欢杩熷姞杞�-->
+        <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
+        <!--鎸囧畾褰撶粨鏋滈泦涓�间负 null 鏃讹紝鏄惁璋冪敤鏄犲皠瀵硅薄鐨� setter锛坢ap 瀵硅薄鏃朵负 put锛夋柟娉�-->
+        <setting name="callSettersOnNulls" value="true"/>
+        <!--鎸囧畾 MyBatis 鎵�鐢ㄦ棩蹇楃殑鍏蜂綋瀹炵幇锛歀OG4J/LOG4J2/SLF4J/STDOUT_LOGGING/NO_LOGGING-->
+        <setting name="logImpl" value="NO_LOGGING" />
+    </settings>
+    <typeAliases>
+        <package name="com.terra.publish.entity"/>
+    </typeAliases>
+</configuration>
\ No newline at end of file
diff --git a/sm.txt b/sm.txt
index 6856ab4..9d13e10 100644
--- a/sm.txt
+++ b/sm.txt
@@ -1,29 +1,29 @@
 -------------------------------------------------------------------
+
+
+------------------------------------------------------------------- 鍔熻兘妯″潡锛屾敮鎸佺嫭绔嬮儴缃�
+  se-common锛�      閫氱敤妯″潡
+ se-gateway锛�8001锛岀郴缁熺綉鍏�
+  se-system锛�8002锛岀郴缁熸ā鍧�/鏁版嵁瀛樺偍绠$悊
+ se-collect锛�8003锛屾暟鎹眹闆�
+se-discover锛�8004锛岀煡璇嗗彂鐜�
+ se-publish锛�8005锛屾暟鎹彂甯�
+------------------------------------------------------------------- URL
 admin:Admin@1234_lf
 nacos锛歯Acos_!9#_admIn
 
 http://localhost:8848/nacos
-http://localhost:8002/
-http://localhost:8001/system/
-
 http://localhost:8001/system/sign/getPublicKey
 http://localhost:8002/sign/getPublicKey
-
 http://localhost:8001/system/dir/selectDir?id=1
 http://localhost:8002/dir/selectDir?id=1
 
 http://192.168.11.203:8848/nacos
 http://192.168.11.203:8081/api/system/swagger-ui.html
--------------------------------------------------------------------
-PIE-Engine Server锛歅ixel Information Expert
+------------------------------------------------------------------- PIE-Engine Server
+鍏ㄧОPixel Information Expert锛孲DK鏈夛細鍦板浘寮�鍙戙�乄ebSDK銆丷estSDK
+瀹樼綉锛歱iesat.cn锛宧ttps://engine.piesat.cn/server/#/
 閬ユ劅/GIS鏁版嵁姹囬泦銆佺鐞嗐�佹不鐞嗐�佸彂甯冧笌鍏变韩鐨勮兘鍔涳紝鏁版嵁鎺ュ叆銆佺紪鐩�佸瓨鍌ㄣ�佸叡浜�佸彂甯冧笌搴旂敤銆�
-
-
-
-piesat.cn锛宧ttps://engine.piesat.cn/server/#/
-https://support.huaweicloud.com/pie-engine-mapslt/pie-engine_04.html
-https://piesat.cn/website/cn/pages/product/dl-center/software-download.html锛屼笅杞戒腑蹇�
-------------------------------------------------------------------- 鍦板浘寮�鍙戙�乄ebSDK銆丷estSDK
 3.8.4.3.RestSDK寮�鍙戯細鎺ュ彛璋冪敤鍚勭被鍨嬬殑鏃剁┖鏁版嵁鏈嶅姟锛岃幏鍙栬繑鍥瀓son鎴杧ml鏍煎紡鐨勬暟鎹��
 
 鏁版嵁鎺ュ叆鏈嶅姟锛氫富瑕佹彁渚涗笉鍚岀被鍨嬫暟鎹殑鎺ュ叆鍜岀洃鎺ц兘鍔涳紝鍏辫20涓帴鍙c��
@@ -44,5 +44,3 @@
 
 鏁版嵁鎵撳寘鏈嶅姟锛氫富瑕佹彁渚涙暟鎹墦鍖呬换鍔″垱寤恒�佺洃鎺с�佸垹闄わ紝浠ュ強鍘嬬缉鍖呬笅杞芥湇鍔★紝鍏辫4涓帴鍙c��
 -------------------------------------------------------------------
-
-

--
Gitblit v1.9.3