diff --git a/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/QuestionAnswerController.java b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/QuestionAnswerController.java index 1db4a28d..abc8aab9 100755 --- a/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/QuestionAnswerController.java +++ b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/QuestionAnswerController.java @@ -2,11 +2,14 @@ package com.zdxt.knowledge.controller; import com.zdxt.common.ZDResponse; import com.zdxt.common.controller.BaseController; +import com.zdxt.common.util.StringUtils; import com.zdxt.common.util.TableDataInfo; import com.zdxt.knowledge.domain.QuestionAnswer; import com.zdxt.knowledge.domain.QuestionCount; +import com.zdxt.knowledge.domain.SceneMedal; import com.zdxt.knowledge.domain.WechatUser; import com.zdxt.knowledge.service.IQuestionAnswerService; +import com.zdxt.knowledge.service.ISceneMedalService; import com.zdxt.knowledge.service.WechatService; import org.apache.commons.collections.CollectionUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; @@ -15,8 +18,10 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * 选择Controller @@ -35,6 +40,9 @@ public class QuestionAnswerController extends BaseController { @Autowired private WechatService wechatService; + @Autowired + private ISceneMedalService sceneMedalService; + @RequiresPermissions("system:answer:view") @GetMapping() public String answer() { @@ -78,10 +86,29 @@ public class QuestionAnswerController extends BaseController { //答错的所有题次 long errCount = list.stream().filter(item -> Objects.equals(item.getCorrect(), 0)).map(QuestionAnswer::getQuestionId).distinct().count(); long score = (count - errCount) * 10; - WechatUser wechatUser = new WechatUser(); - wechatUser.setGuid(questionCount.getUserId()); - wechatUser.setScore(wechatUser.getScore() + score); - wechatService.update(wechatUser); + WechatUser wechatUser = wechatService.selectUserById(questionCount.getUserId()); + if (Objects.nonNull(wechatUser)) { + //判断用户分数是否达到等级勋章设定,有则更新勋章个数 + long total = wechatUser.getScore() + score; + List sceneMedals = sceneMedalService.selectSceneMedalList(new SceneMedal()); + ArrayList medalNew = new ArrayList<>(); + sceneMedals.stream() + .filter(item -> Objects.equals(item.getType(), "2") && item.getLevel() <= total) + .peek(item -> { + if (!wechatUser.getMedal().contains(item.getGuid())) { + medalNew.add(item.getGuid()); + } + }) + .collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(medalNew)) { + wechatUser.setActive(0); + wechatUser.setMedal(StringUtils.isNotEmpty(wechatUser.getMedal()) + ? wechatUser.getMedal().concat(",").concat(String.join(",", medalNew)) + : String.join(",", medalNew)); + } + wechatUser.setScore(wechatUser.getScore() + score); + wechatService.update(wechatUser); + } } return ZDResponse.success("操作成功"); } diff --git a/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/WechatLoginController.java b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/WechatLoginController.java index adb9d34e..6caeb8ab 100755 --- a/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/WechatLoginController.java +++ b/lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/WechatLoginController.java @@ -2,6 +2,7 @@ package com.zdxt.knowledge.controller; import com.zdxt.common.ZDResponse; import com.zdxt.common.controller.BaseController; +import com.zdxt.common.util.StringUtils; import com.zdxt.common.util.TableDataInfo; import com.zdxt.knowledge.domain.SceneMedal; import com.zdxt.knowledge.domain.WechatLoginRequest; @@ -135,7 +136,7 @@ public class WechatLoginController extends BaseController { return ZDResponse.success("0", null); } // 否则更新 - medalStr += "," + medalObj.getGuid(); + medalStr += StringUtils.isNotEmpty(medalStr) ? "," + medalObj.getGuid() : medalObj.getGuid(); wechatUser.setMedal(medalStr); wechatUser.setActive(0); return wechatService.update(wechatUser) > 0