龚焕茏
2024-05-10 f2123ad78adc82f6a3e69a5603b6c0b110025236
refactor:缺考新需求,移除延时保存补考用户功能
8个文件已修改
1个文件已添加
8个文件已删除
284 ■■■■ 已修改文件
src/main/java/com/mindskip/xzs/controller/admin/ExamMissController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/controller/student/ExamPaperAnswerController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/ExamMiss.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/ExamPaperAnswer.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/enums/AnswerInvalidEnum.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/vo/ExamMissVO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/queue/ExamPaperTimeTask.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/ExamMissMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/ExamMissService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/ExamPaperService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/impl/ExamMissServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamMissMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamPaperAnswerMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamPaperMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/controller/admin/ExamMissController.java
File was deleted
src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java
@@ -87,10 +87,6 @@
        ExamPaper examPaper = examPaperService.savePaperFromVM(model, getCurrentUser());
        ExamPaperEditRequestVO newVM = examPaperService.examPaperToVM(examPaper.getId());
        // 加入延时队列,定时试卷结束时记录缺考学生
        if (examPaper.getPaperType() == 4) {
            examPaperService.addTimeTask(examPaper);
        }
        return RestResponse.ok(newVM);
    }
src/main/java/com/mindskip/xzs/controller/student/ExamPaperAnswerController.java
@@ -34,17 +34,15 @@
    private final ApplicationEventPublisher eventPublisher;
    private final ExamPaperSubjectService examPaperSubjectService;
    private final ExamTemplatesUserCountService examTemplatesUserCountService;
    private final ExamMissService examMissService;
    @Autowired
    public ExamPaperAnswerController(ExamPaperAnswerService examPaperAnswerService, ExamPaperService examPaperService, SubjectService subjectService, ApplicationEventPublisher eventPublisher, ExamPaperSubjectService examPaperSubjectService, ExamTemplatesUserCountService examTemplatesUserCountService, ExamMissService examMissService) {
    public ExamPaperAnswerController(ExamPaperAnswerService examPaperAnswerService, ExamPaperService examPaperService, SubjectService subjectService, ApplicationEventPublisher eventPublisher, ExamPaperSubjectService examPaperSubjectService, ExamTemplatesUserCountService examTemplatesUserCountService) {
        this.examPaperAnswerService = examPaperAnswerService;
        this.examPaperService = examPaperService;
        this.subjectService = subjectService;
        this.eventPublisher = eventPublisher;
        this.examPaperSubjectService = examPaperSubjectService;
        this.examTemplatesUserCountService = examTemplatesUserCountService;
        this.examMissService = examMissService;
    }
@@ -100,13 +98,6 @@
            examTemplatesUserCountService.add(examTemplatesUserCount);
        }
        // 自动提交定义为缺考
        if (examPaperSubmitVM.isAutoCommit()) {
            ExamMiss examMiss = new ExamMiss();
            examMiss.setExamId(examPaperSubmitVM.getId());
            examMiss.setUserId(user.getId());
            examMissService.save(examMiss);
        }
        return RestResponse.ok(scoreVm);
    }
src/main/java/com/mindskip/xzs/domain/ExamMiss.java
File was deleted
src/main/java/com/mindskip/xzs/domain/ExamPaperAnswer.java
@@ -1,5 +1,7 @@
package com.mindskip.xzs.domain;
import com.mindskip.xzs.domain.enums.AnswerInvalidEnum;
import java.io.Serializable;
import java.util.Date;
@@ -83,8 +85,19 @@
    private String userName;
    /**
     * 是否作废:1/0 是/否(作废代表需要补考)
     */
    private AnswerInvalidEnum invalid;
    public AnswerInvalidEnum getInvalid() {
        return invalid;
    }
    public void setInvalid(AnswerInvalidEnum invalid) {
        this.invalid = invalid;
    }
    public Integer getId() {
        return id;
src/main/java/com/mindskip/xzs/domain/enums/AnswerInvalidEnum.java
New file
@@ -0,0 +1,31 @@
package com.mindskip.xzs.domain.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;
/**
 * 考试作废
 *
 * @author gonghl
 */
@Getter
public enum AnswerInvalidEnum {
    VALID("0", "有效"),
    INVALID("1", "无效"),
    ;
    @EnumValue // 标明该字段存入数据库
    private final String code;
    @JsonValue // 标明在转JSON时使用该字段,即响应时
    private final String desc;
    AnswerInvalidEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }
}
src/main/java/com/mindskip/xzs/domain/vo/ExamMissVO.java
File was deleted
src/main/java/com/mindskip/xzs/queue/ExamPaperTimeTask.java
File was deleted
src/main/java/com/mindskip/xzs/repository/ExamMissMapper.java
File was deleted
src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java
@@ -1,6 +1,5 @@
package com.mindskip.xzs.repository;
import com.mindskip.xzs.domain.ExamMiss;
import com.mindskip.xzs.domain.ExamPaper;
import com.mindskip.xzs.domain.other.KeyValue;
import com.mindskip.xzs.domain.vo.PaperExcelVO;
@@ -39,7 +38,4 @@
    List<PaperExcelVO> getPaperExcelById(@Param("id") Integer id);
    void saveMissExamUser(long examPaperId);
    List<ExamPaper> selectTimeTaskPaper(Date time);
}
src/main/java/com/mindskip/xzs/service/ExamMissService.java
File was deleted
src/main/java/com/mindskip/xzs/service/ExamPaperService.java
@@ -38,7 +38,4 @@
    List<PaperExcelVO> getPaperExcelById(Integer id);
    void addTimeTask(ExamPaper examPaper);
    void saveMissExamUser(long examPaperId);
}
src/main/java/com/mindskip/xzs/service/impl/ExamMissServiceImpl.java
File was deleted
src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
@@ -10,7 +10,6 @@
import com.mindskip.xzs.domain.exam.ExamPaperTitleItemObject;
import com.mindskip.xzs.domain.other.KeyValue;
import com.mindskip.xzs.domain.vo.PaperExcelVO;
import com.mindskip.xzs.queue.ExamPaperTimeTask;
import com.mindskip.xzs.repository.ExamPaperMapper;
import com.mindskip.xzs.repository.QuestionMapper;
import com.mindskip.xzs.repository.UserDepartmentMapper;
@@ -20,7 +19,6 @@
import com.mindskip.xzs.utility.ExamUtil;
import com.mindskip.xzs.utility.JsonUtil;
import com.mindskip.xzs.utility.ModelMapperSingle;
import com.mindskip.xzs.utility.minio.DateUtils;
import com.mindskip.xzs.viewmodel.admin.exam.*;
import com.mindskip.xzs.viewmodel.admin.question.ExamQuestionVO;
import com.mindskip.xzs.viewmodel.admin.question.QuestionEditRequestVM;
@@ -33,9 +31,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.util.*;
import java.util.concurrent.DelayQueue;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@@ -55,24 +51,8 @@
    private final UserService userService;
    private final UserDepartmentMapper userDepartmentMapper;
    private final DepartmentService departmentService;
    private final DelayQueue<ExamPaperTimeTask> QUEUE = new DelayQueue<>();
    /**
     * 将进行中的定时试卷加入到队列中,并启动一个线程来轮询队列
     */
    @PostConstruct
    public void pollQueue() {
        examPaperMapper.selectTimeTaskPaper(DateUtils.getNowDate()).forEach(this::addTimeTask);
        new Thread(() -> {
            try {
                ExamPaperTimeTask task = QUEUE.take();
                saveMissExamUser(task.getExamPaperId());
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        }).start();
    }
    @Autowired
    public ExamPaperServiceImpl(ExamPaperMapper examPaperMapper, QuestionMapper questionMapper, TextContentService textContentService, QuestionService questionService, SubjectService subjectService, ExamPaperDepartmentService examPaperDepartmentService, ExamPaperSubjectService examPaperSubjectService, QuestionSubjectService questionSubjectService, ExamPaperUserService examPaperUserService, UserService userService, UserDepartmentMapper userDepartmentMapper, DepartmentService departmentService) {
@@ -616,16 +596,4 @@
        return randomNumber;
    }
    @Override
    public void addTimeTask(ExamPaper examPaper) {
        ExamPaperTimeTask examPaperTimeTask = new ExamPaperTimeTask();
        examPaperTimeTask.setExamPaperId(examPaper.getId());
        examPaperTimeTask.setExpiry(examPaper.getLimitEndTime().getTime());
        QUEUE.add(examPaperTimeTask);
    }
    @Override
    public void saveMissExamUser(long examPaperId) {
        examPaperMapper.saveMissExamUser(examPaperId);
    }
}
src/main/resources/mapper/ExamMissMapper.xml
File was deleted
src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -321,6 +321,7 @@
                  (#{item.examPaperId},#{item.userId})
        </foreach>
      </if>
    and (invalid = 0 or invalid is null)
  </select>
  <select id="adminPageByGrade" resultMap="BaseResultMap" parameterType="com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradePageRequestVM">
    select
src/main/resources/mapper/ExamPaperMapper.xml
@@ -423,19 +423,4 @@
    where a.exam_paper_id = #{id}
  </select>
    <select id="saveMissExamUser" resultType="com.mindskip.xzs.domain.ExamMiss">
      INSERT INTO t_exam_miss(exam_id, user_id)
      SELECT a.id,
             b.user_id
      FROM t_exam_paper a
             left join t_exam_paper_user b on a.id = b.exam_paper_id
             left join t_exam_paper_answer c on a.id = c.exam_paper_id and c.create_user = b.user_id
      WHERE a.id = #{examPaperId}
        and c.id is null
    </select>
  <select id="selectTimeTaskPaper" resultType="com.mindskip.xzs.domain.ExamPaper">
    select id, limit_end_time from t_exam_paper where paper_type = 4 and limit_end_time >= #{time} and deleted = 0
  </select>
</mapper>