修改bug#40911

This commit is contained in:
梁琦涛
2021-10-25 09:05:20 +08:00
parent c003c177d4
commit a6982f653f
6 changed files with 112 additions and 25 deletions
@@ -0,0 +1,15 @@
package com.jero.common.service;
public interface RolePermissionService {
/**
* @Description 根据菜单权限code 判断当前用户是否有权限(true:全部数据,false:当前登录人数据)
* @Author lqt
* @Date 2021/10/24
* @Param permission 菜单code
* @Return
* @Exception
*/
boolean getRolePermission(String permission);
}
@@ -0,0 +1,69 @@
package com.jero.common.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.common.RoleCommon;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.RolePermissionService;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.system.entity.SysPermission;
import com.jero.modules.system.entity.SysRole;
import com.jero.modules.system.entity.SysRolePermission;
import com.jero.modules.system.service.ISysPermissionService;
import com.jero.modules.system.service.ISysRolePermissionService;
import com.jero.modules.system.service.ISysRoleService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class RolePermissionServiceImpl implements RolePermissionService {
@Resource
private ISysPermissionService sysPermissionService;
@Resource
private ISysRolePermissionService sysRolePermissionService;
@Resource
private ISysRoleService sysRoleService;
@Override
public boolean getRolePermission(String permission) {
if(StringUtils.isEmpty(permission)){
throw new JeroBootException("菜单权限编码不能为空!");
}
LambdaQueryWrapper<SysPermission> querySysPermission = new LambdaQueryWrapper<>();
querySysPermission.eq(SysPermission::getPerms,permission);
List<SysPermission> listSysPermission = sysPermissionService.list(querySysPermission);
if(CollectionUtils.isEmpty(listSysPermission)){
throw new JeroBootException("菜单权限编码不存在!");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List<String> list = new ArrayList<>(Arrays.asList(sysUser.getRoleCode().split(",")));
if(list.contains(RoleCommon.XMFZR)){
list.remove(RoleCommon.XMFZR);
}
if(!CollectionUtils.isEmpty(list)){
LambdaQueryWrapper<SysRole> querySysRole = new LambdaQueryWrapper<>();
querySysRole.in(SysRole::getRoleCode,list);
List<SysRole> listSysRole = sysRoleService.list(querySysRole);
if(CollectionUtils.isEmpty(listSysRole)){
return false;
}
List<String> listRoleId = listSysRole.stream().map(SysRole::getId).collect(Collectors.toList());
LambdaQueryWrapper<SysRolePermission> querySysRolePermission = new LambdaQueryWrapper<>();
querySysRolePermission.in(SysRolePermission::getRoleId,listRoleId);
querySysRolePermission.eq(SysRolePermission::getPermissionId,listSysPermission.get(0).getId());
List<SysRolePermission> listSysRolePermission = sysRolePermissionService.list(querySysRolePermission);
if(!CollectionUtils.isEmpty(listSysRolePermission)){
return true;
}
}
return false;
}
}