Helius
2022-07-04 2736d16a8b1804f7291a56a147f76ef3584d6619
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);