From 851990e521ed5b0cb0e367b319bb484f04c4c47e Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 15 五月 2024 15:40:47 +0800
Subject: [PATCH] 在线练习完善

---
 src/main/java/com/mindskip/xzs/service/impl/PracticeQuestionConditionServiceImpl.java |   25 +++++++++++++++++++++++--
 1 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/service/impl/PracticeQuestionConditionServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/PracticeQuestionConditionServiceImpl.java
index 31f74d9..4bd744d 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/PracticeQuestionConditionServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/PracticeQuestionConditionServiceImpl.java
@@ -7,8 +7,11 @@
 import com.mindskip.xzs.service.PracticeQuestionConditionService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -23,18 +26,36 @@
     private final WebContext webContext;
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void save(PracticeQuestionCondition entity) {
+        // 濡傛灉鍋氶敊浜嗭紝鍔犲叆閿欓闆�
+        if (! entity.getQuestionCondition().getRight()) {
+
+        }
         PracticeQuestionCondition old = mapper.selectByPracticeId(entity.getPracticeId());
         if (Objects.isNull(old)) {
             old = new PracticeQuestionCondition();
             old.setUserId(webContext.getCurrentUser().getId());
             old.setPracticeId(entity.getPracticeId());
-            old.setContent(JSON.toJSONString(entity.getQuestionConditions()));
+            ArrayList<Object> objects = new ArrayList<>(1);
+            objects.add(entity.getQuestionCondition());
+            old.setContent(JSON.toJSONString(objects));
             old.setLatestTime(new Date());
             mapper.save(old);
         } else {
             // 鏇存柊鍐呭
-            mapper.updateContentById(JSON.toJSONString(entity.getQuestionConditions()), old.getId(), new Date());
+            List<PracticeQuestionCondition.QuestionFinishCondition> list = JSON.parseArray(old.getContent(), PracticeQuestionCondition.QuestionFinishCondition.class);
+            if (list.stream().anyMatch(item -> item.getQuestionId().equals(entity.getQuestionCondition().getQuestionId()))) {
+                for (PracticeQuestionCondition.QuestionFinishCondition item : list) {
+                    if (item.getQuestionId().equals(entity.getQuestionCondition().getQuestionId())) {
+                        item = entity.getQuestionCondition();
+                        break;
+                    }
+                }
+            } else {
+                list.add(entity.getQuestionCondition());
+            }
+            mapper.updateContentById(JSON.toJSONString(list), old.getId(), new Date());
         }
     }
 

--
Gitblit v1.8.0