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