Bläddra i källkod

update 优化 部门与角色如果绑定了用户则不允许禁用

疯狂的狮子Li 3 år sedan
förälder
incheckning
68ad388d09

+ 8 - 5
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java

@@ -2,16 +2,16 @@ package org.dromara.system.controller.system;
 
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.convert.Convert;
-import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.constant.UserConstants;
 import org.dromara.common.core.constant.UserConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.web.core.BaseController;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
 import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.web.core.BaseController;
 import org.dromara.system.domain.bo.SysDeptBo;
 import org.dromara.system.domain.bo.SysDeptBo;
 import org.dromara.system.domain.vo.SysDeptVo;
 import org.dromara.system.domain.vo.SysDeptVo;
 import org.dromara.system.service.ISysDeptService;
 import org.dromara.system.service.ISysDeptService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
@@ -92,9 +92,12 @@ public class SysDeptController extends BaseController {
             return R.fail("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
             return R.fail("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
         } else if (dept.getParentId().equals(deptId)) {
         } else if (dept.getParentId().equals(deptId)) {
             return R.fail("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
             return R.fail("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
-        } else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus())
-            && deptService.selectNormalChildrenDeptById(deptId) > 0) {
-            return R.fail("该部门包含未停用的子部门!");
+        } else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus())) {
+            if (deptService.selectNormalChildrenDeptById(deptId) > 0) {
+                return R.fail("该部门包含未停用的子部门!");
+            } else if (deptService.checkDeptExistUser(deptId)) {
+                return R.fail("该部门下存在已分配用户,不能禁用!");
+            }
         }
         }
         return toAjax(deptService.updateDept(dept));
         return toAjax(deptService.updateDept(dept));
     }
     }

+ 15 - 4
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java

@@ -283,6 +283,9 @@ public class SysRoleServiceImpl implements ISysRoleService {
      */
      */
     @Override
     @Override
     public int updateRoleStatus(Long roleId, String status) {
     public int updateRoleStatus(Long roleId, String status) {
+        if (UserConstants.ROLE_DISABLE.equals(status) && this.countUserRoleByRoleId(roleId) > 0) {
+            throw new ServiceException("角色已分配,不能禁用!");
+        }
         return baseMapper.update(null,
         return baseMapper.update(null,
             new LambdaUpdateWrapper<SysRole>()
             new LambdaUpdateWrapper<SysRole>()
                 .set(SysRole::getStatus, status)
                 .set(SysRole::getStatus, status)
@@ -379,7 +382,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
             checkRoleAllowed(BeanUtil.toBean(role, SysRoleBo.class));
             checkRoleAllowed(BeanUtil.toBean(role, SysRoleBo.class));
             checkRoleDataScope(roleId);
             checkRoleDataScope(roleId);
             if (countUserRoleByRoleId(roleId) > 0) {
             if (countUserRoleByRoleId(roleId) > 0) {
-                throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName()));
+                throw new ServiceException(String.format("%1$s已分配,不能删除!", role.getRoleName()));
             }
             }
         }
         }
         List<Long> ids = Arrays.asList(roleIds);
         List<Long> ids = Arrays.asList(roleIds);
@@ -398,9 +401,13 @@ public class SysRoleServiceImpl implements ISysRoleService {
      */
      */
     @Override
     @Override
     public int deleteAuthUser(SysUserRole userRole) {
     public int deleteAuthUser(SysUserRole userRole) {
-        return userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>()
+        int rows = userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>()
             .eq(SysUserRole::getRoleId, userRole.getRoleId())
             .eq(SysUserRole::getRoleId, userRole.getRoleId())
             .eq(SysUserRole::getUserId, userRole.getUserId()));
             .eq(SysUserRole::getUserId, userRole.getUserId()));
+        if (rows > 0) {
+            cleanOnlineUserByRole(userRole.getRoleId());
+        }
+        return rows;
     }
     }
 
 
     /**
     /**
@@ -412,9 +419,13 @@ public class SysRoleServiceImpl implements ISysRoleService {
      */
      */
     @Override
     @Override
     public int deleteAuthUsers(Long roleId, Long[] userIds) {
     public int deleteAuthUsers(Long roleId, Long[] userIds) {
-        return userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>()
+        int rows = userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>()
             .eq(SysUserRole::getRoleId, roleId)
             .eq(SysUserRole::getRoleId, roleId)
             .in(SysUserRole::getUserId, Arrays.asList(userIds)));
             .in(SysUserRole::getUserId, Arrays.asList(userIds)));
+        if (rows > 0) {
+            cleanOnlineUserByRole(roleId);
+        }
+        return rows;
     }
     }
 
 
     /**
     /**
@@ -428,7 +439,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
     public int insertAuthUsers(Long roleId, Long[] userIds) {
     public int insertAuthUsers(Long roleId, Long[] userIds) {
         // 新增用户与角色管理
         // 新增用户与角色管理
         int rows = 1;
         int rows = 1;
-        List<SysUserRole> list = StreamUtils.toList(Arrays.asList(userIds), userId -> {
+        List<SysUserRole> list = StreamUtils.toList(List.of(userIds), userId -> {
             SysUserRole ur = new SysUserRole();
             SysUserRole ur = new SysUserRole();
             ur.setUserId(userId);
             ur.setUserId(userId);
             ur.setRoleId(roleId);
             ur.setRoleId(roleId);