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