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