fuliqi
2024-07-01 9dee3e46fdb59eb67b26f8c1958007025d1b7c29
src/main/java/com/ycl/jxkg/service/impl/QuestionServiceImpl.java
@@ -1,25 +1,25 @@
package com.ycl.jxkg.service.impl;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.jxkg.domain.enums.general.StatusEnum;
import com.ycl.jxkg.domain.other.KeyValue;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ycl.jxkg.domain.entity.Question;
import com.ycl.jxkg.domain.enums.QuestionTypeEnum;
import com.ycl.jxkg.enums.QuestionTypeEnum;
import com.ycl.jxkg.enums.general.StatusEnum;
import com.ycl.jxkg.domain.other.KeyValue;
import com.ycl.jxkg.domain.question.QuestionItemObject;
import com.ycl.jxkg.domain.question.QuestionObject;
import com.ycl.jxkg.domain.vo.admin.question.QuestionResponseVO;
import com.ycl.jxkg.mapper.QuestionMapper;
import com.ycl.jxkg.service.QuestionService;
import com.ycl.jxkg.service.SubjectService;
import com.ycl.jxkg.service.TextContentService;
import com.ycl.jxkg.utils.DateTimeUtil;
import com.ycl.jxkg.utils.JsonUtil;
import com.ycl.jxkg.utils.ExamUtil;
import com.ycl.jxkg.domain.vo.admin.question.QuestionEditItemVO;
import com.ycl.jxkg.domain.vo.admin.question.QuestionEditRequestVO;
import com.ycl.jxkg.domain.vo.admin.question.QuestionPageRequestVO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ycl.jxkg.domain.vo.admin.question.QuestionResponseVO;
import com.ycl.jxkg.mapper.QuestionMapper;
import com.ycl.jxkg.service.QuestionService;
import com.ycl.jxkg.utils.DateTimeUtil;
import com.ycl.jxkg.utils.ExamUtil;
import com.ycl.jxkg.utils.HtmlUtil;
import com.ycl.jxkg.utils.JsonUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@@ -27,7 +27,6 @@
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
@@ -35,13 +34,11 @@
public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> implements QuestionService {
    private final QuestionMapper questionMapper;
    private final TextContentService textContentService;
    private final SubjectService subjectService;
    @Override
    public PageInfo<QuestionResponseVO> page(QuestionPageRequestVO requestVM) {
        return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() ->
        return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "create_time desc").doSelectPageInfo(() ->
                questionMapper.page(requestVM)
        );
    }
@@ -64,6 +61,9 @@
        question.setDifficult(model.getDifficult());
        question.setContent(questionObject);
        question.setCreateUser(userId);
        question.setTitle(HtmlUtil.clear(model.getTitle()));
        question.setAudioFile(model.getAudioFile());
        question.setOriginalFile(model.getOriginalFile());
        questionMapper.insert(question);
        return question;
    }
@@ -78,6 +78,9 @@
        //题干、解析、选项等 更新
        String questionObject = setQuestionInfoFromVM(model);
        question.setContent(questionObject);
        question.setTitle(HtmlUtil.clear(model.getTitle()));
        question.setAudioFile(model.getAudioFile());
        question.setOriginalFile(model.getOriginalFile());
        questionMapper.updateById(question);
        return question;
    }
@@ -102,6 +105,7 @@
        switch (questionTypeEnum) {
            case SingleChoice:
            case TrueFalse:
            case Audio:
                questionEditRequestVO.setCorrect(question.getCorrect());
                break;
            case MultipleChoice:
@@ -112,6 +116,8 @@
                questionEditRequestVO.setCorrectArray(correctContent);
                break;
            case ShortAnswer:
            case Calculate:
            case Analysis:
                questionEditRequestVO.setCorrect(questionObject.getCorrect());
                break;
            default:
@@ -124,9 +130,6 @@
        List<QuestionEditItemVO> editItems = questionObject.getQuestionItemObjects().stream().map(o -> {
            QuestionEditItemVO questionEditItemVO = new QuestionEditItemVO();
            BeanUtils.copyProperties(o, questionEditItemVO);
            if (o.getScore() != null) {
                questionEditItemVO.setScore(ExamUtil.scoreToVM(o.getScore()));
            }
            return questionEditItemVO;
        }).collect(Collectors.toList());
        questionEditRequestVO.setItems(editItems);
@@ -140,7 +143,6 @@
                    item.setPrefix(i.getPrefix());
                    item.setContent(i.getContent());
                    item.setItemUuid(i.getItemUuid());
                    item.setScore(ExamUtil.scoreFromVM(i.getScore()));
                    return item;
                }
        ).collect(Collectors.toList());
@@ -169,5 +171,12 @@
        }).collect(Collectors.toList());
    }
    @Override
    public Boolean updateStatus(QuestionResponseVO question) {
        return new LambdaUpdateChainWrapper<>(questionMapper)
                .set(Question::getStatus, question.getStatus())
                .eq(Question::getId, question.getId())
                .update();
    }
}