Browse Source

增加角色删除限制

chenw 7 years ago
parent
commit
b0259bef10

+ 14 - 3
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/RoleController.java

@@ -5,6 +5,7 @@ import com.usoftchina.saas.account.dto.PowerSetListDTO;
 import com.usoftchina.saas.account.dto.RoleDTO;
 import com.usoftchina.saas.account.dto.RoleSaveDTO;
 import com.usoftchina.saas.account.dto.RoleUpdateDTO;
+import com.usoftchina.saas.account.mapper.RoleResourceMapper;
 import com.usoftchina.saas.account.po.Account;
 import com.usoftchina.saas.account.po.Role;
 import com.usoftchina.saas.account.service.AccountService;
@@ -34,6 +35,9 @@ public class RoleController {
     @Autowired
     private AccountService accountService;
 
+    @Autowired
+    private RoleResourceMapper roleResourceMapper;
+
     /**
      * 保存
      *
@@ -69,9 +73,16 @@ public class RoleController {
      */
     @PostMapping("/delete/{id}")
     public Result delete(@PathVariable Long id) {
-        clearAccountCacheByRoleId(id);
-        roleService.removeByPrimaryKey(id);
-        return Result.success();
+        boolean valid = roleService.valid(id);
+        if (valid) {
+            clearAccountCacheByRoleId(id);
+            //解除 角色-资源 绑定关系
+            roleResourceMapper.deleteByRoleId(id);
+            //删除 角色
+            roleService.removeByPrimaryKey(id);
+            return Result.success();
+        }
+        return Result.error(ExceptionCode.ROLE_HAS_USE);
     }
 
     /**

+ 7 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/RoleMapper.java

@@ -26,4 +26,11 @@ public interface RoleMapper extends CommonBaseMapper<Role> {
      * @return
      */
     Role findManagerByCompanyId(@Param("companyId") Long companyId);
+
+    /**
+     * 查询角色绑定的用户数量
+     * @param id
+     * @return
+     */
+    int selectAccountCountById(Long id);
 }

+ 7 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/RoleService.java

@@ -59,4 +59,11 @@ public interface RoleService extends CommonBaseService<RoleMapper, Role> {
      * @return
      */
     Role findManagerByCompanyId(Long companyId);
+
+    /**
+     * 删除前校验
+     * @param id
+     * @return
+     */
+    boolean valid(Long id);
 }

+ 10 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/RoleServiceImpl.java

@@ -171,6 +171,16 @@ public class RoleServiceImpl extends CommonBaseServiceImpl<RoleMapper, Role> imp
         return getMapper().findManagerByCompanyId(companyId);
     }
 
+    @Override
+    public boolean valid(Long id) {
+        int count = getMapper().selectAccountCountById(id);
+        if (count > 0) {
+            return false;
+        }else {
+            return true;
+        }
+    }
+
     /**
      * 设置其他默认权限,用于生成设置按钮
      * @param powerDTO

+ 3 - 0
base-servers/account/account-server/src/main/resources/mapper/RoleMapper.xml

@@ -107,4 +107,7 @@
     <select id="findManagerByCompanyId" resultType="com.usoftchina.saas.account.po.Role">
         SELECT * FROM AC_ROLE WHERE COMPANY_ID = #{companyId} AND TYPE = 0 limit 1
     </select>
+    <select id="selectAccountCountById" parameterType="java.lang.Long" resultType="java.lang.Integer">
+        SELECT COUNT(*) FROM AC_ACCOUNT_ROLE WHERE ROLE_ID = #{id}
+    </select>
 </mapper>

+ 1 - 0
framework/core/src/main/java/com/usoftchina/saas/exception/ExceptionCode.java

@@ -46,6 +46,7 @@ public enum ExceptionCode implements BaseExceptionCode {
     ROLE_NOT_EXIST(53020, "角色不存在"),
     MISSING_PERMISSIONS(53030, "权限缺失"),
     USER_COMPANY_EXIST(53007, "企业已存在账户"),
+    ROLE_HAS_USE(54030, "存在已使用该角色的账户,不允许删除"),
 
     // 文件相关
     FOLDER_NOT_EXISTS(55000, "文件夹不存在"),