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