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