Explorar el Código

项目初始化

lixing hace 4 años
padre
commit
6181320950

+ 57 - 0
fm-common/pom.xml

@@ -10,10 +10,67 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>fm-common</artifactId>
+
+    <properties>
+        <mybatis-plus.version>3.3.0</mybatis-plus.version>
+        <druid-spring-boot-starter.version>1.1.22</druid-spring-boot-starter.version>
+        <mapstruct.version>1.2.0.Final</mapstruct.version>
+    </properties>
+
     <dependencies>
+        <!-- 集成框架工具类 -->
         <dependency>
             <groupId>com.persagy</groupId>
             <artifactId>integrated-common-core</artifactId>
         </dependency>
+
+        <!-- web -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <!-- mybatisPlus相关的依赖 start -->
+        <!-- mybatisPlus -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>${mybatis-plus.version}</version>
+        </dependency>
+        <!-- jackson -->
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
+            <version>2.11.3</version>
+        </dependency>
+        <!-- google工具类(easyCode模板中使用到了其中的方法) -->
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>28.0-jre</version>
+        </dependency>
+        <!-- mysql -->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <!-- alibaba druid -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+            <version>${druid-spring-boot-starter.version}</version>
+        </dependency>
+        <!-- mapstruct 优雅的进行bean与dto的转换 -->
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct-jdk8</artifactId>
+            <version>${mapstruct.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct-processor</artifactId>
+            <version>${mapstruct.version}</version>
+        </dependency>
+        <!-- mybatisPlus相关的依赖 end -->
     </dependencies>
 </project>

+ 36 - 0
fm-common/src/main/java/com/persagy/fm/common/config/MybatisPlusConfig.java

@@ -0,0 +1,36 @@
+package com.persagy.fm.common.config;
+
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+/**
+ * <p>
+ * MybatisPlusConfig
+ * </p>
+ *
+ * @author lixing
+ * @description 由 Mybatisplus Code Generator 创建
+ * @since 2020-09-09 09:13:27
+ **/
+@Configuration
+@EnableTransactionManagement
+public class MybatisPlusConfig {
+    /**
+     * @param
+     * @description:配置分页插件 不配置分页插件,MP提供的分页方法会查询全部,分页不生效
+     * 使用实例:
+     * IPage<Member> memberPage = new Page<>(1, 2,false) true查询总记录数量
+     * @exception:
+     * @author: LuoGuangyi
+     * @company: Persagy Technology Co.,Ltd
+     * @return: com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
+     * @since: 2020/09/30 10:33
+     * @version: V1.0
+     */
+    @Bean
+    public PaginationInterceptor paginationInterceptor() {
+        return new PaginationInterceptor();
+    }
+}

+ 40 - 0
fm-common/src/main/java/com/persagy/fm/common/config/MybatisPlusMetaObjectHandler.java

@@ -0,0 +1,40 @@
+package com.persagy.fm.common.config;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.persagy.fm.common.constant.enums.EnumValid;
+import com.persagy.fm.common.model.entity.AuditableEntity;
+import com.persagy.fm.common.model.entity.BaseEntity;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ * @description:
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2020/9/9 2:10 下午
+ * @version: V1.0
+ **/
+@Component
+public class MybatisPlusMetaObjectHandler implements MetaObjectHandler {
+    @Override
+    public void insertFill(MetaObject metaObject) {
+        if (metaObject.hasSetter(AuditableEntity.PROP_CREATIONTIME)) {
+            this.setFieldValByName(AuditableEntity.PROP_CREATIONTIME, new Date(), metaObject);
+        }
+        if (metaObject.hasSetter(AuditableEntity.PROP_MODIFIEDTIME)) {
+            this.setFieldValByName(AuditableEntity.PROP_MODIFIEDTIME, new Date(), metaObject);
+        }
+        if (metaObject.hasSetter(BaseEntity.PROP_VALID)) {
+            this.setFieldValByName(BaseEntity.PROP_VALID, EnumValid.TRUE.getType(), metaObject);
+        }
+    }
+
+    @Override
+    public void updateFill(MetaObject metaObject) {
+        if (metaObject.hasSetter(AuditableEntity.PROP_MODIFIEDTIME)) {
+            this.setFieldValByName(AuditableEntity.PROP_MODIFIEDTIME, new Date(), metaObject);
+        }
+    }
+}

+ 37 - 0
fm-common/src/main/java/com/persagy/fm/common/constant/enums/EnumValid.java

@@ -0,0 +1,37 @@
+package com.persagy.fm.common.constant.enums;
+
+/**
+ * @description: 合法标志
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2021/3/9 2:56 下午
+ * @version: V1.0
+ */
+public enum EnumValid {
+    FALSE(0, false),
+    TRUE(1, true);
+
+    private Integer type;
+    private Boolean desc;
+
+    EnumValid(Integer type, Boolean desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public Boolean getDesc() {
+        return desc;
+    }
+
+    public void setDesc(Boolean desc) {
+        this.desc = desc;
+    }
+}

+ 25 - 0
fm-common/src/main/java/com/persagy/fm/common/model/dto/PageDTO.java

@@ -0,0 +1,25 @@
+package com.persagy.fm.common.model.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @description: 分页条件
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2020/10/13 3:23 下午
+ * @version: V1.0
+ **/
+@Data
+public class PageDTO {
+    @NotNull(message = "当前页数不能为空")
+    private Integer page;
+
+    @NotNull(message = "每页条数不能为空")
+    private Integer size;
+
+    private List<Sort> orders;
+}
+

+ 25 - 0
fm-common/src/main/java/com/persagy/fm/common/model/dto/Sort.java

@@ -0,0 +1,25 @@
+package com.persagy.fm.common.model.dto;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @description: 列表排序类
+ * @author: lixing
+ * @company: Persagy Technology Co.,Ltd
+ * @since: 2020/10/13 3:27 下午
+ * @version: V1.0
+ */
+@NoArgsConstructor
+@Data
+public class Sort {
+
+    private String column;
+
+    private boolean asc;
+
+    public Sort(String column, boolean asc) {
+        this.column = column;
+        this.asc = asc;
+    }
+}

+ 5 - 1
fm-common/src/main/java/com/persagy/fm/common/model/entity/AuditableEntity.java

@@ -1,5 +1,7 @@
 package com.persagy.fm.common.model.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.Data;
 
@@ -11,7 +13,7 @@ import java.util.Date;
  * @version 1.0 2021-03-04
  */
 @Data
-public abstract class AuditableEntity extends BaseEntity implements IAuditableEntity {
+public abstract class AuditableEntity<T> extends BaseEntity<T> implements IAuditableEntity {
 
     /** 序列id */
     private static final long serialVersionUID = -6039076670318997447L;
@@ -32,6 +34,7 @@ public abstract class AuditableEntity extends BaseEntity implements IAuditableEn
      * 创建时间
      */
     @JsonIgnore
+    @TableField(fill = FieldFill.INSERT)
     protected Date creationTime;
 
     /**
@@ -44,6 +47,7 @@ public abstract class AuditableEntity extends BaseEntity implements IAuditableEn
      * 最后一次修改时间
      */
     @JsonIgnore
+    @TableField(fill = FieldFill.INSERT_UPDATE)
     protected Date modifiedTime;
 
     /**

+ 12 - 2
fm-common/src/main/java/com/persagy/fm/common/model/entity/BaseEntity.java

@@ -1,5 +1,10 @@
 package com.persagy.fm.common.model.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.AccessLevel;
 import lombok.Data;
 import lombok.Getter;
@@ -7,6 +12,7 @@ import lombok.Setter;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.UUID;
 
 /**
  * 实体基类
@@ -14,7 +20,7 @@ import java.util.Date;
  * @version 1.0 2021-03-04
  */
 @Data
-public abstract class BaseEntity implements IBaseEntity,Serializable,Cloneable{
+public abstract class BaseEntity<T> extends Model implements IBaseEntity,Serializable,Cloneable{
 
 	/** 序列id */
 	private static final long serialVersionUID = -3231114188611235386L;
@@ -31,15 +37,19 @@ public abstract class BaseEntity implements IBaseEntity,Serializable,Cloneable{
 	/** hash码 */
 	@Getter(AccessLevel.NONE)
 	@Setter(AccessLevel.NONE)
+	@TableField(exist=false)
 	private int hashCode = Integer.MIN_VALUE;
 
 	/** 实体类必须有的属性 */
-	protected String id;
+
+	@TableId(type = IdType.ASSIGN_ID)
+	protected Long id;
 
 	/** 时间戳 */
 	protected Date ts;
 
 	/** 实体状态 - 有效标识 */
+	@TableField(fill = FieldFill.INSERT)
 	protected int valid;
 
 	@Override

+ 2 - 2
fm-common/src/main/java/com/persagy/fm/common/model/entity/IBaseEntity.java

@@ -14,13 +14,13 @@ public interface IBaseEntity extends Comparable<IBaseEntity>{
 	 * 取得实体主键
 	 * @return 实体主键
 	 */
-	String getId();
+	Long getId();
 
 	/**
 	 * 设置实体主键
 	 * @param id 实体主键
 	 */
-	void setId(String id);
+	void setId(Long id);
 
 	/**
 	 * 取得时间戳

+ 9 - 1
fm-parent/pom.xml

@@ -8,6 +8,14 @@
     <version>3.0.0</version>
     <packaging>pom</packaging>
 
+    <repositories>
+        <repository>
+            <id>integrated</id>
+            <name>releases Repository</name>
+            <url>http://47.93.132.139:8081/nexus/content/repositories/integrated/</url>
+        </repository>
+    </repositories>
+
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
@@ -109,7 +117,7 @@
                     <version>3.0.0</version>
                 </plugin>
 
-                <!-- cobertura 测试覆盖率统计插件 -->
+                <!-- cobertura 测试覆盖率统计插件 -->
                 <plugin>
                     <groupId>org.codehaus.mojo</groupId>
                     <artifactId>cobertura-maven-plugin</artifactId>

+ 6 - 0
fm-server/pom.xml

@@ -11,9 +11,15 @@
     <modelVersion>4.0.0</modelVersion>
     <artifactId>fm-server</artifactId>
     <dependencies>
+        <!-- 集成框架工具类 -->
         <dependency>
             <groupId>com.persagy</groupId>
             <artifactId>integrated-common-core</artifactId>
         </dependency>
+        <!-- web -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 6 - 4
fm-server/src/main/java/com/persagy/fm/server/ServerApplication.java

@@ -1,6 +1,7 @@
 package com.persagy.fm.server;
 
 import com.persagy.log.annotation.EnableControllerLog;
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.Banner;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -20,21 +21,22 @@ import org.springframework.scheduling.annotation.EnableScheduling;
  * @author Charlie Yu
  * @version 1.0 2021-03-02
  */
-@EnableCaching
-@EnableFeignClients
+@EnableCaching(proxyTargetClass = true)
+@EnableFeignClients(basePackages="com.persagy.fm.*.client")
 @EnableControllerLog
 @EnableDiscoveryClient
 @Configuration
 @EnableScheduling
 @SpringBootApplication(exclude = AopAutoConfiguration.class)
 @ComponentScan(basePackages = {"com.persagy.fm"})
+@MapperScan(value = "com.persagy.fm.*.dao")
 public class ServerApplication {
 
     public static void main(String[] args) {
         SpringApplication application = new SpringApplication(ServerApplication.class);
         application.setBannerMode(Banner.Mode.OFF);
-        application.addListeners((ApplicationListener<ApplicationStartedEvent>) event ->
-                System.out.println("\033[1;93;44m>>>>>> " + event.getApplicationContext().getApplicationName().substring(1) + " has started!!! \033[m"));
+//        application.addListeners((ApplicationListener<ApplicationStartedEvent>) event ->
+//                System.out.println("\033[1;93;44m>>>>>> " + event.getApplicationContext().getApplicationName().substring(1) + " has started!!! \033[m"));
         application.run(args);
     }
 }