From 093fac278c7931e8160209a428729d5a82d5cd72 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期日, 27 十月 2024 21:29:09 +0800 Subject: [PATCH] 一个班级可以有多个老师 --- src/main/java/com/ycl/jxkg/service/ClassesUserService.java | 10 +++++ src/main/java/com/ycl/jxkg/domain/form/ClassesForm.java | 4 ++ src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java | 9 ++++ src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java | 46 +++++++++++++++++++++++ src/main/java/com/ycl/jxkg/domain/entity/ClassesUser.java | 4 + src/main/java/com/ycl/jxkg/controller/admin/UserController.java | 15 +++++++ src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java | 6 +++ src/main/resources/mapper/ClassesUserMapper.xml | 7 +++ src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java | 5 ++ 9 files changed, 105 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/controller/admin/UserController.java b/src/main/java/com/ycl/jxkg/controller/admin/UserController.java index 8e08622..9f6bf0e 100644 --- a/src/main/java/com/ycl/jxkg/controller/admin/UserController.java +++ b/src/main/java/com/ycl/jxkg/controller/admin/UserController.java @@ -46,6 +46,7 @@ private final WebContext webContext; private final Integer teacher = 2; private final Integer student = 1; + @RequestMapping(value = "/page/list", method = RequestMethod.POST) public Result<PageInfo<UserResponseVO>> pageList(@RequestBody UserPageRequestVO model) { if(!student.equals(model.getRole())) { @@ -73,6 +74,20 @@ return Result.ok().data(studentVOS); } + @RequestMapping(value = "/teacher/list", method = RequestMethod.GET) + public Result<?> teacherList() { + List<User> teacherList = new LambdaQueryChainWrapper<>(userService.getBaseMapper()) + .eq(User::getRole, RoleEnum.TEACHER.getCode()) + .orderByDesc(User::getCreateTime) + .list(); + List<StudentVO> teachers = teacherList.stream().map(item -> { + StudentVO student = new StudentVO(); + BeanUtils.copyProperties(item, student); + return student; + }).collect(Collectors.toList()); + return Result.ok().data(teachers); + } + @RequestMapping(value = "/classes/students", method = RequestMethod.GET) public Result<com.ycl.jxkg.domain.vo.student.user.UserResponseVO> classesStudent(@RequestParam Integer classesId) { List<StudentVO> studentList = userService.classesStudent(classesId); diff --git a/src/main/java/com/ycl/jxkg/domain/entity/ClassesUser.java b/src/main/java/com/ycl/jxkg/domain/entity/ClassesUser.java index d4782f7..2e030ec 100644 --- a/src/main/java/com/ycl/jxkg/domain/entity/ClassesUser.java +++ b/src/main/java/com/ycl/jxkg/domain/entity/ClassesUser.java @@ -27,5 +27,7 @@ /** */ private Integer userId; - + @TableField("teacher") + /** 鏄惁鑰佸笀 */ + private Boolean teacher; } diff --git a/src/main/java/com/ycl/jxkg/domain/form/ClassesForm.java b/src/main/java/com/ycl/jxkg/domain/form/ClassesForm.java index 27fbde5..87510ea 100644 --- a/src/main/java/com/ycl/jxkg/domain/form/ClassesForm.java +++ b/src/main/java/com/ycl/jxkg/domain/form/ClassesForm.java @@ -13,6 +13,7 @@ import lombok.Data; import java.util.Date; +import java.util.List; /** * 鐝骇琛ㄥ崟 @@ -36,6 +37,9 @@ @ApiModelProperty("缁撴潫鏃堕棿") private Date endTime; + @ApiModelProperty("鏁欏笀鍒楄〃") + private List<Integer> teacherList; + @ApiModelProperty("澶囨敞") private String remark; diff --git a/src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java b/src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java index 89ba6eb..73187c4 100644 --- a/src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java +++ b/src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java @@ -5,6 +5,7 @@ import com.ycl.jxkg.domain.entity.Classes; import java.util.Date; +import java.util.List; import com.ycl.jxkg.enums.general.ClassesStatusEnum; import org.springframework.lang.NonNull; @@ -23,6 +24,10 @@ /** 鐝骇鍚嶇О */ private String className; + /** 鑰佸笀 */ + private List<Integer> teacherList; + private String teacherNamesStr; + /** 鍒涘缓浜� */ private Integer createUser; private String createUserName; diff --git a/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java b/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java index 346eaab..5e77e13 100644 --- a/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java +++ b/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java @@ -10,6 +10,7 @@ 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; @@ -57,4 +58,12 @@ * @return */ List<String> getClassesNameByUserId(@Param("userId") Integer userId); + + /** + * 鏌ヨ鐝骇鑰佸笀 + * + * @param id + * @return + */ + List<StudentVO> getTeacherListByClassesId(@Param("id") Integer id); } diff --git a/src/main/java/com/ycl/jxkg/service/ClassesUserService.java b/src/main/java/com/ycl/jxkg/service/ClassesUserService.java index 2199aed..a9e8fe9 100644 --- a/src/main/java/com/ycl/jxkg/service/ClassesUserService.java +++ b/src/main/java/com/ycl/jxkg/service/ClassesUserService.java @@ -6,6 +6,8 @@ import com.ycl.jxkg.domain.form.ClassesUserForm; import com.ycl.jxkg.domain.form.EditClassesUserForm; import com.ycl.jxkg.domain.query.ClassesUserQuery; +import com.ycl.jxkg.domain.vo.StudentVO; + import java.util.List; /** @@ -71,4 +73,12 @@ * @return */ Result edit(EditClassesUserForm form); + + /** + * 鏌ヨ鐝骇鑰佸笀 + * + * @param id + * @return + */ + List<StudentVO> getTeacherListByClassesId(Integer id); } 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 94a5c85..c88625a 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.ycl.jxkg.context.WebContext; import com.ycl.jxkg.domain.entity.Classes; +import com.ycl.jxkg.domain.entity.ClassesUser; import com.ycl.jxkg.domain.vo.StudentSimpleVO; import com.ycl.jxkg.domain.vo.StudentVO; import com.ycl.jxkg.enums.general.ClassesStatusEnum; @@ -15,12 +16,16 @@ import com.ycl.jxkg.domain.form.ClassesForm; import com.ycl.jxkg.domain.vo.ClassesVO; import com.ycl.jxkg.domain.query.ClassesQuery; +import com.ycl.jxkg.service.ClassesUserService; import com.ycl.jxkg.utils.PageUtil; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; +import org.springframework.util.CollectionUtils; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -36,6 +41,7 @@ private final ClassesMapper classesMapper; private final WebContext webContext; + private final ClassesUserService classesUserService; /** * 娣诲姞 @@ -43,11 +49,25 @@ * @return */ @Override + @Transactional(rollbackFor = Exception.class) public Result add(ClassesForm form) { Classes entity = ClassesForm.getEntityByForm(form, null); entity.setStatus(ClassesStatusEnum.NORMAL); entity.setCreateUser(webContext.getCurrentUser().getId()); baseMapper.insert(entity); + + List<Integer> teacherList = form.getTeacherList(); + if (CollectionUtils.isEmpty(teacherList)) { + teacherList = new ArrayList<>(1); + } + teacherList.add(webContext.getCurrentUser().getId()); + for (Integer teacherUserId : teacherList) { + ClassesUser classesUser = new ClassesUser(); + classesUser.setClassesId(entity.getId()); + classesUser.setUserId(teacherUserId); + classesUser.setTeacher(Boolean.TRUE); + classesUserService.save(classesUser); + } return Result.ok("娣诲姞鎴愬姛"); } @@ -57,6 +77,7 @@ * @return */ @Override + @Transactional(rollbackFor = Exception.class) public Result update(ClassesForm form) { Classes entity = baseMapper.selectById(form.getId()); @@ -64,6 +85,23 @@ Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); BeanUtils.copyProperties(form, entity); baseMapper.updateById(entity); + + new LambdaUpdateChainWrapper<>(classesUserService.getBaseMapper()) + .eq(ClassesUser::getClassesId, entity.getId()) + .eq(ClassesUser::getTeacher, Boolean.TRUE) + .remove(); + List<Integer> teacherList = form.getTeacherList(); + if (CollectionUtils.isEmpty(teacherList)) { + teacherList = new ArrayList<>(1); + } + teacherList.add(webContext.getCurrentUser().getId()); + for (Integer teacherUserId : teacherList) { + ClassesUser classesUser = new ClassesUser(); + classesUser.setClassesId(entity.getId()); + classesUser.setUserId(teacherUserId); + classesUser.setTeacher(Boolean.TRUE); + classesUserService.save(classesUser); + } return Result.ok("淇敼鎴愬姛"); } @@ -99,6 +137,14 @@ IPage<ClassesVO> page = PageUtil.getPage(query, ClassesVO.class); query.setUserId(webContext.getCurrentUser().getId()); baseMapper.getPage(page, query); + + for (ClassesVO vo : page.getRecords()) { + List<StudentVO> teacherList = classesUserService.getTeacherListByClassesId(vo.getId()); + List<Integer> teacherIds = teacherList.stream().map(StudentVO::getId).collect(Collectors.toList()); + String teacherNamesStr = teacherList.stream().map(StudentVO::getRealName).collect(Collectors.joining(",")); + vo.setTeacherList(teacherIds); + vo.setTeacherNamesStr(teacherNamesStr); + } return Result.ok().data(page.getRecords()).total(page.getTotal()); } 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 78a3fe8..59fa3b9 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java @@ -6,6 +6,7 @@ import com.ycl.jxkg.domain.entity.ClassesUser; import com.ycl.jxkg.domain.entity.User; import com.ycl.jxkg.domain.form.EditClassesUserForm; +import com.ycl.jxkg.domain.vo.StudentVO; import com.ycl.jxkg.enums.RoleEnum; import com.ycl.jxkg.enums.UserStatusEnum; import com.ycl.jxkg.mapper.ClassesUserMapper; @@ -113,6 +114,11 @@ return Result.ok("淇敼鎴愬姛"); } + @Override + public List<StudentVO> getTeacherListByClassesId(Integer id) { + return baseMapper.getTeacherListByClassesId(id); + } + /** * 淇敼 * diff --git a/src/main/resources/mapper/ClassesUserMapper.xml b/src/main/resources/mapper/ClassesUserMapper.xml index 05d0369..76f7e7c 100644 --- a/src/main/resources/mapper/ClassesUserMapper.xml +++ b/src/main/resources/mapper/ClassesUserMapper.xml @@ -77,4 +77,11 @@ left join t_classes tc on tcu.classes_id = tc.id where user_id = #{userId} and tcu.deleted = 0 and tc.deleted =0 </select> + + <select id="getTeacherListByClassesId" resultType="com.ycl.jxkg.domain.vo.StudentVO"> + SELECT + DISTINCT tu.id, tu.real_name + FROM t_user tu + INNER JOIN t_classes_user tcu ON tu.id = tcu.user_id AND tcu.classes_id = #{id} AND tcu.deleted = 0 AND tcu.teacher = 1 AND tu.deleted = 0 + </select> </mapper> -- Gitblit v1.8.0