chen преди 5 години
родител
ревизия
41fd82a96b

+ 23 - 24
ssj-kmt-exercise-service-impl/src/main/java/com/ssj/service/kmt/kmt/service/impl/KmtExerciseQuestionDealServiceImpl.java

@@ -70,19 +70,19 @@ public class KmtExerciseQuestionDealServiceImpl implements KmtExerciseQuestionDe
             String answerImage = getImagePath(request.getAnswer());
 
             if (StringUtils.isBlank(request.getQuestionId())){
-                //题目id不存在则是新增, 新增需要把一个num减1
+                //题目id不存在则是新增, 前端传过来的是新增题目的上一题
                 KmtExerciseBook book  = kmtExerciseBookService.getById(request.getExerciseBookId());
-                KmtExerciseQuestion nextQuestion = kmtExerciseMapper.findNextByBookIdAndNum(book.getBookId(), request.getNum());
+                KmtExerciseQuestion previousQuestion = kmtExerciseMapper.findPreviousByBookIdAndNum(book.getBookId(), request.getNum());
                 //新增小题
                 if (request.getQuestionClassType() == 2){
-                    KmtExerciseQuestion newQuestion = saveQuestion(book, request, nextQuestion, questionImage, answerImage);
+                    KmtExerciseQuestion newQuestion = saveQuestion(book, request, previousQuestion, questionImage, answerImage);
                     saveJSONFile(newQuestion, request, questionImage);
                     ThreadPool.getInstance().addTask(new SyncSaveExerciseBookTask(kmtExerciseMapper, exerciseQuestionSearchService, book.getBookId()));
                 } else {
                     //新增大题, 如果已存在当前大题号,则报错
-                    String bqi = kmtExerciseMapper.findBigQuestionIndexByBookCourseId(nextQuestion.getBookCourseId(), request.getBigQuestionIndex());
+                    String bqi = kmtExerciseMapper.findBigQuestionIndexByBookCourseId(previousQuestion.getBookCourseId(), request.getBigQuestionIndex());
                     if (StringUtil.isBlank(bqi)){
-                        KmtExerciseQuestion newQuestion = saveQuestion(book, request, nextQuestion, questionImage, answerImage);
+                        KmtExerciseQuestion newQuestion = saveQuestion(book, request, previousQuestion, questionImage, answerImage);
                         saveJSONFile(newQuestion, request, questionImage);
                         ThreadPool.getInstance().addTask(new SyncSaveExerciseBookTask(kmtExerciseMapper, exerciseQuestionSearchService, book.getBookId()));
                     } else {
@@ -183,21 +183,23 @@ public class KmtExerciseQuestionDealServiceImpl implements KmtExerciseQuestionDe
         return result;
     }
 
-    private KmtExerciseQuestion saveQuestion(KmtExerciseBook book,AddExerciseQuestionRequest request, KmtExerciseQuestion nextQuestion, String questionImage, String answerImage){
-        kmtExerciseMapper.updateQuestionNumByBookIdAndNum(book.getBookId(), request.getNum());
+    private KmtExerciseQuestion saveQuestion(KmtExerciseBook book,AddExerciseQuestionRequest request, KmtExerciseQuestion previousQuestion, String questionImage, String answerImage){
+        kmtExerciseMapper.updateQuestionNumByBookIdAndNum(book.getBookId(), request.getNum() + 1);
         KmtExerciseQuestion kmtExerciseQuestion = new KmtExerciseQuestion();
         String newQuestionId = IdWorker.generateId();
         kmtExerciseQuestion.setId(newQuestionId);
-        kmtExerciseQuestion.setBookId(nextQuestion.getBookId());
-        kmtExerciseQuestion.setUnitId(nextQuestion.getUnitId());
-        kmtExerciseQuestion.setBookCourseId(nextQuestion.getBookCourseId());
+        kmtExerciseQuestion.setBookId(previousQuestion.getBookId());
+        kmtExerciseQuestion.setUnitId(previousQuestion.getUnitId());
+        kmtExerciseQuestion.setBookCourseId(previousQuestion.getBookCourseId());
         if (request.getQuestionClassType() == 2){
-            kmtExerciseQuestion.setBigQuestionIndex(nextQuestion.getBigQuestionIndex());
-            if (StringUtil.isBlank(nextQuestion.getParentId())){
-                kmtExerciseQuestion.setParentId(null);
-                kmtExerciseQuestion.setQuestionClassType(1);
+            kmtExerciseQuestion.setBigQuestionIndex(previousQuestion.getBigQuestionIndex());
+            if (StringUtil.isBlank(previousQuestion.getParentId()) && previousQuestion.getQuestionClassType() == 0){
+                //如果上一题是单题,修改为大标题
+                kmtExerciseMapper.updateKmtExerciseQuestionClassTypeAndParentId(null, 1, previousQuestion.getId());
+                kmtExerciseQuestion.setParentId(previousQuestion.getId());
+                kmtExerciseQuestion.setQuestionClassType(2);
             } else {
-                kmtExerciseQuestion.setParentId(nextQuestion.getParentId());
+                kmtExerciseQuestion.setParentId(previousQuestion.getParentId());
                 kmtExerciseQuestion.setQuestionClassType(2);
             }
         } else {
@@ -205,23 +207,20 @@ public class KmtExerciseQuestionDealServiceImpl implements KmtExerciseQuestionDe
             kmtExerciseQuestion.setParentId(null);
             kmtExerciseQuestion.setQuestionClassType(0);
         }
-        kmtExerciseQuestion.setPageIndex(nextQuestion.getPageIndex());
+        kmtExerciseQuestion.setPageIndex(previousQuestion.getPageIndex());
         kmtExerciseQuestion.setImage(questionImage);
         kmtExerciseQuestion.setCreateTime(new Date());
         kmtExerciseQuestion.setDealStatus(3);
         kmtExerciseQuestion.setAnswerImage(answerImage);
-        kmtExerciseQuestion.setNum(nextQuestion.getNum());
+        kmtExerciseQuestion.setNum(previousQuestion.getNum() + 1);
         kmtExerciseQuestion.setSmallQuestionName(request.getSmallQuestionIndex());
-        kmtExerciseQuestion.setCourseName(nextQuestion.getCourseName());
-        kmtExerciseQuestion.setIsCommonFlag(nextQuestion.getIsCommonFlag());
-        kmtExerciseQuestion.setExerciseBookId(nextQuestion.getExerciseBookId());
+        kmtExerciseQuestion.setCourseName(previousQuestion.getCourseName());
+        kmtExerciseQuestion.setIsCommonFlag(previousQuestion.getIsCommonFlag());
+        kmtExerciseQuestion.setExerciseBookId(previousQuestion.getExerciseBookId());
         kmtExerciseQuestion.setHandlerSubmitTime(DateUtil.parse_yyyyMMddHHmmss("1970-01-01 00:00:01"));
-        kmtExerciseQuestion.setQuestionPath(nextQuestion.getQuestionPath().substring(0, nextQuestion.getQuestionPath().lastIndexOf("/")) + "/" + newQuestionId + ".json");
+        kmtExerciseQuestion.setQuestionPath(previousQuestion.getQuestionPath().substring(0, previousQuestion.getQuestionPath().lastIndexOf("/")) + "/" + newQuestionId + ".json");
 //        logger.error(JSON.toJSONString(kmtExerciseQuestion));
         kmtExerciseQuestion = kmtExerciseQuestionService.save(kmtExerciseQuestion);
-        if (request.getQuestionClassType() == 2 && StringUtil.isBlank(nextQuestion.getParentId())) {
-            kmtExerciseMapper.updateParentIdAndClassType(kmtExerciseQuestion.getId(), 2, book.getBookId(), request.getNum());
-        }
         return kmtExerciseQuestion;
     }