From 5ada29cec4b0c4a339a3e1c207363ae71e02c42f Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 11 六月 2024 14:55:31 +0800
Subject: [PATCH] 考试管理、bug处理

---
 src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java       |    2 
 src/main/java/com/ycl/jxkg/enums/general/ExamStatusEnum.java    |   55 ++++++++++++++++++
 src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java          |    7 ++
 src/main/resources/mapper/ClassesMapper.xml                     |    2 
 src/main/java/com/ycl/jxkg/domain/vo/ExamVO.java                |    8 ++
 src/main/resources/mapper/ExamMapper.xml                        |   15 ++++
 src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java |    3 +
 src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java    |    7 ++
 src/main/java/com/ycl/jxkg/domain/entity/Classes.java           |    3 
 src/main/java/com/ycl/jxkg/domain/entity/Exam.java              |   15 +++--
 src/main/java/com/ycl/jxkg/domain/form/ExamForm.java            |    7 +
 11 files changed, 111 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/ycl/jxkg/domain/entity/Classes.java b/src/main/java/com/ycl/jxkg/domain/entity/Classes.java
index a8af373..8956d34 100644
--- a/src/main/java/com/ycl/jxkg/domain/entity/Classes.java
+++ b/src/main/java/com/ycl/jxkg/domain/entity/Classes.java
@@ -1,5 +1,6 @@
 package com.ycl.jxkg.domain.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 
@@ -53,6 +54,6 @@
     /** 澶囨敞 */
     private String remark;
 
-    @TableField("create_time")
+    @TableField(value = "create_time", fill = FieldFill.INSERT)
     private Date createTime;
 }
diff --git a/src/main/java/com/ycl/jxkg/domain/entity/Exam.java b/src/main/java/com/ycl/jxkg/domain/entity/Exam.java
index c5f9cbb..54e6def 100644
--- a/src/main/java/com/ycl/jxkg/domain/entity/Exam.java
+++ b/src/main/java/com/ycl/jxkg/domain/entity/Exam.java
@@ -1,10 +1,12 @@
 package com.ycl.jxkg.domain.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.time.LocalDateTime;
+import java.util.Date;
 
 import com.ycl.jxkg.domain.base.AbsEntity;
+import com.ycl.jxkg.enums.general.ExamStatusEnum;
 import lombok.Data;
 
 /**
@@ -33,7 +35,7 @@
 
     @TableField("exam_paper_type")
     /** 璇曞嵎绫诲瀷 */
-    private String examPaperType;
+    private Integer examPaperType;
 
     @TableField("exam_place")
     /** 鑰冭瘯鍦扮偣 */
@@ -41,19 +43,20 @@
 
     @TableField("status")
     /** 鑰冭瘯鐘舵�� */
-    private String status;
+    private ExamStatusEnum status;
 
     @TableField("start_time")
     /** 寮�濮嬫椂闂� */
-    private LocalDateTime startTime;
+    private Date startTime;
 
     @TableField("end_time")
     /** 缁撴潫鏃堕棿 */
-    private LocalDateTime endTime;
+    private Date endTime;
 
     @TableField("teacher_id")
     /** 鍒涘缓鑰佸笀 */
     private Integer teacherId;
 
-
+    @TableField(value = "create_time", fill = FieldFill.INSERT)
+    private Date createTime;
 }
diff --git a/src/main/java/com/ycl/jxkg/domain/form/ExamForm.java b/src/main/java/com/ycl/jxkg/domain/form/ExamForm.java
index c8c20bf..7f2b50b 100644
--- a/src/main/java/com/ycl/jxkg/domain/form/ExamForm.java
+++ b/src/main/java/com/ycl/jxkg/domain/form/ExamForm.java
@@ -1,5 +1,6 @@
 package com.ycl.jxkg.domain.form;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ycl.jxkg.group.Update;
 import com.ycl.jxkg.group.Add;
 import com.ycl.jxkg.domain.base.AbsForm;
@@ -35,9 +36,9 @@
     @ApiModelProperty("鐝骇ID")
     private Integer classesId;
 
-    @NotBlank(message = "璇曞嵎绫诲瀷涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+    @NotNull(message = "璇曞嵎绫诲瀷涓嶈兘涓虹┖", groups = {Add.class, Update.class})
     @ApiModelProperty("璇曞嵎绫诲瀷")
-    private String examPaperType;
+    private Integer examPaperType;
 
     @NotBlank(message = "鑰冭瘯鍦扮偣涓嶈兘涓虹┖", groups = {Add.class, Update.class})
     @ApiModelProperty("鑰冭瘯鍦扮偣")
@@ -45,10 +46,12 @@
 
     @NotNull(message = "寮�濮嬫椂闂翠笉鑳戒负绌�", groups = {Add.class, Update.class})
     @ApiModelProperty("寮�濮嬫椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date startTime;
 
     @NotNull(message = "缁撴潫鏃堕棿涓嶈兘涓虹┖", groups = {Add.class, Update.class})
     @ApiModelProperty("缁撴潫鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date endTime;
 
     public static Exam getEntityByForm(@NonNull ExamForm form, Exam entity) {
diff --git a/src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java b/src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java
index c28defa..dbb756b 100644
--- a/src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java
+++ b/src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java
@@ -26,5 +26,7 @@
     /** 鐝骇鐘舵�� */
     private String status;
 
+    private Integer userId;
+
 }
 
diff --git a/src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java b/src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java
index cd0905a..1213f10 100644
--- a/src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java
+++ b/src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java
@@ -18,5 +18,12 @@
 @Data
 @ApiModel(value = "Exam鏌ヨ", description = "鑰冭瘯鏌ヨ")
 public class ExamQuery extends AbsQuery {
+
+    /** 鑰冭瘯鍚嶇О */
+    private String examName;
+
+    /** 鐝骇 */
+    private Integer classesId;
+
 }
 
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/ExamVO.java b/src/main/java/com/ycl/jxkg/domain/vo/ExamVO.java
index 5054d4c..86f7669 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/ExamVO.java
+++ b/src/main/java/com/ycl/jxkg/domain/vo/ExamVO.java
@@ -1,5 +1,6 @@
 package com.ycl.jxkg.domain.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ycl.jxkg.domain.base.AbsVo;
 import com.ycl.jxkg.domain.entity.Exam;
 import java.util.List;
@@ -24,12 +25,14 @@
 
     /** 璇曞嵎ID */
     private Integer examPaperId;
+    private String examPaperName;
 
     /** 鐝骇ID */
     private Integer classesId;
+    private String className;
 
     /** 璇曞嵎绫诲瀷 */
-    private String examPaperType;
+    private Integer examPaperType;
 
     /** 鑰冭瘯鍦扮偣 */
     private String examPlace;
@@ -38,12 +41,15 @@
     private String status;
 
     /** 寮�濮嬫椂闂� */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date startTime;
 
     /** 缁撴潫鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date endTime;
 
     /** 鍒涘缓鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
     /** 鍒涘缓鑰佸笀 */
diff --git a/src/main/java/com/ycl/jxkg/enums/general/ExamStatusEnum.java b/src/main/java/com/ycl/jxkg/enums/general/ExamStatusEnum.java
new file mode 100644
index 0000000..03037d0
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/enums/general/ExamStatusEnum.java
@@ -0,0 +1,55 @@
+package com.ycl.jxkg.enums.general;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * 鑰冭瘯鐘舵��
+ *
+ * @author锛歺p
+ * @date锛�2024/6/4 9:35
+ */
+@Getter
+public enum ExamStatusEnum {
+
+    NOT_START("not_start", "鏈紑濮�"),
+    ING("ing", "杩涜涓�"),
+    FINISHED("finished", "宸茬粨鏉�"),
+    ;
+
+    @EnumValue
+    private final String value;
+
+    @JsonValue
+    private final String desc;
+
+    ExamStatusEnum(String value, String desc) {
+        this.value = value;
+        this.desc = desc;
+    }
+
+    /**
+     * 鍒ゆ柇褰撳墠鏃堕棿瀵瑰簲鐨勮�冭瘯鐘舵��
+     *
+     * @param start
+     * @param end
+     * @param now
+     * @return
+     */
+    public static ExamStatusEnum getStatusByTime(Date start, Date end, Date now) {
+        if (Objects.isNull(now)) {
+            now = new Date();
+        }
+        if (now.after(end)) {
+            return FINISHED;
+        } else if (now.before(start)) {
+            return NOT_START;
+        } else {
+            return ING;
+        }
+    }
+}
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java
index c93615e..d4b08a9 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java
@@ -43,6 +43,8 @@
     @Override
     public Result add(ClassesForm form) {
         Classes entity = ClassesForm.getEntityByForm(form, null);
+        entity.setStatus(ClassesStatusEnum.NORMAL);
+        entity.setCreateUser(webContext.getCurrentUser().getId());
         baseMapper.insert(entity);
         return Result.ok("娣诲姞鎴愬姛");
     }
@@ -93,6 +95,7 @@
     @Override
     public Result page(ClassesQuery query) {
         IPage<ClassesVO> page = PageUtil.getPage(query, ClassesVO.class);
+        query.setUserId(webContext.getCurrentUser().getId());
         baseMapper.getPage(page, query);
         return Result.ok().data(page.getRecords()).total(page.getTotal());
     }
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 378a11c..afbca10 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
@@ -1,7 +1,9 @@
 package com.ycl.jxkg.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ycl.jxkg.context.WebContext;
 import com.ycl.jxkg.domain.entity.Exam;
+import com.ycl.jxkg.enums.general.ExamStatusEnum;
 import com.ycl.jxkg.mapper.ExamMapper;
 import com.ycl.jxkg.service.ExamService;
 import com.ycl.jxkg.base.Result;
@@ -29,6 +31,7 @@
 public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements ExamService {
 
     private final ExamMapper examMapper;
+    private final WebContext webContext;
 
     /**
      * 娣诲姞
@@ -38,6 +41,8 @@
     @Override
     public Result add(ExamForm form) {
         Exam entity = ExamForm.getEntityByForm(form, null);
+        entity.setStatus(ExamStatusEnum.getStatusByTime(form.getStartTime(), form.getEndTime(), null));
+        entity.setTeacherId(webContext.getCurrentUser().getId());
         baseMapper.insert(entity);
         return Result.ok("娣诲姞鎴愬姛");
     }
@@ -50,10 +55,10 @@
     @Override
     public Result update(ExamForm form) {
         Exam entity = baseMapper.selectById(form.getId());
-
         // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
         Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
         BeanUtils.copyProperties(form, entity);
+        entity.setStatus(ExamStatusEnum.getStatusByTime(form.getStartTime(), form.getEndTime(), null));
         baseMapper.updateById(entity);
         return Result.ok("淇敼鎴愬姛");
     }
diff --git a/src/main/resources/mapper/ClassesMapper.xml b/src/main/resources/mapper/ClassesMapper.xml
index 2481ae5..302924c 100644
--- a/src/main/resources/mapper/ClassesMapper.xml
+++ b/src/main/resources/mapper/ClassesMapper.xml
@@ -63,7 +63,7 @@
             t_classes TC
                 LEFT JOIN t_user TU ON TU.id = TC.create_user AND TU.deleted = 0
         WHERE
-            TC.deleted = 0
+            TC.deleted = 0 AND TC.create_user = #{query.userId}
             <if test="query.className != null and query.className != ''">
                 AND TC.class_name like concat('%', #{query.className}, '%')
             </if>
diff --git a/src/main/resources/mapper/ExamMapper.xml b/src/main/resources/mapper/ExamMapper.xml
index 4961fc1..62d1c81 100644
--- a/src/main/resources/mapper/ExamMapper.xml
+++ b/src/main/resources/mapper/ExamMapper.xml
@@ -14,6 +14,8 @@
         <result column="end_time" property="endTime" />
         <result column="create_time" property="createTime" />
         <result column="teacher_id" property="teacherId" />
+        <result column="class_name" property="className" />
+        <result column="name" property="examPaperName" />
     </resultMap>
 
 
@@ -54,11 +56,22 @@
             TE.end_time,
             TE.create_time,
             TE.teacher_id,
-            TE.id
+            TE.id,
+            TC.class_name,
+            TEP.name
         FROM
             t_exam TE
+                INNER JOIN t_user TU ON TU.id = TE.teacher_id AND TU.deleted = 0
+                INNER JOIN t_classes TC ON TC.id = TE.classes_id AND TC.deleted = 0
+                INNER JOIN t_exam_paper TEP ON TEP.id = TE.exam_paper_id AND TEP.deleted = 0
         WHERE
             TE.deleted = 0
+            <if test="query.examName != null and query.examName != ''">
+                AND TE.exam_name like concat('%', #{query.examName}, '%')
+            </if>
+            <if test="query.classesId != null">
+                AND TE.classes_id = #{query.classesId}
+            </if>
     </select>
 
 </mapper>

--
Gitblit v1.8.0