Browse Source

feat: "first commit"

Ritchie 1 year ago
commit
3dc54aee05

+ 8 - 0
.idea/.gitignore

@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 41 - 0
README.md

@@ -0,0 +1,41 @@
+# szwlServer 申泽移动物联
+
+## 注册中心
+http://112.74.63.148:49001/
+可以看到各子服务
+
+## 自动生成代码
+运行 AutoGeneratorTests
+
+## mybatis-plus
+增删查改
+使用参考 https://baomidou.com/pages/24112f/
+
+## swwager2 生成接口文档
+在controller 加上@Api(value = "/test", tags = {"controller描述"})
+接口方法上加上 @ApiOperation(value = "接口描述") 即可。
+文档地址:http://127.0.0.1:端口/doc.html
+
+## 接口返回
+参考 DemoController
+返回体,用 成功:R.ok()  ,默认返回码 00000
+失败:R.fail(ResponseCodesEnum.B0001,"你的错误信息");
+ResponseCodesEnum 为错误码,其中 ALL_OK("00000","SUCCESS") 表示成功
+
+## 子服务之间使用feign 互相调用
+参考 PayFeign
+
+## 使用 hutool 工具类
+参考文档 https://www.bookstack.cn/read/hutool/377f64112be7197a.md
+
+## 配置文件参数使用
+推荐将配置文件的参数,放到数据库表 sys_properties 里面。
+参考 select * from sys_properties a where a.application ='szwl-server'
+使用 参考 DemoController 的 @Value("${test.value:bbb}")
+
+## 部署说明
+把jar 包 放到 /app/appsystem/springcloud
+启动命令:/app/appsystem/startSpringCloud.sh  /app/appsystem/springcloud/你的包名.jar
+查看状态:/app/appsystem/checkSpringCloud.sh
+关闭命令:/app/appsystem/stopSpringCloud.sh /app/appsystem/springcloud/你的包名.jar
+查看日志:vi /app/applogs/szwl-server/szwl-server.log

+ 314 - 0
pom.xml

@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>com.szwl</groupId>
+	<artifactId>syncOldServer</artifactId>
+	<version>0.0.1</version>
+	<packaging>jar</packaging>
+
+	<name>syncOldServer</name>
+
+	<parent>
+		<groupId>org.springframework.boot</groupId>
+		<artifactId>spring-boot-starter-parent</artifactId>
+		<version>2.3.12.RELEASE</version>
+	</parent>
+
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+		<java.version>1.8</java.version>
+		<spring-cloud.version>Hoxton.SR12</spring-cloud.version>
+<!--		<mybatis-spring-boot-starter.version>2.2.0</mybatis-spring-boot-starter.version>-->
+		<mybatis-plus.version>3.4.0</mybatis-plus.version>
+		<mybatis.version>3.5.7</mybatis.version>
+	</properties>
+
+	<dependencyManagement>
+		<dependencies>
+			<dependency>
+				<groupId>org.springframework.cloud</groupId>
+				<artifactId>spring-cloud-dependencies</artifactId>
+				<version>${spring-cloud.version}</version>
+				<type>pom</type>
+				<scope>import</scope>
+			</dependency>
+			<dependency>
+				<groupId>org.mybatis</groupId>
+				<artifactId>mybatis</artifactId>
+				<version>${mybatis.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>com.baomidou</groupId>
+				<artifactId>mybatis-plus-boot-starter</artifactId>
+				<version>${mybatis-plus.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>com.baomidou</groupId>
+				<artifactId>mybatis-plus-generator</artifactId>
+				<version>${mybatis-plus.version}</version>
+			</dependency>
+<!--			<dependency>-->
+<!--				<groupId>org.mybatis.spring.boot</groupId>-->
+<!--				<artifactId>mybatis-spring-boot-starter</artifactId>-->
+<!--				<version>${mybatis-spring-boot-starter.version}</version>-->
+<!--			</dependency>-->
+		</dependencies>
+	</dependencyManagement>
+
+	<dependencies>
+		<!-- springcloud组件 start -->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-openfeign</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-config</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-actuator</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+		</dependency>
+<!--		<dependency>-->
+<!--			<groupId>org.springframework.boot</groupId>-->
+<!--			<artifactId>spring-boot-starter-jdbc</artifactId>-->
+<!--		</dependency>-->
+		<!-- springcloud组件 end -->
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+		</dependency>
+
+		<!-- mybatis-plus -->
+		<dependency>
+			<groupId>com.baomidou</groupId>
+			<artifactId>mybatis-plus-boot-starter</artifactId>
+		</dependency>
+		<!--mybatisplus代码生成 start -->
+		<dependency>
+			<groupId>com.baomidou</groupId>
+			<artifactId>mybatis-plus-generator</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.velocity</groupId>
+			<artifactId>velocity-engine-core</artifactId>
+			<version>2.2</version>
+		</dependency>
+		<!--mybatisplus代码生成 end -->
+		<dependency>
+			<groupId>mysql</groupId>
+			<artifactId>mysql-connector-java</artifactId>
+		</dependency>
+		<!-- swagger2 -->
+		<dependency>
+			<groupId>com.github.xiaoymin</groupId>
+			<artifactId>knife4j-spring-boot-starter</artifactId>
+			<version>3.0.3</version>
+		</dependency>
+		<dependency>
+			<groupId>ch.ethz.ganymed</groupId>
+			<artifactId>ganymed-ssh2</artifactId>
+			<version>build210</version>
+		</dependency>
+		<!-- json -->
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>fastjson</artifactId>
+			<version>1.2.75</version>
+		</dependency>
+		<!-- hutool -->
+		<dependency>
+			<groupId>cn.hutool</groupId>
+			<artifactId>hutool-core</artifactId>
+			<version>5.7.16</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-beanutils</groupId>
+			<artifactId>commons-beanutils</artifactId>
+			<version>1.8.3</version>
+		</dependency>
+		<dependency>
+			<groupId>org.hibernate</groupId>
+			<artifactId>hibernate-core</artifactId>
+			<version>3.6.10.Final</version>
+		</dependency>
+		<!-- 引入org.json所需依赖 -->
+		<dependency>
+			<groupId>org.json</groupId>
+			<artifactId>json</artifactId>
+			<version>20200518</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-httpclient</groupId>
+			<artifactId>commons-httpclient</artifactId>
+			<version>3.1</version>
+		</dependency>
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+			<version>1.2.16</version>
+		</dependency>
+		<!--杉德支付-->
+		<dependency>
+			<groupId>cn.com.sand</groupId>
+			<artifactId>hmpay-sdk</artifactId>
+			<version>1.1.4</version>
+		</dependency>
+		<!--rabbitmq-->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-amqp</artifactId>
+			<version>2.1.3.RELEASE</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-bus-amqp</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.amqp</groupId>
+			<artifactId>spring-rabbit</artifactId>
+			<version>2.3.6</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.amqp</groupId>
+			<artifactId>spring-amqp</artifactId>
+			<version>2.3.6</version>
+		</dependency>
+		<dependency>
+			<groupId>cn.com.crbank.ommo</groupId>
+			<artifactId>EsBaseServer</artifactId>
+			<version>1.2.11</version>
+		</dependency>
+		<!-- 个推 -->
+		<dependency>
+			<groupId>com.gexin.platform</groupId>
+			<artifactId>gexin-rp-sdk-http</artifactId>
+			<version>4.0.1.9</version>
+		</dependency>
+		<!-- 导出Excel -->
+		<dependency>
+			<groupId>cn.afterturn</groupId>
+			<artifactId>easypoi-base</artifactId>
+			<version>4.4.0</version>
+		</dependency>
+		<!--定时任务-->
+<!--		<dependency>-->
+<!--			<groupId>org.springframework.boot</groupId>-->
+<!--			<artifactId>spring-boot-starter-web</artifactId>-->
+<!--		</dependency>-->
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter</artifactId>
+		</dependency>
+
+<!--		<dependency>-->
+<!--			<groupId>org.projectlombok</groupId>-->
+<!--			<artifactId>lombok</artifactId>-->
+<!--			<optional>true</optional>-->
+<!--		</dependency>-->
+		<!--<dependency>-->
+			<!--<groupId>org.springframework.boot</groupId>-->
+			<!--<artifactId>spring-boot-starter-test</artifactId>-->
+			<!--<scope>test</scope>-->
+		<!--</dependency>-->
+		<!--elasticsearch-->
+		<dependency>
+			<groupId>org.elasticsearch</groupId>
+			<artifactId>elasticsearch</artifactId>
+			<version>7.6.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.elasticsearch.client</groupId>
+			<artifactId>elasticsearch-rest-high-level-client</artifactId>
+			<version>7.6.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.elasticsearch.client</groupId>
+			<artifactId>elasticsearch-rest-client</artifactId>
+			<version>7.6.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-loadbalancer</artifactId>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<resources>
+			<resource>
+				<directory>src/main/java</directory>
+				<includes>
+					<include>**/*.xml</include>
+					<include>**/*.*</include>
+				</includes>
+				<!-- 是否替换资源中的属性 -->
+				<filtering>false</filtering>
+			</resource>
+			<resource>
+				<directory>src/main/resources</directory>
+				<includes>
+					<include>**/*.*</include>
+				</includes>
+				<!-- 是否替换资源中的属性 -->
+				<filtering>false</filtering>
+			</resource>
+		</resources>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+				<configuration>
+					<layout>ZIP</layout>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+	<repositories>
+		<!--<repository>-->
+			<!--<id>nexus</id>-->
+			<!--<url>http://www.redouble.store:1888/repository/maven-public/</url>-->
+			<!--<releases>-->
+				<!--<enabled>true</enabled>-->
+			<!--</releases>-->
+			<!--<snapshots>-->
+				<!--<enabled>false</enabled>-->
+			<!--</snapshots>-->
+		<!--</repository>-->
+		<!-- 个推 -->
+		<repository>
+			<id>getui-nexus</id>
+			<url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url>
+		</repository>
+		<repository>
+			<id>nexus</id>
+			<url>http://120.25.151.99:1888/repository/crbank-host/</url>
+			<releases>
+				<enabled>true</enabled>
+			</releases>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+		</repository>
+	</repositories>
+
+
+</project>

+ 19 - 0
src/main/java/com/szwl/Application.java

@@ -0,0 +1,19 @@
+package com.szwl;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+@EnableEurekaClient
+@EnableFeignClients
+@MapperScan("com.szwl.mapper")
+@SpringBootApplication(scanBasePackages = {"com.szwl", "cn.com.crbank.ommo.exception","cn.com.crbank.ommo.esclient","org.springframework.amqp.core"})
+public class Application{
+    public static void main(String[] args) {
+        SpringApplication.run(Application.class, args);
+    }
+}
+
+

+ 41 - 0
src/main/java/com/szwl/config/AsyncExecutorConfig.java

@@ -0,0 +1,41 @@
+package com.szwl.config;
+
+import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
+import org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.AsyncConfigurer;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.Executor;
+
+/**
+ * 异步注解线程池配置
+ *
+ * @author wuhs
+ * @date 2021-10-08 16:36
+ */
+@Configuration
+@ConditionalOnProperty(name = "ommo.common.async.executor.override", havingValue = "true")
+public class AsyncExecutorConfig implements AsyncConfigurer {
+
+    private static final int CORE_NUMS = Runtime.getRuntime().availableProcessors();
+
+    @Override
+    public Executor getAsyncExecutor() {
+        ThreadPoolTaskExecutor asyncExecutor = new ThreadPoolTaskExecutor();
+        //根据io密集型创建线程池
+        asyncExecutor.setCorePoolSize(2 * CORE_NUMS);
+        asyncExecutor.setMaxPoolSize(5 * CORE_NUMS);
+        asyncExecutor.setKeepAliveSeconds(60);
+        asyncExecutor.setQueueCapacity(100);
+        asyncExecutor.setThreadNamePrefix("async-executor-");
+        asyncExecutor.initialize();
+        return asyncExecutor;
+    }
+
+    @Override
+    public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
+        return new SimpleAsyncUncaughtExceptionHandler();
+    }
+}

+ 56 - 0
src/main/java/com/szwl/config/FeignLogger.java

@@ -0,0 +1,56 @@
+package com.szwl.config;
+
+import feign.Request;
+import feign.Response;
+import feign.Util;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.IOException;
+
+import static feign.Util.UTF_8;
+import static feign.Util.decodeOrDefault;
+
+@Slf4j
+public class FeignLogger extends feign.Logger {
+
+
+    public FeignLogger() {
+    }
+
+    @Override
+    protected void log(String configKey, String format, Object... args) {
+    }
+
+    //自定义请求日志
+    @Override
+    protected void logRequest(String configKey, Level logLevel, Request request) {
+        Request.HttpMethod httpMethod = request.httpMethod();
+        String url = request.url();
+        String param = " ";
+        if (request.body() != null) {
+            param = new String(request.body(), UTF_8);
+        }
+        log.info(configKey + " 请求--> {} url:{}, param:{}", httpMethod, url, param);
+    }
+
+    //自定义响应日志
+    @Override
+    protected Response logAndRebufferResponse(String configKey, Level logLevel, Response response, long elapsedTime) throws IOException {
+        String result = "";
+        int status = response.status();
+        try {
+            if (response.body() != null) {
+                byte[] bodyData = Util.toByteArray(response.body().asInputStream());
+                result = decodeOrDefault(bodyData, UTF_8, "Binary data");
+                return response.toBuilder().body(bodyData).build();
+            }
+            return response;
+        } finally {
+            if (response.status() == 200) {
+                log.info(configKey + " 返回<-- status:{}, result:{}, ElapsedTime:[{}ms]", status,result,elapsedTime);
+            } else {
+                log.error(configKey + " 返回<-- status:{}, result:{}, ElapsedTime:[{}ms]",status, result,elapsedTime);
+            }
+        }
+    }
+}

+ 31 - 0
src/main/java/com/szwl/config/MyFeignLoggerFactory.java

@@ -0,0 +1,31 @@
+package com.szwl.config;
+
+import feign.Logger;
+import org.springframework.cloud.openfeign.FeignLoggerFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MyFeignLoggerFactory implements FeignLoggerFactory {
+
+    private Logger logger;
+
+    public MyFeignLoggerFactory() {
+    }
+
+    public MyFeignLoggerFactory(Logger logger) {
+        this.logger = logger;
+    }
+
+    //实现create方法 new自定义的CustomizationFeignLogger
+    @Override
+    public Logger create(Class<?> type) {
+        return this.logger != null ? this.logger : new FeignLogger();
+    }
+    //开启openfeign的日志,因为要自定义所以只开启(最低级别)即可
+    @Bean
+    Logger.Level feignLoggerLevel(){
+        return Logger.Level.BASIC;
+    }
+
+}

+ 23 - 0
src/main/java/com/szwl/config/MybatisPlusConfig.java

@@ -0,0 +1,23 @@
+package com.szwl.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+@Configuration
+@EnableTransactionManagement
+public class MybatisPlusConfig {
+    /**
+     * 分页插件,自动识别数据库类型 多租户,请参考官网【插件扩展】
+     */
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+        return interceptor;
+    }
+
+}

+ 44 - 0
src/main/java/com/szwl/config/SwaggerConfig.java

@@ -0,0 +1,44 @@
+package com.szwl.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@Configuration
+@EnableSwagger2
+@EnableKnife4j
+public class SwaggerConfig {
+    @Value("${spring.application.name:}")
+    String applicationName;
+
+    private static final String SPLIT = ";";
+
+    @Bean
+    public Docket createRestApi() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .apiInfo(apiInfo()).select()
+                .apis(RequestHandlerSelectors.basePackage("com.szwl"))
+                .paths(PathSelectors.any())
+                .build();
+    }
+    /**
+     * http://127.0.0.1:端口/doc.html
+     * @return
+     */
+    private ApiInfo apiInfo() {
+        String title = applicationName + "后台接口";
+        return new ApiInfoBuilder().title(title)
+                .description(title)
+//				.termsOfServiceUrl("www.xxx.com").license("http://www.apache.org/licenses/LICENSE-2.0")
+                .version("1.0")
+                .build();
+    }
+}

+ 77 - 0
src/main/java/com/szwl/constant/ResponseCodesEnum.java

@@ -0,0 +1,77 @@
+package com.szwl.constant;
+
+public enum ResponseCodesEnum {
+    ALL_OK("00000","SUCCESS"),
+    A0001("A0001","用户端参数错误"),
+    A0002("A0002","用户端错误"),
+    A0100("A0100","用户注册错误"),
+    A0101("A0101", "出生日期格式错误"),
+    A0200("A0200", "用户编号已存在"),
+    A0201("A0201", "用户登录名已存在"),
+    A0202("A0202", "用户手机号已存在"),
+    A0203("A0203", "用户组已存在"),
+    A0204("A0204", "用户ID集合不能为空"),
+    A0205("A0205", "用户名不能为空"),
+    A0206("A0206", "用户不存在"),
+    A0207("A0207", "用户邮箱已存在"),
+    A0300("A0300", "机构号已存在"),
+    A0301("A0301", "机构不存在"),
+    A0302("A0302", "找不到机构对应的上级机构"),
+    A0500("A0500", "角色名称已存在"),
+    A0600("A0600", "值班信息已存在"),
+    A0601("A0601", "已有值班签到记录,请勿重复签到"),
+    A0700("A0700", "通知任务不存在"),
+    A0800("A0800", "外围接口KEY已存在"),
+    A0900("A0900", "用户已绑定其他设备"),
+    A0901("A0901", "用户已绑定该设备"),
+    A0902("A0902", "用户未绑定任何设备"),
+    B0001("B0001","系统执行出错"),
+    B0002("B0002","系统插入数据出错"),
+    B0003("B0003","系统更新数据出错"),
+    B0004("B0004","系统删除数据出错"),
+    B0005("B0005","系统获取数据出错"),
+    C0001("C0001","调用第三方服务出错"),
+    C0110("C0110","RPC服务出错"),
+    C0111("C0111","RPC服务未找到"),
+    C0130("C0130","缓存服务出错"),
+    E0001("E0001","SSH连接参数错误"),
+    E0002("E0002","SSH连接失败"),
+    E0003("E0003","SSH连接执行命令失败"),
+    E0004("E0004","SSH参数错误"),
+    E0101("E0101","ZABBIX认证失败"),
+    E0102("E0102","ZABBIX参数错误"),
+    E0103("E0103","ZABBIX返回错误"),
+    E0104("E0104","SNMP参数错误"),
+    E0105("E0105","SNMP解析错误"),
+    L0001("L0001","用户未登陆"),
+    L0002("L0002","用户名或密码错误,请重新输入"),
+    L0003("L0003","用户被禁用"),
+    L0004("L0004","SECURITY内部错误"),
+    L0005("L0005","安全认证不通过"),//统一的SecurityFilter过滤器,校验请求不同过返回码
+    L0006("L0006","TOKEN不可用,请重新登录"),
+    F0000("F0000","文件上传错误"),
+    F0001("F0001","文件ID不存在"),
+    F0002("F0002","找不到文件"),
+    F0003("F0003","文件下载错误"),
+    F0004("F0004","图片预览错误"),
+    F0005("F0005","读取文件失败"),
+    S0001("S0001","定时任务不存在"),
+    P0001("P0001","无权限访问"),
+    P0002("P0002","无权限删除");
+
+
+    private final String errorCode;
+    private final String errorMessage;
+
+    private ResponseCodesEnum(String errorCode, String errorMessage) {
+        this.errorCode = errorCode;
+        this.errorMessage = errorMessage;
+    }
+    public String code() {
+        return errorCode;
+    }
+    public String message() {
+        return errorMessage;
+    }
+
+}

+ 21 - 0
src/main/java/com/szwl/controller/TAdminController.java

@@ -0,0 +1,21 @@
+package com.szwl.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author wuhs
+ * @since 2023-10-17
+ */
+@RestController
+@RequestMapping("/tAdmin")
+public class TAdminController {
+
+}
+

+ 21 - 0
src/main/java/com/szwl/controller/TEquipmentController.java

@@ -0,0 +1,21 @@
+package com.szwl.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author wuhs
+ * @since 2023-10-17
+ */
+@RestController
+@RequestMapping("/tEquipment")
+public class TEquipmentController {
+
+}
+

+ 16 - 0
src/main/java/com/szwl/mapper/TAdminMapper.java

@@ -0,0 +1,16 @@
+package com.szwl.mapper;
+
+import com.szwl.model.entity.TAdmin;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author wuhs
+ * @since 2023-10-17
+ */
+public interface TAdminMapper extends BaseMapper<TAdmin> {
+
+}

+ 16 - 0
src/main/java/com/szwl/mapper/TEquipmentMapper.java

@@ -0,0 +1,16 @@
+package com.szwl.mapper;
+
+import com.szwl.model.entity.TEquipment;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author wuhs
+ * @since 2023-10-17
+ */
+public interface TEquipmentMapper extends BaseMapper<TEquipment> {
+
+}

+ 50 - 0
src/main/java/com/szwl/mapper/xml/TAdminMapper.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.szwl.mapper.TAdminMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.szwl.model.entity.TAdmin">
+        <id column="id" property="id" />
+        <result column="create_date" property="createDate" />
+        <result column="modify_date" property="modifyDate" />
+        <result column="agency_id" property="agencyId" />
+        <result column="area_id" property="areaId" />
+        <result column="qr_code_img_url" property="qrCodeImgUrl" />
+        <result column="department" property="department" />
+        <result column="email" property="email" />
+        <result column="is_admined" property="isAdmined" />
+        <result column="is_enabled" property="isEnabled" />
+        <result column="is_locked" property="isLocked" />
+        <result column="locked_date" property="lockedDate" />
+        <result column="login_date" property="loginDate" />
+        <result column="login_failure_count" property="loginFailureCount" />
+        <result column="login_ip" property="loginIp" />
+        <result column="merchant_id" property="merchantId" />
+        <result column="trade_merchant_no" property="tradeMerchantNo" />
+        <result column="name" property="name" />
+        <result column="parent_id" property="parentId" />
+        <result column="password" property="password" />
+        <result column="personage_id" property="personageId" />
+        <result column="notice_id" property="noticeId" />
+        <result column="type" property="type" />
+        <result column="username" property="username" />
+        <result column="phone" property="phone" />
+        <result column="is_refund" property="isRefund" />
+        <result column="if_foreign" property="ifForeign" />
+        <result column="open" property="open" />
+        <result column="promo_code_open" property="promoCodeOpen" />
+        <result column="apply_start_time" property="applyStartTime" />
+        <result column="apply_end_time" property="applyEndTime" />
+        <result column="code" property="code" />
+        <result column="pay_platform" property="payPlatform" />
+        <result column="logo_rule" property="logoRule" />
+        <result column="relation_admin_id" property="relationAdminId" />
+        <result column="manager_id" property="managerId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, create_date, modify_date, agency_id, area_id, qr_code_img_url, department, email, is_admined, is_enabled, is_locked, locked_date, login_date, login_failure_count, login_ip, merchant_id, trade_merchant_no, name, parent_id, password, personage_id, notice_id, type, username, phone, is_refund, if_foreign, open, promo_code_open, apply_start_time, apply_end_time, code, pay_platform, logo_rule, relation_admin_id, manager_id
+    </sql>
+
+</mapper>

File diff suppressed because it is too large
+ 73 - 0
src/main/java/com/szwl/mapper/xml/TEquipmentMapper.xml


+ 107 - 0
src/main/java/com/szwl/model/entity/TAdmin.java

@@ -0,0 +1,107 @@
+package com.szwl.model.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wuhs
+ * @since 2023-10-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="TAdmin对象", description="")
+public class TAdmin implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    private Date createDate;
+
+    private Date modifyDate;
+
+    private Long agencyId;
+
+    private Long areaId;
+
+    @ApiModelProperty(value = "二维码地址")
+    private String qrCodeImgUrl;
+
+    private String department;
+
+    private String email;
+
+    private Boolean isAdmined;
+
+    private Boolean isEnabled;
+
+    private Boolean isLocked;
+
+    private Date lockedDate;
+
+    private Date loginDate;
+
+    private Integer loginFailureCount;
+
+    private String loginIp;
+
+    private Long merchantId;
+
+    private String tradeMerchantNo;
+
+    private String name;
+
+    private Long parentId;
+
+    private String password;
+
+    private Long personageId;
+
+    private Long noticeId;
+
+    private Integer type;
+
+    private String username;
+
+    private String phone;
+
+    private String isRefund;
+
+    private String ifForeign;
+
+    @ApiModelProperty(value = "是否开启远程开关机")
+    private String open;
+
+    @ApiModelProperty(value = "是否开通0折优惠码;0:开通,1:关闭")
+    private String promoCodeOpen;
+
+    @ApiModelProperty(value = "机器连接服务器免审核开始时间")
+    private Date applyStartTime;
+
+    @ApiModelProperty(value = "机器连接服务器免审核结束时间")
+    private Date applyEndTime;
+
+    private String code;
+
+    @ApiModelProperty(value = "支付平台  0或null为汇聚,1为杉德支付")
+    private String payPlatform;
+
+    private String logoRule;
+
+    private String relationAdminId;
+
+    private String managerId;
+
+
+}

+ 153 - 0
src/main/java/com/szwl/model/entity/TEquipment.java

@@ -0,0 +1,153 @@
+package com.szwl.model.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wuhs
+ * @since 2023-10-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="TEquipment对象", description="")
+public class TEquipment implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    private Date createDate;
+
+    private Date modifyDate;
+
+    private Long adminId;
+
+    private String adminLevel;
+
+    private String adminPwd;
+
+    private Long areaId;
+
+    private String cabinetHd;
+
+    private String cabinetTm;
+
+    private String clientId;
+
+    private String contactName;
+
+    private String contactPhone;
+
+    private String operationalPhone;
+
+    @ApiModelProperty(value = "机器运营者")
+    private String operationalName;
+
+    private String furnaceSp;
+
+    private String furnaceTm;
+
+    private String guestPwd;
+
+    private Boolean isNetWork;
+
+    private Boolean isUsing;
+
+    private Date lastUpdateTime;
+
+    private Double latitude;
+
+    private Double longitude;
+
+    private String managerId;
+
+    @ApiModelProperty(value = "客户自命名")
+    private String selfName;
+
+    @ApiModelProperty(value = "通信方式  1:个推,2:Mq 如果为null,那么用个推")
+    private String channel;
+
+    private String name;
+
+    private String netWorkingMode;
+
+    private String operator;
+
+    private Integer payType;
+
+    private Integer productTotal;
+
+    private String simNo;
+
+    private String sn;
+
+    private String adminUserName;
+
+    private Long agencyId;
+
+    private Long merchantId;
+
+    private String companyPhone;
+
+    private Long personageId;
+
+    private Integer type;
+
+    private String fullName;
+
+    private Date pushUpdateTime;
+
+    private Long timeRuleId;
+
+    private String gtClientId;
+
+    private Integer eqeStatus;
+
+    private Boolean isBlocked;
+
+    private String messageReceiver;
+
+    private Boolean isSleep;
+
+    private String advancedParameters;
+
+    private String volume;
+
+    private String commonParameters;
+
+    @ApiModelProperty(value = "远程开关机的时间戳")
+    private String network;
+
+    private String offTime;
+
+    private String bootTime;
+
+    private String plcVersion;
+
+    private String equimentType;
+
+    private Date endDate;
+
+    private String flowers;
+
+    private String machineType;
+
+    @ApiModelProperty(value = "支付方式:为了远程修改支付方式")
+    private String paymentType;
+
+    @ApiModelProperty(value = "公司平台,0或空为申泽,1为七云")
+    private String companyType;
+
+
+}

+ 16 - 0
src/main/java/com/szwl/service/TAdminService.java

@@ -0,0 +1,16 @@
+package com.szwl.service;
+
+import com.szwl.model.entity.TAdmin;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author wuhs
+ * @since 2023-10-17
+ */
+public interface TAdminService extends IService<TAdmin> {
+
+}

+ 16 - 0
src/main/java/com/szwl/service/TEquipmentService.java

@@ -0,0 +1,16 @@
+package com.szwl.service;
+
+import com.szwl.model.entity.TEquipment;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author wuhs
+ * @since 2023-10-17
+ */
+public interface TEquipmentService extends IService<TEquipment> {
+
+}

+ 20 - 0
src/main/java/com/szwl/service/impl/TAdminServiceImpl.java

@@ -0,0 +1,20 @@
+package com.szwl.service.impl;
+
+import com.szwl.model.entity.TAdmin;
+import com.szwl.mapper.TAdminMapper;
+import com.szwl.service.TAdminService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author wuhs
+ * @since 2023-10-17
+ */
+@Service
+public class TAdminServiceImpl extends ServiceImpl<TAdminMapper, TAdmin> implements TAdminService {
+
+}

+ 20 - 0
src/main/java/com/szwl/service/impl/TEquipmentServiceImpl.java

@@ -0,0 +1,20 @@
+package com.szwl.service.impl;
+
+import com.szwl.model.entity.TEquipment;
+import com.szwl.mapper.TEquipmentMapper;
+import com.szwl.service.TEquipmentService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author wuhs
+ * @since 2023-10-17
+ */
+@Service
+public class TEquipmentServiceImpl extends ServiceImpl<TEquipmentMapper, TEquipment> implements TEquipmentService {
+
+}

+ 74 - 0
src/main/resources/bootstrap.yml

@@ -0,0 +1,74 @@
+spring:
+  application:
+    name: syncOld-server
+  profiles:
+    # 打包或运行时,换这里:sit测试,prod正式
+    active: sit
+  cloud:
+    config:
+      name: syncOld-server
+      discovery:
+        service-id: config-server
+        # 是否获取配置中心配置
+        enabled: true
+# 项目端口
+server:
+  port: 49015
+
+management:
+  endpoints:
+    web:
+      exposure:
+        include: refresh
+
+mybatis-plus:
+  mapper-locations: classpath:com/szwl/mapper/xml/*.xml
+
+logging:
+  level:
+    com.szwl: debug
+
+##上面是基础配置,不用上配置中心那种
+##下面是环境区分,主要不同环境不同文件获取
+---
+#测试环境
+spring:
+  profiles: sit
+  #数据库配置
+  datasource:
+    url: jdbc:mysql://rm-wz995mu26a1479kz0so.mysql.rds.aliyuncs.com:3306/mianhuatang
+    username: root
+    password: sunzee@020
+    driver-class-name: com.mysql.jdbc.Driver
+
+#注册中心
+eureka:
+  client:
+    serviceUrl:
+      defaultZone: http://120.25.151.99:49001/eureka/
+    register-with-eureka: true
+#    本地测试的时候改成 false
+#    register-with-eureka: false
+  instance:
+    prefer-ip-address: true
+    ip-address: 120.25.151.99
+
+---
+##正式环境
+spring:
+  profiles: prod
+  #数据库配置
+  datasource:
+    url: jdbc:mysql://rm-wz995mu26a1479kz0.mysql.rds.aliyuncs.com:3306/mianhuatang
+    username: root
+    password: sunzee@020
+    driver-class-name: com.mysql.jdbc.Driver
+
+#注册中心
+eureka:
+  client:
+    serviceUrl:
+      defaultZone: http://10.0.0.153:49001/eureka/,http://10.0.0.152:49001/eureka/
+    register-with-eureka: true
+  instance:
+    prefer-ip-address: true

+ 12 - 0
src/test/java/com/szwl/ApplicationTests.java

@@ -0,0 +1,12 @@
+package com.szwl;
+
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@Slf4j
+@SpringBootTest
+class ApplicationTests {
+
+}

+ 74 - 0
src/test/java/com/szwl/AutoGeneratorTests.java

@@ -0,0 +1,74 @@
+package com.szwl;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+import com.baomidou.mybatisplus.generator.config.PackageConfig;
+import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+import com.baomidou.mybatisplus.generator.config.rules.DateType;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@Slf4j
+@SpringBootTest
+class AutoGeneratorTests {
+	@Test
+	void contextLoads() {
+		AutoGenerator autoGenerator = new AutoGenerator();
+
+		//获取工程的根目录
+		String projectPath = System.getProperty("user.dir");//得到当前项目的路径
+		//全局配置
+		GlobalConfig globalConfig = new GlobalConfig();
+		globalConfig.setAuthor("wuhs")
+				.setOutputDir(projectPath + "/src/main/java")//设置输出路径,项目所在路径
+				.setFileOverride(true)//设置文件覆盖
+				.setOpen(false)//是否生成代码后打开本地目录
+				.setSwagger2(true) //实体属性 Swagger2 注解
+				.setIdType(IdType.ASSIGN_ID)//设置主键生成策略
+				.setServiceName("%sService")//service接口的名称
+				.setDateType(DateType.ONLY_DATE)
+				.setBaseResultMap(true)//基本结果集合
+				.setBaseColumnList(true)//设置基本的列
+				.setControllerName("%sController");
+
+		//配置数据源
+		//配置数据源
+		DataSourceConfig dataSourceConfig = new DataSourceConfig();
+		dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver")
+				.setUrl("jdbc:mysql://rm-wz995mu26a1479kz0so.mysql.rds.aliyuncs.com:3306/mianhuatang")
+				.setUsername("root").setPassword("sunzee@020");
+
+		//策略配置
+		StrategyConfig strategyConfig = new StrategyConfig();
+		strategyConfig
+//				.setCapitalMode(true)//设置全局大写命名
+				.setInclude(new String[]{
+						"t_equipment"
+				})//只会生成该表
+				.setEntityLombokModel(true)//实体类生成之后自动添加lombok注解
+				.setNaming(NamingStrategy.underline_to_camel)//数据库表映射到实体的命名策略
+				.setColumnNaming(NamingStrategy.underline_to_camel)//将数据库中带下划线的转成驼峰规则
+				//.setTablePrefix("tbl_")//设置表名前缀
+				.setRestControllerStyle(true)//controller是否使用restful风格
+		;
+
+		//包名配置
+		PackageConfig packageConfig = new PackageConfig();
+		packageConfig.setParent("com.szwl")
+				.setMapper("mapper")//包路径
+				.setService("service")
+				.setController("controller")
+				.setEntity("model.entity")
+//		.setXml()
+		;
+
+		autoGenerator.setGlobalConfig(globalConfig).setDataSource(dataSourceConfig)
+				.setStrategy(strategyConfig).setPackageInfo(packageConfig);
+
+		autoGenerator.execute();
+	}
+}