From ea3bcc24543202a55b22623cad8dd8900d550242 Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期二, 29 十月 2024 14:05:06 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/java/com/ycl/jxkg/excel/SelectExcel.java                      |   25 ++++++++
 src/main/java/com/ycl/jxkg/controller/common/UploadController.java     |    5 +
 src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java     |    2 
 src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java        |    7 ++
 src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperImportVO.java |    1 
 src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java    |   29 ++++++++-
 src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java                |   39 ++++++++++--
 src/main/resources/mapper/ClassesUserMapper.xml                        |   15 ++++-
 src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java        |    4 +
 src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java      |    4 +
 10 files changed, 109 insertions(+), 22 deletions(-)

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 436c59a..c371fbd 100644
--- a/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java
+++ b/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();
     }
diff --git a/src/main/java/com/ycl/jxkg/controller/common/UploadController.java b/src/main/java/com/ycl/jxkg/controller/common/UploadController.java
index e8cd1a8..7026952 100644
--- a/src/main/java/com/ycl/jxkg/controller/common/UploadController.java
+++ b/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);
 
         // 灏嗘枃浠跺唴瀹瑰啓鍏ュ搷搴旇緭鍑烘祦
diff --git a/src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java b/src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java
index b4116d2..a56b0b6 100644
--- a/src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java
+++ b/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();
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 cfdb39e..01f6df1 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java
+++ b/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);
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperImportVO.java b/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperImportVO.java
index dcf9022..ca26deb 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperImportVO.java
+++ b/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;
diff --git a/src/main/java/com/ycl/jxkg/excel/SelectExcel.java b/src/main/java/com/ycl/jxkg/excel/SelectExcel.java
index c4e8cde..2de1850 100644
--- a/src/main/java/com/ycl/jxkg/excel/SelectExcel.java
+++ b/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;
     }
 }
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 78a8613..6f47b44 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java
+++ b/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);
     }
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 85c6fd1..909cc65 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java
+++ b/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);
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 612d808..db198fe 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java
+++ b/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 @@
         // 鏌ュ嚭鎵�鏈夌殑璇剧洰锛坋xcel涓嬫媺鏁版嵁锛�
         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))
diff --git a/src/main/resources/mapper/ClassesUserMapper.xml b/src/main/resources/mapper/ClassesUserMapper.xml
index 76f7e7c..8230ef9 100644
--- a/src/main/resources/mapper/ClassesUserMapper.xml
+++ b/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">

--
Gitblit v1.8.0