From d01fa2df1b46f45647e82be6d1476ea1e295f995 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期日, 27 十月 2024 21:31:53 +0800
Subject: [PATCH] 一个班级可以有多个老师

---
 src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)

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..78a8613 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,23 @@
      * @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)) {
+            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 +75,7 @@
      * @return
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Result update(ClassesForm form) {
         Classes entity = baseMapper.selectById(form.getId());
 
@@ -64,6 +83,21 @@
         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)) {
+            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 +133,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());
     }
 

--
Gitblit v1.8.0