|
|
|
@ -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<SceneMedal> sceneMedals = sceneMedalService.selectSceneMedalList(new SceneMedal()); |
|
|
|
ArrayList<String> 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("操作成功"); |
|
|
|
} |
|
|
|
|