Procházet zdrojové kódy

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

yfh před 5 dny
rodič
revize
d8780623a0

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

@@ -16,6 +16,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.Arrays;
 import java.util.List;
 import java.util.Objects;
@@ -88,10 +89,42 @@ 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;
     }
 
     /**

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

@@ -88,6 +88,10 @@
         <trim prefix="SET" suffixOverrides=",">
             <if test="periodId != null">period_id = #{periodId},</if>
             <if test="lesson != null">lesson = #{lesson},</if>
+            <if test="startDateTime != null">start_date_time = #{startDateTime},</if>
+            <if test="endDateTime != null">end_date_time = #{endDateTime},</if>
+            <if test="lastJoinTime != null">last_join_time = #{lastJoinTime},</if>
+            <if test="dayDate != null">day_date = #{dayDate},</if>
             <if test="startTime != null">start_time = #{startTime},</if>
             <if test="endTime != null">end_time = #{endTime},</if>
             <if test="courseId != null">course_id = #{courseId},</if>