2021与蓝度共同重构项目,服务端
zhanzhiqin
2022-07-27 6d156569c85713ebf70e70a32ce2a7e9b4221536
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())) {
            //参数为null时,获取所有的菜单权限
            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;
    }
}