From 3075910e10bb60fa2775afb4dbad8d5dba488abb Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期五, 22 七月 2022 09:56:36 +0800
Subject: [PATCH] fix

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/AdminService.java |   94 ++++++++++++++++++++++++++++------------------
 1 files changed, 57 insertions(+), 37 deletions(-)

diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AdminService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AdminService.java
index 11d7e6e..7213ec2 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AdminService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AdminService.java
@@ -166,23 +166,50 @@
         return updateById(admin);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     public boolean deleteAdmin(Long adminId) {
+        boolean flag = false;
         Admin admin = getById(adminId);
         if (admin == null) {
             throw new BusinessException("鎵句笉鍒扮鐞嗗憳");
         }
-        List<Role> roles = roleService.listByAdminId(admin.getId());
-        if (CollectionUtil.isEmpty(roles)) {
-            throw new BusinessException("褰撳墠鐢ㄦ埛娌℃湁瑙掕壊");
-        }
-        List<Integer> levels = roles.stream().map(Role::getLevel).collect(Collectors.toList());
-        int min = Collections.min(levels);
-        int maxLevel = roleService.assertLevels(min);
-        if (!RoleLevelStatus.SUPER.getCode().equals(maxLevel)) {
+        if (!AdministratorEnums.ADMIN.getCode().equals(SecurityUtils.getUserDetails().getAdministratorType())) {
             throw new BusinessException("鍙湁瓒呯骇绠$悊鍛樻墠鑳藉垹闄ょ敤鎴�");
         }
 
-        return removeById(adminId);
+        //绠$悊鍛樿鑹插叧绯昏〃
+        AdminRoleRelationService adminRoleRelationService = SpringContextHolder.getBean(AdminRoleRelationService.class);
+        //鏈夌敤鎴峰繀瀹氭湁鐢ㄦ埛涓庤鑹茬殑鍏崇郴鏁版嵁
+        AdminRoleRelation one = adminRoleRelationService.getOne(Wrappers.lambdaQuery(AdminRoleRelation.class).eq(AdminRoleRelation::getAdminId, admin.getId()));
+        Role role = SpringContextHolder.getBean(RoleService.class).getOne(Wrappers.lambdaQuery(Role.class).eq(Role::getId, one.getRoleId()));
+        if (role == null) {
+            throw new BusinessException("鏁版嵁寮傚父锛�");
+        }
+
+        if (role.getLevel().equals(RoleLevelStatus.SUPER.getCode())) {
+            throw new BusinessException("瓒呯骇绠$悊鍛樻棤娉曞垹闄�");
+        } else {
+            //鍒犵敤鎴�
+            if (removeById(adminId)) {
+                //鍒犺鑹插叧绯昏〃淇℃伅
+                flag = adminRoleRelationService.removeById(one);
+                //鍒犻櫎澶辫触鍥炴粴鏁版嵁
+                if (!flag) {
+                    throw new BusinessException("鍒犻櫎绠$悊鍛樼敤鎴峰け璐ワ紒");
+                }
+            }
+        }
+
+        /**
+         * 鍒犻櫎绠$悊鍛� 鏃ュ織璁板綍寮�濮�
+         */
+        String content = "鍒犻櫎绠$悊鍛橈細" + admin.getUsername() + "鐢ㄦ埛id锛�" + admin;
+        StoreOperationRecordsUtils.storeOperationData(null, null, "鍒犻櫎绠$悊鍛�", content);
+        /**
+         * 鍒犻櫎绠$悊鍛� 鏃ュ織璁板綍缁撴潫
+         */
+
+        return flag;
     }
 
     /**
@@ -247,36 +274,29 @@
      */
     public List<MenuNode> getUserPermissionList() {
         List<MenuNode> resultList;
-        //鍒ゆ柇瓒呯涓庢櫘閫氱鐞嗗憳
-        if (SecurityUtils.getAdministratorIdentity().equals(AdministratorEnums.ADMIN.getCode())) {
-            //鍙傛暟涓簄ull鏃讹紝鑾峰彇鎵�鏈夌殑鑿滃崟鏉冮檺
-            resultList = SpringContextHolder.getBean(MenuService.class).getUserPermissionListById(null);
-        } else {
-            //閫氳繃鐢ㄦ埛UserID鑾峰彇鐢ㄦ埛瑙掕壊
-            AdminRoleRelation one = SpringContextHolder.getBean(AdminRoleRelationService.class).
-                    getOne(Wrappers.lambdaQuery(AdminRoleRelation.class).eq(AdminRoleRelation::getAdminId, SecurityUtils.getUserId()));
-            //鍒ょ┖
-            if (one == null) {
-                throw new BusinessException("璇ョ敤鎴锋湭缁戝畾瑙掕壊");
-            }
-
-            //閫氳繃RoleID鑾峰彇MeunId鍒楄〃
-            List<RoleMenuRelation> menuIdList = SpringContextHolder.getBean(RoleMenuRelationService.class)
-                    .list(Wrappers.lambdaQuery(RoleMenuRelation.class).eq(RoleMenuRelation::getRoleId, one.getRoleId()));
-
-            //鍒ょ┖
-            if (menuIdList.isEmpty()) {
-                return new ArrayList<>();
-            }
-            List<Long> menuIds = new ArrayList<>(menuIdList.size());
-            for (RoleMenuRelation bean : menuIdList) {
-                menuIds.add(bean.getMenuId());
-            }
-
-            resultList = SpringContextHolder.getBean(MenuService.class).getUserPermissionListById(menuIds);
-
+        //閫氳繃鐢ㄦ埛UserID鑾峰彇鐢ㄦ埛瑙掕壊
+        AdminRoleRelation one = SpringContextHolder.getBean(AdminRoleRelationService.class).
+                getOne(Wrappers.lambdaQuery(AdminRoleRelation.class).eq(AdminRoleRelation::getAdminId, SecurityUtils.getUserId()));
+        //鍒ょ┖
+        if (one == null) {
+            throw new BusinessException("璇ョ敤鎴锋湭缁戝畾瑙掕壊");
         }
 
+        //閫氳繃RoleID鑾峰彇MeunId鍒楄〃
+        List<RoleMenuRelation> menuIdList = SpringContextHolder.getBean(RoleMenuRelationService.class)
+                .list(Wrappers.lambdaQuery(RoleMenuRelation.class).eq(RoleMenuRelation::getRoleId, one.getRoleId()));
+
+        //鍒ょ┖
+        if (menuIdList.isEmpty()) {
+            return new ArrayList<>();
+        }
+        List<Long> menuIds = new ArrayList<>(menuIdList.size());
+        for (RoleMenuRelation bean : menuIdList) {
+            menuIds.add(bean.getMenuId());
+        }
+
+        resultList = SpringContextHolder.getBean(MenuService.class).getUserPermissionListById(menuIds);
+
         return resultList;
     }
 }

--
Gitblit v1.9.3