|
@@ -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
|