瀏覽代碼

2/17 陈宇 完成新增租户时选择租户会员类型,完成租户会员类型的删除功能,分页查询、模糊查询检索租户会员类型等功能

chendayu 2 年之前
父節點
當前提交
f3eb1e32b7
共有 18 個文件被更改,包括 185 次插入23 次删除
  1. 4 0
      PCS/src/main/java/cn/cslg/permission/common/model/dto/PageDTO2.java
  2. 22 0
      PCS/src/main/java/cn/cslg/permission/common/model/vo/AssoTenantVipTypeAndFunctionVO.java
  3. 5 0
      PCS/src/main/java/cn/cslg/permission/common/model/vo/TenantVO.java
  4. 5 0
      PCS/src/main/java/cn/cslg/permission/common/model/vo/TenantVipTypeFunctionVO.java
  5. 12 0
      PCS/src/main/java/cn/cslg/permission/controller/TenantVipTypeController.java
  6. 6 0
      PCS/src/main/java/cn/cslg/permission/domain/Tenant.java
  7. 9 0
      PCS/src/main/java/cn/cslg/permission/mapper/AssoTenantVipTypeFunctionMapper.java
  8. 10 1
      PCS/src/main/java/cn/cslg/permission/mapper/TenantVipTypeMapper.java
  9. 8 0
      PCS/src/main/java/cn/cslg/permission/service/ITenantVipTypeService.java
  10. 21 5
      PCS/src/main/java/cn/cslg/permission/service/TenantService.java
  11. 13 12
      PCS/src/main/java/cn/cslg/permission/service/associate/TenantFunctionService.java
  12. 42 3
      PCS/src/main/java/cn/cslg/permission/service/impl/TenantVipTypeService.java
  13. 12 0
      PCS/src/main/resources/mapper/AssoTenantVipTypeFunctionMapper.xml
  14. 16 2
      PCS/src/main/resources/mapper/TenantVipTypeMapper.xml
  15. 二進制
      PCS/target/classes/cn/cslg/permission/common/model/vo/TenantVO.class
  16. 二進制
      PCS/target/classes/cn/cslg/permission/domain/Tenant.class
  17. 二進制
      PCS/target/classes/cn/cslg/permission/service/TenantService.class
  18. 二進制
      PCS/target/classes/cn/cslg/permission/service/associate/TenantFunctionService.class

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

@@ -22,5 +22,9 @@ public class PageDTO2 implements Serializable {
      * 每页条数
      */
     private Integer pageSize;
+    /**
+     * 检索条件
+     */
+    private String likeName;
 
 }

+ 22 - 0
PCS/src/main/java/cn/cslg/permission/common/model/vo/AssoTenantVipTypeAndFunctionVO.java

@@ -0,0 +1,22 @@
+package cn.cslg.permission.common.model.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 租户会员类型和功能关联表的查询VO类
+ *
+ * @Author chenyu
+ * @Data 2023/2/15
+ */
+@Accessors(chain = true)
+@Data
+public class AssoTenantVipTypeAndFunctionVO implements Serializable {
+    /**
+     * 功能编辑组件路径
+     */
+    private String functionModifyPath;
+
+}

+ 5 - 0
PCS/src/main/java/cn/cslg/permission/common/model/vo/TenantVO.java

@@ -95,6 +95,11 @@ public class TenantVO extends BaseVO {
     private String type;
 
     /**
+     * 租户会员类型
+     */
+    private Integer tenantVipType;
+
+    /**
      * Front:邮箱
      * Back:租户邮箱
      */

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

@@ -5,6 +5,7 @@ import lombok.Data;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -41,6 +42,10 @@ public class TenantVipTypeFunctionVO implements Serializable {
      */
     private String createPersonName;
     /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
      * 功能组件权限集合
      */
     private List<List<Integer>> functions;

+ 12 - 0
PCS/src/main/java/cn/cslg/permission/controller/TenantVipTypeController.java

@@ -69,5 +69,17 @@ public class TenantVipTypeController {
         return Response.error();
     }
 
+    @Operation(summary = "删除租户会员类型")
+    @GetMapping("/delete")
+    public String delete(Integer id) {
+        log.info("开始处理怕【删除租户会员类型】的请求,参数为:{}", id);
+        try {
+            tenantVipTypeService.delete(id);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success("删除租户会员类型完成");
+    }
+
 
 }

+ 6 - 0
PCS/src/main/java/cn/cslg/permission/domain/Tenant.java

@@ -75,6 +75,12 @@ public class Tenant extends BaseEntity<Tenant> {
     private String tenantType;
 
     /**
+     * 租户会员类型
+     */
+    @TableField(value = "TENANT_VIP_TYPE")
+    private Integer tenantVipType;
+
+    /**
      * 租户关联人员ID
      */
     @TableField(value = "PERSONNEL_ID")

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

@@ -1,5 +1,6 @@
 package cn.cslg.permission.mapper;
 
+import cn.cslg.permission.common.model.vo.AssoTenantVipTypeAndFunctionVO;
 import cn.cslg.permission.domain.AssoTenantVipTypeAndFunction;
 import org.springframework.stereotype.Repository;
 
@@ -29,4 +30,12 @@ public interface AssoTenantVipTypeFunctionMapper {
      */
     int deleteByTenantVipTypeId(Integer tenantVipTypeId);
 
+    /**
+     * 根据租户会员类型id查询数据
+     *
+     * @param tenantVipTypeId 租户会员类型id
+     * @return 返回查询到的数据
+     */
+    List<AssoTenantVipTypeAndFunctionVO> selectByTenantVipTypeId(Integer tenantVipTypeId);
+
 }

+ 10 - 1
PCS/src/main/java/cn/cslg/permission/mapper/TenantVipTypeMapper.java

@@ -1,5 +1,6 @@
 package cn.cslg.permission.mapper;
 
+import cn.cslg.permission.common.model.vo.AssoTenantVipTypeAndFunctionVO;
 import cn.cslg.permission.common.model.vo.TenantVipTypeFunctionVO;
 import cn.cslg.permission.domain.TenantVipType;
 import org.springframework.stereotype.Repository;
@@ -35,7 +36,7 @@ public interface TenantVipTypeMapper {
      *
      * @return 返回查询到的列表
      */
-    List<TenantVipTypeFunctionVO> queryTenantVipType();
+    List<TenantVipTypeFunctionVO> queryTenantVipType(String likeName);
 
     /**
      * 根据id修改数据
@@ -53,4 +54,12 @@ public interface TenantVipTypeMapper {
      */
     int countById(Integer id);
 
+    /**
+     * 根据id删除数据
+     *
+     * @param id 租户会员类型id
+     * @return 返回受影响的行数
+     */
+    int deleteById(Integer id);
+
 }

+ 8 - 0
PCS/src/main/java/cn/cslg/permission/service/ITenantVipTypeService.java

@@ -37,4 +37,12 @@ public interface ITenantVipTypeService {
     @Transactional
     void update(TenantVipTypeFunctionUpdateDTO tenantVipTypeFunctionUpdateDTO);
 
+    /**
+     * 删除租户会员类型
+     *
+     * @param id 租户会员类型id
+     */
+    @Transactional
+    void delete(Integer id);
+
 }

+ 21 - 5
PCS/src/main/java/cn/cslg/permission/service/TenantService.java

@@ -1,9 +1,6 @@
 package cn.cslg.permission.service;
 
-import cn.cslg.permission.common.model.vo.DataVO;
-import cn.cslg.permission.common.model.vo.PersonnelVO;
-import cn.cslg.permission.common.model.vo.RoleVO;
-import cn.cslg.permission.common.model.vo.TenantVO;
+import cn.cslg.permission.common.model.vo.*;
 import cn.cslg.permission.common.utils.CacheUtils;
 import cn.cslg.permission.common.utils.DataUtils;
 import cn.cslg.permission.common.utils.Response;
@@ -12,6 +9,8 @@ import cn.cslg.permission.domain.Department;
 import cn.cslg.permission.domain.Personnel;
 import cn.cslg.permission.domain.Role;
 import cn.cslg.permission.domain.Tenant;
+import cn.cslg.permission.domain.associate.AssoTenantFunction;
+import cn.cslg.permission.mapper.AssoTenantVipTypeFunctionMapper;
 import cn.cslg.permission.mapper.TenantEntityMapper;
 import cn.cslg.permission.service.associate.PersonRoleService;
 import cn.cslg.permission.service.associate.RoleFunctionDataService;
@@ -28,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author 沈永艺
@@ -45,6 +45,7 @@ public class TenantService extends ServiceImpl<TenantEntityMapper, Tenant> {
     private final PersonRoleService personRoleService;
     private final DeleteService deleteService;
     private final CacheUtils cacheUtils;
+    private final AssoTenantVipTypeFunctionMapper assoTenantVipTypeFunctionMapper;  //租户会员类型id和功能的关联表的Mapper层装配
 
     @Transactional(rollbackFor = Exception.class)
     public String addTenant(TenantVO tenantVO) {
@@ -67,6 +68,7 @@ public class TenantService extends ServiceImpl<TenantEntityMapper, Tenant> {
                     .setTenantQuota((tenantVO.getNumber()))
                     .setTenantStatus(tenantVO.getState())
                     .setTenantType(tenantVO.getType())
+                    .setTenantVipType(tenantVO.getTenantVipType())
                     .setCreateUser(StpUtil.getLoginIdAsInt());
             boolean suc = this.save(tenant);
             if (suc) {
@@ -85,8 +87,22 @@ public class TenantService extends ServiceImpl<TenantEntityMapper, Tenant> {
                 tenant.setPersonnelId(personnel.getId());
                 tenant.updateById();
             }
+
             //租户功能关联表保存信息
+            Integer tenantVipTypeId = tenant.getTenantVipType();
+            List<AssoTenantVipTypeAndFunctionVO> assoTenantVipTypeAndFunctionVOS = assoTenantVipTypeFunctionMapper.selectByTenantVipTypeId(tenant.getTenantVipType());
+            List<String> functions = tenantVO.getFunctions();
+            List<List<Integer>> functionIds = new ArrayList<>();
+            for (AssoTenantVipTypeAndFunctionVO assoTenantVipTypeAndFunctionVO : assoTenantVipTypeAndFunctionVOS) {
+                String functionModifyPath = assoTenantVipTypeAndFunctionVO.getFunctionModifyPath();
+                functions.add(functionModifyPath);
+                //将以逗号分隔的功能组件树字符串路径转换为Integer集合
+                List<Integer> functionId = Arrays.stream(functionModifyPath.split(",")).map(Integer::parseInt).collect(Collectors.toList());
+                functionIds.add(functionId);
+            }
+            tenantVO.setFunction(functionIds);
             tenantFunctionService.add(tenantVO, tenant);
+
             //角色功能权限关联表,角色表保存信息
             List<RoleVO.Permission> permissions = new ArrayList<>();
             if (tenantVO.getFunction() != null) {
@@ -219,7 +235,7 @@ public class TenantService extends ServiceImpl<TenantEntityMapper, Tenant> {
     public IPage<Tenant> getTenants(Integer tenantId, String tenantName, List<String> names, Integer current, Integer size) {
         IPage<Tenant> tenants;
         LambdaQueryWrapper<Tenant> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        if (names != null&& names.size()!=0) {
+        if (names != null && names.size() != 0) {
             lambdaQueryWrapper.like(Tenant::getTenantName, tenantName).eq(Tenant::getTenantStatus, 1);
             lambdaQueryWrapper.and(wrapper -> wrapper.in(Tenant::getTenantName, names).or().eq(Tenant::getId, tenantId));
         } else {

+ 13 - 12
PCS/src/main/java/cn/cslg/permission/service/associate/TenantFunctionService.java

@@ -60,6 +60,7 @@ public class TenantFunctionService extends ServiceImpl<AssoTenantFunctionMapper,
             e.printStackTrace();
         }
     }
+
     @Transactional(rollbackFor = Exception.class)
     public void delete(Integer tenantId, Integer functionId, List<Integer> functionIds) {
         try {
@@ -81,6 +82,7 @@ public class TenantFunctionService extends ServiceImpl<AssoTenantFunctionMapper,
             e.printStackTrace();
         }
     }
+
     @Transactional(rollbackFor = Exception.class)
     public void updateRoleFunctionData(TenantVO tenantVO, Tenant tenant) {
         try {
@@ -109,7 +111,6 @@ public class TenantFunctionService extends ServiceImpl<AssoTenantFunctionMapper,
     }
 
 
-
     private void processDataByDiff(TenantVO tenantVO, Tenant tenant, List<Integer> assoList, List<Integer> paramList, List<Map<String, Object>> mapList) {
         Map<String, List<Integer>> compare = DataUtils.compareTwoList(assoList, paramList);
         List<Integer> reduce = compare.get("reduce");
@@ -128,15 +129,15 @@ public class TenantFunctionService extends ServiceImpl<AssoTenantFunctionMapper,
 
 
             //移除该租户下角色的 租户已经没有的功能
-            LambdaQueryWrapper<Role> queryWrapperRole =new LambdaQueryWrapper<>();
-            queryWrapperRole.eq(Role::getTenantId,tenant.getId());
-            List<Role>  roles= roleService.list(queryWrapperRole);
-            List<Integer> Ids =new ArrayList<>();
-            roles.forEach((item->{
+            LambdaQueryWrapper<Role> queryWrapperRole = new LambdaQueryWrapper<>();
+            queryWrapperRole.eq(Role::getTenantId, tenant.getId());
+            List<Role> roles = roleService.list(queryWrapperRole);
+            List<Integer> Ids = new ArrayList<>();
+            roles.forEach((item -> {
                 Ids.add(item.getId());
             }));
             LambdaQueryWrapper<AssoRoleFunctionData> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.in(AssoRoleFunctionData::getFunctionId,reduce).in(AssoRoleFunctionData::getRoleId,Ids);
+            queryWrapper.in(AssoRoleFunctionData::getFunctionId, reduce).in(AssoRoleFunctionData::getRoleId, Ids);
             roleFunctionDataService.remove(queryWrapper);
         }
         if (change.size() > 0) {
@@ -164,13 +165,13 @@ public class TenantFunctionService extends ServiceImpl<AssoTenantFunctionMapper,
             List<Role> roleList = roleService.list(queryWrapperMaster);
             if (roleList != null && roleList.size() != 0) {
                 Integer roleId = roleList.get(0).getId();
-                RoleVO roleVO =new RoleVO();
-                roleVO.setId( roleId);
+                RoleVO roleVO = new RoleVO();
+                roleVO.setId(roleId);
                 List<RoleVO.Permission> permissions = new ArrayList<>();
-                change.forEach(item->{
-                    RoleVO.Permission permission =new RoleVO.Permission();
+                change.forEach(item -> {
+                    RoleVO.Permission permission = new RoleVO.Permission();
                     permission.setFunctionId(item);
-                    DataVO dataVO =new DataVO();
+                    DataVO dataVO = new DataVO();
                     dataVO.setId(0);
                     permission.setData(dataVO);
                     permissions.add(permission);

+ 42 - 3
PCS/src/main/java/cn/cslg/permission/service/impl/TenantVipTypeService.java

@@ -108,9 +108,15 @@ public class TenantVipTypeService implements ITenantVipTypeService {
         log.info("开始处理【查询租户会员类型列表】的业务,参数为:{}", pageDTO2);
         Integer page = pageDTO2.getPage();
         Integer pageSize = pageDTO2.getPageSize();
-        //分页查询
-        PageHelper.startPage(page, pageSize);
-        List<TenantVipTypeFunctionVO> queryResults = tenantVipTypeMapper.queryTenantVipType();
+        String likeName = pageDTO2.getLikeName();
+        if (likeName != null) {
+            likeName = "%" + likeName + "%";
+        }
+        //分页查询(若前端有传当前页和每页条数)
+        if (page != null && pageSize != null) {
+            PageHelper.startPage(page, pageSize);
+        }
+        List<TenantVipTypeFunctionVO> queryResults = tenantVipTypeMapper.queryTenantVipType(likeName);
 
         //遍历租户会员类型,取出每个会员类型中的功能ID、功能组件树路径、功能名称、功能描述集合
         for (TenantVipTypeFunctionVO tenantVipTypeFunctionVO : queryResults) {
@@ -192,4 +198,37 @@ public class TenantVipTypeService implements ITenantVipTypeService {
 
     }
 
+    /**
+     * 删除租户会员类型
+     *
+     * @param id 租户会员类型id
+     */
+    @Override
+    public void delete(Integer id) {
+        log.info("开始处理怕【删除租户会员类型】的业务,参数为:{}", id);
+
+        //检查要删除的数据是否存在
+        log.info("检查要删除的数据是否存在");
+        int count = tenantVipTypeMapper.countById(id);
+        if (count == 0) {
+            String message = "删除租户会员类型失败,尝试访问的数据已不存在";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        //删除租户会员类型表数据
+        log.info("删除租户会员类型表数据");
+        int rows = tenantVipTypeMapper.deleteById(id);
+        if (rows != 1) {
+            String message = "删除租户会员类型失败,服务器忙请稍后再试";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        //删除租户会员类型和功能关联表数据
+        log.info("删除租户会员类型和功能关联表数据");
+        assoTenantVipTypeFunctionMapper.deleteByTenantVipTypeId(id);
+
+    }
+
 }

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

@@ -22,5 +22,17 @@
         where TENANT_VIP_TYPE_ID = #{tenantVipTypeId}
     </delete>
 
+    <!--根据租户会员类型id查询数据-->
+    <!--List<AssoTenantVipTypeAndFunctionVO> selectByTenantVipTypeId(Integer tenantVipTypeId);-->
+    <select id="selectByTenantVipTypeId" resultMap="selectByTenantVipTypeIdMap">
+        select FUNCTION_MODIFY_PATH
+        from ASSO_TENANTVIPTYPE_FUNCTION
+        where TENANT_VIP_TYPE_ID = #{tenantVipTypeId}
+    </select>
+
+    <resultMap id="selectByTenantVipTypeIdMap" type="cn.cslg.permission.common.model.vo.AssoTenantVipTypeAndFunctionVO">
+        <result column="FUNCTION_MODIFY_PATH" property="functionModifyPath"/>
+    </resultMap>
+
 
 </mapper>

+ 16 - 2
PCS/src/main/resources/mapper/TenantVipTypeMapper.xml

@@ -20,14 +20,20 @@
     </select>
 
     <!--分页查询租户会员类型和功能(一对多关联查询 -> mybatis父子查询)-->
-    <!--List<TenantVipTypeFunctionVO> queryTenantVipType();-->
+    <!--List<TenantVipTypeFunctionVO> queryTenantVipType(String likeName);-->
     <select id="queryTenantVipType" resultMap="queryTenantVipTypeMap">
         select ID VIP_ID,
                TENANT_VIP_NAME,
                REMARK,
                CREATE_PERSON_ID,
-               CREATE_PERSON_NAME
+               CREATE_PERSON_NAME,
+               CREATE_TIME
         from TENANT_VIP_TYPE
+        <where>
+            <if test="likeName != null">
+                TENANT_VIP_NAME like #{likeName} or CREATE_PERSON_NAME like #{likeName}
+            </if>
+        </where>
         order by ID
     </select>
 
@@ -92,4 +98,12 @@
         where ID = #{id}
     </select>
 
+    <!--根据id删除数据-->
+    <!--int deleteById(Integer id);-->
+    <delete id="deleteById">
+        delete
+        from TENANT_VIP_TYPE
+        where ID = #{id}
+    </delete>
+
 </mapper>

二進制
PCS/target/classes/cn/cslg/permission/common/model/vo/TenantVO.class


二進制
PCS/target/classes/cn/cslg/permission/domain/Tenant.class


二進制
PCS/target/classes/cn/cslg/permission/service/TenantService.class


二進制
PCS/target/classes/cn/cslg/permission/service/associate/TenantFunctionService.class