From 55dd8a6e104190531b51402ad0be6eba0b7d6877 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期一, 01 七月 2024 17:14:56 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java | 61 +++++++++++++++++++++++++++++- 1 files changed, 59 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java index e4f46d6..0809c9e 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java @@ -29,10 +29,13 @@ import com.ycl.jxkg.enums.general.ExamStatusEnum; import com.ycl.jxkg.enums.general.ExamSubmitTempStatusEnum; import com.ycl.jxkg.mapper.*; +import com.ycl.jxkg.rabbitmq.msg.ExamStatusMsg; +import com.ycl.jxkg.rabbitmq.product.Product; import com.ycl.jxkg.server.WebsocketServer; import com.ycl.jxkg.service.ExamPaperScoreService; import com.ycl.jxkg.service.ExamPaperService; import com.ycl.jxkg.service.ExamService; +import com.ycl.jxkg.utils.DateTimeUtil; import com.ycl.jxkg.utils.PageUtil; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; @@ -68,6 +71,8 @@ private final ExamPaperScoreMapper examPaperScoreMapper; private final ExamPaperScoreService examPaperScoreService; private static final String ANSWER_SPLIT = ","; + private final Product product; + /** * 娣诲姞 * @@ -79,7 +84,11 @@ Exam entity = ExamForm.getEntityByForm(form, null); entity.setStatus(ExamStatusEnum.getStatusByTime(form.getStartTime(), form.getEndTime(), null)); entity.setTeacherId(webContext.getCurrentUser().getId()); - baseMapper.insert(entity); + // 璁剧疆涔愯閿佺増鏈� + entity.setUpdateVersion(0); + if (baseMapper.insert(entity) > 0) { + this.sendMQ(entity, 0); + } return Result.ok("娣诲姞鎴愬姛"); } @@ -100,11 +109,59 @@ } BeanUtils.copyProperties(form, entity); entity.setStatus(ExamStatusEnum.getStatusByTime(form.getStartTime(), form.getEndTime(), null)); - baseMapper.updateById(entity); + // 濡傛灉淇敼鎴愬姛鍙戦�乵q娑堟伅 + if (baseMapper.updateById(entity) > 0) { + this.sendMQ(entity, entity.getUpdateVersion() + 1); + } return Result.ok("淇敼鎴愬姛"); } /** + * 鍙戦�乵q娑堟伅 + * + * @param entity 鑰冭瘯瀹炰綋绫� + * @param version 涔愯閿佺増鏈� + */ + public void sendMQ(Exam entity, Integer version) { + // 濡傛灉褰撳墠鐘舵�佷负鏈紑濮嬶紝鍒欏彂閫佷袱鏉q娑堟伅锛屼竴鏉¤缃姸鎬佷负杩涜涓紝涓�鏉¤缃姸鎬佷负宸茬粨鏉� + if (ExamStatusEnum.NOT_START.equals(entity.getStatus())) { + // 杩涜鐘舵�佹秷鎭� + ExamStatusMsg ingMsg = new ExamStatusMsg(); + ingMsg.setVersion(version); + ingMsg.setExamId(entity.getId()); + ingMsg.setTargetStatus(ExamStatusEnum.ING); + product.examMsg(entity.getId(), JSON.toJSONString(ingMsg), DateTimeUtil.getTwoTimeDiffMS(entity.getStartTime(), new Date())); + // 缁撴潫鐘舵�佹秷鎭� + ExamStatusMsg finishedMsg = new ExamStatusMsg(); + finishedMsg.setVersion(version); + finishedMsg.setExamId(entity.getId()); + finishedMsg.setTargetStatus(ExamStatusEnum.FINISHED); + product.examMsg(entity.getId(), JSON.toJSONString(finishedMsg), DateTimeUtil.getTwoTimeDiffMS(entity.getEndTime(), new Date())); + } else if (ExamStatusEnum.ING.equals(entity.getStatus())) { // 褰撳墠鏄繘琛屼腑鐘舵�佸垯鍙渶鍙戦�佺粨鏉熸秷鎭� + // 缁撴潫鐘舵�佹秷鎭� + ExamStatusMsg finishedMsg = new ExamStatusMsg(); + finishedMsg.setVersion(0); + finishedMsg.setExamId(entity.getId()); + finishedMsg.setTargetStatus(ExamStatusEnum.FINISHED); + product.examMsg(entity.getId(), JSON.toJSONString(finishedMsg), DateTimeUtil.getTwoTimeDiffMS(entity.getEndTime(), new Date())); + } + } + + /** + * 鏍规嵁鑰冭瘯鐨勫綋鍓嶇姸鎬侊紝寰楀埌涓嬩竴涓姸鎬� + * + * @param currentStatus + * @return + */ + public ExamStatusEnum getNextStatus(ExamStatusEnum currentStatus) { + if (ExamStatusEnum.NOT_START.equals(currentStatus)) { + return ExamStatusEnum.ING; + } else { + return ExamStatusEnum.FINISHED; + } + } + + /** * 鎵归噺鍒犻櫎 * * @param ids -- Gitblit v1.8.0