123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- package com.qxgmat.service.inline;
- import com.github.pagehelper.Page;
- import com.nuliji.tools.AbstractService;
- import com.nuliji.tools.exception.ParameterException;
- import com.nuliji.tools.exception.SystemException;
- import com.nuliji.tools.mybatis.Example;
- import com.qxgmat.data.constants.enums.QuestionType;
- import com.qxgmat.data.constants.enums.module.PaperModule;
- import com.qxgmat.data.constants.enums.module.QuestionModule;
- import com.qxgmat.data.constants.enums.module.QuestionNoModule;
- import com.qxgmat.data.constants.enums.module.QuestionOrigin;
- import com.qxgmat.data.dao.UserPaperMapper;
- import com.qxgmat.data.dao.UserPaperQuestionMapper;
- import com.qxgmat.data.dao.entity.QuestionNo;
- import com.qxgmat.data.dao.entity.UserPaper;
- import com.qxgmat.data.dao.entity.UserPaperQuestion;
- import com.qxgmat.data.dao.entity.UserQuestion;
- import com.qxgmat.data.relation.UserPaperQuestionRelationMapper;
- import com.qxgmat.data.relation.entity.QuestionNoRelation;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.Resource;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.List;
- @Service
- public class UserPaperQuestionService extends AbstractService {
- private static final Logger logger = LoggerFactory.getLogger(UserPaperQuestionService.class);
- @Resource
- private UserPaperQuestionMapper userPaperQuestionMapper;
- @Resource
- private UserPaperQuestionRelationMapper userPaperQuestionRelationMapper;
- /**
- * 添加需要移除的错题
- * @param questionNoList
- */
- @Transactional
- public void addRemoveError(Integer userId, List<QuestionNoRelation> questionNoList){
- for(QuestionNoRelation questionNo : questionNoList){
- if (questionNo.getQuestion().getQuestionType().equals(QuestionType.AWA.key)){
- // 作文不算错题
- continue;
- }
- QuestionModule questionModule = QuestionModule.WithQuestionNo(QuestionNoModule.ValueOf(questionNo.getModule()));
- UserPaperQuestion paperQuestion = UserPaperQuestion.builder()
- .userId(userId)
- .questionModule(questionModule.key)
- .questionOrigin(QuestionOrigin.REMOVE_ERROR.key)
- .questionNoId(questionNo.getId())
- // 移出错题,没有对应paper
- .paperId(0)
- .build();
- UserPaperQuestion in = one(userPaperQuestionMapper, paperQuestion);
- if (in != null){
- continue;
- }
- add(paperQuestion);
- }
- }
- /**
- * 符合过滤次数的试题
- * @param userId
- * @param origin
- * @param questionNoIds
- * @param filterTimes
- * @return
- */
- public List<Integer> filterTimesQuestion(Integer userId, QuestionOrigin origin, QuestionModule module, List<Integer> questionNoIds, Integer filterTimes){
- List<UserPaperQuestion> filterQuestionList = userPaperQuestionRelationMapper.filterTimes(userId, origin.key, module.key, questionNoIds, filterTimes);
- if (filterQuestionList == null || filterQuestionList.size() == 0){
- return questionNoIds;
- }
- // 移除符合过滤条件的题目
- for(UserPaperQuestion question : filterQuestionList){
- questionNoIds.remove(question.getQuestionNoId());
- }
- return questionNoIds;
- }
- /**
- * 批量添加所有题目关系
- * @param userId
- * @param paperId
- * @param origin
- * @param module
- * @param questionNoIds
- */
- public void addOrigin(Integer userId, Integer paperId, QuestionOrigin origin, QuestionModule module, List<Integer> questionNoIds){
- for(Integer questionNoId : questionNoIds){
- UserPaperQuestion paperQuestion = UserPaperQuestion.builder()
- .userId(userId)
- .questionModule(module.key)
- .questionOrigin(origin.key)
- .questionNoId(questionNoId)
- .paperId(paperId)
- .build();
- add(paperQuestion);
- }
- }
- /**
- * 如果移除正确题目后,再次做错,就取消移除
- * @param userId
- * @param module
- * @param questionNoId
- */
- public void removeRemoveError(Integer userId, QuestionModule module, Integer questionNoId){
- Example example = new Example(UserPaperQuestion.class);
- example.and(
- example.createCriteria()
- .andEqualTo("userId", userId)
- .andEqualTo("questionModule", module.key)
- .andEqualTo("questionNoId", questionNoId)
- .andEqualTo("questionOrigin", QuestionOrigin.REMOVE_ERROR.key)
- );
- delete(userPaperQuestionMapper, example);
- }
- public UserPaperQuestion add(UserPaperQuestion paper){
- int result = insert(userPaperQuestionMapper, paper);
- paper = one(userPaperQuestionMapper, paper.getId());
- if(paper == null){
- throw new SystemException("组卷题目添加失败");
- }
- return paper;
- }
- public UserPaperQuestion edit(UserPaperQuestion paper){
- UserPaperQuestion in = one(userPaperQuestionMapper, paper.getId());
- if(in == null){
- throw new ParameterException("组卷题目不存在");
- }
- int result = update(userPaperQuestionMapper, paper);
- return paper;
- }
- public boolean delete(Number id){
- UserPaperQuestion in = one(userPaperQuestionMapper, id);
- if(in == null){
- throw new ParameterException("组卷题目不存在");
- }
- int result = delete(userPaperQuestionMapper, id);
- return result > 0;
- }
- public UserPaperQuestion get(Number id){
- UserPaperQuestion in = one(userPaperQuestionMapper, id);
- if(in == null){
- throw new ParameterException("组卷题目不存在");
- }
- return in;
- }
- public Page<UserPaperQuestion> select(int page, int pageSize){
- return select(userPaperQuestionMapper, page, pageSize);
- }
- public Page<UserPaperQuestion> select(Integer[] ids){
- return page(()->select(userPaperQuestionMapper, ids), 1, ids.length);
- }
- public List<UserPaperQuestion> select(Collection ids){
- return select(userPaperQuestionMapper, ids);
- }
- }
|