forked from gzzfw/backEnd/gz-dyh

liyj
2024-09-05 e181c084902aee7d7701865bd86cc6fc54e28e2f
1、新增一期综治中心数据对接微服务
24 files added
2398 ■■■■■ changed files
dyh-service/dyh-ssim/pom.xml 224 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/assembly/assembly.xml 68 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/java/cn/huge/module/DyhSsimApplication.java 21 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/java/cn/huge/module/buildcode/controller/BuildCodeController.java 62 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/java/cn/huge/module/buildcode/dao/mapper/BuildCodeMapper.java 48 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/java/cn/huge/module/buildcode/dao/mapper/xml/BuildCodeMapper.xml 32 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/java/cn/huge/module/buildcode/domain/bo/UserTabColsBO.java 218 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/java/cn/huge/module/buildcode/service/BuildCodeService.java 683 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/java/cn/huge/module/buildcode/utils/DbDataTypeToJavaType.java 71 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/java/cn/huge/module/client/api/CustClient.java 46 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/java/cn/huge/module/client/api/UtilsClient.java 25 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/java/cn/huge/module/client/api/impl/CustClientImpl.java 102 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/java/cn/huge/module/client/api/impl/UtilsClientImpl.java 53 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/java/cn/huge/module/config/MybatisPlusConfig.java 49 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/java/cn/huge/module/constant/CacheConsts.java 35 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/java/cn/huge/module/utils/ConfigUtils.java 35 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/resources/config/application-dev.yml 96 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/resources/config/application-prod.yml 96 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/resources/config/application-test.yml 96 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/resources/config/application.yml 63 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/main/resources/logback-spring.xml 149 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/test/java/cn/huge/base/common/base/BaseServiceTest.java 30 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/test/java/cn/huge/module/BuildCodeServiceTest.java 79 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/src/test/java/cn/huge/module/DyhSsimApplicationTest.java 17 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-ssim/pom.xml
New file
@@ -0,0 +1,224 @@
<?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>cn.huge</groupId>
    <artifactId>dyh-ssim</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>dyh-ssim</name>
    <description>广州市综治中心应用平台矛调模块-一期综治中心数据对接微服务</description>
    <parent>
        <groupId>cn.huge</groupId>
        <artifactId>dyh-service</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>
    <properties>
    </properties>
    <dependencies>
        <!-- 公共框架mybatisPlus版 -->
        <dependency>
            <groupId>cn.huge</groupId>
            <artifactId>dyh-base</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>
        <!-- 公共框架mybatisPlus版 end -->
        <!-- springboot test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- springboot test end -->
        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!-- lombok end -->
        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- junit end -->
    </dependencies>
    <build>
        <finalName>dyh-ssim</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!--重写包含依赖,包含不存在的依赖,jar里没有pom里的依赖 -->
                    <includes>
                        <include>
                            <groupId>null</groupId>
                            <artifactId>null</artifactId>
                        </include>
                    </includes>
                    <layout>ZIP</layout>
                    <!--使用外部配置文件,jar包里没有资源文件 -->
                    <addResources>true</addResources>
                    <outputDirectory>${project.build.directory}</outputDirectory>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                        <configuration>
                            <!--配置jar包特殊标识 配置后,保留原文件,生成新文件 *-run.jar -->
                            <!--配置jar包特殊标识 不配置,原文件命名为 *.jar.original,生成新文件 *.jar -->
                            <!--<classifier>run</classifier> -->
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <!--不打包资源文件 注意这玩意从编译结果目录开始算目录结构 -->
                    <excludes>
                        <!-- 选择性过滤 -->
                        <exclude>/**/*.yml</exclude>
                        <exclude>/src/main/resources/*.xml</exclude>
                        <exclude>/src/main/resources/config/*.xml</exclude>
                        <exclude>/**/*.properties</exclude>
                        <exclude>/**/*.conf</exclude>
                    </excludes>
                    <includes>
                        <!-- 只打包指定目录的文件 -->
                        <include>cn/huge/**</include>
                    </includes>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <useUniqueVersions>false</useUniqueVersions>
                            <mainClass>cn.huge.module.DyhSsimApplication</mainClass>
                        </manifest>
                        <manifestEntries>
                            <!--MANIFEST.MF 中 Class-Path 加入资源文件目录 -->
                            <Class-Path>./config/</Class-Path>
                        </manifestEntries>
                    </archive>
                    <outputDirectory>${project.build.directory}</outputDirectory>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--拷贝资源文件 copy-resources -->
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>src/main/resources</directory>
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>*.xml</include>
                                        <include>*.yml</include>
                                        <include>*.properties</include>
                                        <include>*.conf</include>
                                    </includes>
                                </resource>
                                <resource>
                                    <directory>src/main/resources/config</directory>
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>*.xml</include>
                                        <include>*.yml</include>
                                        <include>*.properties</include>
                                        <include>*.conf</include>
                                    </includes>
                                </resource>
                            </resources>
                            <outputDirectory>${project.build.directory}/config</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- 打包时跳过测试 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
            <!-- 打包插件 -->
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <!--<finalName>${project.artifactId}</finalName>-->
                    <!-- 只使用finalName作为名字,不追加AssemblyId -->
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptors>
                        <descriptor>src/main/assembly/assembly.xml</descriptor>
                    </descriptors>
                    <!-- 打包后输出目录 -->
                    <!--<outputDirectory>/Users/wangminzhao/tmp/lisp-install-pkg</outputDirectory>-->
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>${basedir}/src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>
</project>
dyh-service/dyh-ssim/src/main/assembly/assembly.xml
New file
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<assembly>
    <!-- 可自定义,这里指定的是项目环境 -->
    <!-- spring-boot-assembly-local-1.0.RELEASE.tar.gz  -->
    <id>${project.version}</id>
    <!-- 打包的类型,如果有N个,将会打N个类型的包 -->
    <formats>
        <format>tar.gz</format>
        <format>zip</format>
    </formats>
    <!-- 需要根目录 -->
    <includeBaseDirectory>true</includeBaseDirectory>
    <fileSets>
        <!--
            0755->即用户具有读/写/执行权限,组用户和其它用户具有读写权限;
            0644->即用户具有读写权限,组用户和其它用户具有只读权限;
        -->
        <!-- 指定输出target中的配置文件到config目录中 -->
        <fileSet>
            <directory>${project.build.directory}/config</directory>
            <outputDirectory>config</outputDirectory>
            <fileMode>0644</fileMode>
        </fileSet>
        <!-- 将第三方依赖打包到lib目录中 -->
        <fileSet>
            <directory>${project.build.directory}/lib</directory>
            <outputDirectory>lib</outputDirectory>
            <fileMode>0755</fileMode>
        </fileSet>
        <!-- 指定输出static中的文件到static目录中 -->
        <fileSet>
            <directory>${project.basedir}/src/main/resources/static</directory>
            <outputDirectory>static</outputDirectory>
            <fileMode>0755</fileMode>
        </fileSet>
        <!-- 指定输出processes中的文件到processes目录中 -->
        <fileSet>
            <directory>${project.basedir}/src/main/resources/processes</directory>
            <outputDirectory>processes</outputDirectory>
            <fileMode>0755</fileMode>
        </fileSet>
        <!-- 指定输出templates中的文件到templates目录中 -->
        <fileSet>
            <directory>${project.basedir}/src/main/resources/templates</directory>
            <outputDirectory>templates</outputDirectory>
            <fileMode>0755</fileMode>
        </fileSet>
        <!-- 将项目启动jar打包到/目录中 -->
        <fileSet>
            <directory>${project.build.directory}</directory>
            <outputDirectory></outputDirectory>
            <fileMode>0755</fileMode>
            <includes>
                <include>${project.build.finalName}.jar</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>
dyh-service/dyh-ssim/src/main/java/cn/huge/module/DyhSsimApplication.java
New file
@@ -0,0 +1,21 @@
package cn.huge.module;
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;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication(scanBasePackages = {"cn.huge"})
@EnableFeignClients
@EnableEurekaClient
@EnableScheduling
@MapperScan("cn.huge.*.*.dao.mapper")
public class DyhSsimApplication {
    public static void main(String[] args) {
        SpringApplication.run(DyhSsimApplication.class, args);
    }
}
dyh-service/dyh-ssim/src/main/java/cn/huge/module/buildcode/controller/BuildCodeController.java
New file
@@ -0,0 +1,62 @@
package cn.huge.module.buildcode.controller;
import cn.huge.module.buildcode.service.BuildCodeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.PostConstruct;
/**
 * @title: 控代码生成器控制器类
 * @description: 控代码生成器控制器类
 * @company: hugeinfo
 * @author: liyj
 * @time: 2021-11-05 16:51:48
 * @version: 1.0.0
 */
@Slf4j
@RestController
@RequestMapping("/buildcode")
public class BuildCodeController {
    @Autowired
    private BuildCodeService buildCodeService;
    @GetMapping("/buildAll")
    public Object buildAll(String moduleName, String className, String tableName, String author) {
        return null;
    }
    @PostConstruct
    public void init() {
        log.debug("====================     BuildCodeController initi..............       ===================");
    }
}
/**
 * -------------------_ooOoo_-------------------
 * ------------------o8888888o------------------
 * ------------------88" . "88------------------
 * ------------------(| -_- |)------------------
 * ------------------O\  =  /O------------------
 * ---------------____/`---'\____---------------
 * -------------.'  \\|     |//  `.-------------
 * ------------/  \\|||  :  |||//  \------------
 * -----------/  _||||| -:- |||||-  \-----------
 * -----------|   | \\\  -  /// |   |-----------
 * -----------| \_|  ''\---/''  |   |-----------
 * -----------\  .-\__  `-`  ___/-. /-----------
 * ---------___`. .'  /--.--\  `. . __----------
 * ------."" '<  `.___\_<|>_/___.'  >'"".-------
 * -----| | :  `- \`.;`\ _ /`;.`/ - ` : | |-----
 * -----\  \ `-.   \_ __\ /__ _/   .-` /  /-----
 * ======`-.____`-.___\_____/___.-`____.-'======
 * -------------------`=---='
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 * ---------佛祖保佑---hugeinfo---永无BUG----------
 */
dyh-service/dyh-ssim/src/main/java/cn/huge/module/buildcode/dao/mapper/BuildCodeMapper.java
New file
@@ -0,0 +1,48 @@
package cn.huge.module.buildcode.dao.mapper;
import cn.huge.module.buildcode.domain.bo.UserTabColsBO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
 * @title: 代码生成器mybatis接口
 * @description: 代码生成器mybatis接口
 * @company: hugeinfo
 * @author: liyj
 * @time: 2021-11-05 16:51:48
 * @version: 1.0.0
 */
@Repository
public interface BuildCodeMapper {
    /**
     * 获取表的基本信息
     *
     * @param tableName
     * @return
     */
    List<UserTabColsBO> getTabInfo(@Param("tableSchema") String tableSchema, @Param("tableName") String tableName);
}
/**
 * -------------------_ooOoo_-------------------
 * ------------------o8888888o------------------
 * ------------------88" . "88------------------
 * ------------------(| -_- |)------------------
 * ------------------O\  =  /O------------------
 * ---------------____/`---'\____---------------
 * -------------.'  \\|     |//  `.-------------
 * ------------/  \\|||  :  |||//  \------------
 * -----------/  _||||| -:- |||||-  \-----------
 * -----------|   | \\\  -  /// |   |-----------
 * -----------| \_|  ''\---/''  |   |-----------
 * -----------\  .-\__  `-`  ___/-. /-----------
 * ---------___`. .'  /--.--\  `. . __----------
 * ------."" '<  `.___\_<|>_/___.'  >'"".-------
 * -----| | :  `- \`.;`\ _ /`;.`/ - ` : | |-----
 * -----\  \ `-.   \_ __\ /__ _/   .-` /  /-----
 * ======`-.____`-.___\_____/___.-`____.-'======
 * -------------------`=---='
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 * ---------佛祖保佑---hugeinfo---永无BUG----------
 */
dyh-service/dyh-ssim/src/main/java/cn/huge/module/buildcode/dao/mapper/xml/BuildCodeMapper.xml
New file
@@ -0,0 +1,32 @@
<?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">
<!--@title: 代码生成器mybatis接口
@description: 代码生成器mybatis接口
@company: hugeinfo
@author: liyj、wangwh
@time: 2024-7-25 16:51:48
@version: 1.0.0-->
<mapper namespace="cn.huge.module.buildcode.dao.mapper.BuildCodeMapper">
    <resultMap id="reslutMap" type="cn.huge.module.buildcode.domain.bo.UserTabColsBO">
        <result property="tableName" column="tableName"/>
        <result property="tableComments" column="tableComments"/>
        <result property="name" column="name"/>
        <result property="comments" column="comments"/>
        <result property="dataType" column="dataType"/>
    </resultMap>
    <!--自定义查询-->
    <select id="getTabInfo" parameterType="String" resultMap="reslutMap">
        SELECT t1.table_name AS "tableName", t2.comments AS "tableComments", t1.column_name AS "name",
               t1.data_type AS "dataType", t3.comments AS "comments"
        FROM all_tab_columns t1
            LEFT JOIN all_tab_comments t2 ON t1.table_name = t2.table_name
            LEFT JOIN user_col_comments t3 ON t1.table_name = t3.table_name AND t1.column_name = t3.column_name
        WHERE t1.table_name = #{tableName}
          AND t1.OWNER = #{tableSchema}
          AND t2.OWNER = #{tableSchema}
          AND t3.OWNER = #{tableSchema}
    </select>
</mapper>
dyh-service/dyh-ssim/src/main/java/cn/huge/module/buildcode/domain/bo/UserTabColsBO.java
New file
@@ -0,0 +1,218 @@
package cn.huge.module.buildcode.domain.bo;
import cn.huge.base.common.utils.StringUtils;
import cn.huge.module.buildcode.utils.DbDataTypeToJavaType;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
 * @title: 控代码生成器业务对象
 * @description: 控代码生成器业务对象
 * @company: hugeinfo
 * @author: liyj
 * @time: 2021-11-05 16:51:48
 * @version: 1.0.0
 */
public class UserTabColsBO {
    /**
     * 表名
     */
    private String tableName;
    /**
     * 表名中文
     */
    private String tableComments;
    /**
     * 表字段名
     */
    private String name;
    /**
     * 表字段名中文
     */
    private String comments;
    /**
     * 表字段类型
     */
    private String dataType;
    /**
     * 表字段java类型
     */
    private String javaDataType;
    /**
     * 表字段默认值
     */
    private Integer dataScale;
    /**
     * 实体类属性
     */
    private String fieldName;
    /**
     * 实体类属性字段名
     */
    private String fieldUpperName;
    /**
     * 是否有数据
     */
    private Integer hasDate;
    /**
     * 是否有Clob
     */
    private Integer hasClob;
    /**
     * 是否有Blob
     */
    private Integer hasBlob;
    /**
     * 构造函数
     */
    public UserTabColsBO() {
        this.hasDate = 0;
        this.hasClob = 0;
        this.hasBlob = 0;
    }
    public String getTableName() {
        return tableName;
    }
    public void setTableName(String tableName) {
        this.tableName = tableName.toLowerCase();
    }
    public String getTableComments() {
        return tableComments;
    }
    public void setTableComments(String tableComments) {
        this.tableComments = tableComments.toLowerCase();
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name.toLowerCase();
        this.fieldName = StringUtils.lineToHump(name);
        this.fieldUpperName = StringUtils.toUpperFirstLetter(this.fieldName);
    }
    public String getDataType() {
        return dataType;
    }
    public void setDataType(String dataType) {
        this.dataType = dataType.toLowerCase();
        this.javaDataType = DbDataTypeToJavaType.getJavaType(dataType);
        this.hasDate = 0;
        if (DbDataTypeToJavaType.DATA_TYPE_DATE.equals(this.javaDataType)) {
            this.hasDate = 1;
        }
    }
    public String getComments() {
        return comments;
    }
    public void setComments(String comments) {
        this.comments = comments;
    }
    public String getFieldName() {
        return fieldName;
    }
    public void setFieldName(String fieldName) {
        this.fieldName = fieldName;
    }
    public String getFieldUpperName() {
        return fieldUpperName;
    }
    public void setFieldUpperName(String fieldUpperName) {
        this.fieldUpperName = fieldUpperName;
    }
    public String getJavaDataType() {
        return javaDataType;
    }
    public void setJavaDataType(String javaDataType) {
        this.javaDataType = javaDataType;
    }
    public Integer getDataScale() {
        return dataScale;
    }
    public void setDataScale(Integer dataScale) {
        this.dataScale = dataScale;
    }
    public int getHasDate() {
        return hasDate;
    }
    public void setHasDate(Integer hasDate) {
        this.hasDate = hasDate;
    }
    public int getHasClob() {
        return hasClob;
    }
    public void setHasClob(Integer hasClob) {
        this.hasClob = hasClob;
    }
    public int getHasBlob() {
        return hasBlob;
    }
    public void setHasBlob(Integer hasBlob) {
        this.hasBlob = hasBlob;
    }
    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
    }
}
/**
 * -------------------_ooOoo_-------------------
 * ------------------o8888888o------------------
 * ------------------88" . "88------------------
 * ------------------(| -_- |)------------------
 * ------------------O\  =  /O------------------
 * ---------------____/`---'\____---------------
 * -------------.'  \\|     |//  `.-------------
 * ------------/  \\|||  :  |||//  \------------
 * -----------/  _||||| -:- |||||-  \-----------
 * -----------|   | \\\  -  /// |   |-----------
 * -----------| \_|  ''\---/''  |   |-----------
 * -----------\  .-\__  `-`  ___/-. /-----------
 * ---------___`. .'  /--.--\  `. . __----------
 * ------."" '<  `.___\_<|>_/___.'  >'"".-------
 * -----| | :  `- \`.;`\ _ /`;.`/ - ` : | |-----
 * -----\  \ `-.   \_ __\ /__ _/   .-` /  /-----
 * ======`-.____`-.___\_____/___.-`____.-'======
 * -------------------`=---='
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 * ---------佛祖保佑---hugeinfo---永无BUG----------
 */
dyh-service/dyh-ssim/src/main/java/cn/huge/module/buildcode/service/BuildCodeService.java
New file
@@ -0,0 +1,683 @@
package cn.huge.module.buildcode.service;
import cn.huge.module.buildcode.domain.bo.UserTabColsBO;
import cn.huge.module.buildcode.dao.mapper.BuildCodeMapper;
import com.google.common.collect.Maps;
import freemarker.core.ParseException;
import freemarker.template.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.PostConstruct;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @title: 代码生成器服务层基类
 * @description: 使用单元测试直接对buildAll执行测试完成代码生成
 * @company: hugeinfo
 * @author: liyj
 * @time: 2021-11-05 16:51:48
 * @version: 1.0.0
 */
@Slf4j
@Service
public class BuildCodeService {
    public static void main(String[] args) throws MalformedURLException, URISyntaxException {
    }
    @Autowired
    private BuildCodeMapper buildCodeMapper;
    private Configuration cfg;
    private static StringBuffer ROOT_MAIN_PATH = new StringBuffer(System.getProperty("user.dir")).append(("/src/main/java/"));
    private static StringBuffer ROOT_TEST_PATH = new StringBuffer(System.getProperty("user.dir")).append(("/src/test/java/"));
    @PostConstruct
    private void init() throws IOException {
        try {
            Configuration configuration = new Configuration(Configuration.getVersion());
            configuration.setClassForTemplateLoading(BuildCodeService.class, "/template");
            configuration.setDefaultEncoding("UTF-8");
            this.cfg = configuration;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 获取表数据属性
     * @param packagePath 包路径
     * @param packageName 包名
     * @param className 类名
     * @param tableName 表名
     * @param author 作者
     * @param version 版本
     * @return Map
     */
    private Map getTplData(String packagePath, String packageName, String className, String tableSchema, String tableName, String author, String version) {
        Map tplData = Maps.newHashMap();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        tplData.put("packageName", packageName);
        tplData.put("className", className);
        tplData.put("author", author);
        tplData.put("version", version);
        tplData.put("createTime", format.format(new Date()));
        tplData.put("basePackage", packagePath);
        tplData.put("basePackagePath", packagePath.replace(".", "/") + "/");
        List<UserTabColsBO> list = buildCodeMapper.getTabInfo(tableSchema, tableName);
        if (!CollectionUtils.isEmpty(list)) {
            UserTabColsBO vo = list.get(0);
            tplData.put("tableName", vo.getTableName());
            tplData.put("tableComments", vo.getTableComments());
            tplData.put("cols", list);
            tplData.put("hasDate", 0);
            tplData.put("hasClob", 0);
            tplData.put("hasBlob", 0);
            for (UserTabColsBO bo : list) {
                if (bo.getHasDate() > 0) {
                    tplData.put("hasDate", 1);
                }
            }
        }
        return tplData;
    }
    /**
     * 生成所有层的代码
     * @param basePackage 包路径
     * @param packageName 包名
     * @param className 类名
     * @param tableName 表名
     * @param author 作者
     * @param version 版本
     */
    public void buildAll(String basePackage, String packageName, String className, String tableSchema, String tableName, String author, String version) {
        Map tplData = this.getTplData(basePackage, packageName, className, tableSchema, tableName, author, version);
        try {
            // 必须
            this.buildPo(tplData);
            this.buildBo(tplData);
            this.buildDaoMapper(tplData);
            this.buildDaoMapperXml(tplData);
            this.buildService(tplData);
            this.buildWebController(tplData);
            // 可选
//            this.buildWechatController(tplData);
//            this.buildJson(tplData);
//            this.buildJsForm(tplData);
        } catch (TemplateNotFoundException e) {
            log.error("TemplateNotFoundException");
        } catch (TemplateException e) {
            log.error("TemplateException");
        } catch (MalformedTemplateNameException e) {
            log.error("MalformedTemplateNameException");
        } catch (ParseException e) {
            log.error("ParseException");
        } catch (IOException e) {
            log.error("IOException");
        }
    }
    /**
     * 生成PO层的代码
     * @param basePackage 包路径
     * @param packageName 包名
     * @param className 类名
     * @param tableName 表名
     * @param author 作者
     * @param version 版本
     */
    public void buildPo(String basePackage, String packageName, String className, String tableSchema, String tableName, String author, String version) {
        Map tplData = this.getTplData(basePackage, packageName, className, tableSchema, tableName, author, version);
        try {
            this.buildPo(tplData);
        } catch (TemplateNotFoundException e) {
            log.error("TemplateNotFoundException");
        } catch (TemplateException e) {
            log.error("TemplateException");
        } catch (MalformedTemplateNameException e) {
            log.error("MalformedTemplateNameException");
        } catch (ParseException e) {
            log.error("ParseException");
        } catch (IOException e) {
            log.error("IOException");
        }
    }
    /**
     * 生成BO层的代码
     * @param basePackage 包路径
     * @param packageName 包名
     * @param className 类名
     * @param tableName 表名
     * @param author 作者
     * @param version 版本
     */
    public void buildBo(String basePackage, String packageName, String className, String tableSchema, String tableName, String author, String version) {
        Map tplData = this.getTplData(basePackage, packageName, className, tableSchema, tableName, author, version);
        try {
            this.buildBo(tplData);
        } catch (TemplateNotFoundException e) {
            log.error("TemplateNotFoundException");
        } catch (TemplateException e) {
            log.error("TemplateException");
        } catch (MalformedTemplateNameException e) {
            log.error("MalformedTemplateNameException");
        } catch (ParseException e) {
            log.error("ParseException");
        } catch (IOException e) {
            log.error("IOException");
        }
    }
    /**
     * 生成Mapper的代码
     * @param basePackage 包路径
     * @param packageName 包名
     * @param className 类名
     * @param tableName 表名
     * @param author 作者
     * @param version 版本
     */
    public void buildDaoMapper(String basePackage, String packageName, String className, String tableSchema, String tableName, String author, String version) {
        Map tplData = this.getTplData(basePackage, packageName, className, tableSchema, tableName, author, version);
        try {
            this.buildDaoMapper(tplData);
        } catch (TemplateNotFoundException e) {
            log.error("TemplateNotFoundException");
        } catch (TemplateException e) {
            log.error("TemplateException");
        } catch (MalformedTemplateNameException e) {
            log.error("MalformedTemplateNameException");
        } catch (ParseException e) {
            log.error("ParseException");
        } catch (IOException e) {
            log.error("IOException");
        }
    }
    /**
     * 生成MapperXml的代码
     * @param basePackage 包路径
     * @param packageName 包名
     * @param className 类名
     * @param tableName 表名
     * @param author 作者
     * @param version 版本
     */
    public void buildDaoMapperXml(String basePackage, String packageName, String className, String tableSchema, String tableName, String author, String version) {
        Map tplData = this.getTplData(basePackage, packageName, className, tableSchema, tableName, author, version);
        try {
            this.buildDaoMapperXml(tplData);
        } catch (TemplateNotFoundException e) {
            log.error("TemplateNotFoundException");
        } catch (TemplateException e) {
            log.error("TemplateException");
        } catch (MalformedTemplateNameException e) {
            log.error("MalformedTemplateNameException");
        } catch (ParseException e) {
            log.error("ParseException");
        } catch (IOException e) {
            log.error("IOException");
        }
    }
    /**
     * 生成service层的代码
     * @param basePackage 包路径
     * @param packageName 包名
     * @param className 类名
     * @param tableName 表名
     * @param author 作者
     * @param version 版本
     */
    public void buildService(String basePackage, String packageName, String className, String tableSchema, String tableName, String author, String version) {
        Map tplData = this.getTplData(basePackage, packageName, className, tableSchema, tableName, author, version);
        try {
            this.buildService(tplData);
        } catch (TemplateNotFoundException e) {
            log.error("TemplateNotFoundException");
        } catch (TemplateException e) {
            log.error("TemplateException");
        } catch (MalformedTemplateNameException e) {
            log.error("MalformedTemplateNameException");
        } catch (ParseException e) {
            log.error("ParseException");
        } catch (IOException e) {
            log.error("IOException");
        }
    }
    /**
     * 生成webController层的代码
     * @param basePackage 包路径
     * @param packageName 包名
     * @param className 类名
     * @param tableName 表名
     * @param author 作者
     * @param version 版本
     */
    public void buildWebController(String basePackage, String packageName, String className, String tableSchema, String tableName, String author, String version) {
        Map tplData = this.getTplData(basePackage, packageName, className, tableSchema, tableName, author, version);
        try {
            this.buildWebController(tplData);
        } catch (TemplateNotFoundException e) {
            log.error("TemplateNotFoundException");
        } catch (TemplateException e) {
            log.error("TemplateException");
        } catch (MalformedTemplateNameException e) {
            log.error("MalformedTemplateNameException");
        } catch (ParseException e) {
            log.error("ParseException");
        } catch (IOException e) {
            log.error("IOException");
        }
    }
    /**
     * 生成wechatController层的代码
     * @param basePackage 包路径
     * @param packageName 包名
     * @param className 类名
     * @param tableName 表名
     * @param author 作者
     * @param version 版本
     */
    public void buildWechatController(String basePackage, String packageName, String className, String tableSchema, String tableName, String author, String version) {
        Map tplData = this.getTplData(basePackage, packageName, className, tableSchema, tableName, author, version);
        try {
            this.buildWechatController(tplData);
        } catch (TemplateNotFoundException e) {
            log.error("TemplateNotFoundException");
        } catch (TemplateException e) {
            log.error("TemplateException");
        } catch (MalformedTemplateNameException e) {
            log.error("MalformedTemplateNameException");
        } catch (ParseException e) {
            log.error("ParseException");
        } catch (IOException e) {
            log.error("IOException");
        }
    }
    /**
     * 生成Controller层测试的代码
     * @param basePackage 包路径
     * @param packageName 包名
     * @param className 类名
     * @param tableName 表名
     * @param author 作者
     * @param version 版本
     */
    public void buildControllerTest(String basePackage, String packageName, String className, String tableSchema, String tableName, String author, String version) {
        Map tplData = this.getTplData(basePackage, packageName, className, tableSchema, tableName, author, version);
        try {
            this.buildControllerTest(tplData);
        } catch (TemplateNotFoundException e) {
            log.error("TemplateNotFoundException");
        } catch (TemplateException e) {
            log.error("TemplateException");
        } catch (MalformedTemplateNameException e) {
            log.error("MalformedTemplateNameException");
        } catch (ParseException e) {
            log.error("ParseException");
        } catch (IOException e) {
            log.error("IOException");
        }
    }
    /**
     * 生成service层测试的代码
     * @param basePackage 包路径
     * @param packageName 包名
     * @param className 类名
     * @param tableName 表名
     * @param author 作者
     * @param version 版本
     */
    public void buildServiceTest(String basePackage, String packageName, String className, String tableSchema, String tableName, String author, String version) {
        Map tplData = this.getTplData(basePackage, packageName, className, tableSchema, tableName, author, version);
        try {
            this.buildServiceTest(tplData);
        } catch (TemplateNotFoundException e) {
            log.error("TemplateNotFoundException");
        } catch (TemplateException e) {
            log.error("TemplateException");
        } catch (MalformedTemplateNameException e) {
            log.error("MalformedTemplateNameException");
        } catch (ParseException e) {
            log.error("ParseException");
        } catch (IOException e) {
            log.error("IOException");
        }
    }
    /**
     * 生成实体json的代码
     * @param basePackage 包路径
     * @param packageName 包名
     * @param className 类名
     * @param tableName 表名
     * @param author 作者
     * @param version 版本
     */
    public void buildJson(String basePackage, String packageName, String className, String tableSchema, String tableName, String author, String version) {
        Map tplData = this.getTplData(basePackage, packageName, className, tableSchema, tableName, author, version);
        try {
            this.buildJson(tplData);
        } catch (TemplateNotFoundException e) {
            log.error("TemplateNotFoundException");
        } catch (TemplateException e) {
            log.error("TemplateException");
        } catch (MalformedTemplateNameException e) {
            log.error("MalformedTemplateNameException");
        } catch (ParseException e) {
            log.error("ParseException");
        } catch (IOException e) {
            log.error("IOException");
        }
    }
    /**
     * 生成实体js的代码
     * @param basePackage 包路径
     * @param packageName 包名
     * @param className 类名
     * @param tableName 表名
     * @param author 作者
     * @param version 版本
     */
    public void buildJsForm(String basePackage, String packageName, String className, String tableSchema, String tableName, String author, String version) {
        Map tplData = this.getTplData(basePackage, packageName, className, tableSchema, tableName, author, version);
        try {
            this.buildJsForm(tplData);
        } catch (TemplateNotFoundException e) {
            log.error("TemplateNotFoundException");
        } catch (TemplateException e) {
            log.error("TemplateException");
        } catch (MalformedTemplateNameException e) {
            log.error("MalformedTemplateNameException");
        } catch (ParseException e) {
            log.error("ParseException");
        } catch (IOException e) {
            log.error("IOException");
        }
    }
    private void buildFile(Template template, Map tplData, String path) throws IOException, TemplateException {
        File file = new File(path);
        File dir = new File(file.getParent());
        if (!dir.exists()) {
            dir.mkdirs();
        }
        if (!file.exists()) {
            file.createNewFile();
        } else {  //文件存在就做备份
            int i = 1;
            File bakFile = new File(path + i + ".bak");
            while (bakFile.exists()) {
                i++;
                bakFile = new File(path + i + ".bak");
            }
            file.renameTo(bakFile);
        }
        FileOutputStream fos = new FileOutputStream(new File(path));
        template.process(tplData, new OutputStreamWriter(fos, "utf-8"));
        fos.flush();
        fos.close();
    }
    /**
     * 创建持久化对象
     *
     * @param tplData
     */
    private void buildPo(Map tplData) throws TemplateException, IOException {
        Template template = cfg.getTemplate("po.ftl");
        StringBuffer path = new StringBuffer(ROOT_MAIN_PATH)
                .append(tplData.get("basePackagePath"))
                .append(tplData.get("packageName")).append("/domain/po/")
                .append(tplData.get("className"))
                .append(".java");
        this.buildFile(template, tplData, path.toString());
    }
    /**
     * 创建业务对象
     *
     * @param tplData
     */
    private void buildBo(Map tplData) throws TemplateException, IOException {
        Template template = cfg.getTemplate("bo.ftl");
        StringBuffer path = new StringBuffer(ROOT_MAIN_PATH)
                .append(tplData.get("basePackagePath"))
                .append(tplData.get("packageName")).append("/domain/bo/")
                .append(tplData.get("className")).append("BO")
                .append(".java");
        this.buildFile(template, tplData, path.toString());
    }
    /**
     * 创建Mybatis持久层接口
     *
     * @param tplData
     */
    private void buildDaoMapper(Map tplData) throws TemplateException, IOException {
        Template template = cfg.getTemplate("dao.mapper.ftl");
        StringBuffer path = new StringBuffer(ROOT_MAIN_PATH)
                .append(tplData.get("basePackagePath"))
                .append(tplData.get("packageName")).append("/dao/mapper/")
                .append(tplData.get("className")).append("Mapper")
                .append(".java");
        this.buildFile(template, tplData, path.toString());
    }
    /**
     * 创建Mybatis Mapper.xml文件
     *
     * @param tplData
     */
    private void buildDaoMapperXml(Map tplData) throws TemplateException, IOException {
        Template template = cfg.getTemplate("dao.mapperXml.ftl");
        StringBuffer path = new StringBuffer(ROOT_MAIN_PATH)
                .append(tplData.get("basePackagePath"))
                .append(tplData.get("packageName")).append("/dao/mapper/xml/")
                .append(tplData.get("className")).append("Mapper")
                .append(".xml");
        this.buildFile(template, tplData, path.toString());
    }
    /**
     * 创建服务层
     *
     * @param tplData
     */
    private void buildService(Map tplData) throws TemplateException, IOException {
        String className = (String) tplData.get("className");
        if (Character.isLowerCase(className.charAt(0))){
            tplData.put("lowerName", className);
        }else{
            String lowerName = (new StringBuilder()).append(Character.toLowerCase(className.charAt(0))).append(className.substring(1)).toString();
            tplData.put("lowerName", lowerName);
        }
        Template template = cfg.getTemplate("service.ftl");
        StringBuffer path = new StringBuffer(ROOT_MAIN_PATH)
                .append(tplData.get("basePackagePath"))
                .append(tplData.get("packageName")).append("/service/")
                .append(tplData.get("className")).append("Service")
                .append(".java");
        this.buildFile(template, tplData, path.toString());
    }
    /**
     * 创建web控制层
     *
     * @param tplData
     */
    private void buildWebController(Map tplData) throws TemplateException, IOException {
        tplData.put("packagePath", ((String) tplData.get("packageName")).toLowerCase());
        String className = (String) tplData.get("className");
        if (Character.isLowerCase(className.charAt(0))){
            tplData.put("classPath", className);
            tplData.put("lowerName", className);
        }else{
            String lowerName = (new StringBuilder()).append(Character.toLowerCase(className.charAt(0))).append(className.substring(1)).toString();
            tplData.put("classPath", lowerName);
            tplData.put("lowerName", lowerName);
        }
        Template template = cfg.getTemplate("webController.ftl");
        StringBuffer path = new StringBuffer(ROOT_MAIN_PATH)
                .append(tplData.get("basePackagePath"))
                .append(tplData.get("packageName")).append("/controller/web/")
                .append(tplData.get("className")).append("WebController")
                .append(".java");
        this.buildFile(template, tplData, path.toString());
    }
    /**
     * 创建wechat控制层
     *
     * @param tplData
     */
    private void buildWechatController(Map tplData) throws TemplateException, IOException {
        tplData.put("packagePath", ((String) tplData.get("packageName")).toLowerCase());
        String className = (String) tplData.get("className");
        if (Character.isLowerCase(className.charAt(0))){
            tplData.put("classPath", className);
            tplData.put("lowerName", className);
        }else{
            String lowerName = (new StringBuilder()).append(Character.toLowerCase(className.charAt(0))).append(className.substring(1)).toString();
            tplData.put("classPath", lowerName);
            tplData.put("lowerName", lowerName);
        }
        Template template = cfg.getTemplate("wechatController.ftl");
        StringBuffer path = new StringBuffer(ROOT_MAIN_PATH)
                .append(tplData.get("basePackagePath"))
                .append(tplData.get("packageName")).append("/controller/wechat/")
                .append(tplData.get("className")).append("WechatController")
                .append(".java");
        this.buildFile(template, tplData, path.toString());
    }
    /**
     * 创建服务层单元测试
     *
     * @param tplData
     */
    private void buildServiceTest(Map tplData) throws TemplateException, IOException {
        String className = (String) tplData.get("className");
        if (Character.isLowerCase(className.charAt(0))){
            tplData.put("lowerName", className);
        }else{
            String lowerName = (new StringBuilder()).append(Character.toLowerCase(className.charAt(0))).append(className.substring(1)).toString();
            tplData.put("lowerName", lowerName);
        }
        Template template = cfg.getTemplate("serviceTest.ftl");
        StringBuffer path = new StringBuffer(ROOT_TEST_PATH)
                .append(tplData.get("basePackagePath"))
                .append(tplData.get("packageName")).append("/")
                .append(tplData.get("className")).append("ServiceTest")
                .append(".java");
        this.buildFile(template, tplData, path.toString());
    }
    /**
     * 创建控制层单元测试
     *
     * @param tplData
     */
    private void buildControllerTest(Map tplData) throws TemplateException, IOException {
        tplData.put("packagePath", ((String) tplData.get("packageName")).toLowerCase());
        String className = (String) tplData.get("className");
        if (Character.isLowerCase(className.charAt(0))){
            tplData.put("classPath", className);
            tplData.put("lowerName", className);
        }else{
            String lowerName = (new StringBuilder()).append(Character.toLowerCase(className.charAt(0))).append(className.substring(1)).toString();
            tplData.put("classPath", lowerName);
            tplData.put("lowerName", lowerName);
        }
        Template template = cfg.getTemplate("controllerTest.ftl");
        StringBuffer path = new StringBuffer(ROOT_TEST_PATH)
                .append(tplData.get("basePackagePath"))
                .append(tplData.get("packageName")).append("/")
                .append(tplData.get("className")).append("ControllerTest")
                .append(".java");
        this.buildFile(template, tplData, path.toString());
    }
    /**
     * 创建Json代码
     *
     * @param tplData
     */
    private void buildJson(Map tplData) throws TemplateException, IOException {
        Template template = cfg.getTemplate("json.ftl");
        StringBuffer path = new StringBuffer(ROOT_MAIN_PATH)
                .append(tplData.get("basePackagePath"))
                .append(tplData.get("packageName")).append("/domain/json/")
                .append(tplData.get("className"))
                .append(".json");
        this.buildFile(template, tplData, path.toString());
    }
    /**
     * 创建界面React JS代码
     *
     * @param tplData
     */
    private void buildJsForm(Map tplData) throws TemplateException, IOException {
        Template template = cfg.getTemplate("jsform.ftl");
        StringBuffer path = new StringBuffer(ROOT_MAIN_PATH)
                .append(tplData.get("basePackagePath"))
                .append(tplData.get("packageName")).append("/domain/js/")
                .append(tplData.get("className"))
                .append(".js");
        this.buildFile(template, tplData, path.toString());
    }
}
/**
 * -------------------_ooOoo_-------------------
 * ------------------o8888888o------------------
 * ------------------88" . "88------------------
 * ------------------(| -_- |)------------------
 * ------------------O\  =  /O------------------
 * ---------------____/`---'\____---------------
 * -------------.'  \\|     |//  `.-------------
 * ------------/  \\|||  :  |||//  \------------
 * -----------/  _||||| -:- |||||-  \-----------
 * -----------|   | \\\  -  /// |   |-----------
 * -----------| \_|  ''\---/''  |   |-----------
 * -----------\  .-\__  `-`  ___/-. /-----------
 * ---------___`. .'  /--.--\  `. . __----------
 * ------."" '<  `.___\_<|>_/___.'  >'"".-------
 * -----| | :  `- \`.;`\ _ /`;.`/ - ` : | |-----
 * -----\  \ `-.   \_ __\ /__ _/   .-` /  /-----
 * ======`-.____`-.___\_____/___.-`____.-'======
 * -------------------`=---='
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 * ---------佛祖保佑---hugeinfo---永无BUG----------
 */
dyh-service/dyh-ssim/src/main/java/cn/huge/module/buildcode/utils/DbDataTypeToJavaType.java
New file
@@ -0,0 +1,71 @@
package cn.huge.module.buildcode.utils;
import java.util.HashMap;
import java.util.Map;
/**
 * @title: 代码生成器:数据库类型转java类型-mysql
 * @description: 代码生成器:数据库类型转java类型-mysql
 * @company: hugeinfo
 * @author: liyj
 * @time: 2021-11-05 16:51:48
 * @version: 1.0.0
 */
public class DbDataTypeToJavaType {
    private static Map<String, String> map = new HashMap(16);
    public static String DATA_TYPE_DATE = "Date";
    static {
        map.put("int", "Integer");
        map.put("double", "Double");
        map.put("float", "Float");
        map.put("fbooleanloat", "Boolean");
        map.put("varchar", "String");
        map.put("char", "String");
        map.put("text", "String");
        map.put("longtext", "String");
        map.put("mediumtext", "String");
        map.put("data", "Date");
        map.put("datetime", "Date");
        map.put("time", "Date");
        map.put("timestamp", "Date");
    }
    /**
     * 转换java'类型
     * @param dataType 数据库类型
     * @return String
     */
    public static String getJavaType(String dataType) {
        return map.get(dataType.toLowerCase());
    }
}
/**
 * -------------------_ooOoo_-------------------
 * ------------------o8888888o------------------
 * ------------------88" . "88------------------
 * ------------------(| -_- |)------------------
 * ------------------O\  =  /O------------------
 * ---------------____/`---'\____---------------
 * -------------.'  \\|     |//  `.-------------
 * ------------/  \\|||  :  |||//  \------------
 * -----------/  _||||| -:- |||||-  \-----------
 * -----------|   | \\\  -  /// |   |-----------
 * -----------| \_|  ''\---/''  |   |-----------
 * -----------\  .-\__  `-`  ___/-. /-----------
 * ---------___`. .'  /--.--\  `. . __----------
 * ------."" '<  `.___\_<|>_/___.'  >'"".-------
 * -----| | :  `- \`.;`\ _ /`;.`/ - ` : | |-----
 * -----\  \ `-.   \_ __\ /__ _/   .-` /  /-----
 * ======`-.____`-.___\_____/___.-`____.-'======
 * -------------------`=---='
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 * ---------佛祖保佑---hugeinfo---永无BUG----------
 */
dyh-service/dyh-ssim/src/main/java/cn/huge/module/client/api/CustClient.java
New file
@@ -0,0 +1,46 @@
package cn.huge.module.client.api;
import cn.huge.base.common.bo.ReturnBO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
 * @title: 客户用户中心微服务调用接口
 * @description: 客户用户中心微服务调用接口
 * @company: hugeinfo
 * @author: liyj
 * @time: 2021-11-05 16:51:48
 * @version: 1.0.0
 */
@FeignClient(name = "dyh-cust")
public interface CustClient {
    /**
     * 内部用户-获取登录用户
     * @url {ctx}/api/client/ctUser/clientGetUser?userId=
     * @param userId 登录用户编号
     * @return ReturnBO
     */
    @GetMapping("/api/client/ctUser/clientGetUser")
    ReturnBO clientGetUser(@RequestParam("userId") String userId);
    /**
     * 内部用户-获取登录用户-所有信息
     * @url {ctx}/api/client/ctUser/clientGetUserAll?userId=
     * @param userId 登录用户编号
     * @return
     */
    @GetMapping("/api/client/ctUser/clientGetUserAll")
    ReturnBO clientGetUserAll(@RequestParam("userId") String userId);
    /**
     * 当事人-获取登录用户-所有信息
     * @url {ctx}/api/client/paUser/clientGetUserAll?userId=
     * @param userId 登录用户编号
     * @return ReturnBO
     */
    @GetMapping("/api/client/paUser/clientGetUserAll")
    ReturnBO paclientGetUser(@RequestParam("userId") String userId);
}
dyh-service/dyh-ssim/src/main/java/cn/huge/module/client/api/UtilsClient.java
New file
@@ -0,0 +1,25 @@
package cn.huge.module.client.api;
import cn.huge.base.common.bo.ReturnBO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
 * @title: 公共工具微服务调用接口
 * @description: 公共工具微服务调用接口
 * @company: hugeinfo
 * @author: liyj
 * @time: 2021-11-05 16:51:48
 * @version: 1.0.0
 */
@FeignClient(name = "dyh-utils")
public interface UtilsClient {
    /**
     * 公共id-获取时间Id,后四位常量
     * @url {ctx}/api/client/dispUtils/getNewTimeId
     * @return Object
     */
    @GetMapping("/api/client/dispUtils/getNewTimeId")
    ReturnBO getNewTimeId();
}
dyh-service/dyh-ssim/src/main/java/cn/huge/module/client/api/impl/CustClientImpl.java
New file
@@ -0,0 +1,102 @@
package cn.huge.module.client.api.impl;
import cn.huge.base.common.bo.ReturnBO;
import cn.huge.base.common.constant.ReturnConsts;
import cn.huge.base.common.exception.ClientException;
import cn.huge.base.common.exception.ServiceException;
import cn.huge.module.client.api.CustClient;
import cn.huge.module.cust.dto.CtUserDTO;
import cn.huge.module.cust.dto.PaUserDTO;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
 * @title: 客户用户中心微服务调用接口实现
 * @description: 客户用户中心微服务调用接口实现
 * @company: hugeinfo
 * @author: liyj
 * @time: 2021-11-05 16:51:48
 * @version: 1.0.0
 */
@Slf4j
@Component
public class CustClientImpl {
    private CustClient custClient;
    @Autowired
    public CustClientImpl(CustClient custClient) {
        this.custClient = custClient;
    }
    /**
     * ObjectMapper工具类
     */
    private ObjectMapper objectMapper = new ObjectMapper();
    /**
     * 内部用户-获取登录用户
     * @param userId 用户编号
     * @return CtUserDTO
     */
    public CtUserDTO clientGetUser(String userId){
        try{
            ReturnBO returnBo = custClient.clientGetUser(userId);
            if (ReturnConsts.OK == returnBo.getCode()){
                CtUserDTO loginUser = objectMapper.convertValue(returnBo.getData(), CtUserDTO.class);
                return loginUser;
            }else{
                log.error("Client外服务接口[CustClientImpl.clientGetUser]请求异常:" + returnBo.getMsg(), returnBo.getMsg());
                throw new ClientException("CustClientImpl.clientGetUser", returnBo.getMsg());
            }
        }catch (Exception e){
            log.error("service方法[CustClientImpl.clientGetUser]调用异常:"+e, e);
            throw new ServiceException("CustClientImpl.clientGetUser", e);
        }
    }
    /**
     * 内部用户-获取登录用户-所有信息
     * @param userId
     * @return
     */
    public CtUserDTO clientGetUserAll(String userId){
        try{
            ReturnBO returnBo = custClient.clientGetUserAll(userId);
            if (ReturnConsts.OK == returnBo.getCode()){
                CtUserDTO loginUser = objectMapper.convertValue(returnBo.getData(), CtUserDTO.class);
                return loginUser;
            }else{
                log.error("Client外服务接口[CustClientImpl.clientGetUserAll]请求异常:" + returnBo.getMsg(), returnBo.getMsg());
                throw new ClientException("CustClientImpl.clientGetUserAll", returnBo.getMsg());
            }
        }catch (Exception e){
            log.error("service方法[CustClientImpl.clientGetUserAll]调用异常:"+e, e);
            throw new ServiceException("CustClientImpl.clientGetUserAll", e);
        }
    }
    /**
     * 当事人-获取登录用户-所有信息
     * @param userId 用户编号
     * @return
     */
    public PaUserDTO paclientGetUser(String userId){
        try{
            ReturnBO returnBo = custClient.paclientGetUser(userId);
            if (ReturnConsts.OK == returnBo.getCode()){
                PaUserDTO loginUser = objectMapper.convertValue(returnBo.getData(), PaUserDTO.class);
                return loginUser;
            }else{
                log.error("Client外服务接口[CustClientImpl.paclientGetUser]请求异常:" + returnBo.getMsg(), returnBo.getMsg());
                throw new ClientException("CustClientImpl.paclientGetUser", returnBo.getMsg());
            }
        }catch (Exception e){
            log.error("service方法[CustClientImpl.paclientGetUser]调用异常:"+e, e);
            throw new ServiceException("CustClientImpl.paclientGetUser", e);
        }
    }
}
dyh-service/dyh-ssim/src/main/java/cn/huge/module/client/api/impl/UtilsClientImpl.java
New file
@@ -0,0 +1,53 @@
package cn.huge.module.client.api.impl;
import cn.huge.base.common.bo.ReturnBO;
import cn.huge.base.common.constant.ReturnConsts;
import cn.huge.base.common.exception.ClientException;
import cn.huge.base.common.exception.ServiceException;
import cn.huge.module.client.api.UtilsClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
 * @title: 公共工具微服务调用接口
 * @description: 公共工具微服务调用接口
 * @company: hugeinfo
 * @author: liyj
 * @time: 2021-11-05 16:51:48
 * @version: 1.0.0
 */
@Slf4j
@Component
public class UtilsClientImpl {
    private UtilsClient utilsClient;
    @Autowired
    public UtilsClientImpl(UtilsClient utilsClient) {
        this.utilsClient = utilsClient;
    }
    /**
     * 公共id-获取时间Id,后四位常量
     * @url {ctx}/api/client/dispUtils/getNewTimeId
     * @return Object
     */
    public String getNewTimeId(){
        try{
            ReturnBO returnBo = utilsClient.getNewTimeId();
            if (ReturnConsts.OK == returnBo.getCode()){
                String id = (String) returnBo.getData();
                return id;
            }else{
                log.error("Client外服务接口[UtilsClientImpl.getNewTimeId]请求异常:" + returnBo.getMsg(), returnBo.getMsg());
                throw new ClientException("UtilsClientImpl.getNewTimeId", returnBo.getMsg());
            }
        }catch (Exception e){
            log.error("service方法[UtilsClientImpl.getNewTimeId]请求成功,处理异常:"+e, e);
            throw new ServiceException("UtilsClientImpl.getNewTimeId", e);
        }
    }
}
dyh-service/dyh-ssim/src/main/java/cn/huge/module/config/MybatisPlusConfig.java
New file
@@ -0,0 +1,49 @@
package cn.huge.module.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @title: MybatisPlus配置
 * @description: MybatisPlus配置
 * @company: hugeinfo
 * @author: liyj
 * @time: 2021-11-05 16:51:48
 * @version: 1.0.0
 */
@Configuration
public class MybatisPlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
        // paginationInterceptor.setOverflow(false);
        // 设置最大单页限制数量,默认 500 条,-1 不受限制
        // paginationInterceptor.setLimit(500);
        return paginationInterceptor;
    }
}
/**
 * -------------------_ooOoo_-------------------
 * ------------------o8888888o------------------
 * ------------------88" . "88------------------
 * ------------------(| -_- |)------------------
 * ------------------O\  =  /O------------------
 * ---------------____/`---'\____---------------
 * -------------.'  \\|     |//  `.-------------
 * ------------/  \\|||  :  |||//  \------------
 * -----------/  _||||| -:- |||||-  \-----------
 * -----------|   | \\\  -  /// |   |-----------
 * -----------| \_|  ''\---/''  |   |-----------
 * -----------\  .-\__  `-`  ___/-. /-----------
 * ---------___`. .'  /--.--\  `. . __----------
 * ------."" '<  `.___\_<|>_/___.'  >'"".-------
 * -----| | :  `- \`.;`\ _ /`;.`/ - ` : | |-----
 * -----\  \ `-.   \_ __\ /__ _/   .-` /  /-----
 * ======`-.____`-.___\_____/___.-`____.-'======
 * -------------------`=---='
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 * ---------佛祖保佑---hugeinfo---永无BUG----------
 */
dyh-service/dyh-ssim/src/main/java/cn/huge/module/constant/CacheConsts.java
New file
@@ -0,0 +1,35 @@
package cn.huge.module.constant;
/**
 * @title: 缓存相关常量类
 * @description: 存放缓存相关常量
 * @company: hugeinfo
 * @author: liyj
 * @time: 2021-11-05 16:51:48
 * @version: 1.0.0
 */
public class CacheConsts {
}
/**
 * -------------------_ooOoo_-------------------
 * ------------------o8888888o------------------
 * ------------------88" . "88------------------
 * ------------------(| -_- |)------------------
 * ------------------O\  =  /O------------------
 * ---------------____/`---'\____---------------
 * -------------.'  \\|     |//  `.-------------
 * ------------/  \\|||  :  |||//  \------------
 * -----------/  _||||| -:- |||||-  \-----------
 * -----------|   | \\\  -  /// |   |-----------
 * -----------| \_|  ''\---/''  |   |-----------
 * -----------\  .-\__  `-`  ___/-. /-----------
 * ---------___`. .'  /--.--\  `. . __----------
 * ------."" '<  `.___\_<|>_/___.'  >'"".-------
 * -----| | :  `- \`.;`\ _ /`;.`/ - ` : | |-----
 * -----\  \ `-.   \_ __\ /__ _/   .-` /  /-----
 * ======`-.____`-.___\_____/___.-`____.-'======
 * -------------------`=---='
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 * ---------佛祖保佑---hugeinfo---永无BUG----------
 */
dyh-service/dyh-ssim/src/main/java/cn/huge/module/utils/ConfigUtils.java
New file
@@ -0,0 +1,35 @@
package cn.huge.module.utils;
/**
 * @title: 系统配置相关工具类
 * @description: 存放系统配置相关工具方法
 * @company: hugeinfo
 * @author: liyj
 * @time: 2021-11-05 16:51:48
 * @version: 1.0.0
 */
public class ConfigUtils {
}
/**
 * -------------------_ooOoo_-------------------
 * ------------------o8888888o------------------
 * ------------------88" . "88------------------
 * ------------------(| -_- |)------------------
 * ------------------O\  =  /O------------------
 * ---------------____/`---'\____---------------
 * -------------.'  \\|     |//  `.-------------
 * ------------/  \\|||  :  |||//  \------------
 * -----------/  _||||| -:- |||||-  \-----------
 * -----------|   | \\\  -  /// |   |-----------
 * -----------| \_|  ''\---/''  |   |-----------
 * -----------\  .-\__  `-`  ___/-. /-----------
 * ---------___`. .'  /--.--\  `. . __----------
 * ------."" '<  `.___\_<|>_/___.'  >'"".-------
 * -----| | :  `- \`.;`\ _ /`;.`/ - ` : | |-----
 * -----\  \ `-.   \_ __\ /__ _/   .-` /  /-----
 * ======`-.____`-.___\_____/___.-`____.-'======
 * -------------------`=---='
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 * ---------佛祖保佑---hugeinfo---永无BUG----------
 */
dyh-service/dyh-ssim/src/main/resources/config/application-dev.yml
New file
@@ -0,0 +1,96 @@
#server配置
server:
  #端口
  port: 9008
#Spring配置
spring:
  #服务名
  application:
    name: dyh-ssim
  #数据源配置
  datasource:
    url: jdbc:dm://192.168.3.51:5236?schema=gzdyh_ssim_dev
    username: SYSDBA
    password: hugeinfo123
    driver-class-name: dm.jdbc.driver.DmDriver
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      stat-view-servlet:
        # 关闭 Druid 的统计视图
        enabled: false
      # 定期检查空闲连接的有效性
      test-while-idle: true
      # 用来验证数据库连接是否仍然可用的 SQL 查询
      validation-query: SELECT 1
  # redis配置,单机版,集群另外配置
  redis:
    host: 183.2.142.21
    port: 9017
    password: hugeinfo123
    # 使用的Redis数据库索引(默认为0)
    database: 0
    # 连接超时时间(毫秒)
    timeout: 5000
    lettuce:
      pool:
        # 连接池最大连接数
        max-active: 100
        # 连接池最大阻塞等待时间
        max-wait: 100000
        # 连接池中的最大空闲连接
        max-idle: 10
        # 连接池中的最小空闲连接
        min-idle: 0
#注册中心配置
eureka:
  client:
    service-url:
      #注册中心单机
      defaultZone: http://localhost:9001/eureka
      #注册中心集群
      #defaultZone: http://localhost:8761/eureka,http://localhost:8762/eureka
    #是否注册到注册中心
    register-with-eureka: true
    #是否从注册中心拉取注册服务列表
    fetch-registry: true
    #首次注册时间
    initial-instance-info-replication-interval-seconds: 2
    #客户端定时刷新本地缓存时间
    registry-fetch-interval-seconds: 5
  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
    #心跳时间,即服务续约间隔时间(缺省为30s)
    lease-renewal-interval-in-seconds: 10
    #发呆时间,即服务续约到期时间(缺省为90s)
    lease-expiration-duration-in-seconds: 30
#hystrix配置
hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: true
        isolation:
          thread:
            timeoutInMilliseconds: 30000
#健康检查-按需配置
management:
  endpoint:
    health:
      show-details: always
  endpoints:
    web:
      exposure:
        include: "*"
  server:
    #port: 9021
    servlet:
      context-path: /
    ssl:
      enabled: false
dyh-service/dyh-ssim/src/main/resources/config/application-prod.yml
New file
@@ -0,0 +1,96 @@
#server配置
server:
  #端口
  port: 9008
#Spring配置
spring:
  #服务名
  application:
    name: dyh-ssim
  #数据源配置
  datasource:
    url: jdbc:dm://192.168.3.51:5236?schema=gzdyh_ssim_dev
    username: SYSDBA
    password: hugeinfo123
    driver-class-name: dm.jdbc.driver.DmDriver
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      stat-view-servlet:
        # 关闭 Druid 的统计视图
        enabled: false
      # 定期检查空闲连接的有效性
      test-while-idle: true
      # 用来验证数据库连接是否仍然可用的 SQL 查询
      validation-query: SELECT 1
  # redis配置,单机版,集群另外配置
  redis:
    host: 183.2.142.21
    port: 9017
    password: hugeinfo123
    # 使用的Redis数据库索引(默认为0)
    database: 0
    # 连接超时时间(毫秒)
    timeout: 5000
    lettuce:
      pool:
        # 连接池最大连接数
        max-active: 100
        # 连接池最大阻塞等待时间
        max-wait: 100000
        # 连接池中的最大空闲连接
        max-idle: 10
        # 连接池中的最小空闲连接
        min-idle: 0
#注册中心配置
eureka:
  client:
    service-url:
      #注册中心单机
      defaultZone: http://localhost:9001/eureka
      #注册中心集群
      #defaultZone: http://localhost:8761/eureka,http://localhost:8762/eureka
    #是否注册到注册中心
    register-with-eureka: true
    #是否从注册中心拉取注册服务列表
    fetch-registry: true
    #首次注册时间
    initial-instance-info-replication-interval-seconds: 2
    #客户端定时刷新本地缓存时间
    registry-fetch-interval-seconds: 5
  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
    #心跳时间,即服务续约间隔时间(缺省为30s)
    lease-renewal-interval-in-seconds: 10
    #发呆时间,即服务续约到期时间(缺省为90s)
    lease-expiration-duration-in-seconds: 30
#hystrix配置
hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: true
        isolation:
          thread:
            timeoutInMilliseconds: 30000
#健康检查-按需配置
management:
  endpoint:
    health:
      show-details: always
  endpoints:
    web:
      exposure:
        include: "*"
  server:
    #port: 9021
    servlet:
      context-path: /
    ssl:
      enabled: false
dyh-service/dyh-ssim/src/main/resources/config/application-test.yml
New file
@@ -0,0 +1,96 @@
#server配置
server:
  #端口
  port: 9008
#Spring配置
spring:
  #服务名
  application:
    name: dyh-ssim
  #数据源配置
  datasource:
    url: jdbc:dm://192.168.3.51:5236?schema=gzdyh_ssim_dev
    username: SYSDBA
    password: hugeinfo123
    driver-class-name: dm.jdbc.driver.DmDriver
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      stat-view-servlet:
        # 关闭 Druid 的统计视图
        enabled: false
      # 定期检查空闲连接的有效性
      test-while-idle: true
      # 用来验证数据库连接是否仍然可用的 SQL 查询
      validation-query: SELECT 1
  # redis配置,单机版,集群另外配置
  redis:
    host: 183.2.142.21
    port: 9017
    password: hugeinfo123
    # 使用的Redis数据库索引(默认为0)
    database: 0
    # 连接超时时间(毫秒)
    timeout: 5000
    lettuce:
      pool:
        # 连接池最大连接数
        max-active: 100
        # 连接池最大阻塞等待时间
        max-wait: 100000
        # 连接池中的最大空闲连接
        max-idle: 10
        # 连接池中的最小空闲连接
        min-idle: 0
#注册中心配置
eureka:
  client:
    service-url:
      #注册中心单机
      defaultZone: http://localhost:9001/eureka
      #注册中心集群
      #defaultZone: http://localhost:8761/eureka,http://localhost:8762/eureka
    #是否注册到注册中心
    register-with-eureka: true
    #是否从注册中心拉取注册服务列表
    fetch-registry: true
    #首次注册时间
    initial-instance-info-replication-interval-seconds: 2
    #客户端定时刷新本地缓存时间
    registry-fetch-interval-seconds: 5
  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
    #心跳时间,即服务续约间隔时间(缺省为30s)
    lease-renewal-interval-in-seconds: 10
    #发呆时间,即服务续约到期时间(缺省为90s)
    lease-expiration-duration-in-seconds: 30
#hystrix配置
hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: true
        isolation:
          thread:
            timeoutInMilliseconds: 30000
#健康检查-按需配置
management:
  endpoint:
    health:
      show-details: always
  endpoints:
    web:
      exposure:
        include: "*"
  server:
    #port: 9021
    servlet:
      context-path: /
    ssl:
      enabled: false
dyh-service/dyh-ssim/src/main/resources/config/application.yml
New file
@@ -0,0 +1,63 @@
#Spring配置
spring:
  profiles:
    active:
      - dev
  #      - test
  #      - prod
  devtools:
    restart:
      enabled: true
  servlet:
    multipart:
      max-file-size: -1
      max-request-size: -1
  main:
    #可以重复命名配置
    allow-bean-definition-overriding: true
    allow-circular-references: true
#server配置
server:
  #服务时限配置
  tomcat:
    min-spare-threads: 100
    max-threads: 256
    connection-timeout: 8000
  main:
    #可以重复命名配置
    allow-bean-definition-overriding: true
#ribbon配置
ribbon:
  #服务之间调用,请求处理超时时间
  ReadTimeout: 120000
  #服务之间调用,请求连接的超时时间
  ConnectTimeout: 30000
#mybatis-plus配置
mybatis-plus:
  configuration:
    #控制台输出sql语句
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    #    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
    #配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as)
    ap-underscore-to-camel-case: true
    #如何自动映射列到字段或属性,NONE:表示取消自动映射;PARTIAL:只会自动映射没有定义嵌套结果集映射的结果集。FULL:会自动映射任意复杂的结果集(无论是否嵌套)。默认是partial,这是一种全局设置
    auto-mapping-behavior: full
    global-config:
      db-config:
        #驼峰下划线转换
        column-underline: false
        #数据库大写下划线转换
        capital-mode: true
        #全局逻辑删除的实体字段名
        #logic-delete-field: flag
        #逻辑未删除值(默认为 0),实体类字段需要加上@TableLogic
        logic-not-delete-value: 0
        #逻辑已删除值(默认为 1)
        logic-delete-value: 1
        #字段策略,IGNORED:忽略判断,NOT_NULL:非null判断,NOT_EMPTY:非空判断,DEFAULT:默认,NEVER:不加入sql
        update-strategy: IGNORED
  mapper-locations: classpath*:/cn/huge/*/*/dao/mapper/xml/*Mapper.xml
dyh-service/dyh-ssim/src/main/resources/logback-spring.xml
New file
@@ -0,0 +1,149 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 配置一天一个日志文件,INFO信息存在一个文件中,ERROR信息存在一个文件中 -->
    <!-- 日志级别从低到高 TRACE < DEBUG < INFO < WARN < ERROR -->
    <!-- 文件输出格式 -->
    <property name="PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] [%logger{36}] - %msg%n" />
    <property name="CT_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%logger{36}] - %msg%n" />
    <!--  日志文件目录  -->
    <property name="LOG_HOME" value="logs/ssim/service" />
    <property name="CT_LOG_HOME" value="logs/ssim/business" />
    <!--  日志文件名称  -->
    <property name="LOG_NAME" value="ssim" />
    <!-- 开发环境日志配置 -->
    <springProfile name="dev">
        <!-- 配置控制台打印信息 -->
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder charset="UTF-8">
                <!-- 文件输出格式 -->
                <pattern>${PATTERN}</pattern>
            </encoder>
        </appender>
        <!-- 设置根日志级别,如果日志级别低于设置的级别,则该日志不会被记录。如果日志级别高于设置的级别,那么这条日志将会被记录 -->
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
        </root>
        <logger name="cn.huge" level="DEBUG" additivity="true"/>
        <logger name="org.hibernate.SQL" level="DEBUG" additivity="true"/>
        <!-- 为 MyBatis 设置 DEBUG 级别的日志 -->
        <logger name="com.baomidou.mybatisplus" level="INFO" additivity="false">
            <appender-ref ref="CONSOLE" />
        </logger>
    </springProfile>
    <!-- 测试环境+生产环境,多个使用逗号隔开 -->
    <springProfile name="test,prod">
        <!-- 配置DEBUG文件 -->
        <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 日志文件名称 -->
                <fileNamePattern>${LOG_HOME}/${LOG_NAME}.debug.%d{yyyyMMdd}.%i.log</fileNamePattern>
                <!-- 日志保留31天 -->
                <maxHistory>31</maxHistory>
                <!-- 所有日志大小不超过30GB -->
                <totalSizeCap>30GB</totalSizeCap>
                <!-- 单个日志文件大小不超过10MB -->
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>10MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder charset="UTF-8">
                <!-- 文件输出格式 -->
                <pattern>${PATTERN}</pattern>
            </encoder>
            <!-- 只打印 DEBUG 日志 -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>DEBUG</level>
                <!-- 命中就接受 -->
                <onMatch>ACCEPT</onMatch>
                <!-- 没有命中就过滤掉 -->
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
        <!-- 配置INFO文件 -->
        <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 日志文件名称 -->
                <fileNamePattern>${LOG_HOME}/${LOG_NAME}.info.%d{yyyyMMdd}.%i.log</fileNamePattern>
                <!-- 日志保留31天 -->
                <maxHistory>31</maxHistory>
                <!-- 所有日志大小不超过30GB -->
                <totalSizeCap>30GB</totalSizeCap>
                <!-- 单个日志文件大小不超过10MB -->
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>10MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder charset="UTF-8">
                <!-- 文件输出格式 -->
                <pattern>${PATTERN}</pattern>
            </encoder>
            <!-- 只打印 INFO 日志 -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <!-- 命中就过滤掉 -->
                <onMatch>ACCEPT</onMatch>
                <!-- 没有命中就接受 -->
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
        <!-- 配置ERROR文件 -->
        <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                !-- 日志文件名称 -->
                <fileNamePattern>${LOG_HOME}/${LOG_NAME}.error.%d{yyyyMMdd}.%i.log</fileNamePattern>
                <!-- 日志保留31天 -->
                <maxHistory>31</maxHistory>
                <!-- 所有日志大小不超过30GB -->
                <totalSizeCap>30GB</totalSizeCap>
                <!-- 单个日志文件大小不超过10MB -->
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>10MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder charset="UTF-8">
                <!-- 文件输出格式 -->
                <pattern>${PATTERN}</pattern>
            </encoder>
            <!-- 只打印 ERROR 日志 -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <!-- 命中就过滤掉 -->
                <onMatch>ACCEPT</onMatch>
                <!-- 没有命中就接受 -->
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
        <!-- 为 MyBatis 设置 DEBUG 级别的日志 -->
        <logger name="org.apache.ibatis" level="DEBUG"/>
        <!-- 输出 SQL 语句和参数 -->
        <logger name="org.apache.ibatis.binding" level="DEBUG"/>
        <!-- 输出 SQL 语句执行情况 -->
        <logger name="org.apache.ibatis.session" level="DEBUG"/>
        <!-- 输出 SQL 语句执行结果 -->
        <logger name="org.apache.ibatis.executor" level="DEBUG"/>
        <!-- 输出 SQL 语句 -->
        <logger name="org.apache.ibatis.scripting" level="DEBUG"/>
        <!-- 设置根日志级别,如果日志级别低于设置的级别,则该日志不会被记录。如果日志级别高于设置的级别,那么这条日志将会被记录 -->
        <root level="DEBUG">
            <appender-ref ref="DEBUG_FILE" />
            <appender-ref ref="INFO_FILE" />
            <appender-ref ref="ERROR_FILE" />
        </root>
    </springProfile>
</configuration>
dyh-service/dyh-ssim/src/test/java/cn/huge/base/common/base/BaseServiceTest.java
New file
@@ -0,0 +1,30 @@
package cn.huge.base.common.base;
import lombok.extern.slf4j.Slf4j;
import org.junit.After;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
public class BaseServiceTest {
    private MockMvc mockMvc;
    @Before
    public void init() {
        log.info("开始测试...");
    }
    @After
    public void after() {
        log.info("测试结束...");
    }
}
dyh-service/dyh-ssim/src/test/java/cn/huge/module/BuildCodeServiceTest.java
New file
@@ -0,0 +1,79 @@
package cn.huge.module;
import cn.huge.base.common.base.BaseServiceTest;
import cn.huge.module.buildcode.service.BuildCodeService;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
public class BuildCodeServiceTest extends BaseServiceTest {
    @Autowired
    private BuildCodeService service;
    //数据库为jdbc连接url中设置的默认库
    private String basePackage = "cn.huge.module";
    private String packageName = "ctuser";
    private String className = "CtUnit";
    private String tableSchema = "gzdyh_ssim_dev";
    private String tableName = "dyh_ct_unit";
    private String author = "liyj";
    private String version = "1.0.0";
    @Test
    public void buildAllTest() {
        service.buildAll(basePackage, packageName, className, tableSchema, tableName, author, version);
    }
    /********************************************************
     *                     下面单独执行                       *
     ********************************************************
     */
    @Test
    public void buildPoTest() {
        service.buildPo(basePackage, packageName, className, tableSchema, tableName, author, version);
    }
    @Test
    public void buildBoTest() {
        service.buildBo(basePackage, packageName, className, tableSchema, tableName, author, version);
    }
    @Test
    public void buildServiceTest() {
        service.buildService(basePackage, packageName, className, tableSchema, tableName, author, version);
    }
    @Test
    public void buildWebControllerTest() {
        service.buildWebController(basePackage, packageName, className, tableSchema, tableName, author, version);
    }
    @Test
    public void buildWechatControllerTest() {
        service.buildWechatController(basePackage, packageName, className, tableSchema, tableName, author, version);
    }
    @Test
    public void buildJsonTest() {
        service.buildJson(basePackage, packageName, className, tableSchema, tableName, author, version);
    }
    @Test
    public void buildJsFormTest() {
        service.buildJsForm(basePackage, packageName, className, tableSchema, tableName, author, version);
    }
    @Test
    public void buildServiceTestTest() {
        service.buildServiceTest(basePackage, packageName, className, tableSchema, tableName, author, version);
    }
    @Test
    public void buildControllerTestTest() {
        service.buildControllerTest(basePackage, packageName, className, tableSchema, tableName, author, version);
    }
}
dyh-service/dyh-ssim/src/test/java/cn/huge/module/DyhSsimApplicationTest.java
New file
@@ -0,0 +1,17 @@
package cn.huge.module;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class DyhSsimApplicationTest {
    @Test
    public void contextLoads() {
    }
}