Преглед изворни кода

1、优化租户管理-租户单位配置-克隆接口,增加循环处理多个用户角色和租户用户角色的逻辑;
2、优化租户管理-租户单位配置-删除接口,增加判空条件解决空指针报错的问题;

james пре 5 дана
родитељ
комит
1166b34f0f

+ 31 - 22
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysTenantServiceImpl.java

@@ -2,6 +2,7 @@ package com.usky.system.service.impl;
 
 import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
 import com.usky.common.mybatis.core.AbstractCrudService;
@@ -175,25 +176,29 @@ public class SysTenantServiceImpl extends AbstractCrudService<SysTenantMapper, S
         sysTenantMapper.cloneSysMobileTenantMenu(originalTenantId,tenantId);
         //克隆用户角色和租户用户角色
         //sys_role
-        SysRole role = new SysRole();
-        long originalRoleId = SecurityUtils.getLoginUser().getSysUser().getRoles().get(0).getRoleId();
-        LambdaQueryWrapper<SysRole> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.select(SysRole::getRoleName,SysRole::getRoleKey,SysRole::getRoleSort,SysRole::getDataScope,SysRole::getStatus).eq(SysRole::getRoleId, originalRoleId);
-        SysRole one = roleService.getOne(queryWrapper);
-        role.setRoleName(one.getRoleName());
-        role.setRoleKey(one.getRoleKey());
-        role.setRoleSort(one.getRoleSort());
-        role.setDataScope(one.getDataScope());
-        role.setStatus(one.getStatus());
-        role.setCreateBy(SecurityUtils.getUsername());
-        role.setCreateTime(DateTime.now());
-        role.setTenantId(tenantId);
-        roleService.insertRole(role);
-        long roleId = role.getRoleId();
-        //sys_role_menu
-        sysTenantMapper.cloneSysRoleMenu(originalRoleId,roleId);
-        //sys_user_role
-        sysTenantMapper.insertSysUserRole(SecurityUtils.getUserId(),roleId,tenantId);
+        if(SecurityUtils.getLoginUser().getSysUser().getRoles().size()>0){
+            for (int i = 0; i < SecurityUtils.getLoginUser().getSysUser().getRoles().size(); i++) {
+                SysRole role = new SysRole();
+                long originalRoleId = SecurityUtils.getLoginUser().getSysUser().getRoles().get(i).getRoleId();
+                LambdaQueryWrapper<SysRole> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.select(SysRole::getRoleName,SysRole::getRoleKey,SysRole::getRoleSort,SysRole::getDataScope,SysRole::getStatus).eq(SysRole::getRoleId, originalRoleId);
+                SysRole one = roleService.getOne(queryWrapper);
+                role.setRoleName(one.getRoleName());
+                role.setRoleKey(one.getRoleKey());
+                role.setRoleSort(one.getRoleSort());
+                role.setDataScope(one.getDataScope());
+                role.setStatus(one.getStatus());
+                role.setCreateBy(SecurityUtils.getUsername());
+                role.setCreateTime(DateTime.now());
+                role.setTenantId(tenantId);
+                roleService.insertRole(role);
+                long roleId = role.getRoleId();
+                //sys_role_menu
+                sysTenantMapper.cloneSysRoleMenu(originalRoleId,roleId);
+                //sys_user_role
+                sysTenantMapper.insertSysUserRole(SecurityUtils.getUserId(),roleId,tenantId);
+            }
+        }
 
         //更新默认应用
         TenantPlatformVo tenantPlatformVo = new TenantPlatformVo();
@@ -218,9 +223,13 @@ public class SysTenantServiceImpl extends AbstractCrudService<SysTenantMapper, S
 
         LambdaQueryWrapper<SysRole> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.select(SysRole::getRoleId).eq(SysRole::getTenantId, tenantId);
-        SysRole one = roleService.getOne(queryWrapper);
-        long roleId = one.getRoleId();
-        sysTenantMapper.delSysRoleMenu(roleId);
+        List<SysRole> list = roleService.list(queryWrapper);
+        if(CollectionUtils.isNotEmpty(list)){
+            for (int i = 0; i < list.size(); i++) {
+                long roleId = list.get(i).getRoleId();
+                sysTenantMapper.delSysRoleMenu(roleId);
+            }
+        }
         sysTenantMapper.delSysRole(tenantId);
         sysTenantMapper.delSysUserRole(tenantId);
     }