luohairen
2024-10-29 ea3bcc24543202a55b22623cad8dd8900d550242
Merge remote-tracking branch 'origin/master'
10个文件已修改
131 ■■■■ 已修改文件
src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/common/UploadController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperImportVO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/excel/SelectExcel.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ClassesUserMapper.xml 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java
@@ -95,7 +95,7 @@
    @GetMapping("/my")
    @PreAuthorize("hasAuthority('classes:my')")
    @ApiOperation(value = "我的班级", notes = "我的班级")
    @ApiOperation(value = "我的班级(老师的班级)", notes = "我的班级(老师的班级)")
    public Result myClassList() {
        return classesService.myClassList();
    }
src/main/java/com/ycl/jxkg/controller/common/UploadController.java
@@ -11,6 +11,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.UUID;
@@ -82,9 +83,9 @@
        // 读取文件内容
        byte[] fileContent = Files.readAllBytes(file.toPath());
        String downloadfile = URLEncoder.encode(fileName,"UTF-8");
        // 设置响应头
        response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
        response.setHeader("Content-Disposition", "attachment; filename=" + downloadfile);
        response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
        // 将文件内容写入响应输出流
src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java
@@ -46,11 +46,13 @@
    @NotBlank(message = "请填写学员登录账号", groups = {Add.class, Update.class})
    @ApiModelProperty("登录账号")
    private String account;
    private String userName;
    @ApiModelProperty("登录密码")
    private String password;
    private String birthDay;
    public static ClassesUser getEntityByForm(@NonNull EditClassesUserForm form, ClassesUser entity) {
        if(entity == null) {
          entity = new ClassesUser();
src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java
@@ -1,10 +1,12 @@
package com.ycl.jxkg.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.jxkg.domain.base.AbsVo;
import com.ycl.jxkg.domain.entity.ClassesUser;
import java.util.Date;
import java.util.List;
import org.springframework.lang.NonNull;
import org.springframework.beans.BeanUtils;
import io.swagger.annotations.ApiModel;
@@ -20,26 +22,49 @@
@Data
public class ClassesUserVO extends AbsVo {
    /** 班级ID */
    /**
     * 班级ID
     */
    private Integer classesId;
    /** 用户ID */
    /**
     * 用户ID
     */
    private Integer userId;
    /** 真实姓名 */
    /**
     * 真实姓名
     */
    private String realName;
    /** 年龄 */
    /**
     * 年龄
     */
    private Integer sex;
    /** 电话 */
    /**
     * 电话
     */
    private String phone;
    /** 加入时间 */
    /**
     * 加入时间
     */
    private Date createTime;
    /**
     * 电话
     */
    private String userName;
    /**
     * 电话
     */
    private String age;
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date birthDay;
    private Integer status;
    public static ClassesUserVO getVoByEntity(@NonNull ClassesUser entity, ClassesUserVO vo) {
        if(vo == null) {
        if (vo == null) {
            vo = new ClassesUserVO();
        }
        BeanUtils.copyProperties(entity, vo);
src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperImportVO.java
@@ -2,6 +2,7 @@
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.NumberFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
src/main/java/com/ycl/jxkg/excel/SelectExcel.java
@@ -29,7 +29,7 @@
    /**
     * 选项下拉数据
     */
    private String[] optionList = {"A","B","C","D","E","F","G","H"};
    private String[] optionList = {"A", "B", "C", "D", "E", "F", "G", "H"};
    public SelectExcel(List subjectNameList) {
        this.subjectNameList = subjectNameList;
@@ -49,6 +49,8 @@
        // 添加题目下拉
        DataValidationConstraint questionConstraint = dataValidationHelper.createExplicitListConstraint(questionTypeList);
        DataValidation questionValidation = dataValidationHelper.createValidation(questionConstraint, questionTypeRange);
        setValidation(questionValidation);
        sheet.addValidationData(questionValidation);
@@ -57,6 +59,8 @@
        // 添加课目下拉
        DataValidationConstraint subjectConstraint = dataValidationHelper.createExplicitListConstraint(subjectNameList.toArray((new String[0])));
        DataValidation subjectValidation = dataValidationHelper.createValidation(subjectConstraint, subjectTypeRange);
        setValidation(subjectValidation);
        sheet.addValidationData(subjectValidation);
        // 设置选项下拉范围,第4列,1500行内
@@ -64,6 +68,8 @@
        // 添加选项下拉
        DataValidationConstraint optionConstraint = dataValidationHelper.createExplicitListConstraint(optionList);
        DataValidation optionValidation = dataValidationHelper.createValidation(optionConstraint, optionRange);
        setValidation(optionValidation);
        sheet.addValidationData(optionValidation);
        // 设置选项下拉范围,第4列,1500行内
@@ -71,7 +77,24 @@
        // 添加选项下拉
        DataValidationConstraint answerConstraint = dataValidationHelper.createExplicitListConstraint(optionList);
        DataValidation answerValidation = dataValidationHelper.createValidation(answerConstraint, answerRange);
        setValidation(answerValidation);
        sheet.addValidationData(answerValidation);
        // 难道1-5
        String[] difficultList = new String[]{"1", "2", "3", "4", "5"};
        CellRangeAddressList difficultRange = new CellRangeAddressList(2, 1500, 8, 8);
        // 添加选项下拉
        DataValidationConstraint difficultConstraint = dataValidationHelper.createExplicitListConstraint(difficultList);
        DataValidation difficultValidation = dataValidationHelper.createValidation(difficultConstraint, difficultRange);
        setValidation(difficultValidation);
        sheet.addValidationData(difficultValidation);
    }
    private DataValidation setValidation(DataValidation dataValidation){
        dataValidation.setEmptyCellAllowed(false);
        dataValidation.setSuppressDropDownArrow(true);
        dataValidation.setShowErrorBox(true);
        //设置输入错误提示信息
        dataValidation.createErrorBox("选择错误提示", "你输入的值未在备选列表中,请下拉选择合适的值!");
        return dataValidation;
    }
}
src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java
@@ -182,9 +182,14 @@
    @Override
    public Result myClassList() {
        Integer userId = webContext.getCurrentUser().getId();
        List<ClassesUser> classes = new LambdaQueryChainWrapper<>(classesUserService.getBaseMapper())
                .eq(ClassesUser::getTeacher, Boolean.TRUE)
                .eq(ClassesUser::getUserId, userId)
                .list();
        List<Integer> classesIds = classes.stream().map(ClassesUser::getClassesId).collect(Collectors.toList());
        List<Classes> list = new LambdaQueryChainWrapper<>(baseMapper)
                .select(Classes::getId, Classes::getClassName)
                .eq(Classes::getCreateUser, userId)
                .in(Classes::getId, classesIds)
                .list();
        return Result.ok(list);
    }
src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java
@@ -26,6 +26,9 @@
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -55,15 +58,15 @@
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result add(EditClassesUserForm form) {
    public Result add(EditClassesUserForm form)  {
        Long count = new LambdaQueryChainWrapper<>(userMapper)
                .eq(User::getUserName, form.getAccount())
                .eq(User::getUserName, form.getUserName())
                .count();
        if (count > 0) {
            throw new RuntimeException("该登录账号已被使用");
        }
        User user = new User();
        user.setUserName(form.getPhone());
        user.setUserName(form.getUserName());
        String password = StringUtils.hasText(form.getPassword()) ? form.getPassword() : DEFAULT_PASSWORD;
        user.setPassword(authenticationService.pwdEncode(password));
        user.setStatus(UserStatusEnum.Enable.getCode());
@@ -72,12 +75,19 @@
        user.setPhone(form.getPhone());
        user.setRealName(form.getRealName());
        user.setSex(form.getSex());
        DateFormat fmt =new SimpleDateFormat("yyyy-MM-dd");
        try {
            user.setBirthDay(fmt.parse(form.getBirthDay()));
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
        user.setLastUpdatePasswordTime(new Date());
        userMapper.insert(user);
        ClassesUser classesUser = new ClassesUser();
        classesUser.setClassesId(form.getClassesId());
        classesUser.setUserId(user.getId());
        classesUser.setTeacher(Boolean.FALSE);
        baseMapper.insert(classesUser);
        return Result.ok("添加成功");
    }
@@ -90,7 +100,7 @@
            throw new RuntimeException("学员数据不存在");
        }
        Long count = new LambdaQueryChainWrapper<>(userMapper)
                .eq(User::getUserName, form.getAccount())
                .eq(User::getUserName, form.getUserName())
                .ne(User::getId, classesUser.getUserId())
                .count();
        if (count > 0) {
@@ -105,11 +115,18 @@
//        BeanUtils.copyProperties(classesUser, user);
//        userMapper.updateById(user);
        user.setUserName(form.getAccount());
        user.setUserName(form.getUserName());
        user.setPassword(form.getPassword());
        user.setPhone(form.getPhone());
        user.setRealName(form.getRealName());
        user.setSex(form.getSex());
        user.setAge(form.getAge());
        DateFormat fmt =new SimpleDateFormat("yyyy-MM-dd");
        try {
            user.setBirthDay(fmt.parse(form.getBirthDay()));
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
        userMapper.updateById(user);
        return Result.ok("修改成功");
    }
@@ -142,12 +159,14 @@
        // 先删除之前的
        new LambdaUpdateChainWrapper<>(baseMapper)
                .eq(ClassesUser::getClassesId, form.getId())
                .eq(ClassesUser::getTeacher, Boolean.FALSE)
                .remove();
        // 再新增
        List<ClassesUser> classesUserList = form.getStudentList().stream().map(item -> {
            ClassesUser classesUser = new ClassesUser();
            classesUser.setClassesId(form.getId());
            classesUser.setUserId(item);
            classesUser.setTeacher(Boolean.FALSE);
            return classesUser;
        }).collect(Collectors.toList());
        this.saveBatch(classesUserList);
src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java
@@ -328,12 +328,13 @@
    public List<ExamPaper> myExamPaper(Integer paperType) {
        Integer userId = webContext.getCurrentUser().getId();
        List<ExamPaper> list = new LambdaQueryChainWrapper<>(baseMapper)
                .select(ExamPaper::getId, ExamPaper::getName, ExamPaper::getVisibility)
                .select(ExamPaper::getId, ExamPaper::getName, ExamPaper::getVisibility,ExamPaper::getSuggestTime)
                .eq(ExamPaper::getCreateUser, userId)
                .eq(Objects.nonNull(paperType), ExamPaper::getPaperType, paperType)
                .or()
                .eq(ExamPaper::getVisibility, VisibilityEnum.Public.getName())
                .eq(Objects.nonNull(paperType), ExamPaper::getPaperType, paperType)
                .orderByDesc(ExamPaper::getId)
                .list();
        list.stream().forEach(item -> {
            if (VisibilityEnum.Public.getName().equals(item.getVisibility())) {
@@ -382,6 +383,7 @@
        // 查出所有的课目(excel下拉数据)
        List<Subject> subjects = subjectService.list();
        List<String> subjectNameList = subjects.stream().map(Subject::getName).collect(Collectors.toList());
        EasyExcel.write(response.getOutputStream(), ExamPaperImportVO.class)
                .sheet("模板")
                .registerWriteHandler(new PaperSelectExcel(subjectNameList))
src/main/resources/mapper/ClassesUserMapper.xml
@@ -10,6 +10,10 @@
        <result column="sex" property="sex"/>
        <result column="phone" property="phone"/>
        <result column="create_time" property="createTime"/>
        <result column="user_name" property="userName"/>
        <result column="age" property="age"/>
        <result column="birth_day" property="birthDay"/>
        <result column="status" property="status"/>
    </resultMap>
    <resultMap id="ResultMap" type="com.ycl.jxkg.domain.vo.StudentExamInfoVO">
@@ -43,13 +47,18 @@
        TCU.id,
        TU.real_name,
        TU.sex,
        TU.phone
        TU.phone,
        TU.user_name,
        TU.age,
        TU.birth_day,
        TU.status
        FROM t_classes_user TCU
        LEFT JOIN t_user TU ON TU.id = TCU.user_id and TU.deleted = 0
        WHERE TCU.deleted = 0 AND TCU.classes_id = #{query.classesId}
        WHERE TCU.deleted = 0 AND TCU.classes_id = #{query.classesId} AND TCU.teacher = 0
        <if test="query.studentName != null and query.studentName != ''">AND TU.real_name like concat('%',
            #{query.studentName}, '%')
        </if>
        order by TU.id desc
    </select>
@@ -62,7 +71,7 @@
            t_classes_user TCU
            INNER JOIN t_user TU ON TU.id = TCU.user_id AND TCU.classes_id = #{classesId}
        WHERE
            TCU.deleted = 0
            TCU.deleted = 0 AND TCU.teacher = 0
    </select>
    <select id="getClassesByUserId" resultType="java.lang.Integer">