BaseCourseSubjectServiceImpl.java 4.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package com.xjrsoft.module.base.service.impl;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.github.yulichang.base.MPJBaseServiceImpl;
  5. import com.xjrsoft.module.base.entity.BaseCourseSubject;
  6. import com.xjrsoft.module.base.entity.CourseSubjectDetail;
  7. import com.xjrsoft.module.base.mapper.BaseCourseSubjectMapper;
  8. import com.xjrsoft.module.base.mapper.CourseSubjectDetailMapper;
  9. import com.xjrsoft.module.base.service.IBaseCourseSubjectService;
  10. import lombok.AllArgsConstructor;
  11. import org.springframework.stereotype.Service;
  12. import org.springframework.transaction.annotation.Transactional;
  13. import java.util.Date;
  14. import java.util.List;
  15. import java.util.Objects;
  16. import java.util.stream.Collectors;
  17. /**
  18. * @title: 课程学科
  19. * @Author dzx
  20. * @Date: 2025-02-28
  21. * @Version 1.0
  22. */
  23. @Service
  24. @AllArgsConstructor
  25. public class BaseCourseSubjectServiceImpl extends MPJBaseServiceImpl<BaseCourseSubjectMapper, BaseCourseSubject> implements IBaseCourseSubjectService {
  26. private final BaseCourseSubjectMapper baseCourseSubjectBaseCourseSubjectMapper;
  27. private final CourseSubjectDetailMapper baseCourseSubjectCourseSubjectDetailMapper;
  28. @Override
  29. @Transactional(rollbackFor = Exception.class)
  30. public Boolean add(BaseCourseSubject baseCourseSubject) {
  31. baseCourseSubjectBaseCourseSubjectMapper.insert(baseCourseSubject);
  32. for (CourseSubjectDetail courseSubjectDetail : baseCourseSubject.getCourseSubjectDetailList()) {
  33. courseSubjectDetail.setBaseCourseSubjectId(baseCourseSubject.getId());
  34. courseSubjectDetail.setCreateDate(new Date());
  35. courseSubjectDetail.setCreateUserId(StpUtil.getLoginIdAsLong());
  36. baseCourseSubjectCourseSubjectDetailMapper.insert(courseSubjectDetail);
  37. }
  38. return true;
  39. }
  40. @Override
  41. @Transactional(rollbackFor = Exception.class)
  42. public Boolean update(BaseCourseSubject baseCourseSubject) {
  43. baseCourseSubjectBaseCourseSubjectMapper.updateById(baseCourseSubject);
  44. //********************************* CourseSubjectDetail 增删改 开始 *******************************************/
  45. {
  46. // 查出所有子级的id
  47. List<CourseSubjectDetail> courseSubjectDetailList = baseCourseSubjectCourseSubjectDetailMapper.selectList(Wrappers.lambdaQuery(CourseSubjectDetail.class).eq(CourseSubjectDetail::getBaseCourseSubjectId, baseCourseSubject.getId()).select(CourseSubjectDetail::getId));
  48. List<Long> courseSubjectDetailIds = courseSubjectDetailList.stream().map(CourseSubjectDetail::getId).collect(Collectors.toList());
  49. //原有子表单 没有被删除的主键
  50. List<Long> courseSubjectDetailOldIds = baseCourseSubject.getCourseSubjectDetailList().stream().map(CourseSubjectDetail::getId).filter(Objects::nonNull).collect(Collectors.toList());
  51. //找到需要删除的id
  52. List<Long> courseSubjectDetailRemoveIds = courseSubjectDetailIds.stream().filter(item -> !courseSubjectDetailOldIds.contains(item)).collect(Collectors.toList());
  53. for (CourseSubjectDetail courseSubjectDetail : baseCourseSubject.getCourseSubjectDetailList()) {
  54. //如果不等于空则修改
  55. if (courseSubjectDetail.getId() != null) {
  56. courseSubjectDetail.setCreateDate(new Date());
  57. courseSubjectDetail.setCreateUserId(StpUtil.getLoginIdAsLong());
  58. baseCourseSubjectCourseSubjectDetailMapper.updateById(courseSubjectDetail);
  59. }
  60. //如果等于空 则新增
  61. else {
  62. courseSubjectDetail.setBaseCourseSubjectId(baseCourseSubject.getId());
  63. courseSubjectDetail.setCreateDate(new Date());
  64. courseSubjectDetail.setCreateUserId(StpUtil.getLoginIdAsLong());
  65. baseCourseSubjectCourseSubjectDetailMapper.insert(courseSubjectDetail);
  66. }
  67. }
  68. //已经不存在的id 删除
  69. if (courseSubjectDetailRemoveIds.size() > 0) {
  70. baseCourseSubjectCourseSubjectDetailMapper.deleteBatchIds(courseSubjectDetailRemoveIds);
  71. }
  72. }
  73. //********************************* CourseSubjectDetail 增删改 结束 *******************************************/
  74. return true;
  75. }
  76. @Override
  77. @Transactional(rollbackFor = Exception.class)
  78. public Boolean delete(List<Long> ids) {
  79. baseCourseSubjectBaseCourseSubjectMapper.deleteBatchIds(ids);
  80. baseCourseSubjectCourseSubjectDetailMapper.delete(Wrappers.lambdaQuery(CourseSubjectDetail.class).in(CourseSubjectDetail::getBaseCourseSubjectId, ids));
  81. return true;
  82. }
  83. }