123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050 |
- package com.qxgmat.controller.api;
- import com.alibaba.fastjson.JSONObject;
- import com.github.pagehelper.Page;
- import com.nuliji.tools.*;
- import com.nuliji.tools.exception.AuthException;
- import com.nuliji.tools.exception.ParameterException;
- import com.qxgmat.data.constants.enums.QuestionType;
- import com.qxgmat.data.constants.enums.ServiceKey;
- import com.qxgmat.data.constants.enums.logic.ExerciseLogic;
- import com.qxgmat.data.constants.enums.module.*;
- import com.qxgmat.data.constants.enums.status.DirectionStatus;
- import com.qxgmat.data.dao.entity.*;
- import com.qxgmat.data.inline.UserQuestionStat;
- import com.qxgmat.data.relation.entity.QuestionNoRelation;
- import com.qxgmat.data.relation.entity.UserReportRelation;
- import com.qxgmat.dto.admin.request.QuestionNoDto;
- import com.qxgmat.dto.extend.*;
- import com.qxgmat.dto.request.*;
- import com.qxgmat.dto.response.*;
- import com.qxgmat.help.ShiroHelp;
- import com.qxgmat.service.*;
- import com.qxgmat.service.extend.*;
- import com.qxgmat.service.inline.*;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.*;
- import javax.servlet.http.HttpSession;
- import java.util.*;
- import java.util.stream.Collectors;
- @RestController
- @RequestMapping("/api/question")
- @Api(tags = "题目", description = "题目接口")
- public class QuestionController {
- @Autowired
- private ShiroHelp shiroHelp;
- @Autowired
- private PreviewService previewService;
- @Autowired
- private ExercisePaperService exercisePaperService;
- @Autowired
- private ExerciseStructService exerciseStructService;
- @Autowired
- private ExerciseService exerciseService;
- @Autowired
- private ExaminationPaperService examinationPaperService;
- @Autowired
- private ExaminationStructService examinationStructService;
- @Autowired
- private ExaminationService examinationService;
- @Autowired
- private QuestionNoService questionNoService;
- @Autowired
- private QuestionService questionService;
- @Autowired
- private SentenceQuestionService sentenceQuestionService;
- @Autowired
- private TextbookQuestionService textbookQuestionService;
- @Autowired
- private SentencePaperService sentencePaperService;
- @Autowired
- private TextbookPaperService textbookPaperService;
- @Autowired
- private TextbookLibraryService textbookLibraryService;
- @Autowired
- private UserQuestionService userQuestionService;
- @Autowired
- private UserCollectQuestionService userCollectQuestionService;
- @Autowired
- private UserNoteQuestionService userNoteQuestionService;
- @Autowired
- private UserAskQuestionService userAskQuestionService;
- @Autowired
- private UserCourseService userCourseService;
- @Autowired
- private UserOrderService userOrderService;
- @Autowired
- private UserOrderRecordService userOrderRecordService;
- @Autowired
- private UserReportService userReportService;
- @Autowired
- private UserPaperService userPaperService;
- @Autowired
- private UserServiceService userServiceService;
- @Autowired
- private QuestionFlowService questionFlowService;
- @Autowired
- private CourseExtendService courseExtendService;
- @RequestMapping(value = "/search/stem", method = RequestMethod.GET)
- @ApiOperation(value = "搜索题目编号列表:题干搜索", httpMethod = "GET")
- public Response<PageMessage<QuestionNoDetailDto>> searchStem(
- @RequestParam(required = false, defaultValue = "1") int page,
- @RequestParam(required = false, defaultValue = "10") int size,
- @RequestParam(required = false) String keyword,
- @RequestParam(required = false) String[] questionTypes,
- @RequestParam(required = false) String module,
- @RequestParam(required = false) Integer[] structIds,
- @RequestParam(required = false) String place,
- @RequestParam(required = false) String difficult,
- @RequestParam(required = false, defaultValue = "id") String order, // collect_number, correct, time, relation_score
- @RequestParam(required = false, defaultValue = "desc") String direction,
- HttpSession session) {
- User user = (User) shiroHelp.getLoginUser();
- // 过滤千行cat的数据
- // List<ExaminationStruct> structs = examinationStructService.main();
- // ExaminationStruct qxCatStruct = structs.stream().filter((row)-> row.getExtend().equals(ServiceKey.QX_CAT.key)).findFirst().get();
- Page<QuestionNoRelation> p = questionNoService.searchStemFulltext(page, size, keyword, questionTypes, module, structIds, place, difficult, null, order, DirectionStatus.ValueOf(direction));
- List<QuestionNoDetailDto> pr = Transform.convert(p, QuestionNoDetailDto.class);
- if(user!= null){
- Collection questionIds = Transform.getIds(p, QuestionNoRelation.class, "questionId");
- List<UserCollectQuestion> userCollectQuestionList = userCollectQuestionService.listByUserAndQuestions(user.getId(), questionIds);
- Map collectMap = Transform.getMap(userCollectQuestionList, UserCollectQuestion.class, "questionId", "id");
- List<UserNoteQuestion> userNoteQuestionList = userNoteQuestionService.listByUserAndQuestions(user.getId(), questionIds);
- Map noteMap = Transform.getMap(userNoteQuestionList, UserNoteQuestion.class, "questionId", "id");
- for(QuestionNoDetailDto dto : pr){
- dto.setCollect(collectMap.containsKey(dto.getQuestionId()));
- dto.setNote(noteMap.containsKey(dto.getQuestionId()));
- }
- }
- return ResponseHelp.success(pr, page, size, p.getTotal());
- }
- @RequestMapping(value = "/search/no", method = RequestMethod.GET)
- @ApiOperation(value = "搜索题目编号列表:题目编号搜索", httpMethod = "GET")
- public Response<PageMessage<QuestionNoDto>> searchNo(
- @RequestParam(required = false, defaultValue = "1") int page,
- @RequestParam(required = false, defaultValue = "5") int size,
- @RequestParam(required = true) String keyword,
- @RequestParam(required = false) String module,
- HttpSession session) {
- // 过滤千行cat的数据
- // List<ExaminationStruct> structs = examinationStructService.main();
- // ExaminationStruct qxCatStruct = structs.stream().filter((row)-> row.getExtend().equals(ServiceKey.QX_CAT.key)).findFirst().get();
- Page<QuestionNo> p = questionNoService.searchNoFulltext(page, size, keyword, module, null);
- List<QuestionNoDto> pr = Transform.convert(p, QuestionNoDto.class);
- return ResponseHelp.success(pr, page, size, p.getTotal());
- }
- @RequestMapping(value = "/info", method = RequestMethod.GET)
- @ApiOperation(value = "获取题目信息", notes = "获取题目信息", httpMethod = "GET")
- public Response<UserQuestionDetailDto> info(
- @RequestParam(required = true) Integer questionNoId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- QuestionNo questionNo = questionNoService.get(questionNoId);
- QuestionNoModule questionNoModule = QuestionNoModule.ValueOf(questionNo.getModule());
- QuestionModule module = QuestionModule.WithQuestionNo(questionNoModule);
- UserQuestion userQuestion = UserQuestion.builder()
- .questionId(questionNo.getQuestionId())
- .questionNoId(questionNoId)
- .questionModule(module.key)
- .build();
- UserQuestionDetailDto dto = Transform.convert(userQuestion, UserQuestionDetailDto.class);
- dto.setQuestionNo(Transform.convert(questionNo, QuestionNoExtendDto.class));
- Question question = questionService.get(userQuestion.getQuestionId());
- dto.setQuestion(Transform.convert(question, QuestionDetailExtendDto.class));
- if (user!=null){
- UserCollectQuestion collect = userCollectQuestionService.getByUserAndQuestion(user.getId(), userQuestion.getQuestionId());
- dto.setCollect(collect != null);
- UserNoteQuestion userNoteQuestion = userNoteQuestionService.getByUserAndQuestion(user.getId(), userQuestion.getQuestionId());
- dto.setNote(Transform.convert(userNoteQuestion, UserNoteQuestionExtendDto.class));
- }
- List<UserAskQuestion> userAskQuestionList = userAskQuestionService.listByQuestion(userQuestion.getQuestionId(), true);
- dto.setAsks(Transform.convert(userAskQuestionList, UserAskQuestionExtendDto.class));
- if (question.getAssociationContent() != null){
- List<QuestionNoRelation> associations = questionNoService.listWithRelationByIds(question.getAssociationContent());
- Collection questions = Transform.getIds(associations, QuestionNoRelation.class, "question");
- dto.setAssociations(Transform.convert(questions, QuestionBaseExtendDto.class));
- }
- List<QuestionNo> questionNoList = questionNoService.listByQuestion(userQuestion.getQuestionId());
- dto.setQuestionNos(Transform.convert(questionNoList, QuestionNoExtendDto.class));
- // 获取提问权限
- if (user!= null){
- Integer recordId = questionFlowService.questionRelationCourse(user.getId(), null, QuestionType.ValueOf(question.getQuestionType()));
- if (recordId != null){
- dto.setQuestionStatus(1);
- }
- }
- if(dto.getQuestionStatus() == null){
- dto.setQuestionStatus(questionFlowService.questionStatus(questionNo));
- }
- return ResponseHelp.success(dto);
- }
- @RequestMapping(value = "/exercise/progress", method = RequestMethod.GET)
- @ApiOperation(value = "练习进度", httpMethod = "GET")
- public Response<List<UserExerciseGroupDto>> exerciseProgress(
- @RequestParam(required = true) Integer structId, // 第二层,查询第4层,以及第三层汇总
- HttpSession session) {
- User user = (User) shiroHelp.getLoginUser();
- List<ExerciseStruct> three = exerciseStructService.children(structId, 0);
- List<UserExerciseGroupDto> p = new ArrayList<>(three.size());
- for(ExerciseStruct struct : three){
- UserExerciseGroupDto dto = Transform.convert(struct, UserExerciseGroupDto.class);
- // 获取第三层所有题目,并获取题目统计
- List<QuestionNo> list = questionNoService.listByStruct(StructModule.EXERCISE, struct.getId());
- dto.setStat(questionNoService.statPaper(list));
- dto.setQuestionNumber(list.size());
- Map<Object, UserQuestionStat> userQuestionStatMap = null;
- if(user != null){
- Collection questionNoIds = Transform.getIds(list, QuestionNo.class, "id");
- List<UserQuestion> userQuestionList = userQuestionService.listByQuestionNo(user.getId(), QuestionModule.BASE, questionNoIds);
- userQuestionStatMap = userQuestionService.statQuestionNoMap(userQuestionList);
- dto.setUserStat(userQuestionService.statQuestion(userQuestionList));
- if (list.size() > userQuestionStatMap.size()){
- dto.setUserNumber(userQuestionStatMap.size());
- dto.setMinTimes(0);
- }else{
- int minTimes = 0;
- // 统计最小轮的已做题数
- for(UserQuestionStat stat : userQuestionStatMap.values()){
- if(stat.getUserNumber() < minTimes || minTimes == 0) minTimes = stat.getUserNumber();
- }
- int userNumber = 0;
- for(UserQuestionStat stat : userQuestionStatMap.values()){
- if(stat.getUserNumber() > minTimes) userNumber += 1;
- }
- dto.setMinTimes(minTimes);
- dto.setUserNumber(userNumber);
- }
- }
- // 作文、阅读没有第4层
- // 获取第四层节点
- List<ExerciseStruct> children = exerciseStructService.children(struct.getId(), 0);
- if (children == null || children.size() == 0){
- // 以下属的paper作为children
- List<ExercisePaper> paperList = exercisePaperService.listByLogic(struct.getId(), 0, ExerciseLogic.NO, null);
- List<UserExerciseGroupExtendDto> childrenDtos = new ArrayList<>(paperList.size());
- Integer start = 0;
- for(ExercisePaper child : paperList){
- UserExerciseGroupExtendDto extendDto = new UserExerciseGroupExtendDto();
- extendDto.setId(child.getId());
- if (child.getQuestionNumber() > 1){
- extendDto.setTitle((start+1) + "-"+(start+child.getQuestionNumber()));
- start += child.getQuestionNumber();
- }else{
- extendDto.setTitle(child.getNo().toString());
- }
- extendDto.setQuestionNumber(child.getQuestionNumber());
- if(user != null){
- int minTimes = 0;
- int userQuestionNumber = 0;
- boolean flag = true;
- for(int questionNoId : child.getQuestionNoIds()){
- UserQuestionStat stat = userQuestionStatMap.get(questionNoId);
- if (stat == null) {
- flag = false;
- break;
- }
- if (stat.getUserNumber() < minTimes || minTimes == 0) minTimes = stat.getUserNumber();
- }
- if (!flag) minTimes = 0;
- for(int questionNoId : child.getQuestionNoIds()){
- UserQuestionStat stat = userQuestionStatMap.get(questionNoId);
- if (stat != null && stat.getUserNumber() > minTimes) userQuestionNumber += 1;
- }
- extendDto.setUserNumber(userQuestionNumber);
- extendDto.setMinTimes(minTimes);
- }
- extendDto.setType("paper");
- childrenDtos.add(extendDto);
- }
- if (user != null){
- Collection ids = Transform.getIds(paperList, ExercisePaper.class, "id");
- List<UserPaper> userPaperList = userPaperService.listWithOrigin(user.getId(), PaperOrigin.EXERCISE, ids, null);
- // 绑定userPaperId,用于关联report
- Map userPaperMap = Transform.getMap(userPaperList, UserPaper.class, "originId", "id");
- Transform.combine(childrenDtos, userPaperMap, UserExerciseGroupExtendDto.class, "id", "userPaperId");
- // 获取最后一次作业结果
- Collection paperIds = Transform.getIds(userPaperList, UserPaper.class, "id");
- List<UserReport> reportList = userReportService.listWithLast(paperIds);
- Transform.combine(childrenDtos, reportList, UserExerciseGroupExtendDto.class, "userPaperId", "report", UserReport.class, "paperId", UserReportExtendDto.class);
- }
- dto.setChildren(childrenDtos);
- }else{
- // 以struct作为children
- List<UserExerciseGroupExtendDto> childrenDtos = new ArrayList<>(children.size());
- for(ExerciseStruct child : children){
- UserExerciseGroupExtendDto extendDto = new UserExerciseGroupExtendDto();
- extendDto.setId(child.getId());
- extendDto.setTitleEn(child.getTitleEn());
- extendDto.setTitleZh(child.getTitleZh());
- List<QuestionNo> childQuestionList = list.stream().filter((q)-> Arrays.stream(q.getModuleStruct()).filter((r)->r==child.getId()).count()>0).collect(Collectors.toList());
- extendDto.setQuestionNumber(childQuestionList.size());
- if (user != null){
- int minTimes = 0;
- int userQuestionNumber = 0;
- boolean flag = true;
- for(QuestionNo questionNo : childQuestionList){
- UserQuestionStat stat = userQuestionStatMap.get(questionNo.getId());
- if (stat == null) {
- flag = false;
- break;
- }
- if (stat.getUserNumber() < minTimes || minTimes == 0) minTimes = stat.getUserNumber();
- }
- if (!flag) minTimes = 0;
- for(QuestionNo questionNo : childQuestionList){
- UserQuestionStat stat = userQuestionStatMap.get(questionNo.getId());
- if (stat != null && stat.getUserNumber() > minTimes) userQuestionNumber += 1;
- }
- extendDto.setUserNumber(userQuestionNumber);
- extendDto.setMinTimes(minTimes);
- }
- extendDto.setType("struct");
- childrenDtos.add(extendDto);
- }
- dto.setChildren(childrenDtos);
- }
- p.add(dto);
- }
- return ResponseHelp.success(p);
- }
- @RequestMapping(value = "/exercise/place", method = RequestMethod.GET)
- @ApiOperation(value = "练习组卷考点分组条件", httpMethod = "GET")
- public Response<List<String>> exercisePlace(
- @RequestParam(required = true) Integer structId, // 查询第4层
- HttpSession session) {
- return ResponseHelp.success(exercisePaperService.groupPlace(structId));
- }
- @RequestMapping(value = "/exercise/list", method = RequestMethod.GET)
- @ApiOperation(value = "练习组卷列表", httpMethod = "GET")
- public Response<PageMessage<UserExercisePaperDto>> listExercisePaper(
- @RequestParam(required = false, defaultValue = "1") int page,
- @RequestParam(required = false, defaultValue = "100") int size,
- @RequestParam(required = true) Integer structId,
- @RequestParam(required = true) String logic,
- @RequestParam(required = false) String logicExtend,
- @RequestParam(required = false) Integer times,
- HttpSession session) {
- User user = (User) shiroHelp.getLoginUser();
- Page<ExercisePaper> p = exerciseService.list(page, size, structId, user != null ? user.getId():null, ExerciseLogic.ValueOf(logic), logicExtend, times);
- List<UserExercisePaperDto> pr = Transform.convert(p, UserExercisePaperDto.class);
- // 获取试卷统计信息
- Map<Integer, Integer[]> questionNoIdsMap = new HashMap<>();
- for(ExercisePaper paper : p){
- questionNoIdsMap.put(paper.getId(), paper.getQuestionNoIds());
- }
- Map statMap = questionNoService.statPaperMap(questionNoIdsMap);
- Transform.combine(pr, statMap, UserExercisePaperDto.class, "id", "stat");
- if (user != null){
- // 获取做题记录
- Collection ids = Transform.getIds(p, ExercisePaper.class, "id");
- List<UserPaper> paperList = userPaperService.listWithOrigin(user.getId(), PaperOrigin.EXERCISE, ids, null);
- Transform.combine(pr, paperList, UserExercisePaperDto.class, "id", "paper", UserPaper.class, "originId", UserPaperBaseExtendDto.class);
- // 绑定userPaperId,用于关联report
- Map userPaperMap = Transform.getMap(paperList, UserPaper.class, "originId", "id");
- Transform.combine(pr, userPaperMap, UserExercisePaperDto.class, "id", "userPaperId");
- // 获取最后一次作业结果
- Collection paperIds = Transform.getIds(paperList, UserPaper.class, "id");
- List<UserReport> reportList = userReportService.listWithLast(paperIds);
- Transform.combine(pr, reportList, UserExercisePaperDto.class, "userPaperId", "report", UserReport.class, "paperId", UserReportExtendDto.class);
- }
- return ResponseHelp.success(pr, page, size, p.getTotal());
- }
- @RequestMapping(value = "/examination/info", method = RequestMethod.GET)
- @ApiOperation(value = "模考信息", httpMethod = "GET")
- public Response<UserExaminationInfoDto> info(HttpSession session) {
- User user = (User) shiroHelp.getLoginUser();
- UserExaminationInfoDto dto = new UserExaminationInfoDto();
- if (user != null){
- UserService userService = userServiceService.getService(user.getId(), ServiceKey.QX_CAT);
- dto.setHasService(userService != null);
- UserOrderRecord record = userOrderRecordService.getUnUseService(user.getId(), ServiceKey.QX_CAT);
- dto.setUnUseRecord(Transform.convert(record, UserServiceRecordExtendDto.class));
- dto.setReset(userService != null && userService.getIsReset() > 0);
- dto.setStartTime(userService!=null ? userService.getStartTime() : null);
- dto.setExpireTime(userService != null ? userService.getExpireTime() : null);
- dto.setCanReset(examinationService.isFinishCat(user.getId()));
- }
- return ResponseHelp.success(dto);
- }
- @RequestMapping(value = "/examination/progress", method = RequestMethod.GET)
- @ApiOperation(value = "模考进度", httpMethod = "GET")
- public Response<List<UserExaminationGroupDto>> examinationProgress(
- @RequestParam(required = true) Integer structId, // 第一层,查询第三层,以及第二层汇总
- HttpSession session) {
- User user = (User) shiroHelp.getLoginUser();
- List<ExaminationStruct> two = examinationStructService.children(structId, 0);
- List<UserExaminationGroupDto> p = new ArrayList<>(two.size());
- for(ExaminationStruct struct : two){
- UserExaminationGroupDto dto = Transform.convert(struct, UserExaminationGroupDto.class);
- ServiceKey serviceKey = ServiceKey.ValueOf(struct.getExtend());
- dto.setNeedService(serviceKey != null);
- dto.setHasService(true);
- // 获取第三层节点
- // 以下属的paper作为children
- List<ExaminationPaper> paperList = examinationPaperService.listByTwo(struct.getId());
- dto.setPaperNumber(paperList.size());
- dto.setMinTimes(0);
- if(user != null){
- if (serviceKey != null){
- // 服务, 判断对应服务状态
- UserService userService = userServiceService.getService(user.getId(), serviceKey);
- dto.setHasService(userService!= null);
- dto.setExpireTime(userService != null ? userService.getExpireTime() : null);
- UserOrderRecord record = userOrderRecordService.getUnUseService(user.getId(), serviceKey);
- dto.setUnUseRecord(Transform.convert(record, UserServiceRecordExtendDto.class));
- }
- Collection ids = Transform.getIds(paperList, ExaminationPaper.class, "id");
- List<UserPaper> userPaperList = userPaperService.listWithOrigin(user.getId(), PaperOrigin.EXAMINATION, ids, null);
- userPaperList = userPaperList.stream().filter((q)-> q.getFinishTimes()>0).collect(Collectors.toList());
- if (paperList.size() > userPaperList.size()){
- dto.setUserNumber(userPaperList.size());
- dto.setMinTimes(0);
- }else{
- int minTimes = 0;
- // 统计最小轮的已做题数
- for(UserPaper userPaper : userPaperList){
- if(userPaper.getFinishTimes() < minTimes || minTimes == 0) minTimes = userPaper.getFinishTimes();
- }
- int userNumber = 0;
- for(UserPaper userPaper : userPaperList){
- if(userPaper.getFinishTimes() > minTimes) userNumber += 1;
- }
- dto.setUserNumber(userNumber);
- }
- }
- p.add(dto);
- }
- return ResponseHelp.success(p);
- }
- @RequestMapping(value = "/examination/list", method = RequestMethod.GET)
- @ApiOperation(value = "模考组卷列表", httpMethod = "GET")
- public Response<PageMessage<UserExaminationPaperDto>> examinationPaperList(
- @RequestParam(required = false, defaultValue = "1") int page,
- @RequestParam(required = false, defaultValue = "100") int size,
- @RequestParam(required = true) Integer structId,
- @RequestParam(required = false) Integer times,
- HttpSession session) {
- User user = (User) shiroHelp.getLoginUser();
- ExaminationStruct struct = examinationStructService.get(structId);
- ServiceKey serviceKey = ServiceKey.ValueOf(struct.getExtend());
- if (serviceKey == ServiceKey.QX_CAT){
- if (user == null){
- throw new ParameterException("请先登录");
- }
- if (!userServiceService.hasService(user.getId(), serviceKey)){
- throw new ParameterException("请先开通模考");
- }
- }
- PageResult<ExaminationPaper> p = examinationService.list(page, size, structId, user != null ? user.getId():null, serviceKey == ServiceKey.QX_CAT && user != null ? user.getQxCat() : null, times);
- List<UserExaminationPaperDto> pr = Transform.convert(p, UserExaminationPaperDto.class);
- if (user != null){
- // 获取做题记录
- Collection ids = Transform.getIds(p, ExaminationPaper.class, "id");
- List<UserPaper> paperList;
- if (serviceKey == ServiceKey.QX_CAT){
- // cat模考,根据情况获取对应试题列表
- paperList = userPaperService.listWithCat(user.getId(), ids, user.getQxCat());
- }else{
- paperList = userPaperService.listWithOrigin(user.getId(), PaperOrigin.EXAMINATION, ids, null);
- }
- Transform.combine(pr, paperList, UserExaminationPaperDto.class, "id", "paper", UserPaper.class, "originId", UserPaperBaseExtendDto.class);
- // 绑定userPaperId,用于关联report
- Map userPaperMap = Transform.getMap(paperList, UserPaper.class, "originId", "id");
- Transform.combine(pr, userPaperMap, UserExaminationPaperDto.class, "id", "userPaperId");
- // 获取最后一次结果
- Collection paperIds = Transform.getIds(paperList, UserPaper.class, "id");
- List<UserReport> reportList = userReportService.listWithLast(paperIds);
- Transform.combine(pr, reportList, UserExaminationPaperDto.class, "id", "report", UserReport.class, "originId", UserReportExtendDto.class);
- if (serviceKey == ServiceKey.QX_CAT && user.getQxCat() > 0){
- // 获取上一遍模考成绩
- UserService userService = userServiceService.getServiceBase(user.getId(), serviceKey);
- if (userService.getIsReset() > 0){
- List<UserPaper> prevPaperList = userPaperService.listWithCat(user.getId(), ids, user.getQxCat() - 1);
- Transform.combine(pr, prevPaperList, UserExaminationPaperDto.class, "id", "prevPaper", UserPaper.class, "originId", UserPaperBaseExtendDto.class);
- // 绑定userPaperId,用于关联report
- Map prevUserPaperMap = Transform.getMap(prevPaperList, UserPaper.class, "originId", "id");
- Transform.combine(pr, prevUserPaperMap, UserExaminationPaperDto.class, "id", "prevUserPaperId");
- // 获取最后一次结果
- Collection prevPaperIds = Transform.getIds(prevPaperList, UserPaper.class, "id");
- List<UserReport> prevReportList = userReportService.listWithLastNoReset(prevPaperIds);
- Transform.combine(pr, prevReportList, UserExaminationPaperDto.class, "id", "prevReport", UserReport.class, "paperId", UserReportExtendDto.class);
- }
- }
- }
- return ResponseHelp.success(pr, page, size, p.getTotal());
- }
- @RequestMapping(value = "/base", method = RequestMethod.GET)
- @ApiOperation(value = "获取题目详情", notes = "根据题目序号获取题目", httpMethod = "GET")
- public Response<UserQuestionBaseDto> base(
- @RequestParam(required = true) Integer userReportId,
- @RequestParam(required = true) Integer no,
- @RequestParam(required = false) String stage
- ) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- if (no == null || no == 0){
- no = 1;
- }
- UserQuestion userQuestion = userQuestionService.getByReportAndNo(user.getId(), userReportId, no, stage);
- UserQuestionBaseDto dto = Transform.convert(userQuestion, UserQuestionBaseDto.class);
- return ResponseHelp.success(dto);
- }
- @RequestMapping(value = "/detail", method = RequestMethod.GET)
- @ApiOperation(value = "获取题目详情", notes = "获取题目详情", httpMethod = "GET")
- public Response<UserQuestionDetailDto> detail(
- @RequestParam(required = true) Integer userQuestionId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- UserQuestion userQuestion = userQuestionService.get(userQuestionId);
- UserQuestionDetailDto dto = Transform.convert(userQuestion, UserQuestionDetailDto.class);
- UserReport userReport = userReportService.get(userQuestion.getReportId());
- dto.setReport(Transform.convert(userReport, UserReportExtendDto.class));
- UserPaper userPaper = userPaperService.get(userReport.getPaperId());
- dto.setPaper(Transform.convert(userPaper, UserPaperBaseExtendDto.class));
- Question question = questionService.get(userQuestion.getQuestionId());
- dto.setQuestion(Transform.convert(question, QuestionDetailExtendDto.class));
- if (user != null){
- UserCollectQuestion collect = userCollectQuestionService.getByUserAndQuestion(user.getId(), userQuestion.getQuestionId());
- dto.setCollect(collect != null);
- UserNoteQuestion userNoteQuestion = userNoteQuestionService.getByUserAndQuestion(user.getId(), userQuestion.getQuestionId());
- dto.setNote(Transform.convert(userNoteQuestion, UserNoteQuestionExtendDto.class));
- }
- List<UserAskQuestion> userAskQuestionList = userAskQuestionService.listByQuestion(userQuestion.getQuestionId(), true);
- dto.setAsks(Transform.convert(userAskQuestionList, UserAskQuestionExtendDto.class));
- if (question.getAssociationContent() != null){
- List<QuestionNoRelation> associations = questionNoService.listWithRelationByIds(question.getAssociationContent());
- Collection questions = Transform.getIds(associations, QuestionNoRelation.class, "question");
- dto.setAssociations(Transform.convert(questions, QuestionBaseExtendDto.class));
- }
- List<QuestionNo> questionNoList = questionNoService.listByQuestion(userQuestion.getQuestionId());
- dto.setQuestionNos(Transform.convert(questionNoList, QuestionNoExtendDto.class));
- QuestionNo questionNo = questionNoService.get(userQuestion.getQuestionNoId());
- dto.setQuestionNo(Transform.convert(questionNo, QuestionNoExtendDto.class));
- // 获取提问权限
- PaperOrigin origin = PaperOrigin.ValueOf(userReport.getPaperOrigin());
- if (user != null){
- Integer recordId = questionFlowService.questionRelationCourse(user.getId(), origin == PaperOrigin.PREVIEW ? userReport.getOriginId() : null, QuestionType.ValueOf(question.getQuestionType()));
- if (recordId != null){
- dto.setQuestionStatus(1);
- }
- }
- if(dto.getQuestionStatus() == null){
- dto.setQuestionStatus(questionFlowService.questionStatus(questionNo));
- }
- return ResponseHelp.success(dto);
- }
- @RequestMapping(value = "/exercise/paper", method = RequestMethod.GET)
- @ApiOperation(value = "获取练习卷", notes = "获取练习卷", httpMethod = "GET")
- public Response<PaperBaseDto> detailExercise(
- @RequestParam(required = true) Integer paperId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- UserPaper paper = questionFlowService.paper(user.getId(), PaperOrigin.EXERCISE, paperId);
- PaperBaseDto paperDto = Transform.convert(paper, PaperBaseDto.class);
- return ResponseHelp.success(paperDto);
- }
- @RequestMapping(value = "/examination/paper", method = RequestMethod.GET)
- @ApiOperation(value = "获取模考卷", notes = "获取模考卷", httpMethod = "GET")
- public Response<PaperBaseDto> detailExamination(
- @RequestParam(required = true) Integer paperId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- UserPaper paper = questionFlowService.paper(user.getId(), PaperOrigin.EXAMINATION, paperId);
- PaperBaseDto paperDto = Transform.convert(paper, PaperBaseDto.class);
- return ResponseHelp.success(paperDto);
- }
- @RequestMapping(value = "/report/base", method = RequestMethod.GET)
- @ApiOperation(value = "获取练习记录", notes = "获取练习记录", httpMethod = "GET")
- public Response<UserReportBaseDto> baseReport(
- @RequestParam(required = true) Integer userReportId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- UserReportRelation report = questionFlowService.baseReport(user.getId(), userReportId);
- UserReportBaseDto userReportDto = Transform.convert(report, UserReportBaseDto.class);
- return ResponseHelp.success(userReportDto);
- }
- @RequestMapping(value = "/report/detail", method = RequestMethod.GET)
- @ApiOperation(value = "获取练习详细记录", notes = "获取练习卷", httpMethod = "GET")
- public Response<UserReportDetailDto> detailReport(
- @RequestParam(required = true) Integer userReportId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- UserReportRelation report = questionFlowService.baseReport(user.getId(), userReportId);
- UserReportDetailDto userReportDto = Transform.convert(report, UserReportDetailDto.class);
- // 用户paper
- UserPaper userPaper = userPaperService.get(report.getPaperId());
- userReportDto.setPaper(Transform.convert(userPaper, UserPaperBaseExtendDto.class));
- return ResponseHelp.success(userReportDto);
- }
- @RequestMapping(value = "/report/question", method = RequestMethod.GET)
- @ApiOperation(value = "获取做题记录", notes = "获取做题记录", httpMethod = "GET")
- public Response<List<UserQuestionBaseDto>> detailReportQuestion(
- @RequestParam(required = true) Integer userReportId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- List<UserQuestion> p = questionFlowService.listByReport(user.getId(), userReportId);
- List<UserQuestionBaseDto> pr = Transform.convert(p, UserQuestionBaseDto.class);
- Collection questionIds = Transform.getIds(p, UserQuestion.class, "questionId");
- List<UserCollectQuestion> userCollectQuestionList = userCollectQuestionService.listByUserAndQuestions(user.getId(), questionIds);
- Map collectMap = Transform.getMap(userCollectQuestionList, UserCollectQuestion.class, "questionId", "id");
- List<UserNoteQuestion> userNoteQuestionList = userNoteQuestionService.listByUserAndQuestions(user.getId(), questionIds);
- Map noteMap = Transform.getMap(userNoteQuestionList, UserNoteQuestion.class, "questionId", "id");
- for(UserQuestionBaseDto dto : pr){
- dto.setCollect(collectMap.containsKey(dto.getQuestionId()));
- dto.setNote(noteMap.containsKey(dto.getQuestionId()));
- }
- // 绑定题目信息
- List<Question> questionList = questionService.select(questionIds);
- Transform.combine(pr, questionList, UserQuestionBaseDto.class, "questionId", "question", Question.class, "id", QuestionExtendDto.class);
- Collection questionNoIds = Transform.getIds(pr, UserQuestionBaseDto.class, "questionNoId");
- List<QuestionNo> questionNoList = questionNoService.select(questionNoIds);
- Transform.combine(pr, questionNoList, UserQuestionBaseDto.class, "questionNoId", "questionNo", QuestionNo.class, "id", QuestionNoExtendDto.class);
- return ResponseHelp.success(pr);
- }
- @RequestMapping(value = "/examination/start", method = RequestMethod.POST)
- @ApiOperation(value = "开始: 模考", notes = "提交考试设置", httpMethod = "POST")
- public Response<UserReportBaseDto> startExamination(@RequestBody @Validated ExaminationStartDto dto) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- // 判断是否是cat模考,并且有模考权限
- ExaminationPaper examinationPaper = examinationPaperService.get(dto.getPaperId());
- if(examinationService.isCat(examinationPaper)){
- UserService userService = userServiceService.getService(user.getId(), ServiceKey.QX_CAT);
- if (userService== null){
- throw new ParameterException("请先开通模考");
- }
- }
- JSONObject setting = new JSONObject();
- setting.put("disorder", dto.getDisorder());
- setting.put("order", dto.getOrder());
- UserReport report = questionFlowService.start(user.getId(), PaperOrigin.EXAMINATION, dto.getPaperId(), setting);
- return ResponseHelp.success(Transform.convert(report, UserReportBaseDto.class));
- }
- @RequestMapping(value = "/exercise/start", method = RequestMethod.POST)
- @ApiOperation(value = "开始: 练习", notes = "提交考试设置", httpMethod = "POST")
- public Response<UserReportBaseDto> startExercise(@RequestBody @Validated ExerciseStartDto dto) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- JSONObject setting = new JSONObject();
- setting.put("disorder", dto.getDisorder());
- UserReport report = questionFlowService.start(user.getId(), PaperOrigin.EXERCISE, dto.getPaperId(), setting);
- return ResponseHelp.success(Transform.convert(report, UserReportBaseDto.class));
- }
- @RequestMapping(value = "/preview/start", method = RequestMethod.POST)
- @ApiOperation(value = "开始: 预习作业", notes = "提交考试设置", httpMethod = "POST")
- public Response<UserReportBaseDto> startPreview(@RequestBody @Validated PreviewStartDto dto) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- JSONObject setting = new JSONObject();
- setting.put("disorder", dto.getDisorder());
- UserReportRelation report = questionFlowService.start(user.getId(), PaperOrigin.PREVIEW, dto.getPaperId(), setting);
- UserReportBaseDto userReportBaseDto = Transform.convert(report, UserReportBaseDto.class);
- return ResponseHelp.success(userReportBaseDto);
- }
- @RequestMapping(value = "/textbook/paper", method = RequestMethod.GET)
- @ApiOperation(value = "获取机经练习卷", notes = "获取练习卷", httpMethod = "GET")
- public Response<PaperBaseDto> detailTextbookPaper(
- @RequestParam(required = true) Integer paperId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- UserPaper paper = questionFlowService.paper(user.getId(), PaperOrigin.TEXTBOOK, paperId);
- PaperBaseDto paperDto = Transform.convert(paper, PaperBaseDto.class);
- return ResponseHelp.success(paperDto);
- }
- @RequestMapping(value = "/textbook/start", method = RequestMethod.POST)
- @ApiOperation(value = "开始: 机经", notes = "提交考试设置", httpMethod = "POST")
- public Response<UserReportBaseDto> startTextbook(@RequestBody @Validated TextbookStartDto dto) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- JSONObject setting = new JSONObject();
- setting.put("disorder", dto.getDisorder());
- UserReportRelation report = questionFlowService.start(user.getId(), PaperOrigin.TEXTBOOK, dto.getPaperId(), setting);
- UserReportBaseDto userReportBaseDto = Transform.convert(report, UserReportBaseDto.class);
- return ResponseHelp.success(userReportBaseDto);
- }
- @RequestMapping(value = "/sentence/paper", method = RequestMethod.GET)
- @ApiOperation(value = "获取长难句练习卷", notes = "获取练习卷", httpMethod = "GET")
- public Response<PaperBaseDto> detailSentencePaper(
- @RequestParam(required = true) Integer paperId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- UserPaper paper = questionFlowService.paper(user.getId(), PaperOrigin.SENTENCE, paperId);
- PaperBaseDto paperDto = Transform.convert(paper, PaperBaseDto.class);
- return ResponseHelp.success(paperDto);
- }
- @RequestMapping(value = "/sentence/start", method = RequestMethod.POST)
- @ApiOperation(value = "开始: 长难句", notes = "提交考试设置", httpMethod = "POST")
- public Response<UserReportBaseDto> startSentence(@RequestBody @Validated SentenceStartDto dto) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- JSONObject setting = new JSONObject();
- UserReportRelation report = questionFlowService.start(user.getId(), PaperOrigin.SENTENCE, dto.getPaperId(), setting);
- UserReportBaseDto userReportBaseDto = Transform.convert(report, UserReportBaseDto.class);
- return ResponseHelp.success(userReportBaseDto);
- }
- @RequestMapping(value = "/error/paper", method = RequestMethod.GET)
- @ApiOperation(value = "获取错题组卷", notes = "获取错题组卷", httpMethod = "GET")
- public Response<PaperBaseDto> detailError(
- @RequestParam(required = true) Integer paperId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- UserPaper paper = userPaperService.get(paperId);
- if (!paper.getPaperOrigin().equals(PaperOrigin.ERROR.key)){
- throw new ParameterException("试卷不存在");
- }
- if (!paper.getUserId().equals(user.getId())){
- throw new ParameterException("试卷不存在");
- }
- PaperBaseDto paperDto = Transform.convert(paper, PaperBaseDto.class);
- return ResponseHelp.success(paperDto);
- }
- @RequestMapping(value = "/error/start", method = RequestMethod.POST)
- @ApiOperation(value = "开始: 错题组卷", notes = "提交考试设置", httpMethod = "POST")
- public Response<UserReportBaseDto> startError(@RequestBody @Validated PreviewStartDto dto) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- JSONObject setting = new JSONObject();
- setting.put("disorder", dto.getDisorder());
- UserReportRelation report = questionFlowService.start(user.getId(), PaperOrigin.ERROR, dto.getPaperId(), setting);
- UserReportBaseDto userReportBaseDto = Transform.convert(report, UserReportBaseDto.class);
- return ResponseHelp.success(userReportBaseDto);
- }
- @RequestMapping(value = "/collect/paper", method = RequestMethod.GET)
- @ApiOperation(value = "获取收藏组卷", notes = "获取收藏组卷", httpMethod = "GET")
- public Response<PaperBaseDto> detailCollect(
- @RequestParam(required = true) Integer paperId
- ) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- UserPaper paper = userPaperService.get(paperId);
- if (!paper.getPaperOrigin().equals(PaperOrigin.COLLECT.key)){
- throw new ParameterException("试卷不存在");
- }
- if (!paper.getUserId().equals(user.getId())){
- throw new ParameterException("试卷不存在");
- }
- PaperBaseDto paperDto = Transform.convert(paper, PaperBaseDto.class);
- return ResponseHelp.success(paperDto);
- }
- @RequestMapping(value = "/collect/start", method = RequestMethod.POST)
- @ApiOperation(value = "开始: 收藏组卷", notes = "提交考试设置", httpMethod = "POST")
- public Response<UserReportBaseDto> startCollect(@RequestBody @Validated PreviewStartDto dto) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- JSONObject setting = new JSONObject();
- setting.put("disorder", dto.getDisorder());
- UserReportRelation report = questionFlowService.start(user.getId(), PaperOrigin.COLLECT, dto.getPaperId(), setting);
- UserReportBaseDto userReportBaseDto = Transform.convert(report, UserReportBaseDto.class);
- return ResponseHelp.success(userReportBaseDto);
- }
- @RequestMapping(value = "/continue", method = RequestMethod.POST)
- @ApiOperation(value = "继续做题", notes = "获取报告信息", httpMethod = "POST")
- public Response<UserReportBaseDto> continueReport(@RequestBody @Validated ReportContinueDto dto) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- UserReportRelation report = questionFlowService.continueReport(user.getId(), dto.getUserReportId());
- UserReportBaseDto userReportBaseDto = Transform.convert(report, UserReportBaseDto.class);
- return ResponseHelp.success(userReportBaseDto);
- }
- @RequestMapping(value = "/next", method = RequestMethod.POST)
- @ApiOperation(value = "获取下一题", notes = "获取下一题", httpMethod = "POST")
- public Response<UserQuestionBaseDto> next(@RequestBody @Validated ReportNextDto dto) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- UserQuestion userQuestion = questionFlowService.next(user.getId(), dto.getUserReportId());
- if (userQuestion == null) {
- throw new ParameterException("finish");
- }
- UserQuestionBaseDto baseDto = Transform.convert(userQuestion, UserQuestionBaseDto.class);
- // 绑定question
- baseDto.setQuestion(Transform.convert(questionService.get(userQuestion.getQuestionId()), QuestionBaseExtendDto.class));
- // 绑定questionNo
- baseDto.setQuestionNo(Transform.convert(questionNoService.get(userQuestion.getQuestionNoId()), QuestionNoExtendDto.class));
- // 绑定collect
- baseDto.setCollect(userCollectQuestionService.getByUserAndQuestion(user.getId(), userQuestion.getQuestionId()) != null);
- return ResponseHelp.success(baseDto);
- }
- @RequestMapping(value = "/submit", method = RequestMethod.POST)
- @ApiOperation(value = "提交题目答案", notes = "提交题目", httpMethod = "POST")
- public Response<Boolean> submit(@RequestBody @Validated QuestionSubmitDto dto) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- UserQuestion userQuestion = userQuestionService.get(dto.getUserQuestionId());
- if (userQuestion == null){
- throw new ParameterException("做题不存在");
- }
- userQuestion.setUserTime(dto.getTime());
- userQuestion.setUserAnswer(JSONObject.parseObject(JSONObject.toJSONString(dto.getAnswer())));
- userQuestion.setSetting(JSONObject.parseObject(JSONObject.toJSONString(dto.getSetting())));
- Boolean result = questionFlowService.submit(user.getId(), userQuestion);
- return ResponseHelp.success(result);
- }
- @RequestMapping(value = "/finish", method = RequestMethod.POST)
- @ApiOperation(value = "完成考试", notes = "完成考试", httpMethod = "POST")
- public Response<Boolean> finish(@RequestBody @Validated ReportFinishDto dto) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- Boolean result = questionFlowService.finish(user.getId(), dto.getUserReportId());
- return ResponseHelp.success(result);
- }
- @RequestMapping(value = "/stage", method = RequestMethod.POST)
- @ApiOperation(value = "本阶段完成", notes = "结束当前阶段: 达到阶段时间时调用,然后继续调用next", httpMethod = "POST")
- public Response<Boolean> stage(@RequestBody @Validated ReportStageDto dto) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- Boolean result = questionFlowService.stage(user.getId(), dto.getUserReportId());
- return ResponseHelp.success(result);
- }
- @RequestMapping(value = "/restart/paper", method = RequestMethod.POST)
- @ApiOperation(value = "重置考试", notes = "重置考试", httpMethod = "POST")
- public Response<Boolean> restart(@RequestBody @Validated PaperRestartDto dto) {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- questionFlowService.restart(dto.getUserPaperId(), user.getId());
- return ResponseHelp.success(true);
- }
- @RequestMapping(value = "/reset/cat", method = RequestMethod.POST)
- @ApiOperation(value = "重置整套模拟卷", notes = "重置考试", httpMethod = "POST")
- public Response<Boolean> resetCat() {
- User user = (User) shiroHelp.getLoginUser();
- if (user == null) {
- throw new AuthException("请先登录");
- }
- UserService userService = userServiceService.getServiceBase(user.getId(), ServiceKey.QX_CAT);
- if (userService == null){
- throw new ParameterException("无重置权限");
- }
- if (userService.getIsReset() > 0){
- throw new ParameterException("已重置,请再次购买服务");
- }
- // reset当前考卷的所有状态
- examinationService.resetCat(user.getId(), false);
- userServiceService.edit(UserService.builder().id(userService.getId()).isReset(1).build());
- return ResponseHelp.success(true);
- }
- }
|