Browse Source

fix: 月度积分上限需求修复2

lixuesong 1 year ago
parent
commit
ecd866abfa

+ 1 - 31
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -3211,37 +3211,7 @@ public class ApiController {
 				if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), tWmScorePackage.getPackageType1())
 						|| StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), tWmScorePackage.getPackageType1())) {
 
-					String limitValue = "30000";
-					// 查询当前企业配置的积分限制
-					List<WmTaskSubmissionRule> scoreLimitRuleList = taskSubmissionRuleService.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
-							.in(WmTaskSubmissionRule::getDeptId, CollUtil.newHashSet(sysUser.getDeptId(), 1))
-							.eq(WmTaskSubmissionRule::getOptFlag, CommonFlag.OptFlag.OK)
-							.eq(WmTaskSubmissionRule::getSubCategory, UpmsType.TaskSubCategory.SCORE_LIMIT));
-
-					// 公共参数配置的
-					String userTaskSubScore = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
-
-					if (CollUtil.isNotEmpty(scoreLimitRuleList)) {
-						Map<Integer, WmTaskSubmissionRule.SubmissionRule> submissionRuleMap = scoreLimitRuleList.stream()
-								.collect(Collectors.toMap(WmTaskSubmissionRule::getDeptId, rules ->
-										BeanUtil.toBean(rules.getRule().get(0), WmTaskSubmissionRule.SubmissionRule.class)));
-						WmTaskSubmissionRule.SubmissionRule submissionRule = null;
-						if (submissionRuleMap.containsKey(sysUser.getDeptId())) {
-							submissionRule = submissionRuleMap.get(sysUser.getDeptId());
-						} else {
-							submissionRule = submissionRuleMap.get(1);
-						}
-						limitValue = String.valueOf(submissionRule.getFrequency().get(0).get("quantity"));
-					} else if (StrUtil.isNotBlank(userTaskSubScore)) {
-						limitValue = userTaskSubScore;
-					}
-
-					boolean fullFlag = wmTaskService.checkUserTaskSubScore(String.valueOf(userVO.getUserId()), limitValue);
-					if (fullFlag) {
-						String info = String.format("每日最多提交%s积分", limitValue);
-						log.warn("系统当前限制积分上限:【{}】,提示:【{}】", limitValue, info);
-						return R.failed(info + ",积分+0");
-					}
+					wmTaskContentService.limitScore(sysUser.getUserId(), sysUser.getDeptId(), tWmScorePackage.getPackageType1());
 				}
 
 				List<WmScorePackageStatus> statusList = wmScorePackageStatusService.list(

+ 9 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskContentService.java

@@ -40,4 +40,13 @@ public interface WmTaskContentService extends IService<WmTaskContent> {
 	 * @return 创建结果
 	 */
 	boolean saveTaskContent1(WmTaskDTO.OnOutPartyCreate resource);
+
+	/**
+	 * 校验积分上线
+	 *
+	 * @param userId  用户id
+	 * @param deptId  部门id
+	 * @param pkgType 积分包类型
+	 */
+	void limitScore(Integer userId, Integer deptId, String pkgType);
 }

+ 32 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskContentServiceImpl.java

@@ -30,6 +30,7 @@ import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
 import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.WmDaHospitalMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskContentMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmUserSignMapper;
 import com.qunzhixinxi.hnqz.admin.service.SysPublicParamService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserService;
@@ -81,6 +82,7 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, WmTaskContent> implements WmTaskContentService {
 	private final WmTaskService wmTaskService;
+	private final WmTaskMapper wmTaskMapper;
 	private final SysUserService sysUserService;
 	private final WmTaskTypeService wmTaskTypeService;
 	private final WmScorePackageService wmScorePackageService;
@@ -150,9 +152,10 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 	 * @param deptId  部门id
 	 * @param pkgType 积分包类型
 	 */
-	private void limitScore(Integer userId, Integer deptId, String pkgType) {
+	public void limitScore(Integer userId, Integer deptId, String pkgType) {
 
-		if ("1".equals(pkgType)) {
+		if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), pkgType)
+				|| StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), pkgType)) {
 			String limitValue = "30000";
 			// 查询当前企业配置的积分限制
 			List<WmTaskSubmissionRule> scoreLimitRuleList = taskSubmissionRuleService.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
@@ -184,6 +187,33 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 				log.warn("系统当前限制积分上限:【{}】,提示:【{}】", limitValue, info);
 				throw new RuntimeException(info);
 			}
+
+			// 月度积分限制
+			String monthLimitValue;
+			List<WmTaskSubmissionRule> monthScoreLimitRuleList = taskSubmissionRuleService.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
+					.in(WmTaskSubmissionRule::getDeptId, CollUtil.newHashSet(deptId, 1))
+					.eq(WmTaskSubmissionRule::getOptFlag, CommonFlag.OptFlag.OK)
+					.eq(WmTaskSubmissionRule::getSubCategory, UpmsType.TaskSubCategory.MONTH_SCORE_LIMIT));
+			if (CollUtil.isNotEmpty(monthScoreLimitRuleList)) {
+				Map<Integer, WmTaskSubmissionRule.SubmissionRule> submissionRuleMap = monthScoreLimitRuleList.stream()
+						.collect(Collectors.toMap(WmTaskSubmissionRule::getDeptId, rules ->
+								BeanUtil.toBean(rules.getRule().get(0), WmTaskSubmissionRule.SubmissionRule.class)));
+				WmTaskSubmissionRule.SubmissionRule submissionRule = submissionRuleMap.containsKey(deptId) ? submissionRuleMap.get(deptId) : submissionRuleMap.get(1);
+				monthLimitValue = String.valueOf(submissionRule.getFrequency().get(0).get("quantity"));
+			} else {
+				monthLimitValue = "300000";
+			}
+
+			LocalDate localDate = LocalDate.now();
+			LocalDateTime startOfMonth = localDate.withDayOfMonth(1).atStartOfDay();
+			LocalDateTime startOfNextMonth = localDate.plusMonths(1).withDayOfMonth(1).atStartOfDay();
+			int total = wmTaskMapper.getUserTaskSubScore(String.valueOf(userId), startOfMonth, startOfNextMonth);
+
+			if (total >= Integer.parseInt(monthLimitValue)) {
+				String info = String.format("每月最多提交%s积分", monthLimitValue);
+				log.warn("系统当前限制月度积分上限:【{}】,提示:【{}】", monthLimitValue, info);
+				throw new BizException(info);
+			}
 		}
 	}
 

+ 4 - 65
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmUserSignServiceImpl.java

@@ -13,10 +13,10 @@ import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionRule;
 import com.qunzhixinxi.hnqz.admin.api.vo.UserVO;
 import com.qunzhixinxi.hnqz.admin.entity.*;
 import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
+import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmUserSignMapper;
 import com.qunzhixinxi.hnqz.admin.service.*;
-import com.qunzhixinxi.hnqz.common.core.constant.enums.CommonFlag;
 import com.qunzhixinxi.hnqz.common.core.exception.BizException;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
@@ -230,68 +230,6 @@ public class WmUserSignServiceImpl extends ServiceImpl<WmUserSignMapper, WmUserS
 		}
 	}
 
-	/**
-	 * 校验积分限制
-	 *
-	 * @param entId  企业ID
-	 * @param userId 用户ID
-	 */
-	private void checkLimitScore(Integer entId, Integer userId) {
-		String limitValue = "30000";
-		// 查询当前企业配置的积分限制
-		List<WmTaskSubmissionRule> scoreLimitRuleList = wmTaskSubmissionRuleService.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
-				.in(WmTaskSubmissionRule::getDeptId, CollUtil.newHashSet(entId, 1))
-				.eq(WmTaskSubmissionRule::getOptFlag, CommonFlag.OptFlag.OK)
-				.eq(WmTaskSubmissionRule::getSubCategory, UpmsType.TaskSubCategory.SCORE_LIMIT));
-
-		// 公共参数配置的
-		String userTaskSubScore = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
-
-		if (CollUtil.isNotEmpty(scoreLimitRuleList)) {
-			Map<Integer, WmTaskSubmissionRule.SubmissionRule> submissionRuleMap = scoreLimitRuleList.stream()
-					.collect(Collectors.toMap(WmTaskSubmissionRule::getDeptId, rules ->
-							BeanUtil.toBean(rules.getRule().get(0), WmTaskSubmissionRule.SubmissionRule.class)));
-			WmTaskSubmissionRule.SubmissionRule submissionRule = submissionRuleMap.containsKey(entId) ? submissionRuleMap.get(entId) : submissionRuleMap.get(1);
-			limitValue = String.valueOf(submissionRule.getFrequency().get(0).get("quantity"));
-		} else if (StrUtil.isNotBlank(userTaskSubScore)) {
-			limitValue = userTaskSubScore;
-		}
-
-		boolean fullFlag = wmTaskService.checkUserTaskSubScore(userId.toString(), limitValue);
-		if (fullFlag) {
-			String info = String.format("每日最多提交%s积分", limitValue);
-			log.warn("系统当前限制积分上限:【{}】,提示:【{}】", limitValue, info);
-			throw new BizException(info);
-		}
-
-		// 月度积分限制
-		String monthLimitValue;
-		List<WmTaskSubmissionRule> monthScoreLimitRuleList = wmTaskSubmissionRuleService.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
-				.in(WmTaskSubmissionRule::getDeptId, CollUtil.newHashSet(entId, 1))
-				.eq(WmTaskSubmissionRule::getOptFlag, CommonFlag.OptFlag.OK)
-				.eq(WmTaskSubmissionRule::getSubCategory, UpmsType.TaskSubCategory.MONTH_SCORE_LIMIT));
-		if (CollUtil.isNotEmpty(monthScoreLimitRuleList)) {
-			Map<Integer, WmTaskSubmissionRule.SubmissionRule> submissionRuleMap = monthScoreLimitRuleList.stream()
-					.collect(Collectors.toMap(WmTaskSubmissionRule::getDeptId, rules ->
-							BeanUtil.toBean(rules.getRule().get(0), WmTaskSubmissionRule.SubmissionRule.class)));
-			WmTaskSubmissionRule.SubmissionRule submissionRule = submissionRuleMap.containsKey(entId) ? submissionRuleMap.get(entId) : submissionRuleMap.get(1);
-			monthLimitValue = String.valueOf(submissionRule.getFrequency().get(0).get("quantity"));
-		} else {
-			monthLimitValue = "300000";
-		}
-
-		LocalDate localDate = LocalDate.now();
-		LocalDateTime startOfMonth = localDate.withDayOfMonth(1).atStartOfDay();
-		LocalDateTime startOfNextMonth = localDate.plusMonths(1).withDayOfMonth(1).atStartOfDay();
-		int total = wmTaskMapper.getUserTaskSubScore(String.valueOf(userId), startOfMonth, startOfNextMonth);
-
-		if (total >= Integer.parseInt(monthLimitValue)) {
-			String info = String.format("每月最多提交%s积分", monthLimitValue);
-			log.warn("系统当前限制月度积分上限:【{}】,提示:【{}】", monthLimitValue, info);
-			throw new BizException(info);
-		}
-	}
-
 	/**
 	 * 获取积分包领取明细
 	 *
@@ -705,8 +643,9 @@ public class WmUserSignServiceImpl extends ServiceImpl<WmUserSignMapper, WmUserS
 		WmScorePackageStatus packageStatus = checkPkgStatus(tWmScorePackage.getId(), sysU.getUserId());
 
 		// 校验积分限制
-		if ("1".equals(tWmScorePackage.getPackageType1())) {
-			checkLimitScore(sysU.getDeptId(), sysU.getUserId());
+		if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), tWmScorePackage.getPackageType1())
+				|| StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), tWmScorePackage.getPackageType1())) {
+			wmTaskContentService.limitScore(sysU.getUserId(), sysU.getDeptId(), "1");
 		}
 
 		// 设置参数 && 保存