|
@@ -4,11 +4,10 @@ package com.qxgmat.controller.api;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.nuliji.tools.*;
|
|
|
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.PaperOrigin;
|
|
|
-import com.qxgmat.data.constants.enums.module.QuestionModule;
|
|
|
-import com.qxgmat.data.constants.enums.module.StructModule;
|
|
|
+import com.qxgmat.data.constants.enums.module.*;
|
|
|
import com.qxgmat.data.dao.entity.*;
|
|
|
import com.qxgmat.data.inline.UserQuestionStat;
|
|
|
import com.qxgmat.data.relation.entity.QuestionNoRelation;
|
|
@@ -18,10 +17,7 @@ import com.qxgmat.dto.request.*;
|
|
|
import com.qxgmat.dto.response.*;
|
|
|
import com.qxgmat.help.ShiroHelp;
|
|
|
import com.qxgmat.service.*;
|
|
|
-import com.qxgmat.service.extend.ExaminationService;
|
|
|
-import com.qxgmat.service.extend.ExerciseService;
|
|
|
-import com.qxgmat.service.extend.PreviewService;
|
|
|
-import com.qxgmat.service.extend.QuestionFlowService;
|
|
|
+import com.qxgmat.service.extend.*;
|
|
|
import com.qxgmat.service.inline.*;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
@@ -81,6 +77,9 @@ public class QuestionController {
|
|
|
private TextbookPaperService textbookPaperService;
|
|
|
|
|
|
@Autowired
|
|
|
+ private TextbookLibraryService textbookLibraryService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
private UserQuestionService userQuestionService;
|
|
|
|
|
|
@Autowired
|
|
@@ -113,6 +112,8 @@ public class QuestionController {
|
|
|
@Autowired
|
|
|
private QuestionFlowService questionFlowService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private CourseExtendService courseExtendService;
|
|
|
|
|
|
@RequestMapping(value = "/exercise/progress", method = RequestMethod.GET)
|
|
|
@ApiOperation(value = "练习进度", httpMethod = "GET")
|
|
@@ -283,7 +284,7 @@ public class QuestionController {
|
|
|
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", "paperId");
|
|
|
+ Transform.combine(pr, userPaperMap, UserExercisePaperDto.class, "id", "userPaperId");
|
|
|
|
|
|
// 获取最后一次作业结果
|
|
|
Collection paperIds = Transform.getIds(paperList, UserPaper.class, "id");
|
|
@@ -354,23 +355,48 @@ public class QuestionController {
|
|
|
@RequestParam(required = false) Integer times,
|
|
|
HttpSession session) {
|
|
|
User user = (User) shiroHelp.getLoginUser();
|
|
|
- PageResult<ExaminationPaper> p = examinationService.list(page, size, structId, user != null ? user.getId():null, times);
|
|
|
+ ExaminationStruct struct = examinationStructService.get(structId);
|
|
|
+ ServiceKey serviceKey = ServiceKey.ValueOf(struct.getExtend());
|
|
|
+ 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 = userPaperService.listWithOrigin(user.getId(), PaperOrigin.EXAMINATION, ids, null);
|
|
|
+ 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", "paperId");
|
|
|
+ Transform.combine(pr, userPaperMap, UserExaminationPaperDto.class, "id", "userPaperId");
|
|
|
|
|
|
- // 获取最后一次作业结果
|
|
|
+ // 获取最后一次结果
|
|
|
Collection paperIds = Transform.getIds(paperList, UserPaper.class, "id");
|
|
|
List<UserReport> reportList = userReportService.listWithLater(paperIds);
|
|
|
Transform.combine(pr, reportList, UserExaminationPaperDto.class, "id", "report", UserReport.class, "paperId", UserReportExtendDto.class);
|
|
|
+
|
|
|
+ if (serviceKey == ServiceKey.QX_CAT && user.getQxCat() > 0){
|
|
|
+ // 获取上一遍模考成绩
|
|
|
+ UserService userService = userServiceService.getService(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.listWithLaterNoReset(prevPaperIds);
|
|
|
+ Transform.combine(pr, prevReportList, UserExaminationPaperDto.class, "id", "prevReport", UserReport.class, "paperId", UserReportExtendDto.class);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return ResponseHelp.success(pr, page, size, p.getTotal());
|
|
@@ -440,6 +466,37 @@ public class QuestionController {
|
|
|
dto.setQuestionNo(Transform.convert(textbookQuestion, QuestionNoExtendDto.class));
|
|
|
break;
|
|
|
}
|
|
|
+ // 获取提问权限
|
|
|
+ PaperOrigin origin= PaperOrigin.ValueOf(userReport.getPaperOrigin());
|
|
|
+ Integer recordId = questionFlowService.questionRelationCourse(user.getId(), origin == PaperOrigin.PREVIEW ? userReport.getOriginId() : null, QuestionType.ValueOf(question.getQuestionType()));
|
|
|
+ if (recordId != null){
|
|
|
+ dto.setQuestionStatus(1);
|
|
|
+ }else{
|
|
|
+ // 获取基本当前权限
|
|
|
+ switch(origin){
|
|
|
+ case EXAMINATION:
|
|
|
+ ExaminationPaper examinationPaper = examinationPaperService.get(userReport.getOriginId());
|
|
|
+ ExaminationStruct examinationStruct = examinationStructService.get(examinationPaper.getStructThree());
|
|
|
+ dto.setQuestionStatus(examinationStruct.getQuestionStatus());
|
|
|
+ break;
|
|
|
+ case EXERCISE:
|
|
|
+ ExercisePaper exercisePaper = exercisePaperService.get(userReport.getOriginId());
|
|
|
+ ExerciseStruct exerciseStruct = exerciseStructService.get(exercisePaper.getStructFour());
|
|
|
+ dto.setQuestionStatus(exerciseStruct.getQuestionStatus());
|
|
|
+ break;
|
|
|
+ case TEXTBOOK:
|
|
|
+ TextbookQuestion textbookQuestion = textbookQuestionService.get(userQuestion.getQuestionNoId());
|
|
|
+ TextbookLibrary textbookLibrary = textbookLibraryService.get(textbookQuestion.getLibraryId());
|
|
|
+ dto.setQuestionStatus(textbookLibrary.getQuestionStatus());
|
|
|
+ break;
|
|
|
+ case PREVIEW:
|
|
|
+ // 上面questionRelationCourse包括了,不会执行到
|
|
|
+ default:
|
|
|
+ // 自由组卷,不提供提问显示
|
|
|
+ dto.setQuestionStatus(-1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
return ResponseHelp.success(dto);
|
|
|
}
|