Browse Source

2/16 陈宇 修改和查询租户会员类型

chendayu 2 years ago
parent
commit
a30a0bcae5
100 changed files with 923 additions and 31 deletions
  1. 16 6
      PCS/pom.xml
  2. 54 0
      PCS/src/main/java/cn/cslg/permission/common/JsonPage.java
  3. 26 0
      PCS/src/main/java/cn/cslg/permission/common/model/dto/PageDTO2.java
  4. 2 2
      PCS/src/main/java/cn/cslg/permission/common/model/dto/TenantVipTypeFunctionDTO.java
  5. 52 0
      PCS/src/main/java/cn/cslg/permission/common/model/dto/TenantVipTypeFunctionUpdateDTO.java
  6. 49 0
      PCS/src/main/java/cn/cslg/permission/common/model/vo/TenantVipTypeFunctionVO.java
  7. 35 9
      PCS/src/main/java/cn/cslg/permission/controller/TenantVipTypeController.java
  8. 32 0
      PCS/src/main/java/cn/cslg/permission/domain/FunctionIdPathNameDescription.java
  9. 8 0
      PCS/src/main/java/cn/cslg/permission/mapper/AssoTenantVipTypeFunctionMapper.java
  10. 26 0
      PCS/src/main/java/cn/cslg/permission/mapper/TenantVipTypeMapper.java
  11. 23 4
      PCS/src/main/java/cn/cslg/permission/service/ITenantVipTypeService.java
  12. 114 10
      PCS/src/main/java/cn/cslg/permission/service/impl/TenantVipTypeService.java
  13. 8 0
      PCS/src/main/resources/mapper/AssoTenantVipTypeFunctionMapper.xml
  14. 73 0
      PCS/src/main/resources/mapper/TenantVipTypeMapper.xml
  15. 39 0
      PCS/src/test/java/cn/cslg/permission/api/逗号分隔的字符串路径转换为Integer集合.java
  16. 52 0
      PCS/src/test/java/cn/cslg/permission/mapper/AssoTenantVipTypeFunctionMapperTests.java
  17. 68 0
      PCS/src/test/java/cn/cslg/permission/mapper/TenantVipTypeMapperTests.java
  18. 72 0
      PCS/src/test/java/cn/cslg/permission/service/TenantVipTypeServiceTests.java
  19. 26 0
      PCS/target/classes/application-dev.yml
  20. 25 0
      PCS/target/classes/application-docker.yml
  21. 29 0
      PCS/target/classes/application-prod.yml
  22. 26 0
      PCS/target/classes/application-test.yml
  23. 68 0
      PCS/target/classes/application.yml
  24. BIN
      PCS/target/classes/cn/cslg/permission/Application.class
  25. BIN
      PCS/target/classes/cn/cslg/permission/common/GlobalException.class
  26. BIN
      PCS/target/classes/cn/cslg/permission/common/config/AsyncExceptionHandler.class
  27. BIN
      PCS/target/classes/cn/cslg/permission/common/config/AsyncTaskPoolConfig.class
  28. BIN
      PCS/target/classes/cn/cslg/permission/common/config/InnerInterceptor/LizzMybatisIntercepts.class
  29. BIN
      PCS/target/classes/cn/cslg/permission/common/config/MailConstants.class
  30. BIN
      PCS/target/classes/cn/cslg/permission/common/config/MetaObjectHandlerConfig.class
  31. BIN
      PCS/target/classes/cn/cslg/permission/common/config/MybatisPlusConfig.class
  32. BIN
      PCS/target/classes/cn/cslg/permission/common/config/RabbitMQConfig$1.class
  33. BIN
      PCS/target/classes/cn/cslg/permission/common/config/RabbitMQConfig$2.class
  34. BIN
      PCS/target/classes/cn/cslg/permission/common/config/RabbitMQConfig.class
  35. BIN
      PCS/target/classes/cn/cslg/permission/common/config/SaTokenConfigure.class
  36. BIN
      PCS/target/classes/cn/cslg/permission/common/config/SpringDocConfig.class
  37. BIN
      PCS/target/classes/cn/cslg/permission/common/config/StpInterfaceImpl.class
  38. BIN
      PCS/target/classes/cn/cslg/permission/common/config/WebSocketConfig.class
  39. BIN
      PCS/target/classes/cn/cslg/permission/common/core/Convert.class
  40. BIN
      PCS/target/classes/cn/cslg/permission/common/core/annotation/AnnotationParse.class
  41. BIN
      PCS/target/classes/cn/cslg/permission/common/core/annotation/LoggerAspect.class
  42. BIN
      PCS/target/classes/cn/cslg/permission/common/core/annotation/Permission.class
  43. BIN
      PCS/target/classes/cn/cslg/permission/common/core/annotation/PermissionAspect.class
  44. BIN
      PCS/target/classes/cn/cslg/permission/common/core/base/Constants$1.class
  45. BIN
      PCS/target/classes/cn/cslg/permission/common/core/base/Constants.class
  46. BIN
      PCS/target/classes/cn/cslg/permission/common/core/base/DocFlag.class
  47. BIN
      PCS/target/classes/cn/cslg/permission/common/core/base/EStatus.class
  48. BIN
      PCS/target/classes/cn/cslg/permission/common/core/base/RedisConf.class
  49. BIN
      PCS/target/classes/cn/cslg/permission/common/core/base/RequestHolder.class
  50. BIN
      PCS/target/classes/cn/cslg/permission/common/core/exception/BaseException.class
  51. BIN
      PCS/target/classes/cn/cslg/permission/common/core/exception/CustomException.class
  52. BIN
      PCS/target/classes/cn/cslg/permission/common/core/exception/PermissionException.class
  53. BIN
      PCS/target/classes/cn/cslg/permission/common/model/BaseEntity.class
  54. BIN
      PCS/target/classes/cn/cslg/permission/common/model/BaseVO.class
  55. BIN
      PCS/target/classes/cn/cslg/permission/common/model/dto/AreaAddressDTO.class
  56. BIN
      PCS/target/classes/cn/cslg/permission/common/model/dto/ClassNumberDTO.class
  57. BIN
      PCS/target/classes/cn/cslg/permission/common/model/dto/CommonData.class
  58. BIN
      PCS/target/classes/cn/cslg/permission/common/model/dto/CustomFieldDTO.class
  59. BIN
      PCS/target/classes/cn/cslg/permission/common/model/dto/CustomFieldLabelDTO.class
  60. BIN
      PCS/target/classes/cn/cslg/permission/common/model/dto/LabelDTO.class
  61. BIN
      PCS/target/classes/cn/cslg/permission/common/model/dto/PageDTO.class
  62. BIN
      PCS/target/classes/cn/cslg/permission/common/model/dto/PatentQueryFieldSourceDTO.class
  63. BIN
      PCS/target/classes/cn/cslg/permission/common/model/dto/ProjectFieldOrderDTO.class
  64. BIN
      PCS/target/classes/cn/cslg/permission/common/model/dto/TaskWebSocketDTO.class
  65. BIN
      PCS/target/classes/cn/cslg/permission/common/model/dto/TenantDTO.class
  66. BIN
      PCS/target/classes/cn/cslg/permission/common/model/dto/UploadFileDTO.class
  67. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/ApplicationVO.class
  68. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/DataVO.class
  69. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/DepartmentVO.class
  70. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/FunctionVO.class
  71. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/LoginVO.class
  72. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/PersonnelVO$DP.class
  73. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/PersonnelVO$PerRole.class
  74. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/PersonnelVO.class
  75. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/PositionVO.class
  76. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/RoleVO$Permission.class
  77. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/RoleVO.class
  78. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/SysDictVO.class
  79. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/TenantVO.class
  80. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/UserGroupVO.class
  81. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/UserVO.class
  82. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/associate/AssoApplicationTenantVO.class
  83. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/associate/AssoDepartPosVO.class
  84. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/associate/AssoDepartRolVO.class
  85. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/associate/AssoPerGroupVO.class
  86. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/associate/AssoPerRolVO.class
  87. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/associate/AssoUserGroupPersonnelVO.class
  88. BIN
      PCS/target/classes/cn/cslg/permission/common/model/vo/associate/AssoUserGroupRoleVO.class
  89. BIN
      PCS/target/classes/cn/cslg/permission/common/utils/BackupUtils$Backup.class
  90. BIN
      PCS/target/classes/cn/cslg/permission/common/utils/BackupUtils.class
  91. BIN
      PCS/target/classes/cn/cslg/permission/common/utils/CacheUtils.class
  92. BIN
      PCS/target/classes/cn/cslg/permission/common/utils/DataUtils.class
  93. BIN
      PCS/target/classes/cn/cslg/permission/common/utils/DateUtils.class
  94. BIN
      PCS/target/classes/cn/cslg/permission/common/utils/ExcelUtils.class
  95. BIN
      PCS/target/classes/cn/cslg/permission/common/utils/FileUtils.class
  96. BIN
      PCS/target/classes/cn/cslg/permission/common/utils/FormatUtil.class
  97. BIN
      PCS/target/classes/cn/cslg/permission/common/utils/JsonUtils$1.class
  98. BIN
      PCS/target/classes/cn/cslg/permission/common/utils/JsonUtils$2.class
  99. BIN
      PCS/target/classes/cn/cslg/permission/common/utils/JsonUtils$3.class
  100. 0 0
      PCS/target/classes/cn/cslg/permission/common/utils/JsonUtils.class

+ 16 - 6
PCS/pom.xml

@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.6.4</version>
+        <version>2.5.4</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
@@ -139,11 +139,11 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-mail</artifactId>
         </dependency>
-<!--        <dependency>-->
-<!--            <groupId>org.openjdk.nashorn</groupId>-->
-<!--            <artifactId>nashorn-core</artifactId>-->
-<!--            <version>15.3</version>-->
-<!--        </dependency>-->
+        <!--        <dependency>-->
+        <!--            <groupId>org.openjdk.nashorn</groupId>-->
+        <!--            <artifactId>nashorn-core</artifactId>-->
+        <!--            <version>15.3</version>-->
+        <!--        </dependency>-->
         <dependency>
             <groupId>com.squareup.okhttp3</groupId>
             <artifactId>okhttp</artifactId>
@@ -154,6 +154,16 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-amqp</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+            <version>1.4.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>

+ 54 - 0
PCS/src/main/java/cn/cslg/permission/common/JsonPage.java

@@ -0,0 +1,54 @@
+package cn.cslg.permission.common;
+
+import com.github.pagehelper.PageInfo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 封装分页查询结果的PageInfo类转换为该类,当前类应该和Page\PageInfo一样,既能包含分页查询结果,又包含分页信息
+ *
+ * @Author chenyu
+ * @Data 2023/2/16
+ */
+@Data
+public class JsonPage implements Serializable {
+    /**
+     * 总页数
+     */
+    private Integer totalPages;
+    /**
+     * 总条数
+     */
+    private Long totalCount;
+    /**
+     * 当前页 (页码)
+     */
+    private Integer page;
+    /**
+     * 每页条数
+     */
+    private Integer pageSize;
+    /**
+     * 分页查询结果
+     */
+    private List<Object> list;
+
+    // 下面要编写一个能够将PageInfo类型对象转换为JsonPage类型对象的方法
+    // 如果需要将其他类型对象转换为JsonPage(例如SpringData的Page类型),另外编写方法即可
+    public static JsonPage restPage(PageInfo pageInfo) {
+        // 所谓转换的意思就是将pageInfo对象中的信息,赋值给JsonPage类型
+        JsonPage result = new JsonPage();
+        // 因为PageInfo和JsonPage同名属性较少,所以手动赋值
+        result.setTotalCount(pageInfo.getTotal());
+        result.setTotalPages(pageInfo.getPages());
+        result.setPage(pageInfo.getPageNum());
+        result.setPageSize(pageInfo.getPageSize());
+        // 别忘了最后的分页数据
+        result.setList(pageInfo.getList());
+        // 最后返回JsonPage类型对象result
+        return result;
+    }
+
+}

+ 26 - 0
PCS/src/main/java/cn/cslg/permission/common/model/dto/PageDTO2.java

@@ -0,0 +1,26 @@
+package cn.cslg.permission.common.model.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 分页查询前端传输DTO类
+ *
+ * @Author chenyu
+ * @Data 2023/2/16
+ */
+@Accessors(chain = true)
+@Data
+public class PageDTO2 implements Serializable {
+    /**
+     * 当前页数
+     */
+    private Integer page;
+    /**
+     * 每页条数
+     */
+    private Integer pageSize;
+
+}

+ 2 - 2
PCS/src/main/java/cn/cslg/permission/common/model/dto/TenantVipTypeFunctionDTO.java

@@ -10,14 +10,14 @@ import java.util.Date;
 import java.util.List;
 
 /**
- * 租户会员类型和功能的前端传输DTO类
+ * 新增租户会员类型的前端传输DTO类
  *
  * @Author chenyu
  * @Data 2023/2/15
  */
 @Accessors(chain = true)
 @Data
-public class TenantVipTypeFunctionDTO implements Serializable {
+public class TenantVipTypeFunctionAddNewDTO implements Serializable {
     /**
      * 租户会员类型名称
      */

+ 52 - 0
PCS/src/main/java/cn/cslg/permission/common/model/dto/TenantVipTypeFunctionUpdateDTO.java

@@ -0,0 +1,52 @@
+package cn.cslg.permission.common.model.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 新增租户会员类型的前端传输DTO类
+ *
+ * @Author chenyu
+ * @Data 2023/2/15
+ */
+@Accessors(chain = true)
+@Data
+public class TenantVipTypeFunctionUpdateDTO implements Serializable {
+    /**
+     * 租户会员类型ID
+     */
+    private Integer id;
+    /**
+     * 租户会员类型名称
+     */
+    private String tenantVipName;
+    /**
+     * 功能组件权限集合
+     */
+    private List<List<Integer>> functions;
+    /**
+     * 功能组件权限路径集合
+     */
+    private List<String> functionModifyPaths;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 是否启用
+     */
+    private Integer enable;
+    /**
+     * 创建人ID
+     */
+    private Integer createPersonId;
+    /**
+     * 创建人姓名
+     */
+    private String createPersonName;
+
+
+}

+ 49 - 0
PCS/src/main/java/cn/cslg/permission/common/model/vo/TenantVipTypeFunctionVO.java

@@ -0,0 +1,49 @@
+package cn.cslg.permission.common.model.vo;
+
+import cn.cslg.permission.domain.FunctionIdPathNameDescription;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 租户会员类型和功能的查询VO类
+ *
+ * @Author chenyu
+ * @Data 2023/2/16
+ */
+@Accessors(chain = true)
+@Data
+public class TenantVipTypeFunctionVO implements Serializable {
+    /**
+     * 租户会员类型ID
+     */
+    private Integer id;
+    /**
+     * 租户会员类型名称
+     */
+    private String tenantVipName;
+    /**
+     * 功能ID、功能组件树路径、功能名称、功能描述
+     */
+    private List<FunctionIdPathNameDescription> functionIdPathNameDescriptions;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 创建人ID
+     */
+    private Integer createPersonId;
+    /**
+     * 创建人姓名
+     */
+    private String createPersonName;
+    /**
+     * 功能组件权限集合
+     */
+    private List<List<Integer>> functions;
+
+
+}

+ 35 - 9
PCS/src/main/java/cn/cslg/permission/controller/TenantVipTypeController.java

@@ -1,7 +1,11 @@
 package cn.cslg.permission.controller;
 
+import cn.cslg.permission.common.JsonPage;
 import cn.cslg.permission.common.core.base.Constants;
-import cn.cslg.permission.common.model.dto.TenantVipTypeFunctionDTO;
+import cn.cslg.permission.common.model.dto.PageDTO2;
+import cn.cslg.permission.common.model.dto.TenantVipTypeFunctionAddNewDTO;
+import cn.cslg.permission.common.model.dto.TenantVipTypeFunctionUpdateDTO;
+import cn.cslg.permission.common.model.vo.TenantVipTypeFunctionVO;
 import cn.cslg.permission.common.utils.Response;
 import cn.cslg.permission.exception.XiaoShiException;
 import cn.cslg.permission.service.ITenantVipTypeService;
@@ -9,10 +13,9 @@ import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 租户会员类型控制层
@@ -30,11 +33,11 @@ public class TenantVipTypeController {
 
     @Operation(summary = "新增租户会员类型")
     @PostMapping("/addNew")
-    public String addNew(@RequestBody TenantVipTypeFunctionDTO tenantVipTypeFunctionDTO) {
-        log.info("开始处理【新增租户会员类型】的请求,参数为:{}", tenantVipTypeFunctionDTO);
-        if (tenantVipTypeFunctionDTO != null) {
+    public String addNew(@RequestBody TenantVipTypeFunctionAddNewDTO tenantVipTypeFunctionAddNewDTO) {
+        log.info("开始处理【新增租户会员类型】的请求,参数为:{}", tenantVipTypeFunctionAddNewDTO);
+        if (tenantVipTypeFunctionAddNewDTO != null) {
             try {
-                tenantVipTypeService.addNew(tenantVipTypeFunctionDTO);
+                tenantVipTypeService.addNew(tenantVipTypeFunctionAddNewDTO);
                 return Response.success("新增租户会员类型完成");
             } catch (XiaoShiException e) {
                 return Response.error(e.getMessage());
@@ -43,5 +46,28 @@ public class TenantVipTypeController {
         return Response.error();
     }
 
+    @Operation(summary = "查询租户会员类型列表")
+    @PostMapping("/queryTenantVipType")
+    public String queryTenantVipType(@RequestBody PageDTO2 pageDTO2) {
+        log.info("开始处理【查询租户会员类型列表】的请求,参数为:{}", pageDTO2);
+        JsonPage jsonPage = tenantVipTypeService.queryTenantVipType(pageDTO2);
+        return Response.success(jsonPage);
+    }
+
+    @Operation(summary = "修改租户会员类型")
+    @PostMapping("/update")
+    public String update(@RequestBody TenantVipTypeFunctionUpdateDTO tenantVipTypeFunctionUpdateDTO) {
+        log.info("开始处理【修改租户会员类型】的业务,参数为:{}", tenantVipTypeFunctionUpdateDTO);
+        if (tenantVipTypeFunctionUpdateDTO != null) {
+            try {
+                tenantVipTypeService.update(tenantVipTypeFunctionUpdateDTO);
+            } catch (XiaoShiException e) {
+                return Response.error(e.getMessage());
+            }
+            return Response.success();
+        }
+        return Response.error();
+    }
+
 
 }

+ 32 - 0
PCS/src/main/java/cn/cslg/permission/domain/FunctionIdPathNameDescription.java

@@ -0,0 +1,32 @@
+package cn.cslg.permission.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 该对象用来封装 功能ID、功能组件树路径、功能名称、功能描述
+ *
+ * @Author chenyu
+ * @Data 2023/2/16
+ */
+@Accessors(chain = true)
+@Data
+public class FunctionIdPathNameDescription {
+    /**
+     * 功能ID
+     */
+    private Integer functionId;
+    /**
+     * 功能组件权限路径
+     */
+    private String functionModifyPath;
+    /**
+     * 功能权限名称
+     */
+    private String functionName;
+    /**
+     * 功能权限描述
+     */
+    private String functionDescription;
+
+}

+ 8 - 0
PCS/src/main/java/cn/cslg/permission/mapper/AssoTenantVipTypeFunctionMapper.java

@@ -21,4 +21,12 @@ public interface AssoTenantVipTypeFunctionMapper {
      */
     int insertBatch(List<AssoTenantVipTypeAndFunction> assoTenantVipTypeAndFunctions);
 
+    /**
+     * 根据租户会员类型id删除数据
+     *
+     * @param tenantVipTypeId 租户会员类型id
+     * @return 返回受影响的行数
+     */
+    int deleteByTenantVipTypeId(Integer tenantVipTypeId);
+
 }

+ 26 - 0
PCS/src/main/java/cn/cslg/permission/mapper/TenantVipTypeMapper.java

@@ -1,8 +1,11 @@
 package cn.cslg.permission.mapper;
 
+import cn.cslg.permission.common.model.vo.TenantVipTypeFunctionVO;
 import cn.cslg.permission.domain.TenantVipType;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * 租户会员类型表的Mapper层接口
  *
@@ -27,4 +30,27 @@ public interface TenantVipTypeMapper {
      */
     int countByTenantVipName(String tenantVipName);
 
+    /**
+     * 分页查询租户会员类型和功能(一对多关联查询 -> mybatis父子查询)
+     *
+     * @return 返回查询到的列表
+     */
+    List<TenantVipTypeFunctionVO> queryTenantVipType();
+
+    /**
+     * 根据id修改数据
+     *
+     * @param tenantVipType 新数据对象
+     * @return 返回受影响的行数
+     */
+    int updateById(TenantVipType tenantVipType);
+
+    /**
+     * 根据id统计数量
+     *
+     * @param id 租户会员类型id
+     * @return 返回统计到的数量
+     */
+    int countById(Integer id);
+
 }

+ 23 - 4
PCS/src/main/java/cn/cslg/permission/service/ITenantVipTypeService.java

@@ -1,6 +1,9 @@
 package cn.cslg.permission.service;
 
-import cn.cslg.permission.common.model.dto.TenantVipTypeFunctionDTO;
+import cn.cslg.permission.common.JsonPage;
+import cn.cslg.permission.common.model.dto.PageDTO2;
+import cn.cslg.permission.common.model.dto.TenantVipTypeFunctionAddNewDTO;
+import cn.cslg.permission.common.model.dto.TenantVipTypeFunctionUpdateDTO;
 import org.springframework.transaction.annotation.Transactional;
 
 /**
@@ -11,11 +14,27 @@ import org.springframework.transaction.annotation.Transactional;
  */
 public interface ITenantVipTypeService {
     /**
-     * 新增租户会员类型(绑定对应的功能权限)
+     * 新增租户会员类型(包含对应的功能权限)
      *
-     * @param tenantVipTypeFunctionDTO 租户会员类型和功能数据对象
+     * @param tenantVipTypeFunctionAddNewDTO 租户会员类型和功能数据对象
      */
     @Transactional
-    void addNew(TenantVipTypeFunctionDTO tenantVipTypeFunctionDTO);
+    void addNew(TenantVipTypeFunctionAddNewDTO tenantVipTypeFunctionAddNewDTO);
+
+    /**
+     * 分页查询租户会员类型(包含对应的功能权限)列表
+     *
+     * @param pageDTO2 分页查询数据对象
+     * @return 返回查询到的列表
+     */
+    JsonPage queryTenantVipType(PageDTO2 pageDTO2);
+
+    /**
+     * 修改租户会员类型数据(包含对应的功能权限)
+     *
+     * @param tenantVipTypeFunctionUpdateDTO 租户会员类型和功能数据对象
+     */
+    @Transactional
+    void update(TenantVipTypeFunctionUpdateDTO tenantVipTypeFunctionUpdateDTO);
 
 }

+ 114 - 10
PCS/src/main/java/cn/cslg/permission/service/impl/TenantVipTypeService.java

@@ -1,20 +1,29 @@
 package cn.cslg.permission.service.impl;
 
-import cn.cslg.permission.common.model.dto.TenantVipTypeFunctionDTO;
+import cn.cslg.permission.common.JsonPage;
+import cn.cslg.permission.common.model.dto.PageDTO2;
+import cn.cslg.permission.common.model.dto.TenantVipTypeFunctionAddNewDTO;
+import cn.cslg.permission.common.model.dto.TenantVipTypeFunctionUpdateDTO;
+import cn.cslg.permission.common.model.vo.TenantVipTypeFunctionVO;
 import cn.cslg.permission.domain.AssoTenantVipTypeAndFunction;
+import cn.cslg.permission.domain.FunctionIdPathNameDescription;
 import cn.cslg.permission.domain.TenantVipType;
 import cn.cslg.permission.exception.XiaoShiException;
 import cn.cslg.permission.mapper.AssoTenantVipTypeFunctionMapper;
 import cn.cslg.permission.mapper.TenantVipTypeMapper;
 import cn.cslg.permission.service.ITenantVipTypeService;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 租户会员类型管理的Service层接口实现类
@@ -32,15 +41,15 @@ public class TenantVipTypeService implements ITenantVipTypeService {
     /**
      * 新增租户会员类型(绑定对应的功能权限)
      *
-     * @param tenantVipTypeFunctionDTO 租户会员类型和功能数据对象
+     * @param tenantVipTypeFunctionAddNewDTO 租户会员类型和功能数据对象
      */
     @Override
-    public void addNew(TenantVipTypeFunctionDTO tenantVipTypeFunctionDTO) {
-        log.info("开始处理【新增租户会员类型】的业务,参数为:{}", tenantVipTypeFunctionDTO);
+    public void addNew(TenantVipTypeFunctionAddNewDTO tenantVipTypeFunctionAddNewDTO) {
+        log.info("开始处理【新增租户会员类型】的业务,参数为:{}", tenantVipTypeFunctionAddNewDTO);
 
         //检查租户会员类型名称是否已存在
-        String tenantVipName = tenantVipTypeFunctionDTO.getTenantVipName();
-        log.info("检查租户会员类型名称是否已存在");
+        String tenantVipName = tenantVipTypeFunctionAddNewDTO.getTenantVipName();
+        log.info("检查租户会员类型名称是否被占用");
         int count = tenantVipTypeMapper.countByTenantVipName(tenantVipName);
         if (count > 0) {
             String message = "新增租户会员类型失败,【" + tenantVipName + "】已存在,请尝试更换名称";
@@ -50,7 +59,7 @@ public class TenantVipTypeService implements ITenantVipTypeService {
 
         //将DTO数据对象复制给实体类
         TenantVipType tenantVipType = new TenantVipType();
-        BeanUtils.copyProperties(tenantVipTypeFunctionDTO, tenantVipType);
+        BeanUtils.copyProperties(tenantVipTypeFunctionAddNewDTO, tenantVipType);
         //是否启用属性暂时默认都设置为启用(禁用0 启用1),若以后前端有需求再调整
         tenantVipType.setCreateTime(new Date()).setEnable(1);
 
@@ -58,7 +67,7 @@ public class TenantVipTypeService implements ITenantVipTypeService {
         log.info("数据插入租户会员类型表");
         int rows = tenantVipTypeMapper.insert(tenantVipType);
         if (rows != 1) {
-            String message = "新增租户会员类型失败,服务器忙请稍后再试";
+            String message = "数据插入租户会员类型表失败,新增租户会员类型失败,服务器忙请稍后再试";
             log.info("{}", message);
             throw new XiaoShiException(message);
         }
@@ -66,7 +75,7 @@ public class TenantVipTypeService implements ITenantVipTypeService {
         //创建租户会员类型和功能关联表实体类集合,准备将集合进行批量插入租户会员类型和功能关联表
         ArrayList<AssoTenantVipTypeAndFunction> assoTenantVipTypeAndFunctions = new ArrayList<>();
         //从DTO对象中取出功能组件权限路径集合,遍历集合进行操作依次给租户会员类型和功能关联表实体类赋值
-        List<String> functionModifyPaths = tenantVipTypeFunctionDTO.getFunctionModifyPaths();
+        List<String> functionModifyPaths = tenantVipTypeFunctionAddNewDTO.getFunctionModifyPaths();
         for (String functionModifyPath : functionModifyPaths) {
             AssoTenantVipTypeAndFunction assoTenantVipTypeAndFunction = new AssoTenantVipTypeAndFunction()
                     .setTenantVipTypeId(tenantVipType.getId())
@@ -79,7 +88,7 @@ public class TenantVipTypeService implements ITenantVipTypeService {
         log.info("数据插入租户会员类型和功能关联表");
         rows = assoTenantVipTypeFunctionMapper.insertBatch(assoTenantVipTypeAndFunctions);
         if (rows != assoTenantVipTypeAndFunctions.size()) {
-            String message = "新增租户会员类型失败,服务器忙请稍后再试";
+            String message = "数据插入租户会员类型和功能关联表失败,新增租户会员类型失败,服务器忙请稍后再试";
             log.info("{}", message);
             throw new XiaoShiException(message);
         }
@@ -88,4 +97,99 @@ public class TenantVipTypeService implements ITenantVipTypeService {
 
     }
 
+    /**
+     * 分页查询租户会员类型(包含对应的功能权限)列表
+     *
+     * @param pageDTO2 分页查询数据对象
+     * @return 返回查询到的列表
+     */
+    @Override
+    public JsonPage queryTenantVipType(PageDTO2 pageDTO2) {
+        log.info("开始处理【查询租户会员类型列表】的业务,参数为:{}", pageDTO2);
+        Integer page = pageDTO2.getPage();
+        Integer pageSize = pageDTO2.getPageSize();
+        //分页查询
+        PageHelper.startPage(page, pageSize);
+        List<TenantVipTypeFunctionVO> queryResults = tenantVipTypeMapper.queryTenantVipType();
+
+        //遍历租户会员类型,取出每个会员类型中的功能ID、功能组件树路径、功能名称、功能描述集合
+        for (TenantVipTypeFunctionVO tenantVipTypeFunctionVO : queryResults) {
+            ArrayList<List<Integer>> functions = new ArrayList<>();
+            List<FunctionIdPathNameDescription> functionIdPathNameDescriptions = tenantVipTypeFunctionVO.getFunctionIdPathNameDescriptions();
+            //遍历功能ID、功能组件树路径、功能名称、功能描述集合,取出每个集合中的功能组件树路径
+            for (FunctionIdPathNameDescription functionIdPathNameDescription : functionIdPathNameDescriptions) {
+                String functionModifyPath = functionIdPathNameDescription.getFunctionModifyPath();
+                //将以逗号分隔的功能组件树字符串路径转换为Integer集合
+                List<Integer> function = Arrays.stream(functionModifyPath.split(",")).map(Integer::parseInt).collect(Collectors.toList());
+                functions.add(function);
+            }
+            //给当前会员类型中的功能组件权限集合赋值
+            tenantVipTypeFunctionVO.setFunctions(functions);
+        }
+
+        return JsonPage.restPage(new PageInfo(queryResults));
+    }
+
+    /**
+     * 修改租户会员类型数据(包含对应的功能权限)
+     *
+     * @param tenantVipTypeFunctionUpdateDTO 租户会员类型和功能数据对象
+     */
+    @Override
+    public void update(TenantVipTypeFunctionUpdateDTO tenantVipTypeFunctionUpdateDTO) {
+        log.info("开始处理【修改租户会员类型】的业务,参数为:{}", tenantVipTypeFunctionUpdateDTO);
+
+        //检查尝试修改的数据是否存在
+        Integer tenantVipTypeId = tenantVipTypeFunctionUpdateDTO.getId();
+        log.info("检查尝试修改的数据是否存在");
+        int count = tenantVipTypeMapper.countById(tenantVipTypeId);
+        if (count == 0) {
+            String message = "尝试修改的数据已不存在,修改失败,尝试访问的数据已不存在";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        //修改租户会员类型表数据
+        TenantVipType tenantVipType = new TenantVipType();
+        BeanUtils.copyProperties(tenantVipTypeFunctionUpdateDTO, tenantVipType);
+        log.info("修改租户会员类型表数据");
+        int rows = tenantVipTypeMapper.updateById(tenantVipType);
+        if (rows != 1) {
+            String message = "修改租户会员类型表数据失败,修改失败,服务器忙请稍后再试";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        //删除原有租户会员类型和功能的关联表数据
+        log.info("删除原有租户会员类型和功能的关联表数据");
+        assoTenantVipTypeFunctionMapper.deleteByTenantVipTypeId(tenantVipTypeId);
+
+        //新租户会员类型和功能数据入关联表
+        ArrayList<AssoTenantVipTypeAndFunction> assoTenantVipTypeAndFunctions = new ArrayList<>();
+        List<String> functionModifyPaths = tenantVipTypeFunctionUpdateDTO.getFunctionModifyPaths();
+        for (String functionModifyPath : functionModifyPaths) {
+            //按逗号拆分路径,取拆分后的String[]中最后一个元素,将该元素转换为Integer类型
+            //我的方法:↓
+            //String functionStringId = functionModifyPath.substring(functionModifyPath.lastIndexOf(",") + 1);
+            //int functionId = Integer.parseInt(functionStringId);
+            String functionStringId = functionModifyPath.split(",")[functionModifyPath.split(",").length - 1];
+            int functionId = Integer.parseInt(functionStringId);
+            AssoTenantVipTypeAndFunction assoTenantVipTypeAndFunction = new AssoTenantVipTypeAndFunction()
+                    .setTenantVipTypeId(tenantVipTypeId)
+                    .setFunctionId(functionId)
+                    .setFunctionModifyPath(functionModifyPath);
+            assoTenantVipTypeAndFunctions.add(assoTenantVipTypeAndFunction);
+        }
+        log.info("数据插入新租户会员类型和功能关联表");
+        rows = assoTenantVipTypeFunctionMapper.insertBatch(assoTenantVipTypeAndFunctions);
+        if (rows != functionModifyPaths.size()) {
+            String message = "数据插入新租户会员类型和功能关联表失败,修改失败,服务器忙请稍后再试";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        log.info("修改租户会员类型完成");
+
+    }
+
 }

+ 8 - 0
PCS/src/main/resources/mapper/AssoTenantVipTypeFunctionMapper.xml

@@ -14,5 +14,13 @@
         </foreach>
     </insert>
 
+    <!--根据租户会员类型id删除数据-->
+    <!--int deleteByTenantVipTypeId(Integer tenantVipTypeId);-->
+    <delete id="deleteByTenantVipTypeId">
+        delete
+        from ASSO_TENANTVIPTYPE_FUNCTION
+        where TENANT_VIP_TYPE_ID = #{tenantVipTypeId}
+    </delete>
+
 
 </mapper>

+ 73 - 0
PCS/src/main/resources/mapper/TenantVipTypeMapper.xml

@@ -19,4 +19,77 @@
         where TENANT_VIP_NAME = #{tenantVipName}
     </select>
 
+    <!--分页查询租户会员类型和功能(一对多关联查询 -> mybatis父子查询)-->
+    <!--List<TenantVipTypeFunctionVO> queryTenantVipType();-->
+    <select id="queryTenantVipType" resultMap="queryTenantVipTypeMap">
+        select ID VIP_ID,
+               TENANT_VIP_NAME,
+               REMARK,
+               CREATE_PERSON_ID,
+               CREATE_PERSON_NAME
+        from TENANT_VIP_TYPE
+        order by ID
+    </select>
+
+    <resultMap id="queryTenantVipTypeMap" type="cn.cslg.permission.common.model.vo.TenantVipTypeFunctionVO">
+        <id column="VIP_ID" property="id"/>
+        <result column="TENANT_VIP_NAME" property="tenantVipName"/>
+        <result column="REMARK" property="remark"/>
+        <result column="CREATE_PERSON_ID" property="createPersonId"/>
+        <result column="CREATE_PERSON_NAME" property="createPersonName"/>
+        <collection property="functionIdPathNameDescriptions"
+                    ofType="cn.cslg.permission.domain.FunctionIdPathNameDescription"
+                    select="queryTenantVipType2" column="VIP_ID">
+        </collection>
+    </resultMap>
+
+    <select id="queryTenantVipType2" resultMap="queryTenantVipTypeMap2">
+        select FUNCTION_ID,
+               FUNCTION_MODIFY_PATH,
+               FUNCTION_NAME,
+               FUNCTION_DESCRIPTION
+        from ASSO_TENANTVIPTYPE_FUNCTION ass
+                 left join FUNCTION_TABLE f on ass.FUNCTION_ID = f.ID
+        where TENANT_VIP_TYPE_ID = #{VIP_ID}
+    </select>
+
+    <resultMap id="queryTenantVipTypeMap2" type="cn.cslg.permission.domain.FunctionIdPathNameDescription">
+        <result column="FUNCTION_ID" property="functionId"/>
+        <result column="FUNCTION_MODIFY_PATH" property="functionModifyPath"/>
+        <result column="FUNCTION_NAME" property="functionName"/>
+        <result column="FUNCTION_DESCRIPTION" property="functionDescription"/>
+    </resultMap>
+
+    <!--根据id修改数据-->
+    <!--int updateById(TenantVipType tenantVipType);-->
+    <update id="updateById">
+        update TENANT_VIP_TYPE
+        <set>
+            <if test="tenantVipName != null">
+                TENANT_VIP_NAME = #{tenantVipName},
+            </if>
+            <if test="remark != null">
+                REMARK = #{remark},
+            </if>
+            <if test="enable != null">
+                ENABLE = #{enable},
+            </if>
+            <if test="createPersonId != null">
+                CREATE_PERSON_ID = #{createPersonId},
+            </if>
+            <if test="createPersonName != null">
+                CREATE_PERSON_NAME = #{createPersonName},
+            </if>
+        </set>
+        where ID = #{id}
+    </update>
+
+    <!--根据id统计数量-->
+    <!--int countById(Integer id);-->
+    <select id="countById" resultType="int">
+        select count(*)
+        from TENANT_VIP_TYPE
+        where ID = #{id}
+    </select>
+
 </mapper>

+ 39 - 0
PCS/src/test/java/cn/cslg/permission/api/逗号分隔的字符串路径转换为Integer集合.java

@@ -0,0 +1,39 @@
+package cn.cslg.permission.api;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Author chenyu
+ * @Data 2023/2/16
+ */
+@SpringBootTest
+public class 逗号分隔的字符串路径转换为Integer集合 {
+
+    @Test
+    void aaa() {
+        ArrayList<String> strs = new ArrayList<>();
+        String str1 = "1,18,20";
+        String str2 = "1,18,21";
+        String str3 = "1,18,22";
+        String str4 = "1,18";
+        strs.add(str1);
+        strs.add(str2);
+        strs.add(str3);
+        strs.add(str4);
+
+        ArrayList<List<Integer>> lists = new ArrayList<>();
+        for (String str : strs) {
+            //逗号分隔的字符串路径转换为Integer集合
+            List<Integer> idList = Arrays.stream(str.split(",")).map(Integer::parseInt).collect(Collectors.toList());
+            lists.add(idList);
+        }
+        System.out.println(lists);
+    }
+
+}

+ 52 - 0
PCS/src/test/java/cn/cslg/permission/mapper/AssoTenantVipTypeFunctionMapperTests.java

@@ -0,0 +1,52 @@
+package cn.cslg.permission.mapper;
+
+import cn.cslg.permission.domain.AssoTenantVipTypeAndFunction;
+import cn.cslg.permission.domain.TenantVipType;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.ArrayList;
+import java.util.Date;
+
+/**
+ * 租户会员类型和功能关联表的Mapper层接口测试类
+ *
+ * @Author chenyu
+ * @Data 2023/2/15
+ */
+@Slf4j
+@SpringBootTest
+public class AssoTenantVipTypeFunctionMapperTests {
+    @Autowired
+    private AssoTenantVipTypeFunctionMapper assoTenantVipTypeFunctionMapper;
+
+    @Test
+    void insertBatch() {
+        ArrayList<AssoTenantVipTypeAndFunction> assoTenantVipTypeAndFunctions = new ArrayList<>();
+        log.info("待批量插入的数据为:");
+        for (int i = 0; i < 3; i++) {
+            AssoTenantVipTypeAndFunction assoTenantVipTypeAndFunction = new AssoTenantVipTypeAndFunction()
+                    .setTenantVipTypeId(i + 1)
+                    .setFunctionId(19 + i)
+                    .setFunctionModifyPath("1,18," + (19 + i));
+            log.info("{}", assoTenantVipTypeAndFunction);
+            assoTenantVipTypeAndFunctions.add(assoTenantVipTypeAndFunction);
+        }
+        int rows = assoTenantVipTypeFunctionMapper.insertBatch(assoTenantVipTypeAndFunctions);
+        log.info("批量插入数据完成,受影响的行数为:{}", rows);
+        log.info("批量插入后数据为:");
+        for (AssoTenantVipTypeAndFunction assoTenantVipTypeAndFunction : assoTenantVipTypeAndFunctions) {
+            log.info("{}", assoTenantVipTypeAndFunction);
+        }
+    }
+
+    @Test
+    void deleteByTenantVipTypeId() {
+        int rows = assoTenantVipTypeFunctionMapper.deleteByTenantVipTypeId(13);
+        log.info("根据租户会员类型id删除数据完成,受影响的行数为:{}", rows);
+    }
+
+
+}

+ 68 - 0
PCS/src/test/java/cn/cslg/permission/mapper/TenantVipTypeMapperTests.java

@@ -0,0 +1,68 @@
+package cn.cslg.permission.mapper;
+
+import cn.cslg.permission.common.model.vo.TenantVipTypeFunctionVO;
+import cn.cslg.permission.domain.TenantVipType;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 租户会员类型表的Mapper层接口测试类
+ *
+ * @Author chenyu
+ * @Data 2023/2/15
+ */
+@Slf4j
+@SpringBootTest
+public class TenantVipTypeMapperTests {
+    @Autowired
+    private TenantVipTypeMapper tenantVipTypeMapper;
+
+    @Test
+    void insert() {
+        TenantVipType tenantVipType = new TenantVipType()
+                .setTenantVipName("黄金会员")
+                .setRemark("新增测试会员")
+                .setEnable(1)
+                .setCreateTime(new Date())
+                .setCreatePersonId(155)
+                .setCreatePersonName("陈宇");
+        int rows = tenantVipTypeMapper.insert(tenantVipType);
+        log.info("插入数据完成,受影响的行数为:{}", rows);
+    }
+
+    @Test
+    void tenantVipName() {
+        int rows = tenantVipTypeMapper.countByTenantVipName("黄金会员");
+        log.info("根据名称统计数量完成,数量为:{}", rows);
+    }
+
+    @Test
+    void queryTenantVipType() {
+        List<TenantVipTypeFunctionVO> tenantVipTypeFunctionVOS = tenantVipTypeMapper.queryTenantVipType();
+        log.info("查询列表完成,数据信息为:{}", tenantVipTypeFunctionVOS);
+    }
+
+    @Test
+    void updateById() {
+        TenantVipType tenantVipType = new TenantVipType()
+                .setId(16)
+                .setTenantVipName("修改后的会员类型名称")
+                .setEnable(0)
+                .setRemark("修改后的备注");
+        int rows = tenantVipTypeMapper.updateById(tenantVipType);
+        log.info("根据id修改数据完成,受影响的行数为:{}", rows);
+    }
+
+    @Test
+    void countById() {
+        int count = tenantVipTypeMapper.countById(1);
+        log.info("根据id统计数量完成,数量为:{}", count);
+    }
+
+
+}

+ 72 - 0
PCS/src/test/java/cn/cslg/permission/service/TenantVipTypeServiceTests.java

@@ -0,0 +1,72 @@
+package cn.cslg.permission.service;
+
+import cn.cslg.permission.common.JsonPage;
+import cn.cslg.permission.common.model.dto.PageDTO2;
+import cn.cslg.permission.common.model.dto.TenantVipTypeFunctionAddNewDTO;
+import cn.cslg.permission.exception.XiaoShiException;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 租户会员类型管理的Service层测试类
+ *
+ * @Author chenyu
+ * @Data 2023/2/16
+ */
+@Slf4j
+@SpringBootTest
+public class TenantVipTypeServiceTests {
+
+    @Autowired
+    private ITenantVipTypeService tenantVipTypeService;
+
+    @Test
+    void addNew() {
+        //前端传入以下数据
+        ArrayList<List<Integer>> functions = new ArrayList<>();
+        ArrayList<Integer> function1 = new ArrayList<>();
+        function1.add(1);
+        function1.add(18);
+        function1.add(20);
+        functions.add(function1);
+        ArrayList<Integer> function2 = new ArrayList<>();
+        function2.add(1);
+        function2.add(18);
+        function2.add(22);
+        functions.add(function2);
+        ArrayList<String> functionModifyPaths = new ArrayList<>();
+        functionModifyPaths.add("1,18,20");
+        functionModifyPaths.add("1,18,22");
+        TenantVipTypeFunctionAddNewDTO tenantVipTypeFunctionAddNewDTO = new TenantVipTypeFunctionAddNewDTO()
+                .setTenantVipName("黄金租户会员")
+                .setRemark("此会员权限较高")
+                .setEnable(1)
+                .setFunctions(functions)
+                .setFunctionModifyPaths(functionModifyPaths)
+                .setCreatePersonId(155)
+                .setCreatePersonName("陈宇");
+
+        //开始测试业务层
+        log.info("开始处理【新增租户会员类型】的请求,参数为:{}", tenantVipTypeFunctionAddNewDTO);
+        try {
+            tenantVipTypeService.addNew(tenantVipTypeFunctionAddNewDTO);
+        } catch (XiaoShiException e) {
+            log.info(e.getMessage());
+        }
+    }
+
+    @Test
+    void queryTenantVipType() {
+        PageDTO2 pageDTO2 = new PageDTO2()
+                .setPage(1)
+                .setPageSize(10);
+        JsonPage jsonPage = tenantVipTypeService.queryTenantVipType(pageDTO2);
+        log.info("{}", jsonPage);
+    }
+
+}

+ 26 - 0
PCS/target/classes/application-dev.yml

@@ -0,0 +1,26 @@
+spring:
+  redis:
+    host: 47.101.137.223
+    port: 6379
+    database: 9
+    password: Xx0GWxdWQJxx6Swe
+    lettuce:
+      pool:
+        max-active: 20
+        max-idle: 20
+        min-idle: 0
+        max-wait: -1ms
+    timeout: 2000ms
+  datasource:
+    url: jdbc:mysql://47.101.137.223:3306/PCS_TEST?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+    username: root
+    password: TU5x6IeBi7rl
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      stat-view-servlet:
+        login-username: admin
+        login-password: 123456
+      web-stat-filter:
+        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
+queueName: mail.queue

+ 25 - 0
PCS/target/classes/application-docker.yml

@@ -0,0 +1,25 @@
+spring:
+  redis:
+    host: pas-redis
+    port: 6379
+    database: 0
+    lettuce:
+      pool:
+        max-active: 20
+        max-idle: 20
+        min-idle: 0
+        max-wait: -1ms
+    timeout: 2000ms
+    password: cslg_docker_123456
+  datasource:
+    url: jdbc:mysql://pas-mysql:3306/pas?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+    username: root
+    password: cslg_docker_123456
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      stat-view-servlet:
+        login-username: admin
+        login-password: cslg123456+
+      web-stat-filter:
+        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"

+ 29 - 0
PCS/target/classes/application-prod.yml

@@ -0,0 +1,29 @@
+spring:
+  redis:
+    host: 172.27.247.174
+    port: 6379
+    database: 3
+    password: Xx0GWxdWQJxx6Swe
+    lettuce:
+      pool:
+        max-active: 20
+        max-idle: 20
+        min-idle: 0
+        max-wait: -1ms
+    timeout: 2000ms
+  datasource:
+    url: jdbc:mysql://172.27.247.174:3306/PCS_PROD?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+    username: root
+    password: TU5x6IeBi7rl
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      stat-view-servlet:
+        login-username: admin
+        login-password: Cslg2022+
+      web-stat-filter:
+        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
+springdoc:
+  api-docs:
+    enabled: false
+queueName: emailProd.queue

+ 26 - 0
PCS/target/classes/application-test.yml

@@ -0,0 +1,26 @@
+spring:
+  redis:
+    host: 47.101.137.223
+    port: 6379
+    database: 9
+    password: Xx0GWxdWQJxx6Swe
+    lettuce:
+      pool:
+        max-active: 20
+        max-idle: 20
+        min-idle: 0
+        max-wait: -1ms
+    timeout: 2000ms
+  datasource:
+    url: jdbc:mysql://47.101.137.223:3306/PCS_TEST?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+    username: root
+    password: TU5x6IeBi7rl
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      stat-view-servlet:
+        login-username: admin
+        login-password: 123456
+      web-stat-filter:
+        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
+queueName: mailTest.queue

+ 68 - 0
PCS/target/classes/application.yml

@@ -0,0 +1,68 @@
+server:
+  servlet:
+    context-path: /
+  port: 8871
+sa-token:
+  activity-timeout: 18000
+  token-name: token
+  token-style: tik
+  #  是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
+  is-concurrent: true
+  timeout: 604800
+spring:
+  thymeleaf:
+    cache: false
+    mode: HTML5
+    #    # 使用 smtp 协议
+    #  mail.protocol: smtps
+    #  mail.host: smtp.exmail.qq.com
+    #  mail.port: 465
+    #  mail.username: shenyongyi@china-wispro.com
+    #    # 授权码
+    #  mail.password: c3hY5cgAexhhr9HL
+    #  mail.test-connection: false
+    #  mail.properties.mail.smtp.auth: true
+    #  mail.properties.mail.debug: false
+    #  mail.properties.mail.mime.splitlongparameters: false
+    #  mail.default-encoding: UTF-8
+    # rabbitmq
+  rabbitmq.host: 47.101.137.223
+  rabbitmq.port: 5672
+  rabbitmq.username: admin
+  rabbitmq.password: 123456
+  aop:
+    auto: true
+    proxy-target-class: true
+  application:
+    name: pcs
+  servlet:
+    multipart:
+      max-file-size: 1000MB
+      max-request-size: 1000MB
+  profiles:
+    active: dev
+  jackson:
+    default-property-inclusion: non_null
+    serialization:
+      INDENT_OUTPUT: true
+    date-format: yyyy-MM-dd HH:mm:ss
+    time-zone: Asia/Shanghai
+logging:
+  config: classpath:config/logback-spring.xml
+  level:
+    cn.cslg.permission.mapper: debug
+#mybatis
+mybatis-plus:
+  typeAliasesPackage: cn.cslg.permission.entity
+  global-config:
+    db-config:
+      id-type: AUTO
+      logic-delete-value: 0
+      logic-not-delete-value: 1
+  configuration:
+    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    map-underscore-to-camel-case: true
+    cache-enabled: false
+  mapper-locations: classpath:mapper/*.xml
+
+

BIN
PCS/target/classes/cn/cslg/permission/Application.class


BIN
PCS/target/classes/cn/cslg/permission/common/GlobalException.class


BIN
PCS/target/classes/cn/cslg/permission/common/config/AsyncExceptionHandler.class


BIN
PCS/target/classes/cn/cslg/permission/common/config/AsyncTaskPoolConfig.class


BIN
PCS/target/classes/cn/cslg/permission/common/config/InnerInterceptor/LizzMybatisIntercepts.class


BIN
PCS/target/classes/cn/cslg/permission/common/config/MailConstants.class


BIN
PCS/target/classes/cn/cslg/permission/common/config/MetaObjectHandlerConfig.class


BIN
PCS/target/classes/cn/cslg/permission/common/config/MybatisPlusConfig.class


BIN
PCS/target/classes/cn/cslg/permission/common/config/RabbitMQConfig$1.class


BIN
PCS/target/classes/cn/cslg/permission/common/config/RabbitMQConfig$2.class


BIN
PCS/target/classes/cn/cslg/permission/common/config/RabbitMQConfig.class


BIN
PCS/target/classes/cn/cslg/permission/common/config/SaTokenConfigure.class


BIN
PCS/target/classes/cn/cslg/permission/common/config/SpringDocConfig.class


BIN
PCS/target/classes/cn/cslg/permission/common/config/StpInterfaceImpl.class


BIN
PCS/target/classes/cn/cslg/permission/common/config/WebSocketConfig.class


BIN
PCS/target/classes/cn/cslg/permission/common/core/Convert.class


BIN
PCS/target/classes/cn/cslg/permission/common/core/annotation/AnnotationParse.class


BIN
PCS/target/classes/cn/cslg/permission/common/core/annotation/LoggerAspect.class


BIN
PCS/target/classes/cn/cslg/permission/common/core/annotation/Permission.class


BIN
PCS/target/classes/cn/cslg/permission/common/core/annotation/PermissionAspect.class


BIN
PCS/target/classes/cn/cslg/permission/common/core/base/Constants$1.class


BIN
PCS/target/classes/cn/cslg/permission/common/core/base/Constants.class


BIN
PCS/target/classes/cn/cslg/permission/common/core/base/DocFlag.class


BIN
PCS/target/classes/cn/cslg/permission/common/core/base/EStatus.class


BIN
PCS/target/classes/cn/cslg/permission/common/core/base/RedisConf.class


BIN
PCS/target/classes/cn/cslg/permission/common/core/base/RequestHolder.class


BIN
PCS/target/classes/cn/cslg/permission/common/core/exception/BaseException.class


BIN
PCS/target/classes/cn/cslg/permission/common/core/exception/CustomException.class


BIN
PCS/target/classes/cn/cslg/permission/common/core/exception/PermissionException.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/BaseEntity.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/BaseVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/dto/AreaAddressDTO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/dto/ClassNumberDTO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/dto/CommonData.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/dto/CustomFieldDTO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/dto/CustomFieldLabelDTO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/dto/LabelDTO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/dto/PageDTO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/dto/PatentQueryFieldSourceDTO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/dto/ProjectFieldOrderDTO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/dto/TaskWebSocketDTO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/dto/TenantDTO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/dto/UploadFileDTO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/ApplicationVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/DataVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/DepartmentVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/FunctionVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/LoginVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/PersonnelVO$DP.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/PersonnelVO$PerRole.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/PersonnelVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/PositionVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/RoleVO$Permission.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/RoleVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/SysDictVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/TenantVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/UserGroupVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/UserVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/associate/AssoApplicationTenantVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/associate/AssoDepartPosVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/associate/AssoDepartRolVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/associate/AssoPerGroupVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/associate/AssoPerRolVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/associate/AssoUserGroupPersonnelVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/model/vo/associate/AssoUserGroupRoleVO.class


BIN
PCS/target/classes/cn/cslg/permission/common/utils/BackupUtils$Backup.class


BIN
PCS/target/classes/cn/cslg/permission/common/utils/BackupUtils.class


BIN
PCS/target/classes/cn/cslg/permission/common/utils/CacheUtils.class


BIN
PCS/target/classes/cn/cslg/permission/common/utils/DataUtils.class


BIN
PCS/target/classes/cn/cslg/permission/common/utils/DateUtils.class


BIN
PCS/target/classes/cn/cslg/permission/common/utils/ExcelUtils.class


BIN
PCS/target/classes/cn/cslg/permission/common/utils/FileUtils.class


BIN
PCS/target/classes/cn/cslg/permission/common/utils/FormatUtil.class


BIN
PCS/target/classes/cn/cslg/permission/common/utils/JsonUtils$1.class


BIN
PCS/target/classes/cn/cslg/permission/common/utils/JsonUtils$2.class


BIN
PCS/target/classes/cn/cslg/permission/common/utils/JsonUtils$3.class


+ 0 - 0
PCS/target/classes/cn/cslg/permission/common/utils/JsonUtils.class


Some files were not shown because too many files changed in this diff