From c3f5966e89e0f4b27442f523585c10c9a547d7ed Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期四, 02 六月 2022 10:57:27 +0800
Subject: [PATCH] fix

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/AdminService.java |   33 ++++++++++++++++++++++++---------
 1 files changed, 24 insertions(+), 9 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..4374972 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,38 @@
         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.getLevel().equals(RoleLevelStatus.SUPER.getCode())) {
+            throw new BusinessException("瓒呯骇绠$悊鍛樻棤娉曞垹闄�");
+        } else {
+            //鍒犵敤鎴�
+            if (removeById(adminId)) {
+                //鍒犺鑹插叧绯昏〃淇℃伅
+                flag = adminRoleRelationService.removeById(one);
+                //鍒犻櫎澶辫触鍥炴粴鏁版嵁
+                if (!flag) {
+                    throw new BusinessException("鍒犻櫎绠$悊鍛樼敤鎴峰け璐ワ紒");
+                }
+            }
+        }
+
+        return flag;
     }
 
     /**

--
Gitblit v1.9.3