|
@@ -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("修改租户会员类型完成");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|