xiangpei
2024-05-17 f8f0ed20e05d521005ddcef2611ca303ae7e7a0c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package com.mindskip.xzs.service.impl;
 
import com.alibaba.fastjson.JSON;
import com.mindskip.xzs.context.WebContext;
import com.mindskip.xzs.domain.PracticeQuestionCondition;
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;
 
/**
 * @author:xp
 * @date:2024/5/14 17:26
 */
@Service
@RequiredArgsConstructor
public class PracticeQuestionConditionServiceImpl implements PracticeQuestionConditionService {
 
    private final PracticeQuestionConditionMapper mapper;
    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());
            ArrayList<Object> objects = new ArrayList<>(1);
            objects.add(entity.getQuestionCondition());
            old.setContent(JSON.toJSONString(objects));
            old.setLatestTime(new Date());
            mapper.save(old);
        } else {
            // 更新内容
            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());
        }
    }
 
    @Override
    public PracticeQuestionCondition selectByPracticeId(Integer practiceId) {
        PracticeQuestionCondition old = mapper.selectByPracticeId(practiceId);
        return old;
    }
}