市场法规清单添加权限验证

This commit is contained in:
梁琦涛
2024-07-12 13:57:20 +08:00
parent 44a16be927
commit a423324f4b
6 changed files with 114 additions and 56 deletions
@@ -115,6 +115,8 @@ public class ProcessMarketStandardReleaseServiceImpl extends ServiceImpl<Process
actFlowCommonService.completeTask(taskId, userId);
// 根据流程实例id更新流程总表
actFlowCommonService.updateProcessAll(processInfo);
// 保存快照
processHandleService.saveToSnapshot(processInfoVO,userId);
}
private Map<String, Object> setVariables(Map<String, Object> userInfoMap) {
@@ -186,6 +188,8 @@ public class ProcessMarketStandardReleaseServiceImpl extends ServiceImpl<Process
runtimeService.setVariable(processInstanceId, PASS, pass);
// 审批节点
actFlowCommonService.completeTask(taskId, userId);
// 保存快照
processHandleService.saveToSnapshot(processInfoVO,userId);
}
@Override
@@ -90,6 +90,7 @@ public class MarketStandardController {
@GetMapping(value = "/detail")
@ApiOperationSupport(order = 2)
@RequiresPermissions("marketStandard:detail")
@Translation
public Result<MarketStandardDetailVO> detail(LawsMarketStandardDetail marketStandardDetail) {
MarketStandardDetailVO result = marketStandardService.detail(marketStandardDetail);
return Result.OK(result);
@@ -135,8 +136,8 @@ public class MarketStandardController {
@AutoLog(value = "外部标准库-市场法规清单-批量删除")
@ApiOperation(value = "外部标准库-市场法规清单-批量删除", notes = "外部标准库-市场法规清单-批量删除")
@ApiOperationSupport(order = 4)
@PostMapping(value = "/deleteBatch")
@RequiresPermissions("marketStandard:deleteBatch")
// @PostMapping(value = "/deleteBatch")
// @RequiresPermissions("marketStandard:deleteBatch")
public Result<T> deleteBatch(@RequestBody Map<String, String> map) {
if (!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))) {
return Result.error("请选择数据!");
@@ -75,8 +75,8 @@ public class MarketStandardDetailController {
@AutoLog(value = "外部标准库-市场法规清单-新增")
@ApiOperation(value = "外部标准库-市场法规清单-新增", notes = "外部标准库-市场法规清单-新增")
@ApiOperationSupport(order = 5)
@PostMapping(value = "/add")
@RequiresPermissions("marketStandard:detail:operate")
// @PostMapping(value = "/add")
// @RequiresPermissions("marketStandard:detail:operate")
public Result<?> add(@RequestBody LawsMarketStandardDetail marketStandardDetail) {
return lawsMarketStandardDetailService.add(marketStandardDetail);
}
@@ -77,13 +77,6 @@ public class LawsMarketStandard implements Serializable {
@ApiModelProperty(value = "国家")
private String country;
/**
* 国家翻译
*/
@TableField(exist = false)
@ApiModelProperty(value = "国家翻译")
private String countryText;
/**
* 清单编号
*/
@@ -106,13 +99,6 @@ public class LawsMarketStandard implements Serializable {
@Excel(name = "驾驶位置", width = 15,needMerge = true, dicCode = "drive_position")
private String drivePosition;
/**
* 驾驶位置翻译
*/
@TableField(exist = false)
@ApiModelProperty(value = "驾驶位置翻译")
private String drivePositionText;
/**
* 清单版本
*/
@@ -144,13 +130,6 @@ public class LawsMarketStandard implements Serializable {
@ApiModelProperty(value = "密级")
private String securityLevel;
/**
* 密级翻译
*/
@TableField(exist = false)
@ApiModelProperty(value = "密级翻译")
private String securityLevelText;
/**
* 清单状态
*/
@@ -11,6 +11,7 @@ import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.ImportExcelUtil;
import com.jero.modules.laws.common.service.ILawsCommonService;
import com.jero.modules.laws.marketStandard.constans.MarketStandardConstants;
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandard;
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail;
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetailExcel;
@@ -25,6 +26,7 @@ import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -60,6 +62,17 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
private static final String NOT_DATA = "数据不存在";
/**
* 法规管理员
*/
@Value("${sys_role.laws_admin}")
private String lawsAdmin;
/**
* 超级管理员
*/
@Value("${sys_role.super_admin}")
private String superAdmin;
@Override
public Result<?> getPage(LawsMarketStandardDetail marketStandardDetail, HttpServletRequest request,
@@ -68,12 +81,20 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
if(StringUtils.isBlank(marketStandardDetail.getManifestId())){
return Result.OK(new Page<>(pageNo, pageSize));
}
LawsMarketStandard lawsMarketStandardOld = marketStandardService.getById(manifestId);
if(Objects.isNull(lawsMarketStandardOld)){
return Result.error(NOT_DATA);
}
// 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin)
&& !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin)
&& !Objects.equals(lawsMarketStandardOld.getAuthor(),sysUser.getId())
&& !Objects.equals(lawsMarketStandardOld.getManifestStatus(), MarketStandardConstants.MANIFEST_STATUS_PUBLISH)){
return Result.error("没有权限");
}
String manifestVersion = marketStandardDetail.getManifestVersion();
if(!StringUtils.isBlank(marketStandardDetail.getManifestVersion())){
LawsMarketStandard lawsMarketStandardOld = marketStandardService.getById(manifestId);
if(Objects.isNull(lawsMarketStandardOld)){
return Result.error(NOT_DATA);
}
LambdaQueryWrapper<LawsMarketStandard> queryLawsMarketStandard = new LambdaQueryWrapper<>();
queryLawsMarketStandard.eq(LawsMarketStandard::getVersionFlag,lawsMarketStandardOld.getVersionFlag());
queryLawsMarketStandard.eq(LawsMarketStandard::getManifestVersion,manifestVersion);
@@ -123,6 +144,17 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
@Override
@Transactional(rollbackFor = JeroBootException.class)
public synchronized Result<?> importExcel(MultipartFile file,String manifestId) {
LawsMarketStandard lawsMarketStandardOld = marketStandardService.getById(manifestId);
if(Objects.isNull(lawsMarketStandardOld)){
return Result.error(NOT_DATA);
}
// 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin)
&& !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin)
&& !Objects.equals(lawsMarketStandardOld.getAuthor(),sysUser.getId())){
return Result.error("没有权限");
}
// 校验文件是否为excel
if (!ImportExcelUtil.checkExcelFile(file)) {
return Result.error("请导入excel文件");
@@ -301,7 +333,13 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
if(Objects.isNull(lawsMarketStandard)){
return Result.error("数据不存在");
}
// 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin)
&& !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin)
&& !Objects.equals(lawsMarketStandard.getAuthor(),sysUser.getId())){
return Result.error("没有权限");
}
if(!Objects.equals(sysUser.getUsername(),lawsMarketStandard.getCreateBy())){
return Result.error("没有权限");
}
@@ -324,6 +362,16 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
@Override
public synchronized Result<?> copy(String oldId,String newId) {
LawsMarketStandard lawsMarketStandard = marketStandardService.getById(newId);
if(Objects.isNull(lawsMarketStandard)){
return Result.error("数据不存在");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin)
&& !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin)
&& !Objects.equals(lawsMarketStandard.getAuthor(),sysUser.getId())){
return Result.error("没有权限");
}
LambdaQueryWrapper<LawsMarketStandardDetail> queryOld = new LambdaQueryWrapper<>();
queryOld.in(LawsMarketStandardDetail::getManifestId,Arrays.asList(oldId.split(",")));
queryOld.groupBy(LawsMarketStandardDetail::getStandardId);
@@ -360,6 +408,16 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
@Override
@Transactional(rollbackFor = JeroBootException.class)
public synchronized Result<?> edit(LawsMarketStandardDetail marketStandardDetail) {
LawsMarketStandard lawsMarketStandard = marketStandardService.getById(marketStandardDetail.getManifestId());
if(Objects.isNull(lawsMarketStandard)){
return Result.error("数据不存在");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin)
&& !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin)
&& !Objects.equals(lawsMarketStandard.getAuthor(),sysUser.getId())){
return Result.error("没有权限");
}
LambdaQueryWrapper<LawsMarketStandardDetail> queryLawsMarketStandardDetail = new LambdaQueryWrapper<>();
queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getStandardId,marketStandardDetail.getStandardId());
queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getManifestId,marketStandardDetail.getManifestId());
@@ -421,7 +479,8 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl<LawsMarketS
queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getCreateBy, sysUser.getUsername());
queryLawsMarketStandardDetail.in(LawsMarketStandardDetail::getId, Arrays.asList(id.split(",")));
long l = count(queryLawsMarketStandardDetail);
if (l == 0) {
if (l == 0 && !Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin)
&& !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin)) {
throw new JeroBootException("没有权限");
}
}
@@ -18,8 +18,7 @@ import com.jero.modules.laws.marketStandard.entity.MarketStandardDetailVO;
import com.jero.modules.laws.marketStandard.mapper.LawsMarketStandardMapper;
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardDetailService;
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardService;
import com.jero.modules.system.service.ISysDictItemService;
import com.jero.modules.system.service.ISysDictService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
@@ -44,6 +43,7 @@ import java.util.stream.Collectors;
* @createDate 2024-06-29 11:34:04
*/
@Service
@Slf4j
public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandardMapper, LawsMarketStandard>
implements ILawsMarketStandardService {
@@ -53,14 +53,9 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
private ILawsMarketStandardDetailService lawsMarketStandardDetailService;
@Resource
private ISysBaseAPI sysBaseAPI;
@Resource
private ISysDictService sysDictService;
@Resource
private ISysDictItemService sysDictItemService;
public static final String CLASS = "entity";
public static final String PARAMS = "params";
public static final String FILE_NAME = "fileName";
/**
* 法规管理员
@@ -118,6 +113,13 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
queryWrapper.like(StringUtils.isNotBlank(marketStandard.getAuthor()),
"CONCAT(u.realname, '(', u.username, ')')", marketStandard.getAuthor());
queryWrapper.orderByDesc("ms.update_time");
// 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin)
&& !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin)){
queryWrapper.and(i->i.eq("ms.manifest_status",MarketStandardConstants.MANIFEST_STATUS_PUBLISH).or()
.eq("ms.author",sysUser.getId()));
}
return queryWrapper;
}
@@ -174,11 +176,17 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
if(Objects.isNull(lawsMarketStandardOld)){
throw new JeroBootException("数据不存在");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除
if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin)
&& !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin)
&& !Objects.equals(sysUser.getId(),lawsMarketStandardOld.getAuthor())){
throw new JeroBootException("没有权限");
}
// 状态为已发布需要生成新数据
if(Objects.equals(lawsMarketStandardOld.getManifestStatus(),MarketStandardConstants.MANIFEST_STATUS_PUBLISH)){
// 将旧数据拷贝一份
syncData(lawsMarketStandardOld);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// 新数据版本设置为空,状态设置为编辑中
LambdaUpdateWrapper<LawsMarketStandard> update = new LambdaUpdateWrapper<>();
update.set(LawsMarketStandard::getManifestVersion,"");
@@ -238,14 +246,16 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
@Override
public Result<?> deleteById(String id) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin)
&& !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin)){
return Result.error("没有权限");
}
LawsMarketStandard lawsMarketStandard = getById(id);
if(Objects.isNull(lawsMarketStandard)){
return Result.error("数据不存在");
}
// 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除
if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin)
&& !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin)
&& !Objects.equals(sysUser.getId(),lawsMarketStandard.getAuthor())){
return Result.error("没有权限");
}
// 获取不同版本的数据
LambdaQueryWrapper<LawsMarketStandard> queryLawsMarketStandard = new LambdaQueryWrapper<>();
queryLawsMarketStandard.select(LawsMarketStandard::getId);
@@ -289,6 +299,18 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
if(Objects.isNull(manifest)){
throw new JeroBootException("数据不存在");
}
// 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
log.info("=====" + !Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin));
log.info("=====" + !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin));
log.info("=====" + !Objects.equals(manifest.getAuthor(),sysUser.getId()));
log.info("=====" + !Objects.equals(manifest.getManifestStatus(),MarketStandardConstants.MANIFEST_STATUS_PUBLISH));
if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin)
&& !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin)
&& !Objects.equals(manifest.getAuthor(),sysUser.getId())
&& !Objects.equals(manifest.getManifestStatus(),MarketStandardConstants.MANIFEST_STATUS_PUBLISH)){
throw new JeroBootException("没有权限");
}
// 清单版本不为空,查询指定版本
if(!StringUtils.isBlank(marketStandardDetail.getManifestVersion())){
LambdaQueryWrapper<LawsMarketStandard> queryLawsMarketStandard = new LambdaQueryWrapper<>();
@@ -301,18 +323,6 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
idList = new ArrayList<>();
idList.add(manifest.getId());
}
Map<String, List<DictModel>> map = sysBaseAPI.
translateManyDict("market_state,security_class,drive_position,",
manifest.getCountry() + "," + manifest.getSecurityLevel() + "," + manifest.getDrivePosition());
String countryText = map.get("market_state").stream().map(DictModel::getText)
.collect(Collectors.joining(","));
manifest.setCountryText(countryText);
String securityLevelText = map.get("security_class").stream().map(DictModel::getText)
.collect(Collectors.joining(","));
manifest.setSecurityLevelText(securityLevelText);
String drivePositionText = map.get("drive_position").stream().map(DictModel::getText)
.collect(Collectors.joining(","));
manifest.setDrivePositionText(drivePositionText);
result.setManifest(manifest);
// 如果不是合并查看列表页面
@@ -322,7 +332,6 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
// 历史版本信息
// 只允许法规管理员和超级管理员查看历史版本数据
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(StringUtils.isBlank(sysUser.getRoleIds())){
return result;
}
@@ -350,6 +359,13 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
if(Objects.isNull(lawsMarketStandardOld)){
return Result.error("数据不存在");
}
// 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin)
&& !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin)
&& !Objects.equals(lawsMarketStandardOld.getAuthor(),sysUser.getId())){
throw new JeroBootException("没有权限");
}
if(Objects.equals(lawsMarketStandardOld.getManifestStatus(),MarketStandardConstants.MANIFEST_STATUS_PUBLISH)){
return Result.error("数据已发布");
}
@@ -357,7 +373,6 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl<LawsMarketStandar
queryLawsMarketStandard.eq(LawsMarketStandard::getVersionFlag,lawsMarketStandardOld.getVersionFlag());
long l = count(queryLawsMarketStandard);
// 更新状态
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
LambdaUpdateWrapper<LawsMarketStandard> updateLawsMarketStandard = new LambdaUpdateWrapper<>();
updateLawsMarketStandard.eq(LawsMarketStandard::getId,id);
updateLawsMarketStandard.set(LawsMarketStandard::getReleaseDate,new Date());