From ea3bcc24543202a55b22623cad8dd8900d550242 Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期二, 29 十月 2024 14:05:06 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java |   49 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 48 insertions(+), 1 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..6f47b44 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());
     }
 
@@ -140,9 +182,14 @@
     @Override
     public Result myClassList() {
         Integer userId = webContext.getCurrentUser().getId();
+        List<ClassesUser> classes = new LambdaQueryChainWrapper<>(classesUserService.getBaseMapper())
+                .eq(ClassesUser::getTeacher, Boolean.TRUE)
+                .eq(ClassesUser::getUserId, userId)
+                .list();
+        List<Integer> classesIds = classes.stream().map(ClassesUser::getClassesId).collect(Collectors.toList());
         List<Classes> list = new LambdaQueryChainWrapper<>(baseMapper)
                 .select(Classes::getId, Classes::getClassName)
-                .eq(Classes::getCreateUser, userId)
+                .in(Classes::getId, classesIds)
                 .list();
         return Result.ok(list);
     }

--
Gitblit v1.8.0