Bladeren bron

开营时间可以延长,不可以缩短

yfh 5 dagen geleden
bovenliggende
commit
44d6d01a35

+ 38 - 3
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodServiceImpl.java

@@ -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;
     }
 
+
     /**
      * 批量删除会员营期
      *

+ 1 - 0
fs-service-system/src/main/resources/mapper/course/FsUserCoursePeriodDaysMapper.xml

@@ -89,6 +89,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="periodId != null">period_id = #{periodId},</if>
             <if test="lesson != null">lesson = #{lesson},</if>
             <if test="startTime != null">start_time = #{startTime},</if>
+            <if test="dayDate != null">day_date = #{dayDate},</if>
             <if test="endTime != null">end_time = #{endTime},</if>
             <if test="courseId != null">course_id = #{courseId},</if>
             <if test="videoId != null">video_id = #{videoId},</if>