|
@@ -3,6 +3,7 @@ package com.fs.course.service.impl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.fs.common.exception.ServiceException;
|
|
|
+import com.fs.common.utils.date.DateUtil;
|
|
|
import com.fs.course.domain.FsUserCoursePeriod;
|
|
|
import com.fs.course.domain.FsUserCoursePeriodDays;
|
|
|
import com.fs.course.mapper.FsUserCoursePeriodDaysMapper;
|
|
@@ -16,6 +17,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.temporal.ChronoUnit;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -85,12 +87,45 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public int updateFsUserCoursePeriod(FsUserCoursePeriod fsUserCoursePeriod)
|
|
|
- {
|
|
|
+ public int updateFsUserCoursePeriod(FsUserCoursePeriod fsUserCoursePeriod) {
|
|
|
+ // 1. 查询原始数据
|
|
|
fsUserCoursePeriod.setUpdateTime(LocalDateTime.now());
|
|
|
- return fsUserCoursePeriodMapper.updateFsUserCoursePeriod(fsUserCoursePeriod);
|
|
|
+
|
|
|
+ FsUserCoursePeriod fsUserCoursePeriod1 = fsUserCoursePeriodMapper.selectFsUserCoursePeriodById(fsUserCoursePeriod.getPeriodId());
|
|
|
+ int flag = fsUserCoursePeriodMapper.updateFsUserCoursePeriod(fsUserCoursePeriod);
|
|
|
+
|
|
|
+ // 2. 判定是否变更过开始时间(periodStartingTime)
|
|
|
+ if (fsUserCoursePeriod1.getPeriodStartingTime().equals(fsUserCoursePeriod.getPeriodStartingTime())) {
|
|
|
+ // 如果开始时间没有变化,直接返回
|
|
|
+ return flag;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 计算课程时间差(以天数为单位)
|
|
|
+ long daysDifference = ChronoUnit.DAYS.between(fsUserCoursePeriod1.getPeriodStartingTime(), fsUserCoursePeriod.getPeriodStartingTime());
|
|
|
+
|
|
|
+ // 4. 获取课程天数并进行时间调整
|
|
|
+ FsUserCoursePeriodDays fsUserCoursePeriodDays = new FsUserCoursePeriodDays();
|
|
|
+ fsUserCoursePeriodDays.setPeriodId(fsUserCoursePeriod1.getPeriodId());
|
|
|
+ List<FsUserCoursePeriodDays> list = fsUserCoursePeriodDaysMapper.selectFsUserCoursePeriodDaysList(fsUserCoursePeriodDays);
|
|
|
+
|
|
|
+ // 对每个课程日期进行时间增加
|
|
|
+ for (FsUserCoursePeriodDays coursePeriodDays : list) {
|
|
|
+ // 将课程的日期按照差值天数进行调整
|
|
|
+ LocalDate adjustedDate = coursePeriodDays.getDayDate().plusDays(daysDifference);
|
|
|
+ LocalDateTime startDateTime = coursePeriodDays.getStartDateTime().plusDays(daysDifference);
|
|
|
+ LocalDateTime endDateTime = coursePeriodDays.getEndDateTime().plusDays(daysDifference);
|
|
|
+ LocalDateTime lastJsonTime = coursePeriodDays.getLastJoinTime().plusDays(daysDifference);
|
|
|
+ coursePeriodDays.setDayDate(adjustedDate);
|
|
|
+ coursePeriodDays.setStartDateTime(startDateTime);
|
|
|
+ coursePeriodDays.setEndDateTime(endDateTime);
|
|
|
+ coursePeriodDays.setLastJoinTime(lastJsonTime);
|
|
|
+ fsUserCoursePeriodDaysMapper.updateFsUserCoursePeriodDays(coursePeriodDays); // 更新数据库中的课程日期
|
|
|
+ }
|
|
|
+
|
|
|
+ return flag;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 批量删除会员营期
|
|
|
*
|