| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- 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<BaseCourseSubjectMapper, BaseCourseSubject> 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<CourseSubjectDetail> courseSubjectDetailList = baseCourseSubjectCourseSubjectDetailMapper.selectList(Wrappers.lambdaQuery(CourseSubjectDetail.class).eq(CourseSubjectDetail::getBaseCourseSubjectId, baseCourseSubject.getId()).select(CourseSubjectDetail::getId));
- List<Long> courseSubjectDetailIds = courseSubjectDetailList.stream().map(CourseSubjectDetail::getId).collect(Collectors.toList());
- //原有子表单 没有被删除的主键
- List<Long> courseSubjectDetailOldIds = baseCourseSubject.getCourseSubjectDetailList().stream().map(CourseSubjectDetail::getId).filter(Objects::nonNull).collect(Collectors.toList());
- //找到需要删除的id
- List<Long> 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<Long> ids) {
- baseCourseSubjectBaseCourseSubjectMapper.deleteBatchIds(ids);
- baseCourseSubjectCourseSubjectDetailMapper.delete(Wrappers.lambdaQuery(CourseSubjectDetail.class).in(CourseSubjectDetail::getBaseCourseSubjectId, ids));
- return true;
- }
- }
|