From 161014ebc77c605cdb20fcdd7dc265a89d95d543 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 29 十月 2024 16:48:26 +0800
Subject: [PATCH] 学生端班级、会议一对多关系

---
 src/main/java/com/ycl/jxkg/domain/vo/MeetVO.java                  |    8 ++-
 src/main/java/com/ycl/jxkg/controller/student/MeetController.java |   13 +++++-
 src/main/java/com/ycl/jxkg/service/MeetService.java               |    7 +++
 src/main/java/com/ycl/jxkg/domain/query/MeetQuery.java            |    1 
 src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java          |    6 +-
 src/main/resources/mapper/MeetMapper.xml                          |   18 +++++++-
 src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java      |   26 ++++++++++---
 src/main/resources/mapper/ClassesUserMapper.xml                   |    8 +++
 8 files changed, 69 insertions(+), 18 deletions(-)

diff --git a/src/main/java/com/ycl/jxkg/controller/student/MeetController.java b/src/main/java/com/ycl/jxkg/controller/student/MeetController.java
index 44b8272..b63f863 100644
--- a/src/main/java/com/ycl/jxkg/controller/student/MeetController.java
+++ b/src/main/java/com/ycl/jxkg/controller/student/MeetController.java
@@ -9,11 +9,14 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
+import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.constraints.NotEmpty;
+import java.util.Arrays;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 浼氳琛� 鍓嶇鎺у埗鍣�
@@ -30,12 +33,18 @@
 
     private final MeetService meetService;
 
-    @GetMapping("/page")
+    @PostMapping("/page")
     @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉")
-    public Result page(MeetQuery query) {
+    public Result page(@RequestBody MeetQuery query) {
         return meetService.studentPage(query);
     }
 
+    @GetMapping("/classes")
+    @ApiOperation(value = "鑾峰彇瀛︾敓鐨勭彮绾�", notes = "鑾峰彇瀛︾敓鐨勭彮绾�")
+    public Result getStudentClasses() {
+        return meetService.getStudentClasses();
+    }
+
     @GetMapping("/{id}")
     @ApiOperation(value = "瀛︾敓涓婅", notes = "瀛︾敓涓婅")
     public Result detail(@PathVariable("id") Integer id) {
diff --git a/src/main/java/com/ycl/jxkg/domain/query/MeetQuery.java b/src/main/java/com/ycl/jxkg/domain/query/MeetQuery.java
index b197413..9a2f8ef 100644
--- a/src/main/java/com/ycl/jxkg/domain/query/MeetQuery.java
+++ b/src/main/java/com/ycl/jxkg/domain/query/MeetQuery.java
@@ -18,6 +18,7 @@
 @Data
 @ApiModel(value = "Meet鏌ヨ", description = "浼氳琛ㄦ煡璇�")
 public class MeetQuery extends AbsQuery {
+
     private List<Integer> classesIds;
     private Integer teacherId;
 
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/MeetVO.java b/src/main/java/com/ycl/jxkg/domain/vo/MeetVO.java
index 7b1b7a1..2c3a11a 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/MeetVO.java
+++ b/src/main/java/com/ycl/jxkg/domain/vo/MeetVO.java
@@ -29,11 +29,13 @@
 
     /** 鐝骇id */
     private Integer classesId;
+    private String classesName;
 
-    /** 鍒涘缓浜� */
-    private Integer createUser;
+    /** 鑰佸笀鍒楄〃 */
+    private List<Integer> teacherIds;
+    private List<String> teacherNames;
     /** 鑰佸笀濮撳悕 */
-    private String teacherName;
+    private String teacherNamesStr;
     /** 寮�濮嬫椂闂� */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date startTime;
diff --git a/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java b/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java
index 5e77e13..eb9b7bc 100644
--- a/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java
+++ b/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java
@@ -5,12 +5,10 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ycl.jxkg.domain.entity.User;
 import com.ycl.jxkg.domain.query.ClassesUserQuery;
-import com.ycl.jxkg.domain.vo.ClassesUserVO;
+import com.ycl.jxkg.domain.vo.*;
 import com.ycl.jxkg.domain.form.ClassesUserForm;
 import java.util.List;
 
-import com.ycl.jxkg.domain.vo.StudentExamInfoVO;
-import com.ycl.jxkg.domain.vo.StudentVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -51,6 +49,8 @@
      */
     List<Integer> getClassesByUserId(@Param("userId") Integer userId);
 
+    List<ClassesVO> getClassesByUserId1(@Param("userId") Integer userId);
+
     /**
      * 鏍规嵁瀛︾敓鑾峰彇鐝骇鍚嶇О
      *
diff --git a/src/main/java/com/ycl/jxkg/service/MeetService.java b/src/main/java/com/ycl/jxkg/service/MeetService.java
index 4feef5c..35b28aa 100644
--- a/src/main/java/com/ycl/jxkg/service/MeetService.java
+++ b/src/main/java/com/ycl/jxkg/service/MeetService.java
@@ -75,4 +75,11 @@
      * @return
      */
     Result getStudentList(Integer meetId, String keyword);
+
+    /**
+     * 鑾峰彇瀛︾敓鎵�鍦ㄧ殑鐝骇
+     *
+     * @return
+     */
+    Result getStudentClasses();
 }
diff --git a/src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java
index 548338d..1474c95 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/MeetServiceImpl.java
@@ -13,6 +13,7 @@
 import com.ycl.jxkg.domain.entity.StudyRecord;
 import com.ycl.jxkg.domain.form.MeetForm;
 import com.ycl.jxkg.domain.query.MeetQuery;
+import com.ycl.jxkg.domain.vo.ClassesVO;
 import com.ycl.jxkg.domain.vo.MeetVO;
 import com.ycl.jxkg.domain.vo.StudentSimpleVO;
 import com.ycl.jxkg.enums.MeetStatusEnum;
@@ -136,15 +137,21 @@
     @Override
     public Result studentPage(MeetQuery query) {
         Integer userId = webContext.getCurrentUser().getId();
-        //鏌ュ嚭瀛︾敓鎵�鍦ㄧ彮绾�
-        List<Integer> classes = classesUserMapper.getClassesByUserId(userId);
-        if(CollectionUtils.isEmpty(classes)){
-            return Result.ok("鎮ㄦ殏鏈姞鍏ョ彮绾�");
+        if (CollectionUtils.isEmpty(query.getClassesIds())) {
+            //鏌ュ嚭瀛︾敓鎵�鍦ㄧ彮绾�
+            List<Integer> classes = classesUserMapper.getClassesByUserId(userId);
+            if(CollectionUtils.isEmpty(classes)){
+                return Result.fail(500, "鎮ㄦ殏鏈姞鍏ョ彮绾�");
+            }
+            query.setClassesIds(classes);
         }
-        query.setClassesIds(classes);
         IPage<MeetVO> page = PageUtil.getPage(query, MeetVO.class);
         baseMapper.getPage(page, query);
-
+        for (MeetVO vo : page.getRecords()) {
+            if (!CollectionUtils.isEmpty(vo.getTeacherNames())) {
+                vo.setTeacherNamesStr(vo.getTeacherNames().stream().collect(Collectors.joining("銆�")));
+            }
+        }
         return Result.ok().data(page.getRecords()).total(page.getTotal());
     }
 
@@ -229,6 +236,13 @@
         return Result.ok().data(studentList);
     }
 
+    @Override
+    public Result getStudentClasses() {
+        Integer userId = webContext.getCurrentUser().getId();
+        List<ClassesVO> classes = classesUserMapper.getClassesByUserId1(userId);
+        return Result.ok().data(classes);
+    }
+
     /**
      * 鍙戦�乵q娑堟伅
      *
diff --git a/src/main/resources/mapper/ClassesUserMapper.xml b/src/main/resources/mapper/ClassesUserMapper.xml
index 8230ef9..10be910 100644
--- a/src/main/resources/mapper/ClassesUserMapper.xml
+++ b/src/main/resources/mapper/ClassesUserMapper.xml
@@ -77,7 +77,13 @@
     <select id="getClassesByUserId" resultType="java.lang.Integer">
         select classes_id
         from t_classes_user
-        where user_id = #{userId} and deleted = 0
+        where user_id = #{userId} and deleted = 0 and teacher = 0
+    </select>
+
+    <select id="getClassesByUserId1" resultType="com.ycl.jxkg.domain.vo.ClassesVO">
+        select distinct tc.id, tc.class_name
+        from t_classes_user tcu inner join t_classes tc ON tcu.classes_id = tc.id
+        and tcu.user_id = #{userId} and tcu.teacher = 0
     </select>
 
     <select id="getClassesNameByUserId" resultType="java.lang.String">
diff --git a/src/main/resources/mapper/MeetMapper.xml b/src/main/resources/mapper/MeetMapper.xml
index 6cd5068..d682cb3 100644
--- a/src/main/resources/mapper/MeetMapper.xml
+++ b/src/main/resources/mapper/MeetMapper.xml
@@ -13,6 +13,19 @@
         <result column="status" property="status" />
     </resultMap>
 
+    <resultMap id="PageMap" type="com.ycl.jxkg.domain.vo.MeetVO">
+        <result column="meet_name" property="meetName" />
+        <result column="meet_cover" property="meetCover" />
+        <result column="classes_id" property="classesId" />
+        <result column="start_time" property="startTime" />
+        <result column="end_time" property="endTime" />
+        <result column="status" property="status" />
+        <collection property="teacherNames" ofType="string" column="classes_id" select="getTeacherNames"></collection>
+    </resultMap>
+
+    <select id="getTeacherNames" resultType="string">
+        SELECT tu.real_name FROM t_user tu INNER JOIN t_classes_user tcu ON tu.id = tcu.user_id AND tcu.classes_id = #{classesId} AND tcu.teacher = 1
+    </select>
 
     <select id="getById" resultMap="BaseResultMap">
         SELECT
@@ -31,19 +44,18 @@
     </select>
 
 
-    <select id="getPage" resultType="com.ycl.jxkg.domain.vo.MeetVO">
+    <select id="getPage" resultMap="PageMap">
         SELECT
             TM.meet_name,
             TM.meet_cover,
             TM.classes_id,
             TM.create_user,
-            TU.user_name as teacherName,
             TM.start_time,
             TM.end_time,
             TM.status,
             TM.id
         FROM
-            t_meet TM left join t_user TU on TM.create_user = TU.id
+            t_meet TM
         <where>
             TM.deleted = 0
             <if test="query.classesIds !=null">

--
Gitblit v1.8.0