chen 5 lat temu
rodzic
commit
1db846e847

+ 33 - 9
ssj-kmt-exercise-service-impl/src/main/java/com/ssj/service/kmt/kmt/service/impl/KmtExerciseQuestionDealServiceImpl.java

@@ -315,28 +315,52 @@ public class KmtExerciseQuestionDealServiceImpl implements KmtExerciseQuestionDe
                 } else {
                     parentId = kmtExerciseQuestion.getParentId();
                 }
-                List<String> tempList = kmtExerciseMapper.findQuestionIdByParentId(parentId);
+                List<KmtExerciseQuestion> tempList = kmtExerciseMapper.findQuByParentId(parentId);
                 //移动小题
                 if (request.getType() == 1){
                     //第一个小题不能往上移
                     if (tempList != null && tempList.size() > 0){
-                        if (kmtExerciseQuestion.getId().equals(tempList.get(0))){
+                        if (kmtExerciseQuestion.getId().equals(tempList.get(0).getId())){
                             return  responseEntity.failure(ResponseConstant.CODE_000, "已移动到第一小题");
                         }
+                        //如果是第二个小题上移, 修改题目的父子关系
+                        if (kmtExerciseQuestion.getId().equals(tempList.get(1).getId())){
+                            //先特殊修改第一题和第二题, 第三题开始修改父题
+                            kmtExerciseMapper.updateParentIdAndQuestionClassTypeAndNumById(null,
+                                    1, kmtExerciseQuestion.getNum() - 1, kmtExerciseQuestion.getId());
+                            kmtExerciseMapper.updateParentIdAndQuestionClassTypeAndNumById(kmtExerciseQuestion.getId(),
+                                    2, kmtExerciseQuestion.getNum(), tempList.get(0).getId());
+                            for (int i =2; i < tempList.size(); i++){
+                                kmtExerciseMapper.updateParentIdById(kmtExerciseQuestion.getId(), tempList.get(i).getId());
+                            }
+                        } else {
+                            //上移
+                            kmtExerciseMapper.updateByBookIdAndNum(kmtExerciseQuestion.getBookId(), kmtExerciseQuestion.getNum(),kmtExerciseQuestion.getNum() - 1);
+                            kmtExerciseMapper.updateQuestionNumByQuestionId(kmtExerciseQuestion.getId(), kmtExerciseQuestion.getNum() - 1);
+                        }
                     }
-                    //上移
-                    kmtExerciseMapper.updateByBookIdAndNum(kmtExerciseQuestion.getBookId(), kmtExerciseQuestion.getNum(),kmtExerciseQuestion.getNum() - 1);
-                    kmtExerciseMapper.updateQuestionNumByQuestionId(kmtExerciseQuestion.getId(), kmtExerciseQuestion.getNum() - 1);
                 } else if (request.getType() == 2){
                     //最后一个小题不能往下移
                     if (tempList != null && tempList.size() > 0){
-                        if (kmtExerciseQuestion.getId().equals(tempList.get(tempList.size() - 1))){
+                        if (kmtExerciseQuestion.getId().equals(tempList.get(tempList.size() - 1).getId())){
                             return responseEntity.failure(ResponseConstant.CODE_000, "已移动到最后一个小题的位置");
                         }
+                        //如果是第一小题的下移, 修改题目父子关系
+                        if (kmtExerciseQuestion.getId().equals(tempList.get(0).getId())){
+                            //先特殊修改第一题和第二题, 第三题开始修改父题
+                            kmtExerciseMapper.updateParentIdAndQuestionClassTypeAndNumById(tempList.get(1).getId(),
+                                    2, kmtExerciseQuestion.getNum() + 1, kmtExerciseQuestion.getId());
+                            kmtExerciseMapper.updateParentIdAndQuestionClassTypeAndNumById(null,
+                                    1, kmtExerciseQuestion.getNum(), tempList.get(1).getId());
+                            for (int i =2; i < tempList.size(); i++){
+                                kmtExerciseMapper.updateParentIdById(tempList.get(1).getId(), tempList.get(i).getId());
+                            }
+                        } else {
+                            //下移
+                            kmtExerciseMapper.updateByBookIdAndNum(kmtExerciseQuestion.getBookId(), kmtExerciseQuestion.getNum(), kmtExerciseQuestion.getNum() + 1);
+                            kmtExerciseMapper.updateQuestionNumByQuestionId(kmtExerciseQuestion.getId(), kmtExerciseQuestion.getNum() + 1);
+                        }
                     }
-                    //下移
-                    kmtExerciseMapper.updateByBookIdAndNum(kmtExerciseQuestion.getBookId(), kmtExerciseQuestion.getNum(), kmtExerciseQuestion.getNum() + 1);
-                    kmtExerciseMapper.updateQuestionNumByQuestionId(kmtExerciseQuestion.getId(), kmtExerciseQuestion.getNum() + 1);
                 }
             } else  if (request.getQuestionClassType() == 1){
                 if (request.getType() == 1){

+ 19 - 0
ssj-mybatis-service-impl/src/main/java/com/ssj/service/mapper/KmtExerciseMapper.java

@@ -1157,6 +1157,14 @@ public interface KmtExerciseMapper {
     @Select("select id, num from kmt_exercise_questions where id=#{questionId} or parent_id=#{questionId} order by num")
     List<String> findQuestionIdByParentId (@Param("questionId")String questionId);
 
+    /**
+     * 查询题目以及题目的小题
+     * @param questionId
+     * @return
+     */
+    @Select("select * from kmt_exercise_questions where id=#{questionId} or parent_id=#{questionId} order by num")
+    List<KmtExerciseQuestion> findQuByParentId (@Param("questionId")String questionId);
+
     @Update("update kmt_exercise_questions set parent_id=#{parentId}, question_class_type=#{questionClassType}" +
             " where id=#{id}")
     int updateKmtExerciseQuestionClassTypeAndParentId (@Param("parentId")String parentId,
@@ -1234,4 +1242,15 @@ public interface KmtExerciseMapper {
 
     @Select("select eb.id from kmt_exercise_book eb where eb.book_id=#{bookId} and eb.book_type=3 limit 1")
     String findDifferentExerciseBookIdByBookId (@Param("bookId") String bookId);
+
+    @Update("update kmt_exercise_questions set parent_id=#{parenId} where id=#{id}")
+    int updateParentIdById (@Param("parentId") String parentId,
+                            @Param("id") String id);
+
+    @Update("update kmt_exercise_questions set parent_id=#{parenId}, question_class_type=#{questionClassType}," +
+            " num = #{num} where id=#{id}")
+    int updateParentIdAndQuestionClassTypeAndNumById (@Param("parentId") String parentId,
+                                                      @Param("questionClassType") int questionClassType,
+                                                      @Param("num") int num,
+                                                      @Param("id") String id);
 }