Forráskód Böngészése

营期详情上移下移时间不会变动

yfh 5 napja
szülő
commit
c7839f9d63

+ 48 - 24
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodDaysServiceImpl.java

@@ -33,10 +33,7 @@ import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -262,34 +259,61 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
 
     @Override
     public R periodCourseMove(Long id, Long targetId) {
-        List<Long> idList = new ArrayList<>();
-        idList.add(id);
-        idList.add(targetId);
+        // 参数校验
+        if (id == null || targetId == null || id.equals(targetId)) {
+            return R.error(400, "参数不合法");
+        }
+
+        // 批量查询数据
+        List<Long> idList = Arrays.asList(id, targetId);
         List<FsUserCoursePeriodDays> fsUserCoursePeriodDays = baseMapper.selectBatchIds(idList);
-        if(fsUserCoursePeriodDays.isEmpty()){
-            return R.error(404, "当前数据或者移动的目标数据不存在");
+
+        // 数据校验
+        if (fsUserCoursePeriodDays.size() != 2) {
+            return R.error(404, "当前数据或移动的目标数据不存在");
         }
 
-        List<FsUserCoursePeriodDays> list = new ArrayList<>();
-        FsUserCoursePeriodDays periodDays = fsUserCoursePeriodDays.get(0);
-        LocalDate currentDayDate = periodDays.getDayDate();
-        Integer lesson = periodDays.getLesson();
+        // 获取源数据和目标数据
+        FsUserCoursePeriodDays source = fsUserCoursePeriodDays.get(0);
+        FsUserCoursePeriodDays target = fsUserCoursePeriodDays.get(1);
 
-        FsUserCoursePeriodDays periodDaysTarget = fsUserCoursePeriodDays.get(1);
-        periodDays.setDayDate(periodDaysTarget.getDayDate());
-        periodDays.setLesson(periodDaysTarget.getLesson());
-        list.add(periodDays);
+        // 交换数据
+        swapPeriodDaysData(source, target);
 
-        periodDaysTarget.setDayDate(currentDayDate);
-        periodDaysTarget.setLesson(lesson);
-        list.add(periodDaysTarget);
+        // 批量更新
         try {
-            fsUserCoursePeriodDaysMapper.batchUpdateCoursePeriodDays(list);
+            fsUserCoursePeriodDaysMapper.batchUpdateCoursePeriodDays(Arrays.asList(source, target));
+            return R.ok();
         } catch (RuntimeException e) {
-            log.error("上移/下移异常,当前id:{}, 目标id:{}", id, targetId);
-            return R.error();
+            log.error("上移/下移异常,当前id:{},目标id:{}", id, targetId, e);
+            return R.error(500, "操作失败,请稍后重试");
         }
-        return R.ok();
+    }
+
+    /**
+     * 交换两个课程时间段的数据
+     */
+    private void swapPeriodDaysData(FsUserCoursePeriodDays source, FsUserCoursePeriodDays target) {
+        // 保存源数据
+        LocalDate tempDayDate = source.getDayDate();
+        Integer tempLesson = source.getLesson();
+        LocalDateTime tempStartDateTime = source.getStartDateTime();
+        LocalDateTime tempEndDateTime = source.getEndDateTime();
+        LocalDateTime tempLastJoinTime = source.getLastJoinTime();
+
+        // 将目标数据赋给源
+        source.setDayDate(target.getDayDate());
+        source.setLesson(target.getLesson());
+        source.setStartDateTime(target.getStartDateTime());
+        source.setEndDateTime(target.getEndDateTime());
+        source.setLastJoinTime(target.getLastJoinTime());
+
+        // 将保存的源数据赋给目标
+        target.setDayDate(tempDayDate);
+        target.setLesson(tempLesson);
+        target.setStartDateTime(tempStartDateTime);
+        target.setEndDateTime(tempEndDateTime);
+        target.setLastJoinTime(tempLastJoinTime);
     }
 
     @Override

+ 25 - 6
fs-service-system/src/main/resources/mapper/course/FsUserCoursePeriodDaysMapper.xml

@@ -141,17 +141,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         update fs_user_course_period_days
         <trim prefix="set" suffixOverrides=",">
             day_date =
-                <foreach collection="list" item="item" open="case" close=" end,">
-                    <if test="item.dayDate !=null ">
-                        when id=#{item.id} then #{item.dayDate}
-                    </if>
-                </foreach>
+            <foreach collection="list" item="item" open="case" close=" end,">
+                <if test="item.dayDate != null">
+                    when id=#{item.id} then #{item.dayDate}
+                </if>
+            </foreach>
+            start_date_time =
+            <foreach collection="list" item="item" open="case" close=" end,">
+                <if test="item.startDateTime != null">
+                    when id=#{item.id} then #{item.startDateTime}
+                </if>
+            </foreach>
+            end_date_time =
+            <foreach collection="list" item="item" open="case" close=" end,">
+                <if test="item.endDateTime != null">
+                    when id=#{item.id} then #{item.endDateTime}
+                </if>
+            </foreach>
+            last_join_time =
+            <foreach collection="list" item="item" open="case" close=" end,">
+                <if test="item.lastJoinTime != null">
+                    when id=#{item.id} then #{item.lastJoinTime}
+                </if>
+            </foreach>
             lesson =
             <foreach collection="list" item="item" open="case" close=" end,">
-                <if test="item.lesson !=null ">
+                <if test="item.lesson != null">
                     when id=#{item.id} then #{item.lesson}
                 </if>
             </foreach>
+
         </trim>
         where id in
         <foreach collection="list" index="index" item="item" separator="," open="(" close=")">