luohairen
2024-10-29 ea3bcc24543202a55b22623cad8dd8900d550242
src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java
@@ -1,9 +1,14 @@
package com.ycl.jxkg.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
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.enums.general.ClassesStatusEnum;
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;
import com.ycl.jxkg.mapper.ClassesMapper;
import com.ycl.jxkg.service.ClassesService;
import com.ycl.jxkg.base.Result;
@@ -11,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;
@@ -31,6 +40,8 @@
public class ClassesServiceImpl extends ServiceImpl<ClassesMapper, Classes> implements ClassesService {
    private final ClassesMapper classesMapper;
    private final WebContext webContext;
    private final ClassesUserService classesUserService;
    /**
     * 添加
@@ -38,9 +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("添加成功");
    }
@@ -50,6 +75,7 @@
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result update(ClassesForm form) {
        Classes entity = baseMapper.selectById(form.getId());
@@ -57,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("修改成功");
    }
@@ -90,7 +131,16 @@
    @Override
    public Result page(ClassesQuery query) {
        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());
    }
@@ -127,4 +177,29 @@
                .update();
        return Result.ok("解散成功");
    }
    @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)
                .in(Classes::getId, classesIds)
                .list();
        return Result.ok(list);
    }
    @Override
    public Result recover(Integer id) {
        new LambdaUpdateChainWrapper<>(baseMapper)
                .eq(Classes::getId, id)
                .set(Classes::getStatus, ClassesStatusEnum.NORMAL)
                .update();
        return Result.ok("班级已经恢复正常");
    }
}