From 17a448f3853430541390206b56e65790a4e806c4 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Mon, 6 Nov 2023 16:09:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AE=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E9=80=82=E7=94=A8=E6=A0=A1=E9=AA=8C=E5=88=A0=E9=99=A4=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../laws/common/constant/FieldCommon.java | 3 + .../service/impl/LawsCommonServiceImpl.java | 4 +- .../EnterpriseStandardAuthUserService.java | 6 ++ ...EnterpriseStandardAuthUserServiceImpl.java | 72 +++++++++++++++++++ 4 files changed, 84 insertions(+), 1 deletion(-) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java index 2f8510f2..f42ab6e8 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java @@ -150,5 +150,8 @@ public class FieldCommon { // 草案 public static final String FILE_DRAFT = "draft"; public static final String DEL_FLAG = "del_flag"; + public static final String TRY_FLAG = "try_flag"; + public static final String RELEASE_DATE = "release_date"; + public static final String TRIAL_PERIOD = "trial_period"; } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java index 067e2f08..63e19a56 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java @@ -175,8 +175,10 @@ public class LawsCommonServiceImpl implements ILawsCommonService { if (module.equals(TableNameEnum.ENTERPRISE_STANDARDS.getValue())) { // 是否能查看详情 esAuthUserService.detailFlagSet(infoPage.getRecords()); - // 是否能编辑删除 + // 是否能编辑 esAuthUserService.editFlagSet(infoPage.getRecords()); + // 是否能删除 + esAuthUserService.delFlagSet(infoPage.getRecords()); } // 是否收藏判断标识 collectionFlag(infoPage.getRecords()); diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardAuthUserService.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardAuthUserService.java index 735ddd92..cb9eb66a 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardAuthUserService.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/EnterpriseStandardAuthUserService.java @@ -28,6 +28,12 @@ public interface EnterpriseStandardAuthUserService extends IService> records); + /** + * 删除权限设置 + * @param records + */ + void delFlagSet(List> records); + boolean detailPermissionByUser(String standardNumber, String userId, String user); boolean verifyESDeleteAuth(String ids, String userId); diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardAuthUserServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardAuthUserServiceImpl.java index 20a4737e..b641f4fa 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardAuthUserServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/service/impl/EnterpriseStandardAuthUserServiceImpl.java @@ -1,6 +1,7 @@ package com.jero.modules.laws.enterprise.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.constant.enums.YesOrNoEnum; @@ -181,6 +182,77 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl> records) { + String userId = UserUtils.getUserId(); + SysUser currentUser = sysUserService.getById(userId); + List standardIds = new ArrayList<>(); + String username = currentUser.getUsername(); + records.forEach(kv -> standardIds.add(String.valueOf(kv.get(FieldCommon.ID)))); + List esList = enterpriseStandardService.list(new LambdaQueryWrapper() + .in(CollUtil.isNotEmpty(standardIds), LawsEnterpriseStandard::getId, standardIds) + .eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue())); + Map esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getId, e -> e)); + + // 设置是否适用 + records.forEach(kv -> kv.put(FieldCommon.TRY_FLAG, esMap.get(kv.get(FieldCommon.ID)).getTryFlag() == null ? "0" : esMap.get(kv.get(FieldCommon.ID)).getTryFlag())); + records.forEach(kv -> kv.put(FieldCommon.RELEASE_DATE, esMap.get(kv.get(FieldCommon.ID)).getReleaseDate())); + records.forEach(kv -> kv.put(FieldCommon.TRIAL_PERIOD, esMap.get(kv.get(FieldCommon.ID)).getTrialPeriod())); + // 只有试用期的企标才能删除 + + Date currentDate = new Date(); + // 获取当前用户的角色roleCode + List roleList = sysUserRoleService.getRole(currentUser.getUsername()); + // 管理员能够删除所有试用期的企标 + if (roleList != null && roleList.contains(FieldCommon.ROLE_ADMIN)) { + for (Map map : records) { + String tryFlag = String.valueOf(map.get(FieldCommon.TRY_FLAG)); + if (tryFlag.equals(YesOrNoEnum.NO.getValue())) { + map.put(FieldCommon.DEL_FLAG, false); + continue; + } + + Date releaseDate = (Date) map.get(FieldCommon.RELEASE_DATE); + int trialPeriodMonths = Integer.parseInt(String.valueOf(map.get(FieldCommon.TRIAL_PERIOD))); // 将试用周期转换为天数 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(releaseDate); + calendar.add(Calendar.MONTH, trialPeriodMonths); // 将试用周期加到发布日期上 + Date trialEndDate = calendar.getTime(); // 获取试用期结束日期 + + // 在适用周期之内的可以删除 + if (tryFlag.equals(YesOrNoEnum.YES.getValue()) && currentDate.compareTo(trialEndDate) <= 0) { + map.put(FieldCommon.DEL_FLAG, true); + } else { + map.put(FieldCommon.DEL_FLAG, false); + } + } + return; + } + + // 创建人只能删除自己的试用期的企标 + for (Map map : records) { + String createBy = (String) map.get(FieldCommon.CREATE_BY); + String tryFlag = String.valueOf(map.get(FieldCommon.TRY_FLAG)); + if (tryFlag.equals(YesOrNoEnum.NO.getValue())) { + map.put(FieldCommon.DEL_FLAG, false); + continue; + } + Date releaseDate = (Date) map.get(FieldCommon.RELEASE_DATE); + int trialPeriodMonths = Integer.parseInt(String.valueOf(map.get(FieldCommon.TRIAL_PERIOD))); // 将试用周期转换为天数 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(releaseDate); + calendar.add(Calendar.MONTH, trialPeriodMonths); // 将试用周期加到发布日期上 + Date trialEndDate = calendar.getTime(); // 获取试用期结束日期 + if (username.equals(createBy) && tryFlag.equals(YesOrNoEnum.YES.getValue()) + && currentDate.compareTo(trialEndDate) <= 0 ) { + map.put(FieldCommon.DEL_FLAG, true); + } else { + map.put(FieldCommon.DEL_FLAG, false); + } + } + return; + } + @Override public boolean detailPermissionByUser(String standardId, String standardNumber, String userId) { List departIdModels = sysUserDepartService.queryDepartIdsOfUser(userId);