5894a4a94bd415e6219a5852b05f127fd03e3aba..301ac7fa6f583f19b4f4a97bd9b469049b5ff10a
8 天以前 13693261870
添加3个模块
301ac7 对比 | 目录
8 天以前 13693261870
1
338e10 对比 | 目录
8 天以前 13693261870
解决kafka存储数据问题
2e335c 对比 | 目录
8 天以前 13693261870
0
90d0ad 对比 | 目录
已添加34个文件
已修改3个文件
2385 ■■■■■ 文件已修改
docker/kafka.yml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docker/kraft.yml 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docker/mongo-kraft.yml 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docker/readme.md 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docker/spring.yml 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docker/startZK.sh 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-collect/pom.xml 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-collect/src/main/java/com/terra/collect/SeCollectApp.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-collect/src/main/java/com/terra/collect/controller/TestController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-collect/src/main/java/com/terra/collect/controller/all/BaseController.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-collect/src/main/java/com/terra/collect/entity/all/HttpStatus.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-collect/src/main/java/com/terra/collect/entity/all/ResponseMsg.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-collect/src/main/resources/banner.txt 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-collect/src/main/resources/bootstrap.yml 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-collect/src/main/resources/logback.xml 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-collect/src/main/resources/mybatis.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-discover/pom.xml 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-discover/src/main/java/com/terra/discover/SeDiscoverApp.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-discover/src/main/java/com/terra/discover/controller/TestController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-discover/src/main/java/com/terra/discover/controller/all/BaseController.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-discover/src/main/java/com/terra/discover/entity/all/HttpStatus.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-discover/src/main/java/com/terra/discover/entity/all/ResponseMsg.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-discover/src/main/resources/banner.txt 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-discover/src/main/resources/bootstrap.yml 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-discover/src/main/resources/logback.xml 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-discover/src/main/resources/mybatis.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-publish/pom.xml 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-publish/src/main/java/com/terra/publish/SePublishApp.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-publish/src/main/java/com/terra/publish/controller/TestController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-publish/src/main/java/com/terra/publish/controller/all/BaseController.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-publish/src/main/java/com/terra/publish/entity/all/HttpStatus.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-publish/src/main/java/com/terra/publish/entity/all/ResponseMsg.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-publish/src/main/resources/banner.txt 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-publish/src/main/resources/bootstrap.yml 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-publish/src/main/resources/logback.xml 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-publish/src/main/resources/mybatis.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sm.txt 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docker/kafka.yml
@@ -3,6 +3,7 @@
  # zookeeper
  zookeeper:
    image: zookeeper:3.4
    #hostname: zookeeper34
    ports:
      - 2181:2181
      - 2888:2888
@@ -17,7 +18,8 @@
      # ZOO_SERVER_PASSWORDS: kaFka_12#$56
    healthcheck:
      test: ["CMD-SHELL", "zkServer.sh status"]
      interval: 5s
      #test: ["CMD-SHELL", "echo stat | nc localhost 2181 | grep Mode"]
      interval: 10s
      timeout: 2s
      retries: 3
    networks:
@@ -42,6 +44,11 @@
      KAFKA_CLIENT_PASSWORDS: kaFka_12#$56
      # KAFKA_ZOOKEEPER_USER: admin
      # KAFKA_ZOOKEEPER_PASSWORD: kaFka_12#$56
    healthcheck:
      test: ["CMD", "kafka-broker-api-versions", "--bootstrap-server", "localhost:9092"]
      interval: 10s
      timeout: 2s
      retries: 3
    volumes:
      # chmod -R 777 kafka_data/
      - ./kafka_data:/bitnami/kafka
docker/kraft.yml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
version: "3.8"
services:
  # kafka
  kafka:
    image: bitnami/kafka:3.4
    environment:
      # å¯ç”¨KRaft模式
      KAFKA_BROKER_ID: 1
      KAFKA_ENABLE_KRAFT: yes
      KAFKA_CFG_PROCESS_ROLES: broker,controller
      KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
      #KAFKA_CFG_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:9093,SASL_PLAINTEXT://:9094
      #KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://192.168.11.203:9092,SASL_PLAINTEXT://192.168.11.203:9094
      KAFKA_CFG_LISTENERS: CONTROLLER://:9093,SASL_PLAINTEXT://:9092
      KAFKA_CFG_ADVERTISED_LISTENERS: SASL_PLAINTEXT://192.168.11.203:9092
      KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SASL_PLAINTEXT:SASL_PLAINTEXT
      KAFKA_CFG_INTER_BROKER_LISTENER_NAME: SASL_PLAINTEXT
      # å¼ºåˆ¶è®¾ç½®é›†ç¾¤ID(必须唯一)
      KAFKA_CFG_NODE_ID: 1
      KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@localhost:9093
      KAFKA_KRAFT_CLUSTER_ID: kgvdPTwkStm6XDCOCZLi0w
      # SASL/PLAIN认证配置
      KAFKA_CFG_SASL_ENABLED_MECHANISMS: PLAIN
      KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAIN
      KAFKA_CLIENT_USERS: admin
      KAFKA_CLIENT_PASSWORDS: kaFka_12#$56
      # å…¶ä»–必要参数
      #ALLOW_PLAINTEXT_LISTENER: yes
    healthcheck:
      test: ["CMD", "kafka-broker-api-versions", "--bootstrap-server", "localhost:9092"]
      interval: 10s
      timeout: 2s
      retries: 3
    volumes:
      # chmod -R 777 kafka_data/
      - ./kafka_data:/bitnami/kafka
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - 9092:9092
      - 9094:9094
    privileged: true
    networks:
      - network-jhs
networks:
  network-jhs:
    driver: bridge
docker/mongo-kraft.yml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
version: "3.8"
services:
  # kafka
  kafka:
    image: bitnami/kafka:3.4
    environment:
      # å¯ç”¨KRaft模式
      KAFKA_BROKER_ID: 1
      KAFKA_ENABLE_KRAFT: yes
      KAFKA_CFG_PROCESS_ROLES: broker,controller
      KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
      #KAFKA_CFG_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:9093,SASL_PLAINTEXT://:9094
      #KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://192.168.11.203:9092,SASL_PLAINTEXT://192.168.11.203:9094
      KAFKA_CFG_LISTENERS: CONTROLLER://:9093,SASL_PLAINTEXT://:9092
      KAFKA_CFG_ADVERTISED_LISTENERS: SASL_PLAINTEXT://192.168.11.203:9092
      KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SASL_PLAINTEXT:SASL_PLAINTEXT
      KAFKA_CFG_INTER_BROKER_LISTENER_NAME: SASL_PLAINTEXT
      # å¼ºåˆ¶è®¾ç½®é›†ç¾¤ID(必须唯一)
      KAFKA_CFG_NODE_ID: 1
      KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@localhost:9093
      KAFKA_KRAFT_CLUSTER_ID: kgvdPTwkStm6XDCOCZLi0w
      # SASL/PLAIN认证配置
      KAFKA_CFG_SASL_ENABLED_MECHANISMS: PLAIN
      KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAIN
      KAFKA_CLIENT_USERS: admin
      KAFKA_CLIENT_PASSWORDS: kaFka_12#$56
      # å…¶ä»–必要参数
      #ALLOW_PLAINTEXT_LISTENER: yes
    healthcheck:
      test: ["CMD", "kafka-broker-api-versions", "--bootstrap-server", "localhost:9092"]
      interval: 10s
      timeout: 2s
      retries: 3
      start_period: 3s
    volumes:
      # chmod -R 777 kafka_data/
      - ./kafka_data:/bitnami/kafka
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - 9092:9092
      #- 9094:9094
    privileged: true
    networks:
      - network-jhs
  # mongo
  mongo:
    image: mongo:8
    environment:
      MONGO_INITDB_ROOT_USERNAME: admin
      MONGO_INITDB_ROOT_PASSWORD: MonGo_8sQ2jP
    healthcheck:
      test: ["CMD", "mongo", "--eval", "db.adminCommand('ping')"]
      interval: 10s
      timeout: 2s
      retries: 3
      start_period: 3s
    ports:
      - 27017:27017
    volumes:
      - ./mongo_data:/data/db
    networks:
      - network-jhs
networks:
  network-jhs:
    driver: bridge
docker/readme.md
@@ -39,7 +39,11 @@
db.version() # 8.0.11
use admin
db.auth("admin", "123456")
show
show dbs
db.auth("admin", "MonGo_8sQ2jP")
db.user.insertOne({age:18,name:"xiao"})
db.user.find()
docker run -itd --name openjdk openjdk:8-jre
@@ -100,4 +104,8 @@
# ç»Ÿè®¡æ–‡ä»¶å¤¹å¤§å°
du -sh postgis/pgdata
# åˆ é™¤kafka的元数据文件
rm -rf kafka_data/data/meta.properties
rm -rf kafka_data/data/
```
docker/spring.yml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,134 @@
version: "3.8"
services:
  # postgis
  postgis:
    image: postgis/postgis:17.5
    ports:
      - 5432:5432
    volumes:
      - ./postgis/pgdata:/var/lib/postgresql/data
      - ./postgis/init:/docker-entrypoint-initdb.d
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: Postgres!_17_jHs
      ALLOW_IP_RANGE: 0.0.0.0/0
      TZ: Asia/Shanghai
      POSTGRES_DB: jhs
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 2s
      retries: 3
    privileged: true
    networks:
      - network-jhs
  # nacos
  nacos:
    image: nacos/nacos-server:v3.0.2
    environment:
      TZ: Asia/Shanghai
      MODE: standalone
      SPRING_DATASOURCE_PLATFORM: postgresql
      DB_URL: jdbc:postgresql://postgis:5432/jhs?tcpKeepAlive=true&reWriteBatchedInserts=true&ApplicationName=nacos_java
      DB_USER: postgres
      DB_PASSWORD: Postgres!_17_jHs
      NACOS_AUTH_ENABLE: true
      NACOS_AUTH_IDENTITY_KEY: nacos
      NACOS_AUTH_IDENTITY_VALUE: nAcos_!9#_admIn
      DB_POOL_CONFIG_DRIVERCLASSNAME: org.postgresql.Driver
      NACOS_AUTH_TOKEN: TmFjb3NfUmFuZG9tX1N0cmluZ18zMl9DaGFyc19Pcl9Mb25nZXI=
    volumes:
      - ./nacos/logs/:/home/nacos/logs
      - ./nacos/plugins:/home/nacos/plugins
      #- ./nacos/conf/application.properties:/home/nacos/conf/application.properties
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://localhost:8080 || exit 1"]
      interval: 10s
      timeout: 2s
      retries: 3
      start_period: 7s
    ports:
      - 8080:8080
      - 8848:8848
      - 9848:9848
    depends_on:
      postgis:
        condition: service_healthy
    privileged: true
    networks:
      - network-jhs
    #restart: always
  # redis
  redis:
    image: redis:7
    ports:
      - 6379:6379
    volumes:
      - ./redis/redis.conf:/data/redis.conf
      - ./redis/data:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 2s
      retries: 3
    #command: redis-server --requirepass Redis_s!E_6.2.6
    command: redis-server /data/redis.conf
    networks:
      - network-jhs
  # gateway
  gateway:
    image: openjdk:8-jre
    volumes:
      - ./gateway/logs:/logs
      - ./gateway:/app
    environment:
      TZ: Asia/Shanghai
    #entrypoint: /bin/sh -c "sleep 30 && java -jar /app/se-gateway.jar --spring.config.location=file:/app/"
    entrypoint: java -jar /app/se-gateway.jar --spring.config.location=file:/app/
    depends_on:
      redis:
        condition: service_healthy
      nacos:
        condition: service_healthy
    networks:
      - network-jhs
  # system
  system:
    image: openjdk8-422-gdal:3.5.2
    volumes:
      - ./system/logs:/logs
      - ./system:/app
    environment:
      TZ: Asia/Shanghai
    #entrypoint: /bin/sh -c "sleep 30 && java -jar /app/se-system.jar --spring.config.location=file:/app/"
    entrypoint: java -jar /app/se-system.jar --spring.config.location=file:/app/
    depends_on:
      postgis:
        condition: service_healthy
      redis:
        condition: service_healthy
      nacos:
        condition: service_healthy
    networks:
      - network-jhs
  # nginx
  nginx:
    image: nginx:1.29
    ports:
      - 80:80
      - 443:443
    environment:
      TZ: Asia/Shanghai
    volumes:
      - ./nginx/logs:/var/log/nginx
      - ./nginx/html:/usr/share/nginx/html
      - ./nginx/conf/conf.d:/etc/nginx/conf.d
      - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - gateway
      - system
    networks:
      - network-jhs
networks:
  network-jhs:
    driver: bridge
docker/startZK.sh
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
#!/bin/bash
cd /data/jhs
rm -rf zookeeper_data/*
rm -rf kafka_data/*
docker-compose -f kafka.yml down
docker-compose -f kafka.yml up -d
# sed -i 's/\r$//' start.sh
exit 0
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>
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");
    }
}
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);
        }
    }
}
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);
    }
}
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;
    }
}
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;
    }
}
se-collect/src/main/resources/banner.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Spring Boot Version: ${spring-boot.version}
Spring Application Name: ${spring.application.name}
  _____      _ _           _
 / ____|    | | |         | |
| |     ___ | | | ___  ___| |_
| |    / _ \| | |/ _ \/ __| __|
| |___| (_) | | |  __/ (__| |_
 \_____\___/|_|_|\___|\___|\__|
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
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>
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 åˆ©ç”¨æœ¬åœ°ç¼“存机制(Local 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(map å¯¹è±¡æ—¶ä¸º put)方法-->
        <setting name="callSettersOnNulls" value="true"/>
        <!--指定 MyBatis æ‰€ç”¨æ—¥å¿—的具体实现:LOG4J/LOG4J2/SLF4J/STDOUT_LOGGING/NO_LOGGING-->
        <setting name="logImpl" value="NO_LOGGING" />
    </settings>
    <typeAliases>
        <package name="com.terra.collect.entity"/>
    </typeAliases>
</configuration>
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>
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");
    }
}
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);
        }
    }
}
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);
    }
}
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;
    }
}
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;
    }
}
se-discover/src/main/resources/banner.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Spring Boot Version: ${spring-boot.version}
Spring Application Name: ${spring.application.name}
  _____  _     _
 |  __ \(_)   | |
 | |  | |_  __| | ___  ___ _ __
 | |  | | |/ _` |/ _ \/ _ \ '_ \
 | |__| | | (_| |  __/  __/ |_) |
 |_____/|_|\__,_|\___|\___| .__/
                          | |
                          |_|
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
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>
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 åˆ©ç”¨æœ¬åœ°ç¼“存机制(Local 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(map å¯¹è±¡æ—¶ä¸º put)方法-->
        <setting name="callSettersOnNulls" value="true"/>
        <!--指定 MyBatis æ‰€ç”¨æ—¥å¿—的具体实现:LOG4J/LOG4J2/SLF4J/STDOUT_LOGGING/NO_LOGGING-->
        <setting name="logImpl" value="NO_LOGGING" />
    </settings>
    <typeAliases>
        <package name="com.terra.discover.entity"/>
    </typeAliases>
</configuration>
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>
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");
    }
}
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);
        }
    }
}
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);
    }
}
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;
    }
}
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;
    }
}
se-publish/src/main/resources/banner.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Spring Boot Version: ${spring-boot.version}
Spring Application Name: ${spring.application.name}
  _____       _     _ _
 |  __ \     | |   | | |
 | |__) |   _| |__ | | |__
 |  ___/ | | | '_ \| | '_ \
 | |   | |_| | |_) | | | | |
 |_|    \__,_|_.__/|_|_| |_|
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
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>
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 åˆ©ç”¨æœ¬åœ°ç¼“存机制(Local 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(map å¯¹è±¡æ—¶ä¸º put)方法-->
        <setting name="callSettersOnNulls" value="true"/>
        <!--指定 MyBatis æ‰€ç”¨æ—¥å¿—的具体实现:LOG4J/LOG4J2/SLF4J/STDOUT_LOGGING/NO_LOGGING-->
        <setting name="logImpl" value="NO_LOGGING" />
    </settings>
    <typeAliases>
        <package name="com.terra.publish.entity"/>
    </typeAliases>
</configuration>
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:nAcos_!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:Pixel Information Expert
------------------------------------------------------------------- PIE-Engine Server
全称Pixel Information Expert,SDK有:地图开发、WebSDK、RestSDK
官网:piesat.cn,https://engine.piesat.cn/server/#/
遥感/GIS数据汇集、管理、治理、发布与共享的能力,数据接入、编目、存储、共享、发布与应用。
piesat.cn,https://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,下载中心
------------------------------------------------------------------- åœ°å›¾å¼€å‘、WebSDK、RestSDK
3.8.4.3.RestSDK开发:接口调用各类型的时空数据服务,获取返回json或xml格式的数据。
数据接入服务:主要提供不同类型数据的接入和监控能力,共计20个接口。
@@ -44,5 +44,3 @@
数据打包服务:主要提供数据打包任务创建、监控、删除,以及压缩包下载服务,共计4个接口。
-------------------------------------------------------------------