|
@@ -0,0 +1,91 @@
|
|
|
+package cn.cslg.permission.service.impl;
|
|
|
+
|
|
|
+import cn.cslg.permission.common.model.dto.TenantVipTypeFunctionDTO;
|
|
|
+import cn.cslg.permission.domain.AssoTenantVipTypeAndFunction;
|
|
|
+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 lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 租户会员类型管理的Service层接口实现类
|
|
|
+ *
|
|
|
+ * @Author chenyu
|
|
|
+ * @Data 2023/2/15
|
|
|
+ */
|
|
|
+@RequiredArgsConstructor
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class TenantVipTypeService implements ITenantVipTypeService {
|
|
|
+ private final TenantVipTypeMapper tenantVipTypeMapper;
|
|
|
+ private final AssoTenantVipTypeFunctionMapper assoTenantVipTypeFunctionMapper;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增租户会员类型(绑定对应的功能权限)
|
|
|
+ *
|
|
|
+ * @param tenantVipTypeFunctionDTO 租户会员类型和功能数据对象
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void addNew(TenantVipTypeFunctionDTO tenantVipTypeFunctionDTO) {
|
|
|
+ log.info("开始处理【新增租户会员类型】的业务,参数为:{}", tenantVipTypeFunctionDTO);
|
|
|
+
|
|
|
+ //检查租户会员类型名称是否已存在
|
|
|
+ String tenantVipName = tenantVipTypeFunctionDTO.getTenantVipName();
|
|
|
+ log.info("检查租户会员类型名称是否已存在");
|
|
|
+ int count = tenantVipTypeMapper.countByTenantVipName(tenantVipName);
|
|
|
+ if (count > 0) {
|
|
|
+ String message = "新增租户会员类型失败,【" + tenantVipName + "】已存在,请尝试更换名称";
|
|
|
+ log.info("{}", message);
|
|
|
+ throw new XiaoShiException(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ //将DTO数据对象复制给实体类
|
|
|
+ TenantVipType tenantVipType = new TenantVipType();
|
|
|
+ BeanUtils.copyProperties(tenantVipTypeFunctionDTO, tenantVipType);
|
|
|
+ //是否启用属性暂时默认都设置为启用(禁用0 启用1),若以后前端有需求再调整
|
|
|
+ tenantVipType.setCreateTime(new Date()).setEnable(1);
|
|
|
+
|
|
|
+ //数据插入租户会员类型表
|
|
|
+ log.info("数据插入租户会员类型表");
|
|
|
+ int rows = tenantVipTypeMapper.insert(tenantVipType);
|
|
|
+ if (rows != 1) {
|
|
|
+ String message = "新增租户会员类型失败,服务器忙请稍后再试";
|
|
|
+ log.info("{}", message);
|
|
|
+ throw new XiaoShiException(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ //创建租户会员类型和功能关联表实体类集合,准备将集合进行批量插入租户会员类型和功能关联表
|
|
|
+ ArrayList<AssoTenantVipTypeAndFunction> assoTenantVipTypeAndFunctions = new ArrayList<>();
|
|
|
+ //从DTO对象中取出功能组件权限路径集合,遍历集合进行操作依次给租户会员类型和功能关联表实体类赋值
|
|
|
+ List<String> functionModifyPaths = tenantVipTypeFunctionDTO.getFunctionModifyPaths();
|
|
|
+ for (String functionModifyPath : functionModifyPaths) {
|
|
|
+ AssoTenantVipTypeAndFunction assoTenantVipTypeAndFunction = new AssoTenantVipTypeAndFunction()
|
|
|
+ .setTenantVipTypeId(tenantVipType.getId())
|
|
|
+ //仁杰的方法:.setFunctionId(Integer.parseInt(functionModifyPath.split(",")[functionModifyPath.split(",").length - 1]))
|
|
|
+ .setFunctionId(Integer.parseInt(functionModifyPath.substring(functionModifyPath.lastIndexOf(",") + 1)))
|
|
|
+ .setFunctionModifyPath(functionModifyPath);
|
|
|
+ assoTenantVipTypeAndFunctions.add(assoTenantVipTypeAndFunction);
|
|
|
+ }
|
|
|
+ //数据插入租户会员类型和功能关联表
|
|
|
+ log.info("数据插入租户会员类型和功能关联表");
|
|
|
+ rows = assoTenantVipTypeFunctionMapper.insertBatch(assoTenantVipTypeAndFunctions);
|
|
|
+ if (rows != assoTenantVipTypeAndFunctions.size()) {
|
|
|
+ String message = "新增租户会员类型失败,服务器忙请稍后再试";
|
|
|
+ log.info("{}", message);
|
|
|
+ throw new XiaoShiException(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("新增租户会员类型完成");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|