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