fuliqi
2024-06-06 e80d90bf5e5f2b8e72f02454606f1f432cbab7fd
Merge remote-tracking branch 'origin/master'

# Conflicts:
# src/main/java/com/ycl/jxkg/enums/VisibilityEnum.java
# src/main/resources/application.yml
52个文件已修改
1个文件已添加
9 文件已重命名
641 ■■■■ 已修改文件
pom.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/base/Result.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationProvider.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/config/spring/security/RestDetailsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/config/spring/security/SecurityConfigurer.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/ExamPaperAnswerController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/QuestionController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/SubjectController.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/UserController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/student/DashboardController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/student/UserController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/wx/student/AuthController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/wx/student/DashboardController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/wx/student/ExamPaperAnswerController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/wx/student/UserController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/entity/Classes.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/entity/ClassesNotify.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/entity/Question.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/entity/Subject.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/form/ClassesNotifyForm.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/admin/education/SubjectPageRequestVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/admin/education/SubjectResponseVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/admin/paper/ExamPaperAnswerPageRequestVO.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/admin/question/QuestionResponseVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/student/exampaper/ExamPaperAnswerPageResponseVO.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/enums/DeductTypeEnum.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/enums/ExamPaperAnswerStatusEnum.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/enums/ExamPaperTypeEnum.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/enums/QuestionTypeEnum.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/enums/RoleEnum.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/enums/UserStatusEnum.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/enums/VisibilityEnum.java 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/enums/general/ClassesStatusEnum.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/enums/general/StatusEnum.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/listener/CalculateExamPaperAnswerListener.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/mapper/ExamPaperAnswerMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/mapper/SubjectMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/ClassesUserService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/ExamPaperAnswerService.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/SubjectService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ClassesNotifyServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/QuestionServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/SubjectServiceImpl.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ClassesMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ClassesUserMapper.xml 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamPaperAnswerMapper.xml 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/SubjectMapper.xml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>
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
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;
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;
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;
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;
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);
    }
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}")
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) {
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;
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("操作成功");
    }
}
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;
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.*;
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;
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;
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;
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;
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;
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;
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;
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;
}
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;
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;
}
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) {
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) {
src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java
New file
@@ -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;
    }
}
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;
}
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;
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;
/**
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;
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;
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;
}
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;
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;
}
src/main/java/com/ycl/jxkg/enums/DeductTypeEnum.java
File was renamed from src/main/java/com/ycl/jxkg/domain/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()) {
src/main/java/com/ycl/jxkg/enums/ExamPaperAnswerStatusEnum.java
File was renamed from src/main/java/com/ycl/jxkg/domain/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()) {
src/main/java/com/ycl/jxkg/enums/ExamPaperTypeEnum.java
File was renamed from src/main/java/com/ycl/jxkg/domain/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()) {
src/main/java/com/ycl/jxkg/enums/QuestionTypeEnum.java
File was renamed from src/main/java/com/ycl/jxkg/domain/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()) {
src/main/java/com/ycl/jxkg/enums/RoleEnum.java
File was renamed from src/main/java/com/ycl/jxkg/domain/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()) {
src/main/java/com/ycl/jxkg/enums/UserStatusEnum.java
File was renamed from src/main/java/com/ycl/jxkg/domain/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()) {
src/main/java/com/ycl/jxkg/enums/VisibilityEnum.java
src/main/java/com/ycl/jxkg/enums/general/ClassesStatusEnum.java
File was renamed from src/main/java/com/ycl/jxkg/domain/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;
src/main/java/com/ycl/jxkg/enums/general/StatusEnum.java
File was renamed from src/main/java/com/ycl/jxkg/domain/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;
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;
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);
}
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();
}
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);
}
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);
}
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);
}
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("添加成功");
    }
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;
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());
        // 为空抛IllegalArgumentException,做全局异常处理
        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
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));
    }
}
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;
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;
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;
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();
    }
}
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;
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>
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>
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>
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