bug
lohir
2024-10-16 926f55cd895aa62d079ef18fee964d81bfae005e
bug
4个文件已修改
75 ■■■■■ 已修改文件
src/main/java/com/ycl/jxkg/controller/admin/ExamController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/enums/general/ExamStatusEnum.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/ExamService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/ExamController.java
@@ -124,4 +124,17 @@
        return examService.forceSubmit(form);
    }
    @PutMapping("/cancel/{id}")
    @ApiOperation(value = "作废", notes = "作废")
    @PreAuthorize("hasAuthority('exam:cacel')")
    public Result cancel(@PathVariable("id") Integer id) {
        return examService.cancel(id);
    }
    @PutMapping("/recover/{id}")
    @ApiOperation(value = "恢复正常", notes = "恢复正常")
    @PreAuthorize("hasAuthority('exam:recover')")
    public Result recover(@PathVariable("id") Integer id) {
        return examService.recover(id);
    }
}
src/main/java/com/ycl/jxkg/enums/general/ExamStatusEnum.java
@@ -19,6 +19,7 @@
    NOT_START("not_start", "未开始"),
    ING("ing", "进行中"),
    FINISHED("finished", "已结束"),
    CANCEL("cancel", "已作废"),
    ;
    @EnumValue
src/main/java/com/ycl/jxkg/service/ExamService.java
@@ -150,5 +150,21 @@
    Result forceSubmit(ForceSubmitForm form);
    /**
     * 作废
     *
     * @param id
     * @return {@link Result }
     * @author
     */
    Result cancel(Integer id);
    /**
     * 恢复
     *
     * @param id
     * @return {@link Result }
     * @author
     */
    Result recover(Integer id);
}
src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
@@ -3,9 +3,11 @@
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.jxkg.base.Result;
import com.ycl.jxkg.base.SystemCode;
@@ -30,6 +32,7 @@
import com.ycl.jxkg.enums.ExamPaperTypeEnum;
import com.ycl.jxkg.enums.QuestionTypeEnum;
import com.ycl.jxkg.enums.WebsocketCommendEnum;
import com.ycl.jxkg.enums.general.ClassesStatusEnum;
import com.ycl.jxkg.enums.general.ExamStatusEnum;
import com.ycl.jxkg.enums.general.ExamSubmitTempStatusEnum;
import com.ycl.jxkg.mapper.*;
@@ -947,4 +950,46 @@
        websocketServer.sendOneMessage(form.getUserId(), JSON.toJSONString(websocket));
        return Result.ok("操作成功");
    }
    /**
     * 作废
     *
     * @param examId
     * @return {@link Result }
     * @author
     */
    @Override
    public Result cancel(Integer id) {
        new LambdaUpdateChainWrapper<>(examMapper)
                .eq(Exam::getId, id)
                .set(Exam::getStatus, ExamStatusEnum.CANCEL)
                .update();
        return Result.ok("作废成功");
    }
    @Override
    public Result recover(Integer id) {
        // 先查询当前考试记录的详细信息
        Exam examInfo = new LambdaQueryChainWrapper<>(examMapper)
                .eq(Exam::getId, id)
                .one();
        // 确定恢复后当前考试记录的状态
        Date currentTime = new Date();
        Date startTime = examInfo.getStartTime();
        Date endTime = examInfo.getEndTime();
        if (currentTime.before(startTime)) {
            examInfo.setStatus(ExamStatusEnum.NOT_START);
        } else if (currentTime.after(startTime) && currentTime.before(endTime)) {
            examInfo.setStatus(ExamStatusEnum.ING);
        } else {
            examInfo.setStatus(ExamStatusEnum.FINISHED);
        }
        // 修改当前的考试状态
        new LambdaUpdateChainWrapper<>(examMapper)
                .eq(Exam::getId, id)
                .set(Exam::getStatus, examInfo.getStatus())
                .update();
        // 还原班级的考试信息
        return Result.ok("考试记录已经恢复正常");
    }
}