feat: 外标引用标准单独查询权限

This commit is contained in:
2024-04-11 10:08:03 +08:00
parent c65befd0d8
commit 36a701fc4a
6 changed files with 93 additions and 9 deletions
@@ -2146,15 +2146,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
List<SysUser> userByDepIds = sysUserService.getUserByDepIds(departIdList, user.getUsername());
List<LawsOverseasStandard> list = lawsOverseasStandardService.list();
List<String> allFbIdList = list.stream().map(LawsOverseasStandard::getId).collect(Collectors.toList());
LambdaQueryWrapper<LawsTreeNode> treeNodeLambdaQueryWrapper = new LambdaQueryWrapper<>();
treeNodeLambdaQueryWrapper.eq(LawsTreeNode::getNodeName, "引进标准");
treeNodeLambdaQueryWrapper.eq(LawsTreeNode::getModuleCode, TableNameEnum.FOREIGN_REGULATIONS.getValue());
LawsTreeNode node = lawsTreeNodeService.getOne(treeNodeLambdaQueryWrapper);
// 获取引进标准的id
LambdaQueryWrapper<LawsNodeRelation> nodeRelationLambdaQueryWrapper = new LambdaQueryWrapper<>();
nodeRelationLambdaQueryWrapper.eq(LawsNodeRelation::getNodeId, node.getId());
List<LawsNodeRelation> fbList = lawsNodeRelationService.list(nodeRelationLambdaQueryWrapper);
List<String> fbIdList = fbList.stream().map(LawsNodeRelation::getUniqueRelationFlag).collect(Collectors.toList());
List<String> fbIdList = lawsOverseasStandardService.getAllAuthControlFbId();
idSearch = true;
// 外标判断当前登陆人是不是汽车研究总院及子部门的员工,如果是则根据授权部门进行权限限制
// 如果不是则需要将引进标准的id从所有id中排除掉
@@ -102,4 +102,12 @@ public interface EnterpriseStandardAuthUserService extends IService<EnterpriseSt
* @param standardId 企标Id
*/
void isDeleteHorizontalOverstep(String standardId);
/**
* 校验外标权限
* @param standardId
* @param userId
* @return
*/
boolean fbDetailPermission(String standardId, String userId);
}
@@ -20,13 +20,16 @@ import com.jero.modules.laws.standard.controller.TempAuthRecordQueryDto;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.entity.LawsStandardTempPermission;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.laws.standard.service.ILawsOverseasStandardService;
import com.jero.modules.sys.entity.LawsEnterpriseStandardLevel;
import com.jero.modules.sys.entity.LawsGrade;
import com.jero.modules.sys.service.ILawsEnterpriseStandardLevelService;
import com.jero.modules.sys.service.ILawsGradeService;
import com.jero.modules.sys.utils.UserUtils;
import com.jero.modules.system.entity.SysDepart;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.model.DepartIdModel;
import com.jero.modules.system.service.ISysDepartService;
import com.jero.modules.system.service.ISysUserDepartService;
import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
@@ -88,6 +91,12 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
@Resource
private ILawsEnterpriseStandardService esService;
@Resource
private ILawsOverseasStandardService fbService;
@Resource
private ISysDepartService departService;
@Override
public void saveTempPermission(LawsStandardTempPermission lawsStandardTempPermission) {
@@ -494,6 +503,37 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
throw new JeroBootException(MessageUtils.getMessage(ResultCommon.YOU_HAVE_NOT_DATA_AUTH, standardId));
}
@Override
public boolean fbDetailPermission(String standardId, String userId) {
// 管理员有所有企标的权限
SysUser currentUser = sysUserService.getById(userId);
// 管理员有所有企标的权限
List<String> roleList = sysUserRoleService.getRole(currentUser.getUsername());
if (roleList != null && roleList.stream().anyMatch(adminRoleCodeList::contains)) {
return true;
}
// 能够查看所有企标详情的权限
if (roleList != null && roleList.stream().anyMatch(enterpriseDetailRoleCodeList::contains)) {
return true;
}
// 判断是不是引用标准,不是引用标准不做权限校验
List<String> allAuthControlFbId = fbService.getAllAuthControlFbId();
if (!allAuthControlFbId.contains(standardId)) {
return true;
}
// 获取当前用户的所在部门Id
// 查询当前用户的部门
List<SysDepart> userDepartList = departService.queryUserDeparts(userId);
List<String> departIdList = userDepartList.stream().map(SysDepart::getId).collect(Collectors.toList());
// 是引用标准就得判断权限
LambdaQueryWrapper<EnterpriseStandardAuthDept> adWrapper = new LambdaQueryWrapper<>();
adWrapper.in(EnterpriseStandardAuthDept::getAuthDept, departIdList);
adWrapper.eq(EnterpriseStandardAuthDept::getStandardId, standardId);
adWrapper.isNull(EnterpriseStandardAuthDept::getAuthExpireDate);
List<EnterpriseStandardAuthDept> list = authDeptService.list(adWrapper);
return !list.isEmpty();
}
@Override
public void delFlagSet(List<Map<String, Object>> records) {
String userId = UserUtils.getUserId();
@@ -7,16 +7,19 @@ import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.exception.JeroBootException;
import com.jero.common.util.MessageUtils;
import com.jero.modules.activiti.process.fb.service.IProcessFbEntryChangeService;
import com.jero.modules.laws.common.constant.FieldCommon;
import com.jero.modules.laws.common.service.ILawsCommonService;
import com.jero.modules.laws.customcompare.service.ILawsCustomCompareInfoService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService;
import com.jero.modules.laws.standard.entity.LawsUpdateRecord;
import com.jero.modules.laws.standard.service.ILawsNodeRelationService;
import com.jero.modules.laws.standard.service.ILawsUpdateRecordService;
import com.jero.modules.personal.service.ILawsStandardCollectionService;
import com.jero.modules.personal.service.ILawsStandardSharingService;
import com.jero.modules.sys.utils.UserUtils;
import com.jero.modules.tag.entity.LawsTag;
import com.jero.modules.tag.enums.TableNameEnum;
import io.swagger.annotations.Api;
@@ -57,6 +60,8 @@ public class LawsOverseasController {
private IProcessFbEntryChangeService processFbEntryChangeService;
@Resource
private ILawsCustomCompareInfoService customCompareService;
@Resource
private EnterpriseStandardAuthUserService authUserService;
private static final String MODULE_VALUE = TableNameEnum.FOREIGN_REGULATIONS.getValue();
@@ -141,6 +146,9 @@ public class LawsOverseasController {
public Result<Map<String,Object>> getByIdAndModule(@RequestParam(name="id", required = false) @ApiParam("主键") String id,
@RequestParam(name="type") @ApiParam("类型(1详情,2新增编辑)") String type,
@RequestParam(name="standardNumber", required = false) @ApiParam("标准编号") String standardNumber) {
if (!authUserService.fbDetailPermission(id, UserUtils.getUserId())) {
throw new JeroBootException("暂无该外标查看权限");
}
lawsCommonService.addLookHistory(id, type, MODULE_VALUE, standardNumber);
return Result.OK(lawsCommonService.getByIdAndModule(id, MODULE_VALUE, type, standardNumber));
}
@@ -78,4 +78,9 @@ public interface ILawsOverseasStandardService extends IService<LawsOverseasStand
* 通过编号查查询
*/
LawsOverseasStandard queryByStandardNumber(String standardNumber);
/**
* 获取所有引进标准的Id
*/
List<String> getAllAuthControlFbId();
}
@@ -3,10 +3,15 @@ package com.jero.modules.laws.standard.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.constant.CommonConstant;
import com.jero.modules.laws.standard.entity.LawsNodeRelation;
import com.jero.modules.laws.standard.entity.LawsOverseasStandard;
import com.jero.modules.laws.standard.entity.LawsTreeNode;
import com.jero.modules.laws.standard.mapper.LawsOverseasStandardMapper;
import com.jero.modules.laws.standard.service.ILawsNodeRelationService;
import com.jero.modules.laws.standard.service.ILawsOverseasStandardService;
import com.jero.modules.laws.standard.service.ILawsTreeNodeService;
import com.jero.modules.personal.service.ILawsStandardCollectionService;
import com.jero.modules.tag.enums.TableNameEnum;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -14,8 +19,12 @@ import org.springframework.transaction.annotation.Transactional;
import com.jero.common.exception.JeroBootException;
import java.util.List;
import java.util.Date;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.system.query.QueryGenerator;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -34,6 +43,12 @@ public class LawsOverseasStandardServiceImpl extends ServiceImpl<LawsOverseasSta
@Autowired
private ILawsStandardCollectionService lawsStandardCollectionService;
@Resource
private ILawsTreeNodeService lawsTreeNodeService;
@Resource
private ILawsNodeRelationService lawsNodeRelationService;
/**
* 分页查询
*
@@ -138,4 +153,20 @@ public class LawsOverseasStandardServiceImpl extends ServiceImpl<LawsOverseasSta
wrapper.last("limit 1");
return getOne(wrapper);
}
@Override
public List<String> getAllAuthControlFbId() {
List<LawsOverseasStandard> list = this.list();
List<String> allFbIdList = list.stream().map(LawsOverseasStandard::getId).collect(Collectors.toList());
LambdaQueryWrapper<LawsTreeNode> treeNodeLambdaQueryWrapper = new LambdaQueryWrapper<>();
treeNodeLambdaQueryWrapper.eq(LawsTreeNode::getNodeName, "引进标准");
treeNodeLambdaQueryWrapper.eq(LawsTreeNode::getModuleCode, TableNameEnum.FOREIGN_REGULATIONS.getValue());
LawsTreeNode node = lawsTreeNodeService.getOne(treeNodeLambdaQueryWrapper);
// 获取引进标准的id
LambdaQueryWrapper<LawsNodeRelation> nodeRelationLambdaQueryWrapper = new LambdaQueryWrapper<>();
nodeRelationLambdaQueryWrapper.eq(LawsNodeRelation::getNodeId, node.getId());
List<LawsNodeRelation> fbList = lawsNodeRelationService.list(nodeRelationLambdaQueryWrapper);
List<String> fbIdList = fbList.stream().map(LawsNodeRelation::getUniqueRelationFlag).collect(Collectors.toList());
return fbIdList;
}
}