From d470757bba19143fd3fc441365fcbb2362dfd0f0 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期六, 11 五月 2024 18:04:39 +0800 Subject: [PATCH] 个人练习 --- src/main/java/com/mindskip/xzs/service/impl/SelfPracticeServiceImpl.java | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 55 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/mindskip/xzs/service/impl/SelfPracticeServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/SelfPracticeServiceImpl.java index 6a5eaa6..e7305d3 100644 --- a/src/main/java/com/mindskip/xzs/service/impl/SelfPracticeServiceImpl.java +++ b/src/main/java/com/mindskip/xzs/service/impl/SelfPracticeServiceImpl.java @@ -7,17 +7,21 @@ import com.mindskip.xzs.base.RestResponse; import com.mindskip.xzs.context.WebContext; import com.mindskip.xzs.domain.ExamPaperAnswer; +import com.mindskip.xzs.domain.Question; import com.mindskip.xzs.domain.SelfPractice; +import com.mindskip.xzs.domain.vo.QuestionContentVO; +import com.mindskip.xzs.domain.vo.QuestionVO; import com.mindskip.xzs.domain.vo.SelfPracticeVO; +import com.mindskip.xzs.repository.QuestionMapper; import com.mindskip.xzs.repository.QuestionSubjectMapper; import com.mindskip.xzs.repository.SelfPracticeMapper; import com.mindskip.xzs.repository.SubjectMapper; -import com.mindskip.xzs.service.QuestionSubjectService; import com.mindskip.xzs.service.SelfPracticeService; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import java.util.Date; import java.util.List; @@ -36,6 +40,7 @@ private final WebContext webContext; private final QuestionSubjectMapper questionSubjectMapper; private final SubjectMapper subjectMapper; + private final QuestionMapper questionMapper; @Override public RestResponse add(SelfPracticeVO vo) { @@ -75,4 +80,53 @@ selfPracticeMapper.remove(ids); return RestResponse.ok("鍒犻櫎鎴愬姛"); } + + @Override + public RestResponse startPractice(Integer id) { + SelfPractice en = selfPracticeMapper.selectById(id); + if (Objects.isNull(en)) { + throw new RuntimeException("缁冧範涓嶅瓨鍦�"); + } + if (StringUtils.hasText(en.getQuestionIds())) { + // 鐢熸垚浜嗛鐩氨鐩存帴鏌� + List<Integer> questionIdList = JSON.parseArray(en.getQuestionIds(), Integer.class); + List<QuestionVO> vos = questionMapper.getVoByIds(questionIdList); + jsonQuestion(vos); + return RestResponse.ok(vos); + } else { + // 娌$敓鎴愯繃灏遍殢鏈虹敓鎴愰鐩� + List<Integer> subjectIds = JSON.parseArray(en.getSubjects(), Integer.class); + Integer totalQuestionNum = questionSubjectMapper.countQuestionNum(subjectIds); + if (totalQuestionNum < en.getQuestionNum()) { + throw new RuntimeException("浣犳墍閫夌殑璇剧洰棰樼洰鏁伴噺涓嶈冻"); + } + // 鏌ヨ鍑鸿鐩笅闅忔満鐨勮瀹氭暟閲忛鐩� + List<QuestionVO> questionVOList = questionSubjectMapper.getRandomQuestionId(subjectIds, en.getQuestionNum()); + List<Integer> ids = questionVOList.stream().map(QuestionVO::getId).collect(Collectors.toList()); + selfPracticeMapper.setQuestionIds(en.getId(), JSON.toJSONString(ids)); + jsonQuestion(questionVOList); + return RestResponse.ok(questionVOList); + } + } + + @Override + public RestResponse subjectQuestionNum(List<Integer> subjectIds) { + Integer num = questionSubjectMapper.countQuestionNum(subjectIds); + return RestResponse.ok(num); + } + + + /** + * 澶勭悊棰樼洰鍐呭JSON + * + * @param vos + */ + public void jsonQuestion(List<QuestionVO> vos) { + vos.stream().forEach(vo -> { + if (StringUtils.hasText(vo.getContentJson())) { + QuestionContentVO questionContent = JSON.parseObject(vo.getContentJson(), QuestionContentVO.class); + vo.setContent(questionContent); + } + }); + } } -- Gitblit v1.8.0