Browse Source

fix[litemall-admin-api, litemall-db]: 如果角色存在管理员,则不能删除

Junling Bu 6 years ago
parent
commit
dead5fb2da

+ 2 - 0
litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/AdminResponseCode.java

@@ -19,4 +19,6 @@ public class AdminResponseCode {
     public static final Integer USER_MOBILE_EXIST = 634;
     public static final Integer USER_MOBILE_EXIST = 634;
     public static final Integer ROLE_NAME_EXIST = 640;
     public static final Integer ROLE_NAME_EXIST = 640;
     public static final Integer ROLE_SUPER_SUPERMISSION = 641;
     public static final Integer ROLE_SUPER_SUPERMISSION = 641;
+    public static final Integer ROLE_USER_EXIST = 642;
+
 }
 }

+ 16 - 0
litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminRoleController.java

@@ -19,6 +19,7 @@ import org.linlinjava.litemall.db.domain.LitemallAdmin;
 import org.linlinjava.litemall.db.domain.LitemallBrand;
 import org.linlinjava.litemall.db.domain.LitemallBrand;
 import org.linlinjava.litemall.db.domain.LitemallPermission;
 import org.linlinjava.litemall.db.domain.LitemallPermission;
 import org.linlinjava.litemall.db.domain.LitemallRole;
 import org.linlinjava.litemall.db.domain.LitemallRole;
+import org.linlinjava.litemall.db.service.LitemallAdminService;
 import org.linlinjava.litemall.db.service.LitemallPermissionService;
 import org.linlinjava.litemall.db.service.LitemallPermissionService;
 import org.linlinjava.litemall.db.service.LitemallRoleService;
 import org.linlinjava.litemall.db.service.LitemallRoleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,6 +32,7 @@ import javax.validation.constraints.NotNull;
 import java.util.*;
 import java.util.*;
 
 
 import static org.linlinjava.litemall.admin.util.AdminResponseCode.ROLE_NAME_EXIST;
 import static org.linlinjava.litemall.admin.util.AdminResponseCode.ROLE_NAME_EXIST;
+import static org.linlinjava.litemall.admin.util.AdminResponseCode.ROLE_USER_EXIST;
 
 
 @RestController
 @RestController
 @RequestMapping("/admin/role")
 @RequestMapping("/admin/role")
@@ -42,6 +44,8 @@ public class AdminRoleController {
     private LitemallRoleService roleService;
     private LitemallRoleService roleService;
     @Autowired
     @Autowired
     private LitemallPermissionService permissionService;
     private LitemallPermissionService permissionService;
+    @Autowired
+    private LitemallAdminService adminService;
 
 
     @RequiresPermissions("admin:role:list")
     @RequiresPermissions("admin:role:list")
     @RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="角色查询")
     @RequiresPermissionsDesc(menu={"系统管理" , "角色管理"}, button="角色查询")
@@ -132,6 +136,18 @@ public class AdminRoleController {
         if (id == null) {
         if (id == null) {
             return ResponseUtil.badArgument();
             return ResponseUtil.badArgument();
         }
         }
+
+        // 如果当前角色所对应管理员仍存在,则拒绝删除角色。
+        List<LitemallAdmin> adminList = adminService.all();
+        for(LitemallAdmin admin : adminList){
+            Integer[] roleIds = admin.getRoleIds();
+            for(Integer roleId : roleIds){
+                if(id.equals(roleId)){
+                    return ResponseUtil.fail(ROLE_USER_EXIST, "当前角色存在管理员,不能删除");
+                }
+            }
+        }
+
         roleService.deleteById(id);
         roleService.deleteById(id);
         return ResponseUtil.ok();
         return ResponseUtil.ok();
     }
     }

+ 6 - 0
litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallAdminService.java

@@ -63,4 +63,10 @@ public class LitemallAdminService {
     public LitemallAdmin findById(Integer id) {
     public LitemallAdmin findById(Integer id) {
         return adminMapper.selectByPrimaryKeySelective(id, result);
         return adminMapper.selectByPrimaryKeySelective(id, result);
     }
     }
+
+    public List<LitemallAdmin> all() {
+        LitemallAdminExample example = new LitemallAdminExample();
+        example.or().andDeletedEqualTo(false);
+        return adminMapper.selectByExample(example);
+    }
 }
 }