Browse Source

fix: 积分限制企业单独配置-NPE异常

李学松 2 years ago
parent
commit
3aef909cb6

+ 9 - 7
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -107,6 +107,7 @@ import com.qunzhixinxi.hnqz.admin.util.Html2ImageByJsWrapper;
 import com.qunzhixinxi.hnqz.admin.util.QRCodeGenerator;
 import com.qunzhixinxi.hnqz.admin.view.user.UserUpdateInput;
 import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
+import com.qunzhixinxi.hnqz.common.core.constant.enums.CommonFlag;
 import com.qunzhixinxi.hnqz.common.core.constant.enums.LoginTypeEnum;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
@@ -3588,19 +3589,21 @@ public class ApiController {
 					// 查询当前企业配置的积分限制
 					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, Object> submissionRuleMap = scoreLimitRuleList.stream()
-								.collect(Collectors.toMap(WmTaskSubmissionRule::getDeptId, WmTaskSubmissionRule::getRule));
+						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 = BeanUtil.toBean(submissionRuleMap.get(sysUser.getDeptId()), WmTaskSubmissionRule.SubmissionRule.class);
+							submissionRule = submissionRuleMap.get(sysUser.getDeptId());
 						} else {
-							submissionRule = BeanUtil.toBean(submissionRuleMap.get(1), WmTaskSubmissionRule.SubmissionRule.class);
+							submissionRule = submissionRuleMap.get(1);
 						}
 						limitValue = String.valueOf(submissionRule.getFrequency().get(0).get("quantity"));
 					} else if (StrUtil.isNotBlank(userTaskSubScore)) {
@@ -3609,9 +3612,8 @@ public class ApiController {
 
 					boolean fullFlag = wmTaskService.checkUserTaskSubScore(String.valueOf(userVO.getUserId()), limitValue);
 					if (fullFlag) {
-						String value = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
-						String info = StringUtils.isEmpty(value) ? "每日最多提交3万积分" : "每日最多提交" + Integer.parseInt(value) + "积分";
-						log.warn("系统当前限制积分上限:【{}】,提示:【{}】", value, info);
+						String info = String.format("每日最多提交%s积分", limitValue);
+						log.warn("系统当前限制积分上限:【{}】,提示:【{}】", limitValue, info);
 						return R.failed(info + ",积分+0");
 					}
 				}

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

@@ -166,19 +166,21 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 			// 查询当前企业配置的积分限制
 			List<WmTaskSubmissionRule> scoreLimitRuleList = taskSubmissionRuleService.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
 					.in(WmTaskSubmissionRule::getDeptId, CollUtil.newHashSet(deptId, 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, Object> submissionRuleMap = scoreLimitRuleList.stream()
-						.collect(Collectors.toMap(WmTaskSubmissionRule::getDeptId, WmTaskSubmissionRule::getRule));
+				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(deptId)) {
-					submissionRule = BeanUtil.toBean(submissionRuleMap.get(deptId), WmTaskSubmissionRule.SubmissionRule.class);
+					submissionRule = submissionRuleMap.get(deptId);
 				} else {
-					submissionRule = BeanUtil.toBean(submissionRuleMap.get(1), WmTaskSubmissionRule.SubmissionRule.class);
+					submissionRule = submissionRuleMap.get(1);
 				}
 				limitValue = String.valueOf(submissionRule.getFrequency().get(0).get("quantity"));
 			} else if (StrUtil.isNotBlank(userTaskSubScore)) {

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

@@ -13,8 +13,10 @@ import com.qunzhixinxi.hnqz.admin.api.vo.UserVO;
 import com.qunzhixinxi.hnqz.admin.config.UpmsConfig;
 import com.qunzhixinxi.hnqz.admin.entity.*;
 import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
+import com.qunzhixinxi.hnqz.admin.enums.LockEnum;
 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.util.R;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import lombok.AllArgsConstructor;
@@ -121,19 +123,21 @@ public class WmUserSignServiceImpl extends ServiceImpl<WmUserSignMapper, WmUserS
 			// 查询当前企业配置的积分限制
 			List<WmTaskSubmissionRule> scoreLimitRuleList = wmTaskSubmissionRuleService.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
 					.in(WmTaskSubmissionRule::getDeptId, CollUtil.newHashSet(sysU.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, Object> submissionRuleMap = scoreLimitRuleList.stream()
-						.collect(Collectors.toMap(WmTaskSubmissionRule::getDeptId, WmTaskSubmissionRule::getRule));
+				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(sysU.getDeptId())) {
-					submissionRule = BeanUtil.toBean(submissionRuleMap.get(sysU.getDeptId()), WmTaskSubmissionRule.SubmissionRule.class);
+					submissionRule = submissionRuleMap.get(sysU.getDeptId());
 				} else {
-					submissionRule = BeanUtil.toBean(submissionRuleMap.get(1), WmTaskSubmissionRule.SubmissionRule.class);
+					submissionRule = submissionRuleMap.get(1);
 				}
 				limitValue = String.valueOf(submissionRule.getFrequency().get(0).get("quantity"));
 			} else if (StrUtil.isNotBlank(userTaskSubScore)) {
@@ -142,9 +146,8 @@ public class WmUserSignServiceImpl extends ServiceImpl<WmUserSignMapper, WmUserS
 
 			Boolean fullFlag = wmTaskService.checkUserTaskSubScore(sysU.getUserId() + "", limitValue);
 			if (fullFlag) {
-				String value = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
-				String info = StringUtils.isEmpty(value) ? "每日最多提交3万积分" : "每日最多提交" + Integer.parseInt(value) + "积分";
-				log.warn("系统当前限制积分上限:【{}】,提示:【{}】", value, info);
+				String info = String.format("每日最多提交%s积分", limitValue);
+				log.warn("系统当前限制积分上限:【{}】,提示:【{}】", limitValue, info);
 				return R.failed(1, info);
 			}
 		}