修改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;
}
}
@@ -20,6 +20,7 @@ import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.common.ProjectCommon; import com.jero.common.common.ProjectCommon;
import com.jero.common.common.RoleCommon; import com.jero.common.common.RoleCommon;
import com.jero.common.service.ProjectDetailService; import com.jero.common.service.ProjectDetailService;
import com.jero.common.service.RolePermissionService;
import com.jero.common.system.api.ISysBaseAPI; import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.query.QueryGenerator; import com.jero.common.system.query.QueryGenerator;
@@ -98,6 +99,8 @@ public class PayCommonProjectController extends JeroController<PayCommonProject,
private IPayPaymentRecordService payPaymentRecordService; private IPayPaymentRecordService payPaymentRecordService;
@Resource @Resource
private IPayWorkingGroupDistributionRecordService payWorkingGroupDistributionRecordService; private IPayWorkingGroupDistributionRecordService payWorkingGroupDistributionRecordService;
@Resource
private RolePermissionService rolePermissionService;
/** /**
* 分页列表查询 * 分页列表查询
* *
@@ -131,7 +134,7 @@ public class PayCommonProjectController extends JeroController<PayCommonProject,
} }
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(sysUser.getRoleCode(),RoleCommon.XMFZR)){ if(!rolePermissionService.getRolePermission("generalProject:search")){
payCommonProject.setPrincipal(sysUser.getId()); payCommonProject.setPrincipal(sysUser.getId());
} }
@@ -13,6 +13,7 @@ import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.common.RoleCommon; import com.jero.common.common.RoleCommon;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.service.RolePermissionService;
import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.query.QueryGenerator; import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser; import com.jero.common.system.vo.LoginUser;
@@ -20,7 +21,6 @@ import com.jero.common.util.ValidUtil;
import com.jero.common.util.oConvertUtils; import com.jero.common.util.oConvertUtils;
import com.jero.contract.entity.PayIncomeContract; import com.jero.contract.entity.PayIncomeContract;
import com.jero.contract.service.IPayIncomeContractService; import com.jero.contract.service.IPayIncomeContractService;
import com.jero.pack.service.IPayPackCompanyProjectService;
import com.jero.project.common.PayProjectCommon; import com.jero.project.common.PayProjectCommon;
import com.jero.project.entity.*; import com.jero.project.entity.*;
import com.jero.project.vo.PayWorkingGroupPayment; import com.jero.project.vo.PayWorkingGroupPayment;
@@ -55,9 +55,9 @@ public class PayWorkingGroupController extends JeroController<PayWorkingGroup, I
@Resource @Resource
private IPayWorkingGroupSubItemService payWorkingGroupSubItemService; private IPayWorkingGroupSubItemService payWorkingGroupSubItemService;
@Resource @Resource
private IPayPackCompanyProjectService payPackCompanyProjectService;
@Resource
private IPayIncomeContractService payIncomeContractService; private IPayIncomeContractService payIncomeContractService;
@Resource
private RolePermissionService rolePermissionService;
/** /**
* 分页列表查询 * 分页列表查询
@@ -77,7 +77,7 @@ public class PayWorkingGroupController extends JeroController<PayWorkingGroup, I
return Result.error("工作组项目长度不能大于50个字符"); return Result.error("工作组项目长度不能大于50个字符");
} }
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(sysUser.getRoleCode(), RoleCommon.XMFZR)){ if(!rolePermissionService.getRolePermission("workingGroupProject:search")){
payWorkingGroup.setPrincipalA(sysUser.getId()); payWorkingGroup.setPrincipalA(sysUser.getId());
payWorkingGroup.setPrincipalB(sysUser.getId()); payWorkingGroup.setPrincipalB(sysUser.getId());
} }
@@ -249,7 +249,7 @@ public class PayWorkingGroupController extends JeroController<PayWorkingGroup, I
return Result.error(payWorkingGroupOld.getWorkingGroupProject() + "工作组不存在!"); return Result.error(payWorkingGroupOld.getWorkingGroupProject() + "工作组不存在!");
} }
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(sysUser.getRoleCode(), RoleCommon.XMFZR) && !Objects.equals(payWorkingGroupOld.getPrincipalIdA(),sysUser.getId())){ if(!rolePermissionService.getRolePermission("workingGroupProject:copy") && !Objects.equals(payWorkingGroupOld.getPrincipalIdA(),sysUser.getId())){
return Result.error(payWorkingGroupOld.getWorkingGroupProject() + "工作组项目不可操作!"); return Result.error(payWorkingGroupOld.getWorkingGroupProject() + "工作组项目不可操作!");
} }
payWorkingGroupService.copy(payWorkingGroup); payWorkingGroupService.copy(payWorkingGroup);
@@ -312,7 +312,7 @@ public class PayWorkingGroupController extends JeroController<PayWorkingGroup, I
return Result.error(payWorkingGroupOld.getWorkingGroupProject() + "工作组不存在!"); return Result.error(payWorkingGroupOld.getWorkingGroupProject() + "工作组不存在!");
} }
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(sysUser.getRoleCode(), RoleCommon.XMFZR) && !Objects.equals(payWorkingGroupOld.getPrincipalIdA(),sysUser.getId())){ if(!rolePermissionService.getRolePermission("workingGroupProject:edit") && !Objects.equals(payWorkingGroupOld.getPrincipalIdA(),sysUser.getId())){
return Result.error(payWorkingGroupOld.getWorkingGroupProject() + "工作组项目不可操作!"); return Result.error(payWorkingGroupOld.getWorkingGroupProject() + "工作组项目不可操作!");
} }
try { try {
@@ -10,6 +10,7 @@ import com.jero.common.common.RoleCommon;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.service.ContractCreateProjectSendMessageService; import com.jero.common.service.ContractCreateProjectSendMessageService;
import com.jero.common.service.ProjectDetailService; import com.jero.common.service.ProjectDetailService;
import com.jero.common.service.RolePermissionService;
import com.jero.common.system.vo.LoginUser; import com.jero.common.system.vo.LoginUser;
import com.jero.common.vo.ProjectStatusVO; import com.jero.common.vo.ProjectStatusVO;
import com.jero.contract.entity.PayIncomeContract; import com.jero.contract.entity.PayIncomeContract;
@@ -68,6 +69,8 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
private ContractCreateProjectSendMessageService contractCreateProjectSendMessageService; private ContractCreateProjectSendMessageService contractCreateProjectSendMessageService;
@Resource @Resource
private IPayIncomeContractAssociatedService payIncomeContractAssociatedService; private IPayIncomeContractAssociatedService payIncomeContractAssociatedService;
@Resource
private RolePermissionService rolePermissionService;
@@ -131,7 +134,7 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
throw new JeroBootException(payCommonProjectOld.getChargeProject() + "项目不存在!"); throw new JeroBootException(payCommonProjectOld.getChargeProject() + "项目不存在!");
} }
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(sysUser.getRoleCode(),RoleCommon.XMFZR) && !Objects.equals(sysUser.getId(),payCommonProjectOld.getPrincipalId())){ if(!rolePermissionService.getRolePermission("generalProject:edit") && !Objects.equals(sysUser.getId(),payCommonProjectOld.getPrincipalId())){
throw new JeroBootException(payCommonProjectOld.getChargeProject() + "项目不可操作!"); throw new JeroBootException(payCommonProjectOld.getChargeProject() + "项目不可操作!");
} }
// 项目为打包状态 || 到账!=0 || 开票!=0 || 邮寄!=0 // 项目为打包状态 || 到账!=0 || 开票!=0 || 邮寄!=0
@@ -225,7 +228,7 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
if(StringUtils.isBlank(id)){ if(StringUtils.isBlank(id)){
throw new JeroBootException("id不能为空!"); throw new JeroBootException("id不能为空!");
} }
StringBuilder msg = deleteProject(id); StringBuilder msg = deleteProject(id,"generalProject:delete");
if(!StringUtils.isEmpty(msg)){ if(!StringUtils.isEmpty(msg)){
throw new JeroBootException(msg.toString()); throw new JeroBootException(msg.toString());
} }
@@ -244,7 +247,7 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
if(StringUtils.isBlank(s1)){ if(StringUtils.isBlank(s1)){
throw new JeroBootException("id不能为空!"); throw new JeroBootException("id不能为空!");
} }
StringBuilder sb = deleteProject(s1); StringBuilder sb = deleteProject(s1,"generalProject:batchDel");
if(!StringUtils.isEmpty(sb)){ if(!StringUtils.isEmpty(sb)){
msg.append(sb); msg.append(sb);
} }
@@ -268,13 +271,13 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
* @Return * @Return
* @Exception * @Exception
*/ */
private StringBuilder deleteProject(String id){ private StringBuilder deleteProject(String id,String perms){
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
PayCommonProject payCommonProject = payCommonProjectService.getById(id); PayCommonProject payCommonProject = payCommonProjectService.getById(id);
// 项目负责人权限最底层,其他任何权限都可直接操作,不需要认证当前项目是否为项目负责人 // 项目负责人权限最底层,其他任何权限都可直接操作,不需要认证当前项目是否为项目负责人
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(sysUser.getRoleCode(),RoleCommon.XMFZR) && !Objects.equals(payCommonProject.getPrincipalId(), sysUser.getId())){ if(!rolePermissionService.getRolePermission(perms) && !Objects.equals(payCommonProject.getPrincipalId(), sysUser.getId())){
sb.append(payCommonProject.getChargeProject() + "项目没有删除权限!<br/>"); sb.append(payCommonProject.getChargeProject() + "项目不可操作!<br/>");
} }
if(!StringUtils.isEmpty(sb)){ if(!StringUtils.isEmpty(sb)){
return sb; return sb;
@@ -4,13 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.common.RoleCommon;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.service.RolePermissionService;
import com.jero.common.system.vo.LoginUser; import com.jero.common.system.vo.LoginUser;
import com.jero.contract.entity.PayIncomeContractAssociated; import com.jero.contract.entity.PayIncomeContractAssociated;
import com.jero.contract.service.IPayIncomeContractAssociatedService; import com.jero.contract.service.IPayIncomeContractAssociatedService;
import com.jero.contract.service.IPayIncomeContractService;
import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.service.ISysUserService;
import com.jero.project.entity.*; import com.jero.project.entity.*;
@@ -22,7 +20,6 @@ import com.jero.statistics.entity.*;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -46,18 +43,18 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMapper, PayWorkingGroup> implements IPayWorkingGroupService { public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMapper, PayWorkingGroup> implements IPayWorkingGroupService {
@Autowired @Resource
private IPayWorkingGroupService payWorkingGroupService; private IPayWorkingGroupService payWorkingGroupService;
@Autowired @Resource
private IPayWorkingGroupSubItemService payWorkingGroupSubItemService; private IPayWorkingGroupSubItemService payWorkingGroupSubItemService;
@Autowired @Resource
private IPayIncomeContractAssociatedService payIncomeContractAssociatedService; private IPayIncomeContractAssociatedService payIncomeContractAssociatedService;
@Resource @Resource
private PayWorkingGroupMapper payWorkingGroupMapper; private PayWorkingGroupMapper payWorkingGroupMapper;
@Autowired @Resource
private ISysUserService sysUserService; private ISysUserService sysUserService;
@Autowired @Resource
private IPayIncomeContractService payIncomeContractService; private RolePermissionService rolePermissionService;
@Override @Override
public IPage<PayWorkingGroupVO> queryPageList(Page<PayWorkingGroupVO> page, PayWorkingGroup payWorkingGroup) { public IPage<PayWorkingGroupVO> queryPageList(Page<PayWorkingGroupVO> page, PayWorkingGroup payWorkingGroup) {
@@ -80,7 +77,7 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
PayWorkingGroup payWorkingGroupOld = payWorkingGroupService.getById(id); PayWorkingGroup payWorkingGroupOld = payWorkingGroupService.getById(id);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(sysUser.getRoleCode(), RoleCommon.XMFZR) && !Objects.equals(payWorkingGroupOld.getPrincipalIdA(),sysUser.getId())){ if(!rolePermissionService.getRolePermission("workingGroupProject:edit") && !Objects.equals(payWorkingGroupOld.getPrincipalIdA(),sysUser.getId())){
throw new JeroBootException(payWorkingGroupOld.getWorkingGroupProject() + "工作组项目不可操作!"); throw new JeroBootException(payWorkingGroupOld.getWorkingGroupProject() + "工作组项目不可操作!");
} }
@@ -105,7 +102,7 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
ids.forEach(p->{ ids.forEach(p->{
PayWorkingGroup payWorkingGroupOld = payWorkingGroupService.getById(p); PayWorkingGroup payWorkingGroupOld = payWorkingGroupService.getById(p);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(sysUser.getRoleCode(), RoleCommon.XMFZR) && !Objects.equals(payWorkingGroupOld.getPrincipalIdA(),sysUser.getId())){ if(!rolePermissionService.getRolePermission("workingGroupProject:edit") && !Objects.equals(payWorkingGroupOld.getPrincipalIdA(),sysUser.getId())){
sb.append(payWorkingGroupOld.getWorkingGroupProject() + "工作组项目不可操作!<br/>"); sb.append(payWorkingGroupOld.getWorkingGroupProject() + "工作组项目不可操作!<br/>");
} }
LambdaQueryWrapper<PayWorkingGroupSubItem> query = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PayWorkingGroupSubItem> query = new LambdaQueryWrapper<>();