From 47cd9ecc0eff38ffe6b3b794b2bf197e958f4403 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 14 五月 2025 15:50:57 +0800
Subject: [PATCH] bug:学员有状态不能修改问题

---
 src/main/java/com/mindskip/xzs/service/impl/PracticeQuestionConditionServiceImpl.java |   26 ++++++++++++++++++++++++--
 1 files changed, 24 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..8f2ab5c 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/PracticeQuestionConditionServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/PracticeQuestionConditionServiceImpl.java
@@ -6,9 +6,13 @@
 import com.mindskip.xzs.repository.PracticeQuestionConditionMapper;
 import com.mindskip.xzs.service.PracticeQuestionConditionService;
 import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
 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 +27,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())) {
+                        BeanUtils.copyProperties(entity.getQuestionCondition(), item);
+                        break;
+                    }
+                }
+            } else {
+                list.add(entity.getQuestionCondition());
+            }
+            mapper.updateContentById(JSON.toJSONString(list), old.getId(), new Date());
         }
     }
 

--
Gitblit v1.8.0