| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | |
| | | public class ClassesServiceImpl extends ServiceImpl<ClassesMapper, Classes> implements ClassesService { |
| | | |
| | | private final ClassesMapper classesMapper; |
| | | private final WebContext webContext; |
| | | private final ClassesUserService classesUserService; |
| | | |
| | | /** |
| | | * 添加 |
| | |
| | | * @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("添加成功"); |
| | | } |
| | | |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Result update(ClassesForm form) { |
| | | Classes entity = baseMapper.selectById(form.getId()); |
| | | |
| | |
| | | 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("修改成功"); |
| | | } |
| | | |
| | |
| | | @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()); |
| | | } |
| | | |
| | |
| | | .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("班级已经恢复正常"); |
| | | } |
| | | } |