From 9b51a62597487073b54aa27cdd059828ebfcb2ac Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 08 Jul 2022 19:19:47 +0800
Subject: [PATCH] 加synchronized

---
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java |   79 +++++++++++++++++++++++++++++----------
 1 files changed, 58 insertions(+), 21 deletions(-)

diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java
index 4078bbd..216f8ad 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java
@@ -9,17 +9,13 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xcong.farmer.cms.common.response.Result;
 import com.xcong.farmer.cms.modules.system.dto.AdminAddRoleDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminDeleteDto;
 import com.xcong.farmer.cms.modules.system.dto.AdminRoleDto;
 import com.xcong.farmer.cms.modules.system.dto.AdminUpdateRoleDto;
-import com.xcong.farmer.cms.modules.system.entity.MenuEntity;
-import com.xcong.farmer.cms.modules.system.entity.RoleEntity;
-import com.xcong.farmer.cms.modules.system.entity.RoleMenuEntity;
-import com.xcong.farmer.cms.modules.system.entity.UserRoleEntity;
-import com.xcong.farmer.cms.modules.system.mapper.MenuMapper;
-import com.xcong.farmer.cms.modules.system.mapper.RoleMapper;
-import com.xcong.farmer.cms.modules.system.mapper.RoleMenuMapper;
-import com.xcong.farmer.cms.modules.system.mapper.UserRoleMapper;
+import com.xcong.farmer.cms.modules.system.entity.*;
+import com.xcong.farmer.cms.modules.system.mapper.*;
 import com.xcong.farmer.cms.modules.system.service.IRoleService;
+import com.xcong.farmer.cms.modules.system.util.LoginUserUtil;
 import com.xcong.farmer.cms.modules.system.vo.AdminMenuInfoVo;
 import com.xcong.farmer.cms.modules.system.vo.AdminRoleVo;
 import com.xcong.farmer.cms.modules.system.vo.AdminSeeRoleInfoVo;
@@ -45,14 +41,21 @@
     @Resource
     private UserRoleMapper userRoleMapper;
     @Resource
+    private UserMapper userMapper;
+    @Resource
     private MenuMapper menuMapper;
 
     @Override
     public Result getRoleInPage(AdminRoleDto adminRoleDto) {
+        UserEntity userlogin = LoginUserUtil.getLoginUser();
         Page<AdminRoleVo> page = new Page<>(adminRoleDto.getPageNum(), adminRoleDto.getPageSize());
         RoleEntity roleEntity = new RoleEntity();
+        Long companyId = userlogin.getCompanyId() == null ? UserEntity.USER_BELONG_TOP : userlogin.getCompanyId();
         if(StrUtil.isNotEmpty(adminRoleDto.getRoleName())){
             roleEntity.setRoleName(adminRoleDto.getRoleName());
+        }
+        if(companyId > UserEntity.USER_BELONG_TOP){
+            roleEntity.setCompanyId(companyId);
         }
         IPage<AdminRoleVo> list = this.baseMapper.selectAdminRoleVoInPage(page,roleEntity);
         return Result.ok(list);
@@ -61,20 +64,16 @@
     @Override
     @Transactional
     public Result addRole(AdminAddRoleDto adminAddRoleDto) {
+        UserEntity userlogin = LoginUserUtil.getLoginUser();
         String roleName = adminAddRoleDto.getRoleName();
-        if(StrUtil.isEmpty(roleName)){
-            return Result.fail("请输入角色名称");
-        }
         String menuIds = adminAddRoleDto.getMenuIds();
-        if(StrUtil.isEmpty(menuIds)){
-            return Result.fail("请选择角色权限");
-        }
         RoleEntity roleEntity = new RoleEntity();
         String remark = adminAddRoleDto.getRemark();
         if(StrUtil.isNotEmpty(remark)){
             roleEntity.setRemark(remark);
         }
         roleEntity.setRoleName(roleName);
+        roleEntity.setCompanyId(userlogin.getCompanyId() == null?UserEntity.USER_BELONG_TOP:userlogin.getCompanyId());
         int insert = this.baseMapper.insert(roleEntity);
         if(insert > 0){
             saveRoleMenus(menuIds,roleEntity.getId());
@@ -98,6 +97,10 @@
             return Result.fail("当前角色下还有用户,请重新分配角色");
         }
         this.baseMapper.deleteById(id);
+
+        QueryWrapper<RoleMenuEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("role_id",id);
+        roleMenuMapper.delete(queryWrapper);
         return Result.ok("删除成功");
     }
 
@@ -113,15 +116,22 @@
         adminSeeRoleInfoVo.setRemark(roleEntity.getRemark());
         List<RoleMenuEntity> roleMenuEntities = roleMenuMapper.selectListByRoleId(id);
         if(CollUtil.isNotEmpty(roleMenuEntities)){
-            List<AdminMenuInfoVo> adminMenuInfoVos = new ArrayList<>();
+            List<Long> menuIds = new ArrayList<>();
             for(RoleMenuEntity roleMenuEntity : roleMenuEntities){
-                MenuEntity menuEntity = menuMapper.selectById(roleMenuEntity.getMenuId());
-                AdminMenuInfoVo adminMenuInfoVo = new AdminMenuInfoVo();
-                adminMenuInfoVo.setId(menuEntity.getId());
-                adminMenuInfoVo.setMenuName(menuEntity.getMenuName());
-                adminMenuInfoVos.add(adminMenuInfoVo);
+//                //这个子菜单
+//                MenuEntity menuEntity = menuMapper.selectMenuEntityByIdAndParentId(roleMenuEntity.getMenuId(),MenuEntity.PARENTID_DEFAULT);
+//                if(ObjectUtil.isNotEmpty(menuEntity)){
+//                    menuIds.add(menuEntity.getId());
+//                }
+                //查询该角色拥有的菜单栏是否拥有子菜单
+                QueryWrapper<MenuEntity> objectQueryWrapper = new QueryWrapper<>();
+                objectQueryWrapper.eq("parent_id",roleMenuEntity.getMenuId());
+                List<MenuEntity> menuEntities = menuMapper.selectList(objectQueryWrapper);
+                if(CollUtil.isEmpty(menuEntities)){
+                    menuIds.add(roleMenuEntity.getMenuId());
+                }
             }
-            adminSeeRoleInfoVo.setMenuInfoVos(adminMenuInfoVos);
+            adminSeeRoleInfoVo.setMenuIds(menuIds);
         }
         return Result.ok(adminSeeRoleInfoVo);
     }
@@ -154,6 +164,33 @@
         return Result.ok("更新成功");
     }
 
+    @Override
+    @Transactional
+    public Result delObjs(AdminDeleteDto adminDeleteDto) {
+        String ids = adminDeleteDto.getIds();
+        if(StrUtil.isNotEmpty(ids)){
+            String[] roleIds = ids.split(StringPool.COMMA);
+            for(String roleIdStr : roleIds){
+                Long roleId = Long.valueOf(roleIdStr);
+                RoleEntity roleEntity = this.baseMapper.selectById(roleId);
+                if(RoleEntity.ROLE_ADMIN_NAME.equals(roleEntity.getRoleName())
+                || RoleEntity.ROLE_SUPER_NAME.equals(roleEntity.getRoleName())){
+                    return Result.fail(RoleEntity.ROLE_ADMIN_NAME + RoleEntity.ROLE_SUPER_NAME +"角色无法删除");
+                }
+                QueryWrapper<UserRoleEntity> objectQueryWrapper = new QueryWrapper<>();
+                objectQueryWrapper.eq("role_id",roleId);
+                userRoleMapper.delete(objectQueryWrapper);
+
+                QueryWrapper<RoleMenuEntity> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("role_id",roleId);
+                roleMenuMapper.delete(queryWrapper);
+
+                this.baseMapper.deleteById(roleId);
+            }
+        }
+        return Result.ok("删除成功");
+    }
+
     private void saveRoleMenus(String menuIds,Long roleId) {
         if (StrUtil.isNotEmpty(menuIds)) {
             String[] menuIdList = menuIds.split(StringPool.COMMA);

--
Gitblit v1.9.1