Browse Source

项目初始化

陈长荣 4 months ago
parent
commit
54f6af6eaa
40 changed files with 1372 additions and 0 deletions
  1. 48 0
      jfcloud-gene-biz/pom.xml
  2. 29 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/GeneApplication.java
  3. 60 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/file/entity/FileInfo.java
  4. 9 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/file/mapper/FileInfoMapper.java
  5. 7 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/file/service/FileInfoService.java
  6. 14 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/file/service/impl/FileInfoServiceImpl.java
  7. 21 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/controller/CustomController.java
  8. 49 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/entity/AnimalDemand.java
  9. 45 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/entity/CageDemand.java
  10. 49 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/entity/StrainCustomDetail.java
  11. 69 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/entity/StrainCustomInfo.java
  12. 109 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/entity/StrainPurificationInfo.java
  13. 10 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/mapper/AnimalDemandMapper.java
  14. 10 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/mapper/CageDemandMapper.java
  15. 10 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/mapper/StrainCustomDetailMapper.java
  16. 10 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/mapper/StrainCustomInfoMapper.java
  17. 10 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/mapper/StrainPurificationInfoMapper.java
  18. 7 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/AnimalDemandService.java
  19. 7 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/CageDemandService.java
  20. 7 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/StrainCustomDetailService.java
  21. 7 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/StrainCustomInfoService.java
  22. 7 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/StrainPurificationInfoService.java
  23. 13 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/impl/AnimalDemandServiceImpl.java
  24. 13 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/impl/CageDemandServiceImpl.java
  25. 13 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/impl/StrainCustomDetailServiceImpl.java
  26. 13 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/impl/StrainCustomInfoServiceImpl.java
  27. 13 0
      jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/impl/StrainPurificationInfoServiceImpl.java
  28. 24 0
      jfcloud-gene-biz/src/main/resources/application-dev.yml
  29. 22 0
      jfcloud-gene-biz/src/main/resources/application.yml
  30. 67 0
      jfcloud-gene-biz/src/main/resources/logback-spring.xml
  31. 31 0
      jfcloud-gene-common/pom.xml
  32. 53 0
      jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/entity/BaseEntity.java
  33. 14 0
      jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/interceptor/anno/AutoStuff.java
  34. 32 0
      jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/interceptor/config/InterceptorConfig.java
  35. 19 0
      jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/interceptor/config/MybatisInterceptorProperties.java
  36. 23 0
      jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/interceptor/enums/AnnoEnum.java
  37. 22 0
      jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/interceptor/enums/FieldEnum.java
  38. 165 0
      jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/interceptor/interceptor/StuffInterceptor.java
  39. 59 0
      jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/util/UserUtil.java
  40. 182 0
      pom.xml

+ 48 - 0
jfcloud-gene-biz/pom.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>com.jfcloud</groupId>
+    <artifactId>jfcloud-gene</artifactId>
+    <version>1.0</version>
+  </parent>
+
+  <artifactId>jfcloud-gene-biz</artifactId>
+
+  <properties>
+    <maven.compiler.source>8</maven.compiler.source>
+    <maven.compiler.target>8</maven.compiler.target>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.github.jfcloud</groupId>
+      <artifactId>jfcloud-boot-starter-web</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.github.jfcloud</groupId>
+      <artifactId>jfcloud-common-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.baomidou</groupId>
+      <artifactId>mybatis-plus-extension</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>com.jfcloud</groupId>
+      <artifactId>jfcloud-gene-common</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>com.github.xiaoymin</groupId>
+      <artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
+      <version>4.1.0</version>
+    </dependency>
+
+  </dependencies>
+
+</project>

+ 29 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/GeneApplication.java

@@ -0,0 +1,29 @@
+package com.github.jfcloud.gene;
+
+import com.github.jfcloud.common.feign.annotation.EnableJfcloudFeignClients;
+import com.github.jfcloud.common.security.annotation.EnableJfcloudResourceServer;
+import com.github.jfcloud.common.swagger.annotation.EnableOpenApi;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.ComponentScans;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+@EnableOpenApi
+@EnableJfcloudFeignClients
+@EnableJfcloudResourceServer
+@EnableDiscoveryClient
+@SpringBootApplication
+@EnableTransactionManagement
+@MapperScan({"com.github.jfcloud.gene.*.mapper"})
+@ComponentScans(value = {
+        @ComponentScan(value = "com.github.jfcloud.common.*")})
+public class GeneApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(GeneApplication.class, args);
+    }
+
+}

+ 60 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/file/entity/FileInfo.java

@@ -0,0 +1,60 @@
+package com.github.jfcloud.gene.file.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 文件信息
+ * file_info
+ */
+@Data
+public class FileInfo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private Integer id;
+    /**
+     * 关联id
+     */
+    private Long relateId;
+    /**
+     * 关联类型
+     */
+    private String type;
+    /**
+     * 文件名称
+     */
+    private String name;
+    /**
+     * 文件地址
+     */
+    private String url;
+    /**
+     * 是否被删除
+     */
+    private String deleted;
+    /**
+     * 创建人
+     */
+    private String createBy;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 更新人
+     */
+    private String updateBy;
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+    /**
+     * 租户ID
+     */
+    private Long tenantId;
+    /**
+     * 部门ID
+     */
+    private Long deptId;
+}

+ 9 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/file/mapper/FileInfoMapper.java

@@ -0,0 +1,9 @@
+package com.github.jfcloud.gene.file.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.jfcloud.gene.file.entity.FileInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface FileInfoMapper extends BaseMapper<FileInfo> {
+}

+ 7 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/file/service/FileInfoService.java

@@ -0,0 +1,7 @@
+package com.github.jfcloud.gene.file.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.jfcloud.gene.file.entity.FileInfo;
+
+public interface FileInfoService extends IService<FileInfo> {
+}

+ 14 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/file/service/impl/FileInfoServiceImpl.java

@@ -0,0 +1,14 @@
+package com.github.jfcloud.gene.file.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jfcloud.gene.file.entity.FileInfo;
+import com.github.jfcloud.gene.file.mapper.FileInfoMapper;
+import com.github.jfcloud.gene.file.service.FileInfoService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class FileInfoServiceImpl extends ServiceImpl<FileInfoMapper, FileInfo> implements FileInfoService {
+
+}

+ 21 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/controller/CustomController.java

@@ -0,0 +1,21 @@
+package com.github.jfcloud.gene.form.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.jfcloud.common.core.util.R;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Tag(name = "品系定制表单")
+@RestController
+@RequestMapping("/custom")
+public class CustomController {
+
+    @Operation(summary = "列表分页")
+    @GetMapping("/page")
+    public R getPage(Page page) {
+        return R.ok();
+    }
+}

+ 49 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/entity/AnimalDemand.java

@@ -0,0 +1,49 @@
+package com.github.jfcloud.gene.form.entity;
+
+import com.github.jfcloud.gene.common.entity.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * 动物需求信息
+ * animal_demand
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class AnimalDemand extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 主键
+     */
+    private Long id;
+    /**
+     * 关联品系净化扩繁基本信息表的ID
+     */
+    private Long purificationId;
+    /**
+     * 性别
+     */
+    private String gender;
+    /**
+     * 周龄
+     */
+    private Integer ageWeeks;
+    /**
+     * 数量
+     */
+    private Integer quantity;
+    /**
+     * 品系名称
+     */
+    private String strainName;
+    /**
+     * 基因型名称
+     */
+    private String genotypeName;
+    /**
+     * 备注
+     */
+    private String remarks;
+}

+ 45 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/entity/CageDemand.java

@@ -0,0 +1,45 @@
+package com.github.jfcloud.gene.form.entity;
+
+import com.github.jfcloud.gene.common.entity.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * 笼位需求信息
+ * cage_demand
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class CageDemand extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 主键
+     */
+    private Long id;
+    /**
+     * 关联品系净化扩繁基本信息表的ID
+     */
+    private Long purificationId;
+    /**
+     * 品系动物
+     */
+    private String animalStrain;
+    /**
+     * 笼位数
+     */
+    private Integer cageCount;
+    /**
+     * 饲养天数
+     */
+    private Integer breedingDays;
+    /**
+     * 特殊饲料饲养
+     */
+    private String specialFeed;
+    /**
+     * 备注
+     */
+    private String remarks;
+}

+ 49 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/entity/StrainCustomDetail.java

@@ -0,0 +1,49 @@
+package com.github.jfcloud.gene.form.entity;
+
+import com.github.jfcloud.gene.common.entity.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * 品系定制详细信息
+ * strain_custom_detail
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class StrainCustomDetail extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 主键
+     */
+    private Long id;
+    /**
+     * 品系定制基本信息主键
+     */
+    private Long strainCustomBasicId;
+    /**
+     * 种属
+     */
+    private String species;
+    /**
+     * 遗传工程模型种类
+     */
+    private String geneticModel;
+    /**
+     * 基因名称
+     */
+    private String geneName;
+    /**
+     * Gene ID
+     */
+    private String geneId;
+    /**
+     * 具体要求
+     */
+    private String specificRequirement;
+    /**
+     * 备注
+     */
+    private String remarks;
+}

+ 69 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/entity/StrainCustomInfo.java

@@ -0,0 +1,69 @@
+package com.github.jfcloud.gene.form.entity;
+
+import com.github.jfcloud.gene.common.entity.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * 品系定制基本信息
+ * strain_custom_info
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class StrainCustomInfo extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 主键
+     */
+    private Long id;
+    /**
+     * 流程主键
+     */
+    private Long flowId;
+    /**
+     * 定制类型
+     */
+    private String customizationType;
+    /**
+     * 动物品系
+     */
+    private String animalStrain;
+    /**
+     * 目标基因名称(简称)
+     */
+    private String geneName;
+    /**
+     * NCBI Gene ID
+     */
+    private String ncbiGeneId;
+    /**
+     * 基因敲除种属
+     */
+    private String knockoutSpecies;
+    /**
+     * 基因敲除种属(其他)
+     */
+    private String knockoutSpeciesOther;
+    /**
+     * 遗传工程模型种类
+     */
+    private String geneticModelType;
+    /**
+     * 基因敲除具体要求
+     */
+    private String knockoutDetail;
+    /**
+     * 插入基因要求
+     */
+    private String insertGeneDetail;
+    /**
+     * 其他要求
+     */
+    private String otherRequirement;
+    /**
+     * 申请方提供材料
+     */
+    private String providedMaterials;
+}

+ 109 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/entity/StrainPurificationInfo.java

@@ -0,0 +1,109 @@
+package com.github.jfcloud.gene.form.entity;
+
+import com.github.jfcloud.gene.common.entity.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * 品系净化扩繁基本信息表
+ * strain_purification_info
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class StrainPurificationInfo extends BaseEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 主键
+     */
+    private Long id;
+    /**
+     * 流程主键
+     */
+    private Long flowId;
+    /**
+     * 品系名称
+     */
+    private String strainName;
+    /**
+     * 动物饲养地
+     */
+    private String breedingLocation;
+    /**
+     * 获得来源
+     */
+    private String source;
+    /**
+     * 引种来源官方网站链接
+     */
+    private String sourceLink;
+    /**
+     * 自行提供外部动物信息
+     */
+    private String externalAnimalInfo;
+    /**
+     * 动物出生信息、基因型、鉴定策略
+     */
+    private String birthGeneIdentification;
+    /**
+     * 实验安排
+     */
+    private String experimentalArrangement;
+    /**
+     * 遗传背景
+     */
+    private String geneticBackground;
+    /**
+     * 遗传背景(其他)
+     */
+    private String geneticBackgroundOther;
+    /**
+     * 雌性繁育方式
+     */
+    private String femaleBreedingMethod;
+    /**
+     * 雄性繁育方式
+     */
+    private String maleBreedingMethod;
+    /**
+     * 有无明显表型特征
+     */
+    private String phenotype;
+    /**
+     * 表型描述
+     */
+    private String phenotypeDescription;
+    /**
+     * 是否做过微生物检测
+     */
+    private String microbialTesting;
+    /**
+     * 检测细节
+     */
+    private String testingDetails;
+    /**
+     * 检测附件
+     */
+    private String testingFile;
+    /**
+     * 基因鉴定
+     */
+    private String geneTesting;
+    /**
+     * 实验后期安排
+     */
+    private String experimentalPostArrangement;
+    /**
+     * 冻存服务需求
+     */
+    private String cryopreservationService;
+    /**
+     * 冻存周期
+     */
+    private String cryopreservationPeriod;
+    /**
+     * 冻存数量(如精子麦管数、胚胎数)
+     */
+    private Integer cryopreservationCount;
+}

+ 10 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/mapper/AnimalDemandMapper.java

@@ -0,0 +1,10 @@
+package com.github.jfcloud.gene.form.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.jfcloud.gene.form.entity.AnimalDemand;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface AnimalDemandMapper extends BaseMapper<AnimalDemand> {
+
+}

+ 10 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/mapper/CageDemandMapper.java

@@ -0,0 +1,10 @@
+package com.github.jfcloud.gene.form.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.jfcloud.gene.form.entity.CageDemand;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface CageDemandMapper extends BaseMapper<CageDemand> {
+
+}

+ 10 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/mapper/StrainCustomDetailMapper.java

@@ -0,0 +1,10 @@
+package com.github.jfcloud.gene.form.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.jfcloud.gene.form.entity.StrainCustomDetail;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface StrainCustomDetailMapper extends BaseMapper<StrainCustomDetail> {
+
+}

+ 10 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/mapper/StrainCustomInfoMapper.java

@@ -0,0 +1,10 @@
+package com.github.jfcloud.gene.form.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.jfcloud.gene.form.entity.StrainCustomInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface StrainCustomInfoMapper extends BaseMapper<StrainCustomInfo> {
+
+}

+ 10 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/mapper/StrainPurificationInfoMapper.java

@@ -0,0 +1,10 @@
+package com.github.jfcloud.gene.form.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.jfcloud.gene.form.entity.StrainPurificationInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface StrainPurificationInfoMapper extends BaseMapper<StrainPurificationInfo> {
+
+}

+ 7 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/AnimalDemandService.java

@@ -0,0 +1,7 @@
+package com.github.jfcloud.gene.form.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.jfcloud.gene.form.entity.AnimalDemand;
+
+public interface AnimalDemandService extends IService<AnimalDemand> {
+}

+ 7 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/CageDemandService.java

@@ -0,0 +1,7 @@
+package com.github.jfcloud.gene.form.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.jfcloud.gene.form.entity.CageDemand;
+
+public interface CageDemandService extends IService<CageDemand> {
+}

+ 7 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/StrainCustomDetailService.java

@@ -0,0 +1,7 @@
+package com.github.jfcloud.gene.form.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.jfcloud.gene.form.entity.StrainCustomDetail;
+
+public interface StrainCustomDetailService extends IService<StrainCustomDetail> {
+}

+ 7 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/StrainCustomInfoService.java

@@ -0,0 +1,7 @@
+package com.github.jfcloud.gene.form.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.jfcloud.gene.form.entity.StrainCustomInfo;
+
+public interface StrainCustomInfoService extends IService<StrainCustomInfo> {
+}

+ 7 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/StrainPurificationInfoService.java

@@ -0,0 +1,7 @@
+package com.github.jfcloud.gene.form.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.jfcloud.gene.form.entity.StrainPurificationInfo;
+
+public interface StrainPurificationInfoService extends IService<StrainPurificationInfo> {
+}

+ 13 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/impl/AnimalDemandServiceImpl.java

@@ -0,0 +1,13 @@
+package com.github.jfcloud.gene.form.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jfcloud.gene.form.entity.AnimalDemand;
+import com.github.jfcloud.gene.form.mapper.AnimalDemandMapper;
+import com.github.jfcloud.gene.form.service.AnimalDemandService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class AnimalDemandServiceImpl extends ServiceImpl<AnimalDemandMapper, AnimalDemand> implements AnimalDemandService {
+}

+ 13 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/impl/CageDemandServiceImpl.java

@@ -0,0 +1,13 @@
+package com.github.jfcloud.gene.form.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jfcloud.gene.form.entity.CageDemand;
+import com.github.jfcloud.gene.form.mapper.CageDemandMapper;
+import com.github.jfcloud.gene.form.service.CageDemandService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class CageDemandServiceImpl extends ServiceImpl<CageDemandMapper, CageDemand> implements CageDemandService {
+}

+ 13 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/impl/StrainCustomDetailServiceImpl.java

@@ -0,0 +1,13 @@
+package com.github.jfcloud.gene.form.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jfcloud.gene.form.entity.StrainCustomDetail;
+import com.github.jfcloud.gene.form.mapper.StrainCustomDetailMapper;
+import com.github.jfcloud.gene.form.service.StrainCustomDetailService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class StrainCustomDetailServiceImpl extends ServiceImpl<StrainCustomDetailMapper, StrainCustomDetail> implements StrainCustomDetailService {
+}

+ 13 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/impl/StrainCustomInfoServiceImpl.java

@@ -0,0 +1,13 @@
+package com.github.jfcloud.gene.form.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jfcloud.gene.form.entity.StrainCustomInfo;
+import com.github.jfcloud.gene.form.mapper.StrainCustomInfoMapper;
+import com.github.jfcloud.gene.form.service.StrainCustomInfoService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class StrainCustomInfoServiceImpl extends ServiceImpl<StrainCustomInfoMapper, StrainCustomInfo> implements StrainCustomInfoService {
+}

+ 13 - 0
jfcloud-gene-biz/src/main/java/com/github/jfcloud/gene/form/service/impl/StrainPurificationInfoServiceImpl.java

@@ -0,0 +1,13 @@
+package com.github.jfcloud.gene.form.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jfcloud.gene.form.entity.StrainPurificationInfo;
+import com.github.jfcloud.gene.form.mapper.StrainPurificationInfoMapper;
+import com.github.jfcloud.gene.form.service.StrainPurificationInfoService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class StrainPurificationInfoServiceImpl extends ServiceImpl<StrainPurificationInfoMapper, StrainPurificationInfo> implements StrainPurificationInfoService {
+}

+ 24 - 0
jfcloud-gene-biz/src/main/resources/application-dev.yml

@@ -0,0 +1,24 @@
+spring:
+  application:
+    name: @artifactId@
+  cloud:
+    nacos:
+      username: @nacos.username@
+      password: @nacos.password@
+      discovery:
+        server-addr: ${NACOS-HOST:jfcloud-k6-nacos}:${NACOS-PORT:58848}
+        namespace: @nacos.namespace@
+      config:
+        server-addr: ${spring.cloud.nacos.discovery.server-addr}
+        namespace: @nacos.namespace@
+        file-extension: yml
+        shared-configs:
+          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+  config:
+    import:
+      - optional:nacos:application-@profiles.active@.yml
+      - optional:nacos:${spring.application.name}-@profiles.active@.yml
+mybatis-plus:
+  global-config:
+    db-config:
+      update-strategy: IGNORED

+ 22 - 0
jfcloud-gene-biz/src/main/resources/application.yml

@@ -0,0 +1,22 @@
+server:
+  port: 50123
+
+spring:
+  application:
+    name: @artifactId@
+  profiles:
+    active: dev
+
+logging:
+  level:
+    com:
+      github:
+        jfcloud:
+          common:
+            data:
+              client:
+                filter: warn
+
+knife4j:
+  enable: true
+  cors: true

+ 67 - 0
jfcloud-gene-biz/src/main/resources/logback-spring.xml

@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    小技巧: 在根pom里面设置统一存放路径,统一管理方便维护
+    <properties>
+        <log-path>/Users/jackzhou</log-path>
+    </properties>
+    1. 其他模块加日志输出,直接copy本文件放在resources 目录即可
+    2. 注意修改 <property name="${log-path}/log.path" value=""/> 的value模块
+-->
+<configuration debug="false" scan="false">
+    <property name="log.path" value="logs/${project.artifactId}"/>
+    <!-- 彩色日志格式 -->
+    <property name="CONSOLE_LOG_PATTERN"
+              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+    <!-- 彩色日志依赖的渲染类 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
+    <conversionRule conversionWord="wex"
+                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
+    <conversionRule conversionWord="wEx"
+                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
+    <!-- Console log output -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- Log file debug output -->
+    <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/debug.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/%d{yyyy-MM, aux}/debug.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
+            <maxFileSize>50MB</maxFileSize>
+            <maxHistory>30</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <!-- Log file error output -->
+    <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/error.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/%d{yyyy-MM}/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
+            <maxFileSize>50MB</maxFileSize>
+            <maxHistory>30</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>ERROR</level>
+        </filter>
+    </appender>
+
+    <!--nacos 心跳 INFO 屏蔽-->
+    <logger name="com.alibaba.nacos" level="OFF">
+        <appender-ref ref="error"/>
+    </logger>
+
+    <!-- Level: FATAL 0  ERROR 3  WARN 4  INFO 6  DEBUG 7 -->
+    <root level="INFO">
+        <appender-ref ref="console"/>
+        <appender-ref ref="debug"/>
+    </root>
+</configuration>

+ 31 - 0
jfcloud-gene-common/pom.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>com.jfcloud</groupId>
+    <artifactId>jfcloud-gene</artifactId>
+    <version>1.0</version>
+  </parent>
+
+  <artifactId>jfcloud-gene-common</artifactId>
+
+  <properties>
+    <maven.compiler.source>8</maven.compiler.source>
+    <maven.compiler.target>8</maven.compiler.target>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.github.jfcloud</groupId>
+      <artifactId>jfcloud-common-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.github.jfcloud</groupId>
+      <artifactId>jfcloud-common-security</artifactId>
+    </dependency>
+  </dependencies>
+
+</project>

+ 53 - 0
jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/entity/BaseEntity.java

@@ -0,0 +1,53 @@
+package com.github.jfcloud.gene.common.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.github.jfcloud.gene.common.interceptor.anno.AutoStuff;
+import com.github.jfcloud.gene.common.interceptor.enums.AnnoEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public abstract class BaseEntity extends Model implements Serializable {
+
+    @TableField(fill = FieldFill.INSERT)
+    @AutoStuff(annoType = AnnoEnum.TENANT_ID)
+    private Long tenantId;
+
+    @TableField(fill = FieldFill.INSERT)
+    @AutoStuff(annoType = AnnoEnum.DEPT_ID)
+    private Long deptId;
+
+    @TableField(fill = FieldFill.INSERT, value = "create_time")
+    @AutoStuff(annoType = AnnoEnum.CREATE_TIME)
+    private Date createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE, value = "update_time")
+    @AutoStuff(annoType = AnnoEnum.UPDATE_TIME)
+    private Date updateTime;
+
+    @TableField(fill = FieldFill.INSERT)
+    @AutoStuff(annoType = AnnoEnum.CREATE_BY)
+    private String createBy;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @AutoStuff(annoType = AnnoEnum.UPDATE_BY)
+    private String updateBy;
+
+    /**
+     * 是否被删除 0 未删除  1 已删除
+     */
+    @JsonIgnore
+    @TableLogic(value = "0", delval = "1")
+    @TableField(value = "deleted")
+    private String deleted = "0";
+
+}

+ 14 - 0
jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/interceptor/anno/AutoStuff.java

@@ -0,0 +1,14 @@
+package com.github.jfcloud.gene.common.interceptor.anno;
+
+import com.github.jfcloud.gene.common.interceptor.enums.AnnoEnum;
+
+import java.lang.annotation.*;
+
+@Target({ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+@Inherited
+@Documented
+public @interface AutoStuff {
+
+    AnnoEnum annoType();
+}

+ 32 - 0
jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/interceptor/config/InterceptorConfig.java

@@ -0,0 +1,32 @@
+package com.github.jfcloud.gene.common.interceptor.config;
+
+
+import com.github.jfcloud.gene.common.interceptor.interceptor.StuffInterceptor;
+import org.apache.ibatis.plugin.Interceptor;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+
+@Configuration
+@EnableConfigurationProperties({MybatisInterceptorProperties.class})// 激活配置模块
+/**
+ * 控制Configuration是否生效
+ * name: 数组,property完整名称或部分名称
+ * matchIfMissing:缺少该property时是否可以加载。如果为true,没有该property也会正常加载;反之报错
+ * havingValue: 比较获取到的属性值与havingValue给定的值是否相同,相同才加载配置
+ */
+@ConditionalOnProperty(
+        name = {"my.interceptor.enabled"},
+        matchIfMissing = true,
+        havingValue = "true"
+)
+public class InterceptorConfig {
+
+    @Bean
+    public Interceptor getStuffInterceptor() {
+        return new StuffInterceptor();
+    }
+
+}

+ 19 - 0
jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/interceptor/config/MybatisInterceptorProperties.java

@@ -0,0 +1,19 @@
+package com.github.jfcloud.gene.common.interceptor.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+@ConfigurationProperties(
+        prefix = "my.interceptor", ignoreInvalidFields = true
+)
+public class MybatisInterceptorProperties {
+    // 默认为true
+    private Boolean enabled = Boolean.TRUE;
+
+    public Boolean getEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(Boolean enabled) {
+        this.enabled = enabled;
+    }
+}

+ 23 - 0
jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/interceptor/enums/AnnoEnum.java

@@ -0,0 +1,23 @@
+package com.github.jfcloud.gene.common.interceptor.enums;
+
+public enum AnnoEnum {
+
+    TENANT_ID("tenantId"),
+    ORG_ID("orgId"),
+    DEPT_ID("deptId"),
+    CREATE_BY("createBy"),
+    CREATE_TIME("createTime"),
+    UPDATE_BY("updateBy"),
+    UPDATE_TIME("updateTime"),
+    DEL("del");
+
+    private final String annoType;
+
+    AnnoEnum(String annoType) {
+        this.annoType = annoType;
+    }
+
+    public String getAnnoType() {
+        return annoType;
+    }
+}

+ 22 - 0
jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/interceptor/enums/FieldEnum.java

@@ -0,0 +1,22 @@
+package com.github.jfcloud.gene.common.interceptor.enums;
+
+import java.security.Timestamp;
+import java.util.Date;
+
+public enum FieldEnum {
+
+    STRING(String.class),
+    LONG(Long.class),
+    DATE(Date.class),
+    TIMESTAMP(Timestamp.class);
+
+    private Class fieldType;
+
+    FieldEnum(Class fieldType) {
+        this.fieldType = fieldType;
+    }
+
+    public Class getFieldType() {
+        return fieldType;
+    }
+}

+ 165 - 0
jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/interceptor/interceptor/StuffInterceptor.java

@@ -0,0 +1,165 @@
+package com.github.jfcloud.gene.common.interceptor.interceptor;
+
+import cn.hutool.core.util.ReflectUtil;
+import com.github.jfcloud.gene.common.entity.BaseEntity;
+import com.github.jfcloud.gene.common.interceptor.anno.AutoStuff;
+import com.github.jfcloud.gene.common.interceptor.enums.AnnoEnum;
+import com.github.jfcloud.gene.common.util.UserUtil;
+import lombok.extern.log4j.Log4j2;
+import org.apache.ibatis.executor.Executor;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.mapping.SqlCommandType;
+import org.apache.ibatis.plugin.Interceptor;
+import org.apache.ibatis.plugin.Intercepts;
+import org.apache.ibatis.plugin.Invocation;
+import org.apache.ibatis.plugin.Signature;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Field;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+@Log4j2
+@Component
+@Intercepts({@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class})})
+public class StuffInterceptor implements Interceptor {
+
+    @Override
+    public Object intercept(Invocation invocation) throws Throwable {
+        if (invocation.getTarget() instanceof Executor && invocation.getArgs().length == 2) {
+
+            final Executor executor = (Executor) invocation.getTarget();
+            // 获取第一个参数
+            final MappedStatement ms = (MappedStatement) invocation.getArgs()[0];
+            final Object paramObj = invocation.getArgs()[1];
+
+            Long userId = UserUtil.getUserId();
+            String userName = UserUtil.getUserName();
+            Long tenantId = UserUtil.getTenantId();
+            Long deptId = UserUtil.getDeptId();
+
+            if (ms.getSqlCommandType() == SqlCommandType.INSERT) {
+                return this.executeInsert(executor, ms, paramObj, tenantId, deptId, userId, userName);
+            }
+
+            if (ms.getSqlCommandType() == SqlCommandType.UPDATE) {
+                return this.executeUpdate(executor, ms, paramObj, userId);
+            }
+        }
+        return invocation.proceed();
+    }
+
+    /**
+     * 新增操作
+     */
+    private Object executeInsert(final Executor executor, final MappedStatement ms, final Object paramObj, final Long tenantId, final Long deptId, final Long userId, final String userName) throws Exception {
+
+        // 获取所有字段
+        final Field[] fields = ReflectUtil.getFields(paramObj.getClass());
+        for (final Field field : fields) {
+            // 设置该字段对象的可访问标志
+            field.setAccessible(true);
+            // 判断字段是否有我们的AutoStuff注解
+            if (field.isAnnotationPresent(AutoStuff.class)) {
+                // 获取该注解
+                AutoStuff autoStuff = field.getAnnotation(AutoStuff.class);
+                // 获取注解里写的annoType
+                String annoType = autoStuff.annoType().getAnnoType();
+                // 获取原来的值
+                Object originalValue = field.get(paramObj);
+
+                // 先进行字段类型判断,再判断归属,所有信息都是通过operInfo接口获取的
+                if (AnnoEnum.TENANT_ID.getAnnoType().equals(annoType) && tenantId != null) {
+                    field.set(paramObj, tenantId);
+                    continue;
+                }
+                if (AnnoEnum.DEPT_ID.getAnnoType().equals(annoType) && deptId != null) {
+                    field.set(paramObj, deptId);
+                    continue;
+                }
+                if (AnnoEnum.CREATE_BY.getAnnoType().equals(annoType) && Objects.isNull(originalValue) && userId != null) {
+                    field.set(paramObj, userId);
+                    continue;
+                }
+                if (AnnoEnum.CREATE_TIME.getAnnoType().equals(annoType) && Objects.isNull(originalValue)) {
+                    field.set(paramObj, new Date());
+                    continue;
+                }
+                if (AnnoEnum.UPDATE_BY.getAnnoType().equals(annoType) && Objects.isNull(originalValue) && userId != null) {
+                    field.set(paramObj, userId);
+                    continue;
+                }
+                if (AnnoEnum.UPDATE_TIME.getAnnoType().equals(annoType) && Objects.isNull(originalValue)) {
+                    field.set(paramObj, new Date());
+                    continue;
+                }
+            }
+        }
+        return executor.update(ms, paramObj);
+    }
+
+    /**
+     * @Title: executeUpdate
+     * @Description: 编辑操作
+     * @param: executor
+     * @param: ms
+     * @param: paramObj
+     * @param: user
+     * @return:
+     * @author: hejin
+     * @date: 2022/8/15 11:05
+     */
+    @SuppressWarnings({"unchecked"})
+    private Object executeUpdate(final Executor executor, final MappedStatement ms, final Object paramObj, final Long userId) throws Exception {
+        if (paramObj instanceof Map) {
+            Map<String, Object> map = (Map<String, Object>) paramObj;
+            Map<String, Object> newParam = new HashMap<>(map.size());
+            for (Map.Entry<String, Object> entry : map.entrySet()) {
+                String key = entry.getKey();
+                Object value = entry.getValue();
+                if (Objects.isNull(value)) {
+                    continue;
+                }
+                if (!(value instanceof BaseEntity)) {
+                    newParam.put(key, value);
+                    continue;
+                }
+
+                final Field[] fields = ReflectUtil.getFields(value.getClass());
+                for (final Field field : fields) {
+                    field.setAccessible(true);
+                    AutoStuff autoStuff = field.getAnnotation(AutoStuff.class);
+                    if (autoStuff != null) {
+                        String annoType = autoStuff.annoType().getAnnoType();
+                        if (AnnoEnum.UPDATE_BY.getAnnoType().equals(annoType)) {
+                            field.set(value, userId);
+                        }
+                        if (AnnoEnum.UPDATE_TIME.getAnnoType().equals(annoType)) {
+                            field.set(value, new Date());
+                        }
+                    }
+                }
+                newParam.put(key, value);
+            }
+            return executor.update(ms, newParam);
+        }
+
+        final Field[] fields = ReflectUtil.getFields(paramObj.getClass());
+        for (final Field field : fields) {
+            field.setAccessible(true);
+            AutoStuff autoStuff = field.getAnnotation(AutoStuff.class);
+            if (autoStuff != null) {
+                String annoType = autoStuff.annoType().getAnnoType();
+                if (AnnoEnum.UPDATE_BY.getAnnoType().equals(annoType)) {
+                    field.set(paramObj, userId);
+                }
+                if (AnnoEnum.UPDATE_TIME.getAnnoType().equals(annoType)) {
+                    field.set(paramObj, new Date());
+                }
+            }
+        }
+        return executor.update(ms, paramObj);
+    }
+}

+ 59 - 0
jfcloud-gene-common/src/main/java/com/github/jfcloud/gene/common/util/UserUtil.java

@@ -0,0 +1,59 @@
+package com.github.jfcloud.gene.common.util;
+
+import com.github.jfcloud.common.core.base.JfcloudUserInfo;
+import com.github.jfcloud.common.security.service.JfcloudUser;
+import com.github.jfcloud.common.security.util.SecurityUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.stereotype.Component;
+
+import java.util.Collections;
+import java.util.List;
+
+@Component
+@Log4j2
+@RequiredArgsConstructor
+public class UserUtil {
+
+    private static JfcloudUser getCurrentUser() {
+        JfcloudUser user = SecurityUtils.getUser();
+        if (user == null) {
+            //获取当前用户失败,避免空指针
+            user = new JfcloudUser("null", "null", false, false, false, false,
+                    Collections.emptyList(), new JfcloudUserInfo());
+        }
+        return user;
+    }
+
+    public static Long getUserId() {
+        return getCurrentUser().getId();
+    }
+
+    public static String getUserName() {
+        return getCurrentUser().getUsername();
+    }
+
+    public static String getNickName() {
+        return getCurrentUser().getJfcloudUserInfo().getNickname();
+    }
+
+    public static String getEmail() {
+        return getCurrentUser().getJfcloudUserInfo().getEmail();
+    }
+
+    public static Long getDeptId() {
+        return getCurrentUser().getJfcloudUserInfo().getDeptId();
+    }
+
+    public static Long getTenantId() {
+        return getCurrentUser().getJfcloudUserInfo().getTenantId();
+    }
+
+    public static JfcloudUser getUser() {
+        return getCurrentUser();
+    }
+
+    public static List<Long> getRoles() {
+        return SecurityUtils.getRoles();
+    }
+}

+ 182 - 0
pom.xml

@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>com.jfcloud</groupId>
+  <artifactId>jfcloud-gene</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
+  <modules>
+    <module>jfcloud-gene-biz</module>
+    <module>jfcloud-gene-common</module>
+  </modules>
+
+  <properties>
+    <maven.compiler.source>8</maven.compiler.source>
+    <maven.compiler.target>8</maven.compiler.target>
+    <maven.compiler.version>3.8.1</maven.compiler.version>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <spring-boot.version>2.7.12</spring-boot.version>
+    <hutool.version>5.8.22</hutool.version>
+    <lombok.version>1.18.16</lombok.version>
+    <mapstruct.version>1.4.2.Final</mapstruct.version>
+    <jfcloud-bom.version>K7.0.0</jfcloud-bom.version>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.projectlombok</groupId>
+      <artifactId>lombok</artifactId>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+
+  <dependencyManagement>
+    <dependencies>
+      <!--jfcloud 公共版本定义-->
+      <dependency>
+        <groupId>com.github.jfcloud</groupId>
+        <artifactId>jfcloud-bom</artifactId>
+        <version>${jfcloud-bom.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <build>
+    <finalName>${project.name}</finalName>
+    <resources>
+      <resource>
+        <directory>src/main/resources</directory>
+        <filtering>true</filtering>
+      </resource>
+    </resources>
+    <pluginManagement>
+      <plugins>
+        <!--spring boot 默认插件-->
+        <plugin>
+          <groupId>org.springframework.boot</groupId>
+          <artifactId>spring-boot-maven-plugin</artifactId>
+          <version>${spring-boot.version}</version>
+          <executions>
+            <execution>
+              <goals>
+                <goal>repackage</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
+        <!--解决文件打包编译字体、文件损坏-->
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-resources-plugin</artifactId>
+          <configuration>
+            <nonFilteredFileExtensions>
+              <nonFilteredFileExtension>doc</nonFilteredFileExtension>
+              <nonFilteredFileExtension>docx</nonFilteredFileExtension>
+              <nonFilteredFileExtension>xls</nonFilteredFileExtension>
+              <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
+              <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
+              <nonFilteredFileExtension>ftl</nonFilteredFileExtension>
+              <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
+            </nonFilteredFileExtensions>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+    <plugins>
+      <!--代码编译指定版本插件-->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>${maven.compiler.version}</version>
+        <configuration>
+          <target>${maven.compiler.target}</target>
+          <source>${maven.compiler.source}</source>
+          <encoding>UTF-8</encoding>
+          <annotationProcessorPaths>
+            <path>
+              <groupId>org.projectlombok</groupId>
+              <artifactId>lombok</artifactId>
+              <version>${lombok.version}</version>
+            </path>
+            <path>
+              <groupId>org.projectlombok</groupId>
+              <artifactId>lombok-mapstruct-binding</artifactId>
+              <version>0.2.0</version>
+            </path>
+            <path>
+              <groupId>org.mapstruct</groupId>
+              <artifactId>mapstruct-processor</artifactId>
+              <version>${mapstruct.version}</version>
+            </path>
+          </annotationProcessorPaths>
+          <skip>true</skip>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <profiles>
+    <profile>
+      <id>dev</id>
+      <properties>
+        <profiles.active>dev</profiles.active>
+        <nacos.namespace>jfcloud</nacos.namespace>
+        <nacos.username>jfcloud</nacos.username>
+        <nacos.password>jfcloudjfcloud</nacos.password>
+      </properties>
+      <activation>
+        <!-- 默认环境 -->
+        <activeByDefault>true</activeByDefault>
+      </activation>
+    </profile>
+    <profile>
+      <id>prod</id>
+      <properties>
+        <profiles.active>prod</profiles.active>
+        <nacos.namespace>jfcloud</nacos.namespace>
+        <nacos.username>jfcloud</nacos.username>
+        <nacos.password>jfcloudjfcloud</nacos.password>
+      </properties>
+    </profile>
+  </profiles>
+
+  <distributionManagement>
+    <repository>
+      <id>rdc-releases</id>
+      <url>https://packages.aliyun.com/maven/repository/2316288-release-CnOxYD/</url>
+    </repository>
+    <snapshotRepository>
+      <id>rdc-snapshots</id>
+      <url>https://packages.aliyun.com/maven/repository/2316288-snapshot-fEBoLS/</url>
+    </snapshotRepository>
+  </distributionManagement>
+
+  <repositories>
+    <repository>
+      <id>public</id>
+      <name>aliyun nexus</name>
+      <url>https://maven.aliyun.com/repository/public/</url>
+      <releases>
+        <enabled>true</enabled>
+      </releases>
+    </repository>
+  </repositories>
+  <pluginRepositories>
+    <pluginRepository>
+      <id>aliyun-plugin</id>
+      <url>https://maven.aliyun.com/repository/public</url>
+      <releases>
+        <enabled>true</enabled>
+      </releases>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+    </pluginRepository>
+  </pluginRepositories>
+
+</project>