package com.mindskip.xzs.service.impl; import com.mindskip.xzs.domain.Classes; import com.mindskip.xzs.domain.ClassesUser; import com.mindskip.xzs.domain.User; import com.mindskip.xzs.domain.classes.ClassesUserInfo; import com.mindskip.xzs.domain.other.KeyValue; import com.mindskip.xzs.repository.ClassesMapper; import com.mindskip.xzs.repository.ClassesUserMapper; import com.mindskip.xzs.service.ClassesService; import com.mindskip.xzs.service.enums.ResultEnum; import com.mindskip.xzs.viewmodel.teacher.classes.ClassesPageRequestVM; import com.mindskip.xzs.viewmodel.teacher.classes.ClassesUserPageRequestVM; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @Service @AllArgsConstructor public class ClassesServiceImpl implements ClassesService { private final ClassesMapper classesMapper; private final ClassesUserMapper classesUserMapper; @Override public Classes selectById(Integer id) { return classesMapper.selectByPrimaryKey(id); } @Override public int insertByFilter(Classes record) { return classesMapper.insertSelective(record); } @Override public int updateByIdFilter(Classes record) { return classesMapper.updateByPrimaryKeySelective(record); } @Override public PageInfo page(ClassesPageRequestVM requestVM) { return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() -> classesMapper.page(requestVM) ); } @Override public Classes selectClassesByUid(String uid) { return classesMapper.selectClassesByUid(uid); } @Override @Transactional public ResultEnum joinClasses(User user, Classes classes) { ClassesUser classesUser = classesUserMapper.getClassesUser(user.getId(), classes.getId()); if (null == classesUser) { ClassesUser newClassesUser = new ClassesUser(); newClassesUser.setClassesId(classes.getId()); newClassesUser.setUserId(user.getId()); newClassesUser.setDeleted(false); newClassesUser.setCreateTime(new Date()); newClassesUser.setClassesName(classes.getName()); classesUserMapper.insertSelective(newClassesUser); classesMapper.classesNumAdd(classes.getId()); return ResultEnum.SUCCESS; } return ResultEnum.FAIL; } @Override public List getClassesByCreate(Integer createId) { return classesMapper.getClassesByCreate(createId); } @Override public List getClassesIdByCreate(Integer createId) { List classes = getClassesByCreate(createId); return classes.stream().map(c -> c.getId()).collect(Collectors.toList()); } @Override public Classes getClasses(Integer userId, String name) { return classesMapper.getClasses(userId, name); } @Override public PageInfo classesUserPageList(ClassesUserPageRequestVM requestVM) { return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() -> classesUserMapper.classesUserPageList(requestVM) ); } @Override public List getJoinClasses(Integer uid) { return classesUserMapper.getJoinClasses(uid); } @Override public List getClassCount(List classIds) { return classesUserMapper.getClassCount(classIds); } @Override @Transactional public void removeOutUser(Integer id) { ClassesUser classesUser = classesUserMapper.selectByPrimaryKey(id); classesUser.setDeleted(true); classesUserMapper.updateByPrimaryKeySelective(classesUser); classesMapper.classesNumSub(classesUser.getClassesId()); } }