|
@ -2,6 +2,7 @@ package com.ccsens.braintraining.service; |
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
import cn.hutool.core.lang.Snowflake; |
|
|
import cn.hutool.core.lang.Snowflake; |
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
import cn.hutool.core.util.StrUtil; |
|
|
import cn.hutool.core.util.StrUtil; |
|
|
import com.alibaba.fastjson.JSONArray; |
|
|
import com.alibaba.fastjson.JSONArray; |
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
import com.alibaba.fastjson.JSONObject; |
|
@ -11,6 +12,7 @@ import com.ccsens.braintraining.bean.vo.BrainVo; |
|
|
import com.ccsens.braintraining.bean.vo.RuleGenerateVo; |
|
|
import com.ccsens.braintraining.bean.vo.RuleGenerateVo; |
|
|
import com.ccsens.braintraining.bean.vo.RuleScoreVo; |
|
|
import com.ccsens.braintraining.bean.vo.RuleScoreVo; |
|
|
import com.ccsens.braintraining.persist.dao.BrainDao; |
|
|
import com.ccsens.braintraining.persist.dao.BrainDao; |
|
|
|
|
|
import com.ccsens.braintraining.persist.dao.RaffleActiveDao; |
|
|
import com.ccsens.braintraining.persist.mapper.*; |
|
|
import com.ccsens.braintraining.persist.mapper.*; |
|
|
import com.ccsens.braintraining.util.BrainTrainingCodeError; |
|
|
import com.ccsens.braintraining.util.BrainTrainingCodeError; |
|
|
import com.ccsens.braintraining.util.BrainTrainingConstant; |
|
|
import com.ccsens.braintraining.util.BrainTrainingConstant; |
|
@ -53,6 +55,10 @@ public class BrainService implements IBrainService { |
|
|
private TrainRuleScoreMapper trainRuleScoreMapper; |
|
|
private TrainRuleScoreMapper trainRuleScoreMapper; |
|
|
@Resource |
|
|
@Resource |
|
|
private TrainClassifyMapper trainClassifyMapper; |
|
|
private TrainClassifyMapper trainClassifyMapper; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private RaffleActiveDao raffleActiveDao; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private RaffleTimesMapper raffleTimesMapper; |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public BrainVo.Active generateTest(BrainDto.Equipment param, Long userId) { |
|
|
public BrainVo.Active generateTest(BrainDto.Equipment param, Long userId) { |
|
@ -201,6 +207,33 @@ public class BrainService implements IBrainService { |
|
|
record.setFinishStatus(BrainTrainingConstant.Train.TRAINING_FINISH_CLOSE); |
|
|
record.setFinishStatus(BrainTrainingConstant.Train.TRAINING_FINISH_CLOSE); |
|
|
trainActiveUserMapper.updateByPrimaryKeySelective(record); |
|
|
trainActiveUserMapper.updateByPrimaryKeySelective(record); |
|
|
log.info("修改用户活动:{}的状态为完成", param.getActiveUserId()); |
|
|
log.info("修改用户活动:{}的状态为完成", param.getActiveUserId()); |
|
|
|
|
|
//根据时间和设备id查询抽奖活动 判断当前抽奖下是否有脑力训练的任务
|
|
|
|
|
|
Long taskId = raffleActiveDao.queryTrainTask(score.getEquipmentId(),System.currentTimeMillis()); |
|
|
|
|
|
if(ObjectUtil.isNull(taskId)){ |
|
|
|
|
|
return score; |
|
|
|
|
|
} |
|
|
|
|
|
//用户是否完成过该任务
|
|
|
|
|
|
RaffleTimesExample raffleTimesExample = new RaffleTimesExample(); |
|
|
|
|
|
raffleTimesExample.createCriteria().andUserIdEqualTo(userId).andTaskIdEqualTo(taskId) |
|
|
|
|
|
.andFinishTypeNotEqualTo(BrainTrainingConstant.Raffle.TASK_FINISH_NO); |
|
|
|
|
|
List<RaffleTimes> raffleTimesList = raffleTimesMapper.selectByExample(raffleTimesExample); |
|
|
|
|
|
if(CollectionUtil.isNotEmpty(raffleTimesList)){ |
|
|
|
|
|
//已经完成直接返回
|
|
|
|
|
|
return score; |
|
|
|
|
|
} |
|
|
|
|
|
//未完成,删除未完成的记录
|
|
|
|
|
|
raffleTimesExample.createCriteria().andUserIdEqualTo(userId).andTaskIdEqualTo(taskId) |
|
|
|
|
|
.andFinishTypeEqualTo(BrainTrainingConstant.Raffle.TASK_FINISH_NO); |
|
|
|
|
|
RaffleTimes raffleTimes = new RaffleTimes(); |
|
|
|
|
|
raffleTimes.setRecStatus(BrainTrainingConstant.REC_STATUS.Deleted.value); |
|
|
|
|
|
raffleTimesMapper.updateByExampleSelective(raffleTimes,raffleTimesExample); |
|
|
|
|
|
//添加完成记录
|
|
|
|
|
|
raffleTimes.setId(snowflake.nextId()); |
|
|
|
|
|
raffleTimes.setFinishType(BrainTrainingConstant.Raffle.TASK_FINISH_BEFORE); |
|
|
|
|
|
raffleTimes.setUserId(userId); |
|
|
|
|
|
raffleTimes.setTaskId(taskId); |
|
|
|
|
|
raffleTimes.setRecStatus(BrainTrainingConstant.REC_STATUS.Normal.value); |
|
|
|
|
|
raffleTimesMapper.insertSelective(raffleTimes); |
|
|
return score; |
|
|
return score; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -274,9 +307,7 @@ public class BrainService implements IBrainService { |
|
|
private BigDecimal getSpaceScore(Long activeUserId, Long classifyId, Long now, List<BrainDto.UserAnswer> answerParams, String calculateParam) { |
|
|
private BigDecimal getSpaceScore(Long activeUserId, Long classifyId, Long now, List<BrainDto.UserAnswer> answerParams, String calculateParam) { |
|
|
// 正确的个数
|
|
|
// 正确的个数
|
|
|
List<Long> questionIds = new ArrayList<>(); |
|
|
List<Long> questionIds = new ArrayList<>(); |
|
|
answerParams.forEach(answerParam->{ |
|
|
answerParams.forEach(answerParam-> questionIds.add(answerParam.getQuestionId())); |
|
|
questionIds.add(answerParam.getQuestionId()); |
|
|
|
|
|
}); |
|
|
|
|
|
List<BrainVo.QuestionAnswer> answers = brainDao.queryQuestionAnswers(activeUserId, questionIds); |
|
|
List<BrainVo.QuestionAnswer> answers = brainDao.queryQuestionAnswers(activeUserId, questionIds); |
|
|
Map<Long, List<String>> answerMap = new HashMap<>(); |
|
|
Map<Long, List<String>> answerMap = new HashMap<>(); |
|
|
answers.forEach(questionAnswer->{ |
|
|
answers.forEach(questionAnswer->{ |
|
|