From e80d90bf5e5f2b8e72f02454606f1f432cbab7fd Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 06 六月 2024 18:01:51 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java                  |    3 
 src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java                                 |    7 
 src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageResponseVO.java |   10 
 src/main/java/com/ycl/jxkg/mapper/SubjectMapper.java                                      |    7 
 src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java                   |   31 +-
 src/main/java/com/ycl/jxkg/domain/entity/Subject.java                                     |    5 
 src/main/java/com/ycl/jxkg/domain/entity/Question.java                                    |    5 
 src/main/java/com/ycl/jxkg/base/Result.java                                               |   13 +
 src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java                       |   94 +++++++
 src/main/java/com/ycl/jxkg/service/impl/QuestionServiceImpl.java                          |    4 
 src/main/java/com/ycl/jxkg/service/SubjectService.java                                    |   18 +
 src/main/java/com/ycl/jxkg/controller/wx/student/AuthController.java                      |    2 
 src/main/java/com/ycl/jxkg/enums/RoleEnum.java                                            |    4 
 src/main/java/com/ycl/jxkg/domain/vo/admin/education/SubjectPageRequestVO.java            |    2 
 src/main/java/com/ycl/jxkg/listener/CalculateExamPaperAnswerListener.java                 |    4 
 src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java                         |    6 
 src/main/java/com/ycl/jxkg/controller/admin/UserController.java                           |    4 
 src/main/java/com/ycl/jxkg/enums/general/StatusEnum.java                                  |    2 
 src/main/resources/mapper/ExamPaperAnswerMapper.xml                                       |   43 +++
 src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java                           |   63 +++++
 src/main/java/com/ycl/jxkg/enums/DeductTypeEnum.java                                      |    4 
 src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java                    |   16 +
 src/main/java/com/ycl/jxkg/domain/vo/admin/question/QuestionResponseVO.java               |    2 
 src/main/resources/mapper/ClassesMapper.xml                                               |    6 
 src/main/java/com/ycl/jxkg/controller/wx/student/ExamPaperAnswerController.java           |    2 
 src/main/resources/mapper/ClassesUserMapper.xml                                           |   49 ++--
 src/main/java/com/ycl/jxkg/enums/ExamPaperTypeEnum.java                                   |    4 
 src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationProvider.java         |    4 
 src/main/java/com/ycl/jxkg/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java   |    2 
 src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java                              |    5 
 src/main/java/com/ycl/jxkg/enums/general/ClassesStatusEnum.java                           |    2 
 src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java                               |   18 -
 src/main/java/com/ycl/jxkg/controller/admin/ExamPaperAnswerController.java                |   14 
 src/main/java/com/ycl/jxkg/enums/QuestionTypeEnum.java                                    |    4 
 src/main/java/com/ycl/jxkg/domain/entity/ClassesNotify.java                               |    6 
 pom.xml                                                                                   |    8 
 src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java                                   |   13 +
 src/main/java/com/ycl/jxkg/mapper/ExamPaperAnswerMapper.java                              |    3 
 src/main/java/com/ycl/jxkg/enums/VisibilityEnum.java                                      |    0 
 src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java                                       |    6 
 src/main/java/com/ycl/jxkg/domain/form/ClassesNotifyForm.java                             |    4 
 src/main/java/com/ycl/jxkg/service/impl/ClassesNotifyServiceImpl.java                     |    3 
 src/main/resources/mapper/SubjectMapper.xml                                               |    7 
 src/main/java/com/ycl/jxkg/config/spring/security/SecurityConfigurer.java                 |    2 
 src/main/java/com/ycl/jxkg/controller/admin/SubjectController.java                        |   37 +-
 src/main/java/com/ycl/jxkg/controller/wx/student/DashboardController.java                 |    2 
 src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java              |    2 
 src/main/java/com/ycl/jxkg/service/ClassesUserService.java                                |   11 
 src/main/java/com/ycl/jxkg/enums/UserStatusEnum.java                                      |    4 
 src/main/java/com/ycl/jxkg/controller/wx/student/UserController.java                      |    4 
 src/main/java/com/ycl/jxkg/domain/vo/admin/education/SubjectResponseVO.java               |    2 
 src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java                           |    2 
 src/main/java/com/ycl/jxkg/enums/ExamPaperAnswerStatusEnum.java                           |    4 
 src/main/java/com/ycl/jxkg/controller/student/UserController.java                         |    5 
 src/main/java/com/ycl/jxkg/domain/vo/admin/paper/ExamPaperAnswerPageRequestVO.java        |    8 
 src/main/java/com/ycl/jxkg/config/spring/security/RestDetailsServiceImpl.java             |    2 
 src/main/java/com/ycl/jxkg/controller/student/DashboardController.java                    |    2 
 src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java                        |    2 
 src/main/java/com/ycl/jxkg/controller/admin/QuestionController.java                       |    2 
 src/main/java/com/ycl/jxkg/domain/entity/Classes.java                                     |    2 
 src/main/java/com/ycl/jxkg/service/ExamPaperAnswerService.java                            |   12 
 src/main/java/com/ycl/jxkg/service/impl/SubjectServiceImpl.java                           |   27 +
 62 files changed, 465 insertions(+), 176 deletions(-)

diff --git a/pom.xml b/pom.xml
index 1c672d7..fbd1c5a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,7 +17,7 @@
         <java.version>1.8</java.version>
         <mysql.version>8.0.17</mysql.version>
         <spring.boot.version>2.1.6.RELEASE</spring.boot.version>
-        <mybatisplus.version>3.5.1</mybatisplus.version>
+        <mybatisplus.version>3.5.4</mybatisplus.version>
         <lombok.version>1.18.24</lombok.version>
         <knife.version>3.0.3</knife.version>
     </properties>
@@ -92,12 +92,6 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-undertow</artifactId>
             <version>${spring.boot.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.mybatis.spring.boot</groupId>
-            <artifactId>mybatis-spring-boot-starter</artifactId>
-            <version>2.1.0</version>
         </dependency>
 
         <dependency>
diff --git a/src/main/java/com/ycl/jxkg/base/Result.java b/src/main/java/com/ycl/jxkg/base/Result.java
index 32ede1a..977d7fe 100644
--- a/src/main/java/com/ycl/jxkg/base/Result.java
+++ b/src/main/java/com/ycl/jxkg/base/Result.java
@@ -83,6 +83,19 @@
     }
 
     /**
+     * Ok rest response.
+     *
+     * @return the rest response
+     */
+    public static Result ok(String msg) {
+        SystemCode systemCode = SystemCode.OK;
+        Result restResponse = new Result();
+        restResponse.put("code", systemCode.getCode());
+        restResponse.put("message", msg);
+        return restResponse;
+    }
+
+    /**
      * Gets code.
      *
      * @return the code
diff --git a/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationProvider.java b/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationProvider.java
index d7904ce..e2ff848 100644
--- a/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationProvider.java
+++ b/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationProvider.java
@@ -2,8 +2,8 @@
 
 
 import com.ycl.jxkg.context.WebContext;
-import com.ycl.jxkg.domain.enums.RoleEnum;
-import com.ycl.jxkg.domain.enums.UserStatusEnum;
+import com.ycl.jxkg.enums.RoleEnum;
+import com.ycl.jxkg.enums.UserStatusEnum;
 import com.ycl.jxkg.service.AuthenticationService;
 import com.ycl.jxkg.service.UserService;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/com/ycl/jxkg/config/spring/security/RestDetailsServiceImpl.java b/src/main/java/com/ycl/jxkg/config/spring/security/RestDetailsServiceImpl.java
index bb3f157..005a33c 100644
--- a/src/main/java/com/ycl/jxkg/config/spring/security/RestDetailsServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/config/spring/security/RestDetailsServiceImpl.java
@@ -1,6 +1,6 @@
 package com.ycl.jxkg.config.spring.security;
 
-import com.ycl.jxkg.domain.enums.RoleEnum;
+import com.ycl.jxkg.enums.RoleEnum;
 import com.ycl.jxkg.service.UserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.GrantedAuthority;
diff --git a/src/main/java/com/ycl/jxkg/config/spring/security/SecurityConfigurer.java b/src/main/java/com/ycl/jxkg/config/spring/security/SecurityConfigurer.java
index 7312941..1eb012c 100644
--- a/src/main/java/com/ycl/jxkg/config/spring/security/SecurityConfigurer.java
+++ b/src/main/java/com/ycl/jxkg/config/spring/security/SecurityConfigurer.java
@@ -2,7 +2,7 @@
 
 import com.ycl.jxkg.config.property.CookieConfig;
 import com.ycl.jxkg.config.property.SystemConfig;
-import com.ycl.jxkg.domain.enums.RoleEnum;
+import com.ycl.jxkg.enums.RoleEnum;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java b/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java
index 0f1a651..3167d00 100644
--- a/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java
+++ b/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java
@@ -25,7 +25,7 @@
 @RequiredArgsConstructor
 @Api(value = "鐝骇", tags = "鐝骇绠$悊")
 @RestController
-@RequestMapping("/api/classes")
+@RequestMapping("/api/admin/classes")
 public class ClassesController {
 
     private final ClassesService classesService;
diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java b/src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java
index 3a903ac..1ff274e 100644
--- a/src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java
+++ b/src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java
@@ -27,14 +27,13 @@
 @RequiredArgsConstructor
 @Api(value = "鐝骇閫氱煡", tags = "鐝骇閫氱煡绠$悊")
 @RestController
-@RequestMapping("/api/classes-notify")
+@RequestMapping("/api/admin/classes-notify")
 public class ClassesNotifyController {
 
     private final ClassesNotifyService classesNotifyService;
 
     @PostMapping
     @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
-    @PreAuthorize("hasAuthority('classesNotify:add')")
     public Result add(@RequestBody @Validated(Add.class) ClassesNotifyForm form) {
         return classesNotifyService.add(form);
     }
diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java b/src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java
index faf1fee..ce28ca7 100644
--- a/src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java
+++ b/src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java
@@ -1,5 +1,6 @@
 package com.ycl.jxkg.controller.admin;
 
+import com.ycl.jxkg.domain.form.EditClassesUserForm;
 import com.ycl.jxkg.group.Update;
 import com.ycl.jxkg.group.Add;
 import org.springframework.validation.annotation.Validated;
@@ -27,7 +28,7 @@
 @RequiredArgsConstructor
 @Api(value = "鐝骇瀛﹀憳", tags = "鐝骇瀛﹀憳")
 @RestController
-@RequestMapping("/api/classes-user")
+@RequestMapping("/api/admin/classesUser")
 public class ClassesUserController {
 
     private final ClassesUserService classesUserService;
@@ -35,15 +36,22 @@
     @PostMapping
     @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
     @PreAuthorize("hasAuthority('classesUser:add')")
-    public Result add(@RequestBody @Validated(Add.class) ClassesUserForm form) {
+    public Result add(@RequestBody @Validated(Add.class) EditClassesUserForm form) {
         return classesUserService.add(form);
+    }
+
+    @PostMapping("/edit")
+    @ApiOperation(value = "淇敼", notes = "淇敼")
+    @PreAuthorize("hasAuthority('classesUser:edit')")
+    public Result update(@RequestBody @Validated(Update.class) ClassesUserForm form) {
+        return classesUserService.update(form);
     }
 
     @PutMapping
     @ApiOperation(value = "淇敼", notes = "淇敼")
     @PreAuthorize("hasAuthority('classesUser:edit')")
-    public Result update(@RequestBody @Validated(Update.class) ClassesUserForm form) {
-        return classesUserService.update(form);
+    public Result edit(@RequestBody @Validated(Update.class) EditClassesUserForm form) {
+        return classesUserService.edit(form);
     }
 
     @DeleteMapping("/{id}")
diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperAnswerController.java b/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperAnswerController.java
index 50a3d0f..2cc7adc 100644
--- a/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperAnswerController.java
+++ b/src/main/java/com/ycl/jxkg/controller/admin/ExamPaperAnswerController.java
@@ -1,17 +1,19 @@
 package com.ycl.jxkg.controller.admin;
 
+import com.github.pagehelper.PageInfo;
 import com.ycl.jxkg.base.BaseApiController;
 import com.ycl.jxkg.base.Result;
 import com.ycl.jxkg.domain.entity.ExamPaperAnswer;
 import com.ycl.jxkg.domain.entity.Subject;
 import com.ycl.jxkg.domain.entity.User;
-import com.ycl.jxkg.service.*;
+import com.ycl.jxkg.domain.vo.admin.paper.ExamPaperAnswerPageRequestVO;
+import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO;
+import com.ycl.jxkg.service.ExamPaperAnswerService;
+import com.ycl.jxkg.service.SubjectService;
+import com.ycl.jxkg.service.UserService;
 import com.ycl.jxkg.utils.DateTimeUtil;
 import com.ycl.jxkg.utils.ExamUtil;
 import com.ycl.jxkg.utils.PageInfoHelper;
-import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO;
-import com.ycl.jxkg.domain.vo.admin.paper.ExamPaperAnswerPageRequestVO;
-import com.github.pagehelper.PageInfo;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.web.bind.annotation.*;
@@ -25,6 +27,10 @@
     private final SubjectService subjectService;
     private final UserService userService;
 
+    @PostMapping("/pageExamPaper")
+    public Result<PageInfo<ExamPaperAnswerPageResponseVO>> pageExamPaper(@RequestBody ExamPaperAnswerPageRequestVO model) {
+        return Result.ok(examPaperAnswerService.pageExamPaper(model));
+    }
 
     @RequestMapping(value = "/page", method = RequestMethod.POST)
     public Result<PageInfo<ExamPaperAnswerPageResponseVO>> pageJudgeList(@RequestBody ExamPaperAnswerPageRequestVO model) {
diff --git a/src/main/java/com/ycl/jxkg/controller/admin/QuestionController.java b/src/main/java/com/ycl/jxkg/controller/admin/QuestionController.java
index 7285a76..bf1555a 100644
--- a/src/main/java/com/ycl/jxkg/controller/admin/QuestionController.java
+++ b/src/main/java/com/ycl/jxkg/controller/admin/QuestionController.java
@@ -4,12 +4,12 @@
 import com.ycl.jxkg.base.BaseApiController;
 import com.ycl.jxkg.base.Result;
 import com.ycl.jxkg.base.SystemCode;
-import com.ycl.jxkg.domain.enums.QuestionTypeEnum;
 import com.ycl.jxkg.domain.question.QuestionObject;
 import com.ycl.jxkg.domain.vo.admin.question.QuestionEditRequestVO;
 import com.ycl.jxkg.domain.vo.admin.question.QuestionPageRequestVO;
 import com.ycl.jxkg.domain.vo.admin.question.QuestionResponseVO;
 import com.ycl.jxkg.service.QuestionService;
+import com.ycl.jxkg.enums.QuestionTypeEnum;
 import com.ycl.jxkg.utils.ErrorUtil;
 import com.ycl.jxkg.utils.HtmlUtil;
 import com.ycl.jxkg.utils.JsonUtil;
diff --git a/src/main/java/com/ycl/jxkg/controller/admin/SubjectController.java b/src/main/java/com/ycl/jxkg/controller/admin/SubjectController.java
index 345f1fe..878c038 100644
--- a/src/main/java/com/ycl/jxkg/controller/admin/SubjectController.java
+++ b/src/main/java/com/ycl/jxkg/controller/admin/SubjectController.java
@@ -1,15 +1,14 @@
 package com.ycl.jxkg.controller.admin;
 
 
+import com.github.pagehelper.PageInfo;
 import com.ycl.jxkg.base.BaseApiController;
 import com.ycl.jxkg.base.Result;
 import com.ycl.jxkg.domain.entity.Subject;
-import com.ycl.jxkg.service.SubjectService;
-import com.ycl.jxkg.utils.PageInfoHelper;
 import com.ycl.jxkg.domain.vo.admin.education.SubjectEditRequestVO;
 import com.ycl.jxkg.domain.vo.admin.education.SubjectPageRequestVO;
 import com.ycl.jxkg.domain.vo.admin.education.SubjectResponseVO;
-import com.github.pagehelper.PageInfo;
+import com.ycl.jxkg.service.SubjectService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.web.bind.annotation.*;
@@ -32,25 +31,19 @@
 
     @RequestMapping(value = "/page", method = RequestMethod.POST)
     public Result<PageInfo<SubjectResponseVO>> pageList(@RequestBody SubjectPageRequestVO model) {
-        PageInfo<Subject> pageInfo = subjectService.page(model);
-        PageInfo<SubjectResponseVO> page = PageInfoHelper.copyMap(pageInfo, e -> {
-            SubjectResponseVO vo = new SubjectResponseVO();
-            BeanUtils.copyProperties(e, vo);
-            return vo;
-        });
-        return Result.ok(page);
+        return Result.ok(subjectService.page(model));
     }
 
     @RequestMapping(value = "/edit", method = RequestMethod.POST)
-    public Result edit(@RequestBody @Valid SubjectEditRequestVO model) {
+    public Result<String> edit(@RequestBody @Valid SubjectEditRequestVO model) {
         Subject subject = new Subject();
         BeanUtils.copyProperties(model, subject);
         if (model.getId() == null) {
-            subjectService.save(subject);
+            subjectService.save(subject.setCreateUser(getCurrentUser().getId()));
         } else {
             subjectService.updateById(subject);
         }
-        return Result.ok();
+        return Result.ok("鎿嶄綔鎴愬姛");
     }
 
     @RequestMapping(value = "/select/{id}", method = RequestMethod.POST)
@@ -62,9 +55,19 @@
     }
 
     @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST)
-    public Result delete(@PathVariable Integer id) {
-        Subject subject = subjectService.getById(id);
-        subjectService.updateById(subject);
-        return Result.ok();
+    public Result<Boolean> delete(@PathVariable Integer id) {
+        return Result.ok(subjectService.removeById(id));
     }
+
+    @GetMapping(value = "/getItemOrder")
+    public Result<Integer> getItemOrder() {
+        return Result.ok(subjectService.getItemOrder());
+    }
+
+    @PostMapping(value = "/status")
+    public Result<String> status(@RequestBody Subject subject) {
+        subjectService.updateStatus(subject);
+        return Result.ok("鎿嶄綔鎴愬姛");
+    }
+
 }
diff --git a/src/main/java/com/ycl/jxkg/controller/admin/UserController.java b/src/main/java/com/ycl/jxkg/controller/admin/UserController.java
index d9aa558..17c4c88 100644
--- a/src/main/java/com/ycl/jxkg/controller/admin/UserController.java
+++ b/src/main/java/com/ycl/jxkg/controller/admin/UserController.java
@@ -3,11 +3,11 @@
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.ycl.jxkg.base.BaseApiController;
 import com.ycl.jxkg.base.Result;
-import com.ycl.jxkg.domain.enums.RoleEnum;
+import com.ycl.jxkg.enums.RoleEnum;
 import com.ycl.jxkg.domain.other.KeyValue;
 import com.ycl.jxkg.domain.entity.User;
 import com.ycl.jxkg.domain.entity.UserEventLog;
-import com.ycl.jxkg.domain.enums.UserStatusEnum;
+import com.ycl.jxkg.enums.UserStatusEnum;
 import com.ycl.jxkg.domain.vo.StudentVO;
 import com.ycl.jxkg.service.AuthenticationService;
 import com.ycl.jxkg.service.UserEventLogService;
diff --git a/src/main/java/com/ycl/jxkg/controller/student/DashboardController.java b/src/main/java/com/ycl/jxkg/controller/student/DashboardController.java
index dbc7927..eb9fa82 100644
--- a/src/main/java/com/ycl/jxkg/controller/student/DashboardController.java
+++ b/src/main/java/com/ycl/jxkg/controller/student/DashboardController.java
@@ -6,7 +6,7 @@
 import com.ycl.jxkg.domain.entity.TaskExamCustomerAnswer;
 import com.ycl.jxkg.domain.entity.TextContent;
 import com.ycl.jxkg.domain.entity.User;
-import com.ycl.jxkg.domain.enums.ExamPaperTypeEnum;
+import com.ycl.jxkg.enums.ExamPaperTypeEnum;
 import com.ycl.jxkg.domain.task.TaskItemAnswerObject;
 import com.ycl.jxkg.domain.task.TaskItemObject;
 import com.ycl.jxkg.service.*;
diff --git a/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java b/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java
index e0605d3..3cf880e 100644
--- a/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java
+++ b/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java
@@ -7,7 +7,7 @@
 import com.ycl.jxkg.domain.entity.Subject;
 import com.ycl.jxkg.domain.entity.User;
 import com.ycl.jxkg.domain.entity.UserEventLog;
-import com.ycl.jxkg.domain.enums.ExamPaperAnswerStatusEnum;
+import com.ycl.jxkg.enums.ExamPaperAnswerStatusEnum;
 import com.ycl.jxkg.event.CalculateExamPaperAnswerCompleteEvent;
 import com.ycl.jxkg.event.UserEvent;
 import com.ycl.jxkg.service.ExamPaperAnswerService;
diff --git a/src/main/java/com/ycl/jxkg/controller/student/UserController.java b/src/main/java/com/ycl/jxkg/controller/student/UserController.java
index 0ceabd8..6896106 100644
--- a/src/main/java/com/ycl/jxkg/controller/student/UserController.java
+++ b/src/main/java/com/ycl/jxkg/controller/student/UserController.java
@@ -1,14 +1,13 @@
 package com.ycl.jxkg.controller.student;
 
-import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.ycl.jxkg.base.BaseApiController;
 import com.ycl.jxkg.base.Result;
 import com.ycl.jxkg.domain.entity.Message;
 import com.ycl.jxkg.domain.entity.MessageUser;
 import com.ycl.jxkg.domain.entity.User;
 import com.ycl.jxkg.domain.entity.UserEventLog;
-import com.ycl.jxkg.domain.enums.RoleEnum;
-import com.ycl.jxkg.domain.enums.UserStatusEnum;
+import com.ycl.jxkg.enums.RoleEnum;
+import com.ycl.jxkg.enums.UserStatusEnum;
 import com.ycl.jxkg.event.UserEvent;
 import com.ycl.jxkg.service.AuthenticationService;
 import com.ycl.jxkg.service.MessageService;
diff --git a/src/main/java/com/ycl/jxkg/controller/wx/student/AuthController.java b/src/main/java/com/ycl/jxkg/controller/wx/student/AuthController.java
index 61437cf..b2975cd 100644
--- a/src/main/java/com/ycl/jxkg/controller/wx/student/AuthController.java
+++ b/src/main/java/com/ycl/jxkg/controller/wx/student/AuthController.java
@@ -4,7 +4,7 @@
 import com.ycl.jxkg.config.property.SystemConfig;
 import com.ycl.jxkg.controller.wx.BaseWXApiController;
 import com.ycl.jxkg.domain.entity.UserToken;
-import com.ycl.jxkg.domain.enums.UserStatusEnum;
+import com.ycl.jxkg.enums.UserStatusEnum;
 import com.ycl.jxkg.service.AuthenticationService;
 import com.ycl.jxkg.service.UserService;
 import com.ycl.jxkg.service.UserTokenService;
diff --git a/src/main/java/com/ycl/jxkg/controller/wx/student/DashboardController.java b/src/main/java/com/ycl/jxkg/controller/wx/student/DashboardController.java
index baf0ed9..470f167 100644
--- a/src/main/java/com/ycl/jxkg/controller/wx/student/DashboardController.java
+++ b/src/main/java/com/ycl/jxkg/controller/wx/student/DashboardController.java
@@ -6,7 +6,7 @@
 import com.ycl.jxkg.domain.entity.TaskExamCustomerAnswer;
 import com.ycl.jxkg.domain.entity.TextContent;
 import com.ycl.jxkg.domain.entity.User;
-import com.ycl.jxkg.domain.enums.ExamPaperTypeEnum;
+import com.ycl.jxkg.enums.ExamPaperTypeEnum;
 import com.ycl.jxkg.domain.task.TaskItemAnswerObject;
 import com.ycl.jxkg.domain.task.TaskItemObject;
 import com.ycl.jxkg.service.ExamPaperService;
diff --git a/src/main/java/com/ycl/jxkg/controller/wx/student/ExamPaperAnswerController.java b/src/main/java/com/ycl/jxkg/controller/wx/student/ExamPaperAnswerController.java
index 98677b9..49b1487 100644
--- a/src/main/java/com/ycl/jxkg/controller/wx/student/ExamPaperAnswerController.java
+++ b/src/main/java/com/ycl/jxkg/controller/wx/student/ExamPaperAnswerController.java
@@ -7,7 +7,7 @@
 import com.ycl.jxkg.domain.entity.Subject;
 import com.ycl.jxkg.domain.entity.User;
 import com.ycl.jxkg.domain.entity.UserEventLog;
-import com.ycl.jxkg.domain.enums.QuestionTypeEnum;
+import com.ycl.jxkg.enums.QuestionTypeEnum;
 import com.ycl.jxkg.event.CalculateExamPaperAnswerCompleteEvent;
 import com.ycl.jxkg.event.UserEvent;
 import com.ycl.jxkg.service.ExamPaperAnswerService;
diff --git a/src/main/java/com/ycl/jxkg/controller/wx/student/UserController.java b/src/main/java/com/ycl/jxkg/controller/wx/student/UserController.java
index 1670667..376026c 100644
--- a/src/main/java/com/ycl/jxkg/controller/wx/student/UserController.java
+++ b/src/main/java/com/ycl/jxkg/controller/wx/student/UserController.java
@@ -6,8 +6,8 @@
 import com.ycl.jxkg.domain.entity.MessageUser;
 import com.ycl.jxkg.domain.entity.User;
 import com.ycl.jxkg.domain.entity.UserEventLog;
-import com.ycl.jxkg.domain.enums.RoleEnum;
-import com.ycl.jxkg.domain.enums.UserStatusEnum;
+import com.ycl.jxkg.enums.RoleEnum;
+import com.ycl.jxkg.enums.UserStatusEnum;
 import com.ycl.jxkg.event.UserEvent;
 import com.ycl.jxkg.service.AuthenticationService;
 import com.ycl.jxkg.service.MessageService;
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 1c3619f..a8af373 100644
--- a/src/main/java/com/ycl/jxkg/domain/entity/Classes.java
+++ b/src/main/java/com/ycl/jxkg/domain/entity/Classes.java
@@ -4,7 +4,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import com.ycl.jxkg.domain.base.AbsEntity;
-import com.ycl.jxkg.domain.enums.general.ClassesStatusEnum;
+import com.ycl.jxkg.enums.general.ClassesStatusEnum;
 import lombok.Data;
 
 import java.util.Date;
diff --git a/src/main/java/com/ycl/jxkg/domain/entity/ClassesNotify.java b/src/main/java/com/ycl/jxkg/domain/entity/ClassesNotify.java
index 6fe48ed..ab7cdc7 100644
--- a/src/main/java/com/ycl/jxkg/domain/entity/ClassesNotify.java
+++ b/src/main/java/com/ycl/jxkg/domain/entity/ClassesNotify.java
@@ -1,10 +1,13 @@
 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 com.ycl.jxkg.domain.base.AbsEntity;
 import lombok.Data;
+
+import java.util.Date;
 
 /**
  * 鐝骇閫氱煡
@@ -30,5 +33,8 @@
     /** 閫氱煡鍐呭 */
     private String notifyContent;
 
+    @TableField(value = "create_time", fill = FieldFill.INSERT)
+    private Date createTime;
+
 
 }
diff --git a/src/main/java/com/ycl/jxkg/domain/entity/Question.java b/src/main/java/com/ycl/jxkg/domain/entity/Question.java
index f02b8a6..4075d4f 100644
--- a/src/main/java/com/ycl/jxkg/domain/entity/Question.java
+++ b/src/main/java/com/ycl/jxkg/domain/entity/Question.java
@@ -4,12 +4,11 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ycl.jxkg.domain.base.AbsEntity;
-import com.ycl.jxkg.domain.enums.QuestionTypeEnum;
-import com.ycl.jxkg.domain.enums.general.StatusEnum;
+import com.ycl.jxkg.enums.QuestionTypeEnum;
+import com.ycl.jxkg.enums.general.StatusEnum;
 import com.ycl.jxkg.utils.ExamUtil;
 import lombok.Data;
 
-import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
 
diff --git a/src/main/java/com/ycl/jxkg/domain/entity/Subject.java b/src/main/java/com/ycl/jxkg/domain/entity/Subject.java
index e305bcd..a8370e4 100644
--- a/src/main/java/com/ycl/jxkg/domain/entity/Subject.java
+++ b/src/main/java/com/ycl/jxkg/domain/entity/Subject.java
@@ -4,12 +4,15 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ycl.jxkg.domain.base.AbsEntity;
+import com.ycl.jxkg.enums.general.StatusEnum;
 import lombok.Data;
+import lombok.experimental.Accessors;
 
 import java.util.Date;
 
 @Data
 @TableName("t_subject")
+@Accessors(chain = true)
 public class Subject extends AbsEntity {
 
     /**
@@ -31,6 +34,6 @@
     private Date createTime;
 
     @TableField(value = "status")
-    private Integer status;
+    private StatusEnum status;
 
 }
diff --git a/src/main/java/com/ycl/jxkg/domain/form/ClassesNotifyForm.java b/src/main/java/com/ycl/jxkg/domain/form/ClassesNotifyForm.java
index b660d7b..990f2de 100644
--- a/src/main/java/com/ycl/jxkg/domain/form/ClassesNotifyForm.java
+++ b/src/main/java/com/ycl/jxkg/domain/form/ClassesNotifyForm.java
@@ -27,7 +27,6 @@
     @ApiModelProperty("鐝骇")
     private Integer classesId;
 
-    @NotNull(message = "鍙戝嚭閫氱煡鑰呬笉鑳戒负绌�", groups = {Add.class, Update.class})
     @ApiModelProperty("鍙戝嚭閫氱煡鑰�")
     private Integer teacherId;
 
@@ -35,9 +34,6 @@
     @ApiModelProperty("閫氱煡鍐呭")
     private String notifyContent;
 
-    @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class})
-    @ApiModelProperty("")
-    private Date createTime;
 
     public static ClassesNotify getEntityByForm(@NonNull ClassesNotifyForm form, ClassesNotify entity) {
         if(entity == null) {
diff --git a/src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java b/src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java
index d59163d..c14b7a9 100644
--- a/src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java
+++ b/src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java
@@ -13,6 +13,7 @@
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 鐝骇涓庣敤鎴峰叧鑱旇〃琛ㄥ崟
@@ -22,19 +23,14 @@
  */
 @Data
 @ApiModel(value = "ClassesUser琛ㄥ崟", description = "鐝骇涓庣敤鎴峰叧鑱旇〃琛ㄥ崟")
-public class ClassesUserForm extends AbsForm {
+public class ClassesUserForm {
 
-    @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class})
-    @ApiModelProperty("")
-    private Integer classesId;
+    @NotNull(message = "鐝骇涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+    @ApiModelProperty("鐝骇")
+    private Integer id;
 
-    @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class})
-    @ApiModelProperty("")
-    private Integer userId;
-
-    @NotNull(message = "鍔犲叆鏃堕棿涓嶈兘涓虹┖", groups = {Add.class, Update.class})
-    @ApiModelProperty("鍔犲叆鏃堕棿")
-    private Date createTime;
+    @ApiModelProperty("瀛﹀憳鍒楄〃")
+    private List<Integer> studentList;
 
     public static ClassesUser getEntityByForm(@NonNull ClassesUserForm form, ClassesUser entity) {
         if(entity == null) {
diff --git a/src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java b/src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java
new file mode 100644
index 0000000..d27669a
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java
@@ -0,0 +1,63 @@
+package com.ycl.jxkg.domain.form;
+
+import com.ycl.jxkg.domain.entity.ClassesUser;
+import com.ycl.jxkg.group.Add;
+import com.ycl.jxkg.group.Update;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * 鐝骇涓庣敤鎴峰叧鑱旇〃琛ㄥ崟
+ *
+ * @author xp
+ * @since 2024-06-04
+ */
+@Data
+@ApiModel(value = "ClassesUser琛ㄥ崟", description = "鐝骇涓庣敤鎴峰叧鑱旇〃琛ㄥ崟")
+public class EditClassesUserForm {
+
+    @NotNull(message = "璇烽�夋嫨瑕佷慨鏀圭殑鏁版嵁", groups = {Update.class})
+    private Integer id;
+
+    @NotNull(message = "璇烽�夋嫨瀛﹀憳鐨勭彮绾�", groups = {Add.class, Update.class})
+    private Integer classesId;
+
+    @NotBlank(message = "璇峰~鍐欏鍛樼數璇�", groups = {Add.class, Update.class})
+    @ApiModelProperty("鐢佃瘽")
+    private String phone;
+
+    @NotNull(message = "璇烽�夋嫨瀛﹀憳鎬у埆", groups = {Add.class, Update.class})
+    @ApiModelProperty("鎬у埆")
+    private Integer sex;
+
+    @NotNull(message = "璇峰~鍐欏鍛樺勾榫�", groups = {Add.class, Update.class})
+    @ApiModelProperty("骞撮緞")
+    private Integer age;
+
+    @NotBlank(message = "璇峰~鍐欏鍛樺鍚�", groups = {Add.class, Update.class})
+    @ApiModelProperty("鐪熷疄濮撳悕")
+    private String realName;
+
+    @NotBlank(message = "璇峰~鍐欏鍛樼櫥褰曡处鍙�", groups = {Add.class, Update.class})
+    @ApiModelProperty("鐧诲綍璐﹀彿")
+    private String account;
+
+    @ApiModelProperty("鐧诲綍瀵嗙爜")
+    private String password;
+
+    public static ClassesUser getEntityByForm(@NonNull EditClassesUserForm form, ClassesUser entity) {
+        if(entity == null) {
+          entity = new ClassesUser();
+        }
+        BeanUtils.copyProperties(form, entity);
+        return 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 1aec3cf..c28defa 100644
--- a/src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java
+++ b/src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java
@@ -19,5 +19,12 @@
 @Data
 @ApiModel(value = "Classes鏌ヨ", description = "鐝骇鏌ヨ")
 public class ClassesQuery extends AbsQuery {
+
+    /** 鐝骇鍚嶇О */
+    private String className;
+
+    /** 鐝骇鐘舵�� */
+    private String status;
+
 }
 
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java b/src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java
index a9a63f0..cfdb39e 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java
+++ b/src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java
@@ -20,12 +20,21 @@
 @Data
 public class ClassesUserVO extends AbsVo {
 
-    /**  */
+    /** 鐝骇ID */
     private Integer classesId;
 
-    /**  */
+    /** 鐢ㄦ埛ID */
     private Integer userId;
 
+    /** 鐪熷疄濮撳悕 */
+    private String realName;
+
+    /** 骞撮緞 */
+    private Integer sex;
+
+    /** 鐢佃瘽 */
+    private String phone;
+
     /** 鍔犲叆鏃堕棿 */
     private Date createTime;
 
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java b/src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java
index 963d76d..89ba6eb 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java
+++ b/src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java
@@ -4,15 +4,11 @@
 import com.ycl.jxkg.domain.base.AbsVo;
 import com.ycl.jxkg.domain.entity.Classes;
 
-import java.time.LocalDateTime;
 import java.util.Date;
-import java.util.List;
 
-import com.ycl.jxkg.domain.enums.general.ClassesStatusEnum;
+import com.ycl.jxkg.enums.general.ClassesStatusEnum;
 import org.springframework.lang.NonNull;
 import org.springframework.beans.BeanUtils;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/admin/education/SubjectPageRequestVO.java b/src/main/java/com/ycl/jxkg/domain/vo/admin/education/SubjectPageRequestVO.java
index cff8ffd..a31f7ad 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/admin/education/SubjectPageRequestVO.java
+++ b/src/main/java/com/ycl/jxkg/domain/vo/admin/education/SubjectPageRequestVO.java
@@ -7,7 +7,7 @@
 @Data
 public class SubjectPageRequestVO extends BasePage {
 
-    private Integer name;
+    private String name;
 
     private Integer status;
 
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/admin/education/SubjectResponseVO.java b/src/main/java/com/ycl/jxkg/domain/vo/admin/education/SubjectResponseVO.java
index 2594ca7..16e7d90 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/admin/education/SubjectResponseVO.java
+++ b/src/main/java/com/ycl/jxkg/domain/vo/admin/education/SubjectResponseVO.java
@@ -1,6 +1,6 @@
 package com.ycl.jxkg.domain.vo.admin.education;
 
-import com.ycl.jxkg.domain.enums.general.StatusEnum;
+import com.ycl.jxkg.enums.general.StatusEnum;
 import lombok.Data;
 
 
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/admin/paper/ExamPaperAnswerPageRequestVO.java b/src/main/java/com/ycl/jxkg/domain/vo/admin/paper/ExamPaperAnswerPageRequestVO.java
index 99a776c..538f4c0 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/admin/paper/ExamPaperAnswerPageRequestVO.java
+++ b/src/main/java/com/ycl/jxkg/domain/vo/admin/paper/ExamPaperAnswerPageRequestVO.java
@@ -3,9 +3,15 @@
 import com.ycl.jxkg.base.BasePage;
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class ExamPaperAnswerPageRequestVO extends BasePage {
 
-    private Integer subjectId;
+    private List<Integer> subjectId;
+
+    private Integer examPaperId;
+
+    private String name;
 
 }
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/admin/question/QuestionResponseVO.java b/src/main/java/com/ycl/jxkg/domain/vo/admin/question/QuestionResponseVO.java
index f0c721c..3daafaa 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/admin/question/QuestionResponseVO.java
+++ b/src/main/java/com/ycl/jxkg/domain/vo/admin/question/QuestionResponseVO.java
@@ -1,6 +1,6 @@
 package com.ycl.jxkg.domain.vo.admin.question;
 
-import com.ycl.jxkg.domain.enums.general.StatusEnum;
+import com.ycl.jxkg.enums.general.StatusEnum;
 import lombok.Data;
 
 
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageResponseVO.java b/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageResponseVO.java
index 1c91dc9..ed026bc 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageResponseVO.java
+++ b/src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageResponseVO.java
@@ -33,4 +33,14 @@
 
     private String userName;
 
+    /**
+     * 璇曞嵎搴旇�冧汉鏁�
+     */
+    private Integer personTotalNum;
+
+    /**
+     * 璇曞嵎鍙傝�冧汉鏁�
+     */
+    private Integer personAnswerNum;
+
 }
diff --git a/src/main/java/com/ycl/jxkg/domain/enums/DeductTypeEnum.java b/src/main/java/com/ycl/jxkg/enums/DeductTypeEnum.java
similarity index 88%
rename from src/main/java/com/ycl/jxkg/domain/enums/DeductTypeEnum.java
rename to src/main/java/com/ycl/jxkg/enums/DeductTypeEnum.java
index 9830264..3d0032f 100644
--- a/src/main/java/com/ycl/jxkg/domain/enums/DeductTypeEnum.java
+++ b/src/main/java/com/ycl/jxkg/enums/DeductTypeEnum.java
@@ -1,4 +1,4 @@
-package com.ycl.jxkg.domain.enums;
+package com.ycl.jxkg.enums;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -18,7 +18,7 @@
     }
 
 
-    private static final Map<Integer, DeductTypeEnum> keyMap = new HashMap<>();
+    private static Map<Integer, DeductTypeEnum> keyMap = new HashMap<>();
 
     static {
         for (DeductTypeEnum item : DeductTypeEnum.values()) {
diff --git a/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperAnswerStatusEnum.java b/src/main/java/com/ycl/jxkg/enums/ExamPaperAnswerStatusEnum.java
similarity index 85%
rename from src/main/java/com/ycl/jxkg/domain/enums/ExamPaperAnswerStatusEnum.java
rename to src/main/java/com/ycl/jxkg/enums/ExamPaperAnswerStatusEnum.java
index 965ae74..28c925a 100644
--- a/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperAnswerStatusEnum.java
+++ b/src/main/java/com/ycl/jxkg/enums/ExamPaperAnswerStatusEnum.java
@@ -1,4 +1,4 @@
-package com.ycl.jxkg.domain.enums;
+package com.ycl.jxkg.enums;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -27,7 +27,7 @@
 
 
 
-    private static final Map<Integer, ExamPaperAnswerStatusEnum> keyMap = new HashMap<>();
+    private static Map<Integer, ExamPaperAnswerStatusEnum> keyMap = new HashMap<>();
 
     static {
         for (ExamPaperAnswerStatusEnum item : ExamPaperAnswerStatusEnum.values()) {
diff --git a/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperTypeEnum.java b/src/main/java/com/ycl/jxkg/enums/ExamPaperTypeEnum.java
similarity index 85%
rename from src/main/java/com/ycl/jxkg/domain/enums/ExamPaperTypeEnum.java
rename to src/main/java/com/ycl/jxkg/enums/ExamPaperTypeEnum.java
index a1b51a5..8c64af2 100644
--- a/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperTypeEnum.java
+++ b/src/main/java/com/ycl/jxkg/enums/ExamPaperTypeEnum.java
@@ -1,4 +1,4 @@
-package com.ycl.jxkg.domain.enums;
+package com.ycl.jxkg.enums;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -18,7 +18,7 @@
     }
 
 
-    private static final Map<Integer, ExamPaperTypeEnum> keyMap = new HashMap<>();
+    private static Map<Integer, ExamPaperTypeEnum> keyMap = new HashMap<>();
 
     static {
         for (ExamPaperTypeEnum item : ExamPaperTypeEnum.values()) {
diff --git a/src/main/java/com/ycl/jxkg/domain/enums/QuestionTypeEnum.java b/src/main/java/com/ycl/jxkg/enums/QuestionTypeEnum.java
similarity index 91%
rename from src/main/java/com/ycl/jxkg/domain/enums/QuestionTypeEnum.java
rename to src/main/java/com/ycl/jxkg/enums/QuestionTypeEnum.java
index 1b5b392..6398b77 100644
--- a/src/main/java/com/ycl/jxkg/domain/enums/QuestionTypeEnum.java
+++ b/src/main/java/com/ycl/jxkg/enums/QuestionTypeEnum.java
@@ -1,4 +1,4 @@
-package com.ycl.jxkg.domain.enums;
+package com.ycl.jxkg.enums;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -20,7 +20,7 @@
     }
 
 
-    private static final Map<Integer, QuestionTypeEnum> keyMap = new HashMap<>();
+    private static Map<Integer, QuestionTypeEnum> keyMap = new HashMap<>();
 
     static {
         for (QuestionTypeEnum item : QuestionTypeEnum.values()) {
diff --git a/src/main/java/com/ycl/jxkg/domain/enums/RoleEnum.java b/src/main/java/com/ycl/jxkg/enums/RoleEnum.java
similarity index 86%
rename from src/main/java/com/ycl/jxkg/domain/enums/RoleEnum.java
rename to src/main/java/com/ycl/jxkg/enums/RoleEnum.java
index 165bafb..de0ebeb 100644
--- a/src/main/java/com/ycl/jxkg/domain/enums/RoleEnum.java
+++ b/src/main/java/com/ycl/jxkg/enums/RoleEnum.java
@@ -1,4 +1,4 @@
-package com.ycl.jxkg.domain.enums;
+package com.ycl.jxkg.enums;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -18,7 +18,7 @@
         this.name = name;
     }
 
-    private static final Map<Integer, RoleEnum> keyMap = new HashMap<>();
+    private static Map<Integer, RoleEnum> keyMap = new HashMap<>();
 
     static {
         for (RoleEnum item : RoleEnum.values()) {
diff --git a/src/main/java/com/ycl/jxkg/domain/enums/UserStatusEnum.java b/src/main/java/com/ycl/jxkg/enums/UserStatusEnum.java
similarity index 85%
rename from src/main/java/com/ycl/jxkg/domain/enums/UserStatusEnum.java
rename to src/main/java/com/ycl/jxkg/enums/UserStatusEnum.java
index 0766723..6e2d2ae 100644
--- a/src/main/java/com/ycl/jxkg/domain/enums/UserStatusEnum.java
+++ b/src/main/java/com/ycl/jxkg/enums/UserStatusEnum.java
@@ -1,4 +1,4 @@
-package com.ycl.jxkg.domain.enums;
+package com.ycl.jxkg.enums;
 
 
 import java.util.HashMap;
@@ -17,7 +17,7 @@
         this.name = name;
     }
 
-    private static final Map<Integer, UserStatusEnum> keyMap = new HashMap<>();
+    private static Map<Integer, UserStatusEnum> keyMap = new HashMap<>();
 
     static {
         for (UserStatusEnum item : UserStatusEnum.values()) {
diff --git a/src/main/java/com/ycl/jxkg/domain/enums/VisibilityEnum.java b/src/main/java/com/ycl/jxkg/enums/VisibilityEnum.java
similarity index 100%
rename from src/main/java/com/ycl/jxkg/domain/enums/VisibilityEnum.java
rename to src/main/java/com/ycl/jxkg/enums/VisibilityEnum.java
diff --git a/src/main/java/com/ycl/jxkg/domain/enums/general/ClassesStatusEnum.java b/src/main/java/com/ycl/jxkg/enums/general/ClassesStatusEnum.java
similarity index 91%
rename from src/main/java/com/ycl/jxkg/domain/enums/general/ClassesStatusEnum.java
rename to src/main/java/com/ycl/jxkg/enums/general/ClassesStatusEnum.java
index b135615..55436ea 100644
--- a/src/main/java/com/ycl/jxkg/domain/enums/general/ClassesStatusEnum.java
+++ b/src/main/java/com/ycl/jxkg/enums/general/ClassesStatusEnum.java
@@ -1,4 +1,4 @@
-package com.ycl.jxkg.domain.enums.general;
+package com.ycl.jxkg.enums.general;
 
 import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.fasterxml.jackson.annotation.JsonValue;
diff --git a/src/main/java/com/ycl/jxkg/domain/enums/general/StatusEnum.java b/src/main/java/com/ycl/jxkg/enums/general/StatusEnum.java
similarity index 91%
rename from src/main/java/com/ycl/jxkg/domain/enums/general/StatusEnum.java
rename to src/main/java/com/ycl/jxkg/enums/general/StatusEnum.java
index 3f9162d..76cb0c7 100644
--- a/src/main/java/com/ycl/jxkg/domain/enums/general/StatusEnum.java
+++ b/src/main/java/com/ycl/jxkg/enums/general/StatusEnum.java
@@ -1,4 +1,4 @@
-package com.ycl.jxkg.domain.enums.general;
+package com.ycl.jxkg.enums.general;
 
 import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.fasterxml.jackson.annotation.JsonValue;
diff --git a/src/main/java/com/ycl/jxkg/listener/CalculateExamPaperAnswerListener.java b/src/main/java/com/ycl/jxkg/listener/CalculateExamPaperAnswerListener.java
index 0a56336..e03ff41 100644
--- a/src/main/java/com/ycl/jxkg/listener/CalculateExamPaperAnswerListener.java
+++ b/src/main/java/com/ycl/jxkg/listener/CalculateExamPaperAnswerListener.java
@@ -5,8 +5,8 @@
 import com.ycl.jxkg.domain.entity.ExamPaperAnswer;
 import com.ycl.jxkg.domain.entity.ExamPaperQuestionCustomerAnswer;
 import com.ycl.jxkg.domain.entity.TextContent;
-import com.ycl.jxkg.domain.enums.ExamPaperTypeEnum;
-import com.ycl.jxkg.domain.enums.QuestionTypeEnum;
+import com.ycl.jxkg.enums.ExamPaperTypeEnum;
+import com.ycl.jxkg.enums.QuestionTypeEnum;
 import com.ycl.jxkg.event.CalculateExamPaperAnswerCompleteEvent;
 import com.ycl.jxkg.service.ExamPaperAnswerService;
 import com.ycl.jxkg.service.ExamPaperQuestionCustomerAnswerService;
diff --git a/src/main/java/com/ycl/jxkg/mapper/ExamPaperAnswerMapper.java b/src/main/java/com/ycl/jxkg/mapper/ExamPaperAnswerMapper.java
index 4d303c9..69c10a1 100644
--- a/src/main/java/com/ycl/jxkg/mapper/ExamPaperAnswerMapper.java
+++ b/src/main/java/com/ycl/jxkg/mapper/ExamPaperAnswerMapper.java
@@ -4,6 +4,7 @@
 import com.ycl.jxkg.domain.entity.ExamPaperAnswer;
 import com.ycl.jxkg.domain.other.KeyValue;
 import com.ycl.jxkg.domain.vo.admin.paper.ExamPaperAnswerPageRequestVO;
+import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO;
 import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -23,4 +24,6 @@
     ExamPaperAnswer getByPidUid(@Param("pid") Integer paperId, @Param("uid") Integer uid);
 
     List<ExamPaperAnswer> adminPage(ExamPaperAnswerPageRequestVO requestVM);
+
+    List<ExamPaperAnswerPageResponseVO> pageExamPaper(ExamPaperAnswerPageRequestVO model);
 }
diff --git a/src/main/java/com/ycl/jxkg/mapper/SubjectMapper.java b/src/main/java/com/ycl/jxkg/mapper/SubjectMapper.java
index 422d3e1..abc041f 100644
--- a/src/main/java/com/ycl/jxkg/mapper/SubjectMapper.java
+++ b/src/main/java/com/ycl/jxkg/mapper/SubjectMapper.java
@@ -3,7 +3,9 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ycl.jxkg.domain.entity.Subject;
 import com.ycl.jxkg.domain.vo.admin.education.SubjectPageRequestVO;
+import com.ycl.jxkg.domain.vo.admin.education.SubjectResponseVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 
@@ -14,5 +16,8 @@
 
     List<Subject> allSubject();
 
-    List<Subject> page(SubjectPageRequestVO requestVM);
+    List<SubjectResponseVO> page(SubjectPageRequestVO requestVM);
+
+    @Select("select ifnull(count(*) + 1, 1) from t_subject where deleted = 0")
+    Integer getItemOrder();
 }
diff --git a/src/main/java/com/ycl/jxkg/service/ClassesUserService.java b/src/main/java/com/ycl/jxkg/service/ClassesUserService.java
index 754ac19..2199aed 100644
--- a/src/main/java/com/ycl/jxkg/service/ClassesUserService.java
+++ b/src/main/java/com/ycl/jxkg/service/ClassesUserService.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ycl.jxkg.base.Result;
 import com.ycl.jxkg.domain.form.ClassesUserForm;
+import com.ycl.jxkg.domain.form.EditClassesUserForm;
 import com.ycl.jxkg.domain.query.ClassesUserQuery;
 import java.util.List;
 
@@ -20,7 +21,7 @@
      * @param form
      * @return
      */
-    Result add(ClassesUserForm form);
+    Result add(EditClassesUserForm form);
 
     /**
      * 淇敼
@@ -62,4 +63,12 @@
      * @return
      */
     Result all();
+
+    /**
+     * 缂栬緫瀛﹀憳淇℃伅
+     *
+     * @param form
+     * @return
+     */
+    Result edit(EditClassesUserForm form);
 }
diff --git a/src/main/java/com/ycl/jxkg/service/ExamPaperAnswerService.java b/src/main/java/com/ycl/jxkg/service/ExamPaperAnswerService.java
index 3ec15a5..077c464 100644
--- a/src/main/java/com/ycl/jxkg/service/ExamPaperAnswerService.java
+++ b/src/main/java/com/ycl/jxkg/service/ExamPaperAnswerService.java
@@ -1,13 +1,14 @@
 package com.ycl.jxkg.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ycl.jxkg.domain.entity.ExamPaperAnswer;
+import com.github.pagehelper.PageInfo;
 import com.ycl.jxkg.domain.ExamPaperAnswerInfo;
+import com.ycl.jxkg.domain.entity.ExamPaperAnswer;
 import com.ycl.jxkg.domain.entity.User;
 import com.ycl.jxkg.domain.vo.admin.paper.ExamPaperAnswerPageRequestVO;
 import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitVO;
+import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO;
 import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageVO;
-import com.github.pagehelper.PageInfo;
 
 import java.util.List;
 
@@ -52,4 +53,11 @@
     List<Integer> selectMothCount();
 
     PageInfo<ExamPaperAnswer> adminPage(ExamPaperAnswerPageRequestVO requestVM);
+
+    /**
+     * 绛斿嵎鍒楄〃
+     * @param model 鏌ヨ鏉′欢
+     * @return 鏁版嵁
+     */
+    PageInfo<ExamPaperAnswerPageResponseVO> pageExamPaper(ExamPaperAnswerPageRequestVO model);
 }
diff --git a/src/main/java/com/ycl/jxkg/service/SubjectService.java b/src/main/java/com/ycl/jxkg/service/SubjectService.java
index 1ed80c9..c5b3a6f 100644
--- a/src/main/java/com/ycl/jxkg/service/SubjectService.java
+++ b/src/main/java/com/ycl/jxkg/service/SubjectService.java
@@ -4,6 +4,7 @@
 import com.ycl.jxkg.domain.entity.Subject;
 import com.ycl.jxkg.domain.vo.admin.education.SubjectPageRequestVO;
 import com.github.pagehelper.PageInfo;
+import com.ycl.jxkg.domain.vo.admin.education.SubjectResponseVO;
 
 import java.util.List;
 
@@ -13,5 +14,20 @@
 
     List<Subject> allSubject();
 
-    PageInfo<Subject> page(SubjectPageRequestVO requestVM);
+    PageInfo<SubjectResponseVO> page(SubjectPageRequestVO requestVM);
+
+    /**
+     * 鑾峰彇鏈�鏂伴『搴�
+     *
+     * @return 椤哄簭
+     */
+    Integer getItemOrder();
+
+    /**
+     * 鏇存柊鐘舵��
+     *
+     * @param subject 鍙傛暟
+     * @return 缁撴灉
+     */
+    Boolean updateStatus(Subject subject);
 }
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ClassesNotifyServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ClassesNotifyServiceImpl.java
index 7502ed6..180eb7b 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ClassesNotifyServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ClassesNotifyServiceImpl.java
@@ -1,6 +1,7 @@
 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.ClassesNotify;
 import com.ycl.jxkg.mapper.ClassesNotifyMapper;
 import com.ycl.jxkg.service.ClassesNotifyService;
@@ -29,6 +30,7 @@
 public class ClassesNotifyServiceImpl extends ServiceImpl<ClassesNotifyMapper, ClassesNotify> implements ClassesNotifyService {
 
     private final ClassesNotifyMapper classesNotifyMapper;
+    private final WebContext webContext;
 
     /**
      * 娣诲姞
@@ -38,6 +40,7 @@
     @Override
     public Result add(ClassesNotifyForm form) {
         ClassesNotify entity = ClassesNotifyForm.getEntityByForm(form, null);
+        entity.setTeacherId(webContext.getCurrentUser().getId());
         baseMapper.insert(entity);
         return Result.ok("娣诲姞鎴愬姛");
     }
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 f7caea6..988eb64 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java
@@ -3,7 +3,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
 import com.ycl.jxkg.domain.entity.Classes;
-import com.ycl.jxkg.domain.enums.general.ClassesStatusEnum;
+import com.ycl.jxkg.enums.general.ClassesStatusEnum;
 import com.ycl.jxkg.mapper.ClassesMapper;
 import com.ycl.jxkg.service.ClassesService;
 import com.ycl.jxkg.base.Result;
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java
index 639af0f..c13dc99 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java
@@ -1,8 +1,16 @@
 package com.ycl.jxkg.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
 import com.ycl.jxkg.domain.entity.ClassesUser;
+import com.ycl.jxkg.domain.entity.User;
+import com.ycl.jxkg.domain.form.EditClassesUserForm;
+import com.ycl.jxkg.enums.RoleEnum;
+import com.ycl.jxkg.enums.UserStatusEnum;
 import com.ycl.jxkg.mapper.ClassesUserMapper;
+import com.ycl.jxkg.mapper.UserMapper;
+import com.ycl.jxkg.service.AuthenticationService;
 import com.ycl.jxkg.service.ClassesUserService;
 import com.ycl.jxkg.base.Result;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -13,9 +21,12 @@
 import lombok.RequiredArgsConstructor;
 import com.ycl.jxkg.utils.PageUtil;
 import org.springframework.beans.BeanUtils;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
+import org.springframework.util.StringUtils;
 
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -29,37 +40,98 @@
 public class ClassesUserServiceImpl extends ServiceImpl<ClassesUserMapper, ClassesUser> implements ClassesUserService {
 
     private final ClassesUserMapper classesUserMapper;
+    private final AuthenticationService authenticationService;
+    private final UserMapper userMapper;
+
+    private final static String DEFAULT_PASSWORD = "202406";
 
     /**
      * 娣诲姞
+     *
      * @param form
      * @return
      */
     @Override
-    public Result add(ClassesUserForm form) {
-        ClassesUser entity = ClassesUserForm.getEntityByForm(form, null);
-        baseMapper.insert(entity);
+    @Transactional(rollbackFor = Exception.class)
+    public Result add(EditClassesUserForm form) {
+        Long count = new LambdaQueryChainWrapper<>(userMapper)
+                .eq(User::getUserName, form.getAccount())
+                .count();
+        if (count > 0) {
+            throw new RuntimeException("璇ョ櫥褰曡处鍙峰凡琚娇鐢�");
+        }
+        User user = new User();
+        user.setUserName(form.getPhone());
+        String password = StringUtils.hasText(form.getPassword()) ? form.getPassword() : DEFAULT_PASSWORD;
+        user.setPassword(authenticationService.pwdEncode(password));
+        user.setStatus(UserStatusEnum.Enable.getCode());
+        user.setRole(RoleEnum.STUDENT.getCode());
+        user.setAge(form.getAge());
+        user.setPhone(form.getPhone());
+        user.setRealName(form.getRealName());
+        user.setSex(form.getSex());
+        userMapper.insert(user);
+
+        ClassesUser classesUser = new ClassesUser();
+        classesUser.setClassesId(form.getClassesId());
+        classesUser.setUserId(user.getId());
+        baseMapper.insert(classesUser);
         return Result.ok("娣诲姞鎴愬姛");
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Result edit(EditClassesUserForm form) {
+        ClassesUser classesUser = baseMapper.selectById(form.getId());
+        if (Objects.isNull(classesUser)) {
+            throw new RuntimeException("瀛﹀憳鏁版嵁涓嶅瓨鍦�");
+        }
+        Long count = new LambdaQueryChainWrapper<>(userMapper)
+                .eq(User::getUserName, form.getAccount())
+                .ne(User::getId, classesUser.getUserId())
+                .count();
+        if (count > 0) {
+            throw new RuntimeException("璇ョ櫥褰曡处鍙峰凡琚娇鐢�");
+        }
+        User user = userMapper.selectById(classesUser.getUserId());
+        if (Objects.isNull(user)) {
+            throw new RuntimeException("璇ュ鐢熻处鍙蜂笉瀛樺湪鎴栬鍒犻櫎");
+        }
+        BeanUtils.copyProperties(form, classesUser);
+        baseMapper.updateById(classesUser);
+
+        BeanUtils.copyProperties(classesUser, user);
+        userMapper.updateById(user);
+        return Result.ok("淇敼鎴愬姛");
     }
 
     /**
      * 淇敼
+     *
      * @param form
      * @return
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Result update(ClassesUserForm form) {
-        ClassesUser entity = baseMapper.selectById(form.getId());
-
-        // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
-        Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
-        BeanUtils.copyProperties(form, entity);
-        baseMapper.updateById(entity);
+        // 鍏堝垹闄や箣鍓嶇殑
+        new LambdaUpdateChainWrapper<>(baseMapper)
+                .eq(ClassesUser::getClassesId, form.getId())
+                .remove();
+        // 鍐嶆柊澧�
+        List<ClassesUser> classesUserList = form.getStudentList().stream().map(item -> {
+            ClassesUser classesUser = new ClassesUser();
+            classesUser.setClassesId(form.getId());
+            classesUser.setUserId(item);
+            return classesUser;
+        }).collect(Collectors.toList());
+        this.saveBatch(classesUserList);
         return Result.ok("淇敼鎴愬姛");
     }
 
     /**
      * 鎵归噺鍒犻櫎
+     *
      * @param ids
      * @return
      */
@@ -71,6 +143,7 @@
 
     /**
      * id鍒犻櫎
+     *
      * @param id
      * @return
      */
@@ -82,6 +155,7 @@
 
     /**
      * 鍒嗛〉鏌ヨ
+     *
      * @param query
      * @return
      */
@@ -94,6 +168,7 @@
 
     /**
      * 鏍规嵁id鏌ユ壘
+     *
      * @param id
      * @return
      */
@@ -106,6 +181,7 @@
 
     /**
      * 鍒楄〃
+     *
      * @return
      */
     @Override
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java
index 41d8df1..f3a8c8c 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java
@@ -1,15 +1,20 @@
 package com.ycl.jxkg.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ycl.jxkg.domain.*;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.ycl.jxkg.domain.ExamPaperAnswerInfo;
 import com.ycl.jxkg.domain.entity.*;
-import com.ycl.jxkg.domain.enums.ExamPaperAnswerStatusEnum;
-import com.ycl.jxkg.domain.enums.ExamPaperTypeEnum;
-import com.ycl.jxkg.domain.enums.QuestionTypeEnum;
-import com.ycl.jxkg.domain.exam.ExamPaperTitleItemObject;
-import com.ycl.jxkg.domain.other.KeyValue;
 import com.ycl.jxkg.domain.other.ExamPaperAnswerUpdate;
-import com.ycl.jxkg.domain.task.TaskItemAnswerObject;
+import com.ycl.jxkg.domain.other.KeyValue;
+import com.ycl.jxkg.domain.vo.admin.paper.ExamPaperAnswerPageRequestVO;
+import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitItemVO;
+import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitVO;
+import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO;
+import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageVO;
+import com.ycl.jxkg.enums.ExamPaperAnswerStatusEnum;
+import com.ycl.jxkg.enums.ExamPaperTypeEnum;
+import com.ycl.jxkg.enums.QuestionTypeEnum;
 import com.ycl.jxkg.mapper.ExamPaperAnswerMapper;
 import com.ycl.jxkg.mapper.ExamPaperMapper;
 import com.ycl.jxkg.mapper.QuestionMapper;
@@ -20,12 +25,6 @@
 import com.ycl.jxkg.utils.DateTimeUtil;
 import com.ycl.jxkg.utils.ExamUtil;
 import com.ycl.jxkg.utils.JsonUtil;
-import com.ycl.jxkg.domain.vo.admin.paper.ExamPaperAnswerPageRequestVO;
-import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitItemVO;
-import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitVO;
-import com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageVO;
-import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -270,4 +269,10 @@
         return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() ->
                 examPaperAnswerMapper.adminPage(requestVM));
     }
+
+    @Override
+    public PageInfo<ExamPaperAnswerPageResponseVO> pageExamPaper(ExamPaperAnswerPageRequestVO model) {
+        return PageHelper.startPage(model.getPageIndex(), model.getPageSize()).doSelectPageInfo(() ->
+                examPaperAnswerMapper.pageExamPaper(model));
+    }
 }
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java
index 3757532..d738ccf 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java
@@ -5,7 +5,7 @@
 import com.ycl.jxkg.domain.other.ExamPaperAnswerUpdate;
 import com.ycl.jxkg.domain.other.KeyValue;
 import com.ycl.jxkg.domain.entity.TextContent;
-import com.ycl.jxkg.domain.enums.QuestionTypeEnum;
+import com.ycl.jxkg.enums.QuestionTypeEnum;
 import com.ycl.jxkg.mapper.ExamPaperQuestionCustomerAnswerMapper;
 import com.ycl.jxkg.service.ExamPaperQuestionCustomerAnswerService;
 import com.ycl.jxkg.service.TextContentService;
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java
index ccefd50..f661b55 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java
@@ -2,7 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.jxkg.domain.entity.TextContent;
-import com.ycl.jxkg.domain.enums.ExamPaperTypeEnum;
+import com.ycl.jxkg.enums.ExamPaperTypeEnum;
 import com.ycl.jxkg.domain.exam.ExamPaperQuestionItemObject;
 import com.ycl.jxkg.domain.exam.ExamPaperTitleItemObject;
 import com.ycl.jxkg.domain.other.KeyValue;
@@ -15,25 +15,21 @@
 import com.ycl.jxkg.service.enums.ActionEnum;
 import com.ycl.jxkg.utils.DateTimeUtil;
 import com.ycl.jxkg.utils.JsonUtil;
-import com.ycl.jxkg.utils.ExamUtil;
 import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperEditRequestVO;
 import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperPageRequestVO;
 import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperTitleItemVO;
-import com.ycl.jxkg.domain.vo.admin.question.QuestionEditRequestVO;
 import com.ycl.jxkg.domain.vo.student.dashboard.PaperFilter;
 import com.ycl.jxkg.domain.vo.student.dashboard.PaperInfo;
 import com.ycl.jxkg.domain.vo.student.exam.ExamPaperPageVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.ycl.jxkg.domain.entity.ExamPaper;
-import com.ycl.jxkg.domain.entity.Question;
 import com.ycl.jxkg.domain.entity.User;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
diff --git a/src/main/java/com/ycl/jxkg/service/impl/QuestionServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/QuestionServiceImpl.java
index 4ceda84..758c8c1 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/QuestionServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/QuestionServiceImpl.java
@@ -5,8 +5,8 @@
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.ycl.jxkg.domain.entity.Question;
-import com.ycl.jxkg.domain.enums.QuestionTypeEnum;
-import com.ycl.jxkg.domain.enums.general.StatusEnum;
+import com.ycl.jxkg.enums.QuestionTypeEnum;
+import com.ycl.jxkg.enums.general.StatusEnum;
 import com.ycl.jxkg.domain.other.KeyValue;
 import com.ycl.jxkg.domain.question.QuestionItemObject;
 import com.ycl.jxkg.domain.question.QuestionObject;
diff --git a/src/main/java/com/ycl/jxkg/service/impl/SubjectServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/SubjectServiceImpl.java
index 8ec423c..8c0911b 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/SubjectServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/SubjectServiceImpl.java
@@ -1,12 +1,14 @@
 package com.ycl.jxkg.service.impl;
 
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ycl.jxkg.domain.entity.Subject;
-import com.ycl.jxkg.mapper.SubjectMapper;
-import com.ycl.jxkg.service.SubjectService;
-import com.ycl.jxkg.domain.vo.admin.education.SubjectPageRequestVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.ycl.jxkg.domain.entity.Subject;
+import com.ycl.jxkg.domain.vo.admin.education.SubjectPageRequestVO;
+import com.ycl.jxkg.domain.vo.admin.education.SubjectResponseVO;
+import com.ycl.jxkg.mapper.SubjectMapper;
+import com.ycl.jxkg.service.SubjectService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
@@ -14,7 +16,7 @@
 
 @Service
 @RequiredArgsConstructor
-public class SubjectServiceImpl extends ServiceImpl<SubjectMapper,Subject> implements SubjectService {
+public class SubjectServiceImpl extends ServiceImpl<SubjectMapper, Subject> implements SubjectService {
 
     private final SubjectMapper subjectMapper;
 
@@ -29,10 +31,23 @@
     }
 
     @Override
-    public PageInfo<Subject> page(SubjectPageRequestVO requestVM) {
+    public PageInfo<SubjectResponseVO> page(SubjectPageRequestVO requestVM) {
         return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "item_order").doSelectPageInfo(() ->
                 subjectMapper.page(requestVM)
         );
     }
 
+    @Override
+    public Integer getItemOrder() {
+        return subjectMapper.getItemOrder();
+    }
+
+    @Override
+    public Boolean updateStatus(Subject subject) {
+        return new LambdaUpdateChainWrapper<>(subjectMapper)
+                .set(Subject::getStatus, subject.getStatus())
+                .eq(Subject::getId, subject.getId())
+                .update();
+    }
+
 }
diff --git a/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java
index 77ae849..1b25a59 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java
@@ -2,8 +2,8 @@
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.jxkg.domain.entity.UserEventLog;
-import com.ycl.jxkg.domain.enums.RoleEnum;
-import com.ycl.jxkg.domain.enums.UserStatusEnum;
+import com.ycl.jxkg.enums.RoleEnum;
+import com.ycl.jxkg.enums.UserStatusEnum;
 import com.ycl.jxkg.domain.form.RegisterForm;
 import com.ycl.jxkg.domain.other.KeyValue;
 import com.ycl.jxkg.domain.vo.StudentVO;
@@ -12,7 +12,6 @@
 import com.ycl.jxkg.domain.entity.User;
 import com.ycl.jxkg.event.OnRegistrationCompleteEvent;
 import com.ycl.jxkg.mapper.UserMapper;
-import com.ycl.jxkg.service.AuthenticationService;
 import com.ycl.jxkg.service.UserService;
 import com.ycl.jxkg.domain.vo.admin.user.UserPageRequestVO;
 import com.github.pagehelper.PageHelper;
diff --git a/src/main/resources/mapper/ClassesMapper.xml b/src/main/resources/mapper/ClassesMapper.xml
index 95bd72e..2481ae5 100644
--- a/src/main/resources/mapper/ClassesMapper.xml
+++ b/src/main/resources/mapper/ClassesMapper.xml
@@ -64,6 +64,12 @@
                 LEFT JOIN t_user TU ON TU.id = TC.create_user AND TU.deleted = 0
         WHERE
             TC.deleted = 0
+            <if test="query.className != null and query.className != ''">
+                AND TC.class_name like concat('%', #{query.className}, '%')
+            </if>
+            <if test="query.status != null and query.status != ''">
+                AND TC.status = #{query.status}
+            </if>
     </select>
 
 </mapper>
diff --git a/src/main/resources/mapper/ClassesUserMapper.xml b/src/main/resources/mapper/ClassesUserMapper.xml
index 87fc1f8..ab42074 100644
--- a/src/main/resources/mapper/ClassesUserMapper.xml
+++ b/src/main/resources/mapper/ClassesUserMapper.xml
@@ -4,40 +4,37 @@
 
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
     <resultMap id="BaseResultMap" type="com.ycl.jxkg.domain.vo.ClassesUserVO">
-        <result column="classes_id" property="classesId" />
-        <result column="user_id" property="userId" />
-        <result column="create_time" property="createTime" />
+        <result column="classes_id" property="classesId"/>
+        <result column="user_id" property="userId"/>
+        <result column="real_name" property="realName"/>
+        <result column="sex" property="sex"/>
+        <result column="phone" property="phone"/>
+        <result column="create_time" property="createTime"/>
     </resultMap>
 
 
-
-
-
-
-
     <select id="getById" resultMap="BaseResultMap">
-        SELECT
-            TCU.classes_id,
-            TCU.user_id,
-            TCU.create_time,
-            TCU.id
-        FROM
-            t_classes_user TCU
-        WHERE
-            TCU.id = #{id} AND TCU.deleted = 0
+        SELECT TCU.classes_id,
+               TCU.user_id,
+               TCU.create_time,
+               TCU.id
+        FROM t_classes_user TCU
+        WHERE TCU.id = #{id}
+          AND TCU.deleted = 0
     </select>
 
 
     <select id="getPage" resultMap="BaseResultMap">
-        SELECT
-            TCU.classes_id,
-            TCU.user_id,
-            TCU.create_time,
-            TCU.id
-        FROM
-            t_classes_user TCU
-        WHERE
-            TCU.deleted = 0
+        SELECT TCU.classes_id,
+               TCU.user_id,
+               TCU.create_time,
+               TCU.id,
+               TU.real_name,
+               TU.sex,
+               TU.phone
+        FROM t_classes_user TCU
+                 LEFT JOIN t_user TU ON TU.id = TCU.user_id
+        WHERE TCU.deleted = 0
     </select>
 
 </mapper>
diff --git a/src/main/resources/mapper/ExamPaperAnswerMapper.xml b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
index 030f623..82d8832 100644
--- a/src/main/resources/mapper/ExamPaperAnswerMapper.xml
+++ b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -65,16 +65,51 @@
     </select>
 
 
-    <select id="adminPage" resultMap="BaseResultMap"
-            parameterType="com.ycl.jxkg.domain.vo.admin.paper.ExamPaperAnswerPageRequestVO">
+    <select id="adminPage" resultMap="BaseResultMap" parameterType="com.ycl.jxkg.domain.vo.admin.paper.ExamPaperAnswerPageRequestVO">
         SELECT
         <include refid="Base_Column_List"/>
         FROM t_exam_paper_answer
         <where>
-            <if test="subjectId != null">
-                and subject_id = #{subjectId}
+            <if test="subjectId != null and subjectId.size() > 0">
+                AND subject_id IN
+                <foreach collection="subjectId" item="item" open="(" separator="," close=")">#{item}</foreach>
+            </if>
+            <if test="examPaperId != null">
+                AND exam_paper_id = #{examPaperId}
             </if>
         </where>
     </select>
 
+    <select id="pageExamPaper" resultType="com.ycl.jxkg.domain.vo.student.exampaper.ExamPaperAnswerPageResponseVO">
+        SELECT
+        a.id,
+        a.name AS paperName,
+        a.score AS systemScore,
+        a.question_count,
+        a.subject_id,
+        a.paper_type,
+        b.name AS subjectName,
+        c.real_name AS userName,
+        IFNULL(COUNT(d.id), 0) AS personAnswerNum,
+        IFNULL(COUNT(f.id), 0) AS personTotalNum
+        FROM t_exam_paper a
+        LEFT JOIN t_subject b ON a.subject_id = b.id
+        LEFT JOIN t_user c ON a.create_user = c.id
+        LEFT JOIN t_exam_paper_answer d ON a.id = d.exam_paper_id
+        LEFT JOIN t_exam_paper_classes e ON a.id = e.exam_paper_id
+        LEFT JOIN t_classes_user f ON e.classes_id = f.classes_id
+        <where>
+            a.deleted = 0
+            <if test="subjectId != null and subjectId.size() > 0">
+                AND a.subject_id IN
+                <foreach collection="subjectId" item="item" open="(" separator="," close=")">#{item}</foreach>
+            </if>
+            <if test="name != null and name != ''">
+                AND INSTR(a.name, #{name})
+            </if>
+        </where>
+        GROUP BY a.id
+        ORDER BY a.id DESC
+    </select>
+
 </mapper>
diff --git a/src/main/resources/mapper/SubjectMapper.xml b/src/main/resources/mapper/SubjectMapper.xml
index 3b31e9b..b253f94 100644
--- a/src/main/resources/mapper/SubjectMapper.xml
+++ b/src/main/resources/mapper/SubjectMapper.xml
@@ -18,7 +18,8 @@
     <select id="getSubjectByLevel" resultMap="BaseResultMap">
         select
         <include refid="Base_Column_List"/>
-        from t_subject where level= #{level}
+        from t_subject
+        where deleted = 0 and status = 1
         order by item_order
     </select>
 
@@ -27,9 +28,11 @@
         select
         <include refid="Base_Column_List"/>
         from t_subject
+        where deleted = 0 and status = 1
+        order by item_order
     </select>
 
-    <select id="page" resultMap="BaseResultMap" parameterType="com.ycl.jxkg.domain.vo.admin.education.SubjectPageRequestVO">
+    <select id="page" resultType="com.ycl.jxkg.domain.vo.admin.education.SubjectResponseVO" parameterType="com.ycl.jxkg.domain.vo.admin.education.SubjectPageRequestVO">
         SELECT
         <include refid="Base_Column_List"/>
         FROM t_subject

--
Gitblit v1.8.0