chendayu 2 rokov pred
rodič
commit
cd5b7fab59

+ 1 - 1
PCS/src/main/java/cn/cslg/permission/controller/TenantController.java

@@ -38,7 +38,7 @@ public class TenantController {
     @Operation(summary = "根据邀请码添加租户")
     public String addByInvitation(@RequestBody TenantVO tenantVo) {
         try {
-            tenantService.addByInvitation(tenantVo);
+            tenantService.addByInvitation2(tenantVo);
         } catch (XiaoShiException e) {
             return Response.error(e.getMessage());
         }

+ 106 - 4
PCS/src/main/java/cn/cslg/permission/service/TenantService.java

@@ -336,12 +336,13 @@ public class TenantService extends ServiceImpl<TenantEntityMapper, Tenant> {
                     .setTenant(tenantId)
                     .setAddType(1);
             Personnel personnel = personnelService.addPersonnel(personnelVO1);
+            invitation.setPersonnelId(personnel.getId());
             Role role = roles.get(0);
             List<Integer> temrole = new ArrayList<>();
             temrole.add(role.getId());
             personRoleService.addAssociatePerRole(temrole, personnel.getId());
         } else {
-            tenantId = this.addTenant(tenantVo);
+            tenantId = this.addTenant2(tenantVo, invitation);
             if (tenantId < 0) {
                 ThrowException.throwXiaoShiException("人员的账号已存在");
             }
@@ -374,13 +375,13 @@ public class TenantService extends ServiceImpl<TenantEntityMapper, Tenant> {
         if (invitation.getIsInvalid().equals(1)) {
             ThrowException.throwXiaoShiException("邀请码已被使用");
         }
-            //保存管理员用户
+        //保存管理员用户
         Integer personId = invitation.getPersonnelId();
-        if(personId==null){
+        if (personId == null) {
             ThrowException.throwXiaoShiException("此邀请码初始数据有误,请联系管理员");
         }
         //根据人员id获得人员信息
-        Personnel personnel =personnelService.getById(personId);
+        Personnel personnel = personnelService.getById(personId);
         personnel.setPersonnelPassword(SecureUtil.md5(tenantVo.getPassword()));
         personnel.setPersonnelStatus(1);
         personnel.updateById();
@@ -403,4 +404,105 @@ public class TenantService extends ServiceImpl<TenantEntityMapper, Tenant> {
 
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    public Integer addTenant2(TenantVO tenantVO, Invitation invitation) {
+        Personnel personnel = new Personnel();
+
+        LambdaQueryWrapper<Personnel> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Personnel::getPersonnelUserName, tenantVO.getUsername());
+        List<Personnel> personnelList = personnelService.list(queryWrapper);
+        if (personnelList.size() != 0) {
+            return -1;
+        }
+        //租户表保存租户信息
+        Tenant tenant = new Tenant();
+        tenant
+                .setTenantName(tenantVO.getName())
+                .setTenantAddress(tenantVO.getAddress())
+                .setTenantContacts(tenantVO.getContacts())
+                .setTenantEmail(tenantVO.getEmail())
+                .setTenantDescription((tenantVO.getDescribe()))
+                .setTenantQuota((tenantVO.getNumber()))
+                .setTenantStatus(tenantVO.getState())
+                .setTenantType(tenantVO.getType())
+                .setTenantVipType(tenantVO.getTenantVipType());
+        if (tenantVO.getAddType() == null) {
+            tenant.setCreateUser(StpUtil.getLoginIdAsInt());
+        }
+        boolean suc = tenant.insert();
+        if (suc) {
+            //更新客户
+            if (tenantVO.getClientId() != null && tenantVO.getClientId() > 0) {
+                Client client = clientService.getById(tenantVO.getClientId());
+                client.setTenantId(tenant.getId());
+                client.updateById();
+            }
+            //保存管理员用户
+            PersonnelVO personnelVO1 = new PersonnelVO();
+            personnelVO1
+                    .setUsername(tenantVO.getUsername())
+                    .setName(tenantVO.getContacts())
+                    .setEmail(tenantVO.getEmail())
+                    .setState(tenantVO.getState())
+                    .setPassword(tenantVO.getPassword())
+                    .setTenant(tenant.getId())
+                    .setAddType(1);
+            personnel = personnelService.addPersonnel(personnelVO1);
+            invitation.setPersonnelId(personnel.getId());
+            tenant.setPersonnelId(personnel.getId());
+            tenant.updateById();
+        }
+
+        //角色功能权限关联表,角色表保存信息
+        //根据租户会员类型查询功能权限
+        Integer tenantVipType = tenantVO.getTenantVipType();
+        List<AssoTenantVipTypeAndFunctionVO> assoTenantVipTypeAndFunctionVOS = assoTenantVipTypeFunctionMapper.selectByTenantVipTypeId(tenantVipType);
+        List<List<Integer>> functions = new ArrayList<>();
+        for (AssoTenantVipTypeAndFunctionVO assoTenantVipTypeAndFunctionVO : assoTenantVipTypeAndFunctionVOS) {
+            String functionModifyPath = assoTenantVipTypeAndFunctionVO.getFunctionModifyPath();
+            //将以逗号分隔的功能组件树字符串路径转换为Integer集合
+            List<Integer> function = Arrays.stream(functionModifyPath.split(",")).map(Integer::parseInt).collect(Collectors.toList());
+            functions.add(function);
+        }
+
+        List<RoleVO.Permission> permissions = new ArrayList<>();
+        List<Integer> ids = new ArrayList<>(); //作为判断是否有重复functionId的标识
+        functions.forEach(item -> {
+                    if (item.size() > 1) {
+                        //从第二个开始遍历
+                        for (int i = 1; i < item.size(); i++) {
+                            if (!ids.contains(item.get(i))) {
+                                ids.add(item.get(i));
+                                RoleVO.Permission permission = new RoleVO.Permission();
+                                DataVO dataVO = new DataVO();
+                                dataVO.setId(0);
+                                permission.setData(dataVO);
+                                permission.setFunctionId(item.get(i));
+                                permissions.add(permission);
+                            }
+                        }
+                    }
+                }
+        );
+
+        RoleVO roleVO = new RoleVO();
+        roleVO.setTenant(tenant.getId());
+        roleVO.setName(tenantVO.getName() + "管理员");
+        roleVO.setRemark("管理租户下所拥有的功能");
+        roleVO.setPermissionData(permissions);
+        Role role = new Role();
+        role
+                .setRoleName(roleVO.getName())
+                .setRoleDescription(roleVO.getRemark())
+                .setTenantId(roleVO.getTenant())
+                .setRoleType(2);
+        role.insert();
+        roleVO.setId(role.getId());
+        roleFunctionDataService.add(roleVO);
+        List<Integer> roles = new ArrayList<>();
+        roles.add(role.getId());
+        personRoleService.addAssociatePerRole(roles, personnel.getId());
+        return tenant.getId();
+    }
+
 }