package com.xjrsoft.module.base.service.impl; import cn.dev33.satoken.stp.StpUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.yulichang.base.MPJBaseServiceImpl; import com.xjrsoft.module.base.entity.BaseCourseSubject; import com.xjrsoft.module.base.entity.CourseSubjectDetail; import com.xjrsoft.module.base.mapper.BaseCourseSubjectMapper; import com.xjrsoft.module.base.mapper.CourseSubjectDetailMapper; import com.xjrsoft.module.base.service.IBaseCourseSubjectService; 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.Objects; import java.util.stream.Collectors; /** * @title: 课程学科 * @Author dzx * @Date: 2025-02-28 * @Version 1.0 */ @Service @AllArgsConstructor public class BaseCourseSubjectServiceImpl extends MPJBaseServiceImpl implements IBaseCourseSubjectService { private final BaseCourseSubjectMapper baseCourseSubjectBaseCourseSubjectMapper; private final CourseSubjectDetailMapper baseCourseSubjectCourseSubjectDetailMapper; @Override @Transactional(rollbackFor = Exception.class) public Boolean add(BaseCourseSubject baseCourseSubject) { baseCourseSubjectBaseCourseSubjectMapper.insert(baseCourseSubject); for (CourseSubjectDetail courseSubjectDetail : baseCourseSubject.getCourseSubjectDetailList()) { courseSubjectDetail.setBaseCourseSubjectId(baseCourseSubject.getId()); courseSubjectDetail.setCreateDate(new Date()); courseSubjectDetail.setCreateUserId(StpUtil.getLoginIdAsLong()); baseCourseSubjectCourseSubjectDetailMapper.insert(courseSubjectDetail); } return true; } @Override @Transactional(rollbackFor = Exception.class) public Boolean update(BaseCourseSubject baseCourseSubject) { baseCourseSubjectBaseCourseSubjectMapper.updateById(baseCourseSubject); //********************************* CourseSubjectDetail 增删改 开始 *******************************************/ { // 查出所有子级的id List courseSubjectDetailList = baseCourseSubjectCourseSubjectDetailMapper.selectList(Wrappers.lambdaQuery(CourseSubjectDetail.class).eq(CourseSubjectDetail::getBaseCourseSubjectId, baseCourseSubject.getId()).select(CourseSubjectDetail::getId)); List courseSubjectDetailIds = courseSubjectDetailList.stream().map(CourseSubjectDetail::getId).collect(Collectors.toList()); //原有子表单 没有被删除的主键 List courseSubjectDetailOldIds = baseCourseSubject.getCourseSubjectDetailList().stream().map(CourseSubjectDetail::getId).filter(Objects::nonNull).collect(Collectors.toList()); //找到需要删除的id List courseSubjectDetailRemoveIds = courseSubjectDetailIds.stream().filter(item -> !courseSubjectDetailOldIds.contains(item)).collect(Collectors.toList()); for (CourseSubjectDetail courseSubjectDetail : baseCourseSubject.getCourseSubjectDetailList()) { //如果不等于空则修改 if (courseSubjectDetail.getId() != null) { courseSubjectDetail.setCreateDate(new Date()); courseSubjectDetail.setCreateUserId(StpUtil.getLoginIdAsLong()); baseCourseSubjectCourseSubjectDetailMapper.updateById(courseSubjectDetail); } //如果等于空 则新增 else { courseSubjectDetail.setBaseCourseSubjectId(baseCourseSubject.getId()); courseSubjectDetail.setCreateDate(new Date()); courseSubjectDetail.setCreateUserId(StpUtil.getLoginIdAsLong()); baseCourseSubjectCourseSubjectDetailMapper.insert(courseSubjectDetail); } } //已经不存在的id 删除 if (courseSubjectDetailRemoveIds.size() > 0) { baseCourseSubjectCourseSubjectDetailMapper.deleteBatchIds(courseSubjectDetailRemoveIds); } } //********************************* CourseSubjectDetail 增删改 结束 *******************************************/ return true; } @Override @Transactional(rollbackFor = Exception.class) public Boolean delete(List ids) { baseCourseSubjectBaseCourseSubjectMapper.deleteBatchIds(ids); baseCourseSubjectCourseSubjectDetailMapper.delete(Wrappers.lambdaQuery(CourseSubjectDetail.class).in(CourseSubjectDetail::getBaseCourseSubjectId, ids)); return true; } }