|
|
@@ -152,14 +152,19 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
public R addCourse(FsUserCoursePeriodDays entity) {
|
|
|
FsUserCoursePeriod period = fsUserCoursePeriodMapper.selectFsUserCoursePeriodById(entity.getPeriodId());
|
|
|
List<FsUserCoursePeriodDays> dayList = list(new QueryWrapper<FsUserCoursePeriodDays>().eq("period_id", period.getPeriodId()).eq("del_flag","0"));
|
|
|
- long days;
|
|
|
- if(period.getPeriodType() == 2){
|
|
|
- days = 1;
|
|
|
- }else{
|
|
|
- days = DateUtil.differenceTime(period.getPeriodStartingTime(), period.getPeriodEndTime(), TimeTypeEnum.DAY);
|
|
|
+
|
|
|
+ // 如果开启了自由模式,则不需要检查营期天数限制
|
|
|
+ if (period.getFreeMode() == null || period.getFreeMode() != 1) {
|
|
|
+ long days;
|
|
|
+ if(period.getPeriodType() == 2){
|
|
|
+ days = 1;
|
|
|
+ }else{
|
|
|
+ days = DateUtil.differenceTime(period.getPeriodStartingTime(), period.getPeriodEndTime(), TimeTypeEnum.DAY);
|
|
|
+ }
|
|
|
+ days++;
|
|
|
+ if(dayList.size() + entity.getVideoIds().size() > days) return R.error("课程不能超过营期范围");
|
|
|
}
|
|
|
- days++;
|
|
|
- if(dayList.size() + entity.getVideoIds().size() > days) return R.error("课程不能超过营期范围");
|
|
|
+
|
|
|
if(dayList.stream().anyMatch(e -> entity.getVideoIds().contains(e.getVideoId()))) return R.error("不能添加相同章节");
|
|
|
AtomicInteger i = new AtomicInteger(0);
|
|
|
FsUserCourseVideo fsUserCourseVideo = new FsUserCourseVideo();
|
|
|
@@ -194,12 +199,19 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
}
|
|
|
day.setVideoId(e);
|
|
|
day.setCreateTime(new Date());
|
|
|
- // 默认开启今天及以后的两天
|
|
|
- LocalDate compareDay = LocalDate.now().plusDays(1);
|
|
|
- if(day.getDayDate().isBefore(compareDay)){
|
|
|
+
|
|
|
+ // 设置课程状态:如果开启自由模式,默认为进行中(status=1)
|
|
|
+ if (period.getFreeMode() != null && period.getFreeMode() == 1) {
|
|
|
+ // 自由模式:直接设置为进行中
|
|
|
day.setStatus(1);
|
|
|
} else {
|
|
|
- day.setStatus(0);
|
|
|
+ // 固定模式:默认开启今天及以后的两天
|
|
|
+ LocalDate compareDay = LocalDate.now().plusDays(1);
|
|
|
+ if(day.getDayDate().isBefore(compareDay)){
|
|
|
+ day.setStatus(1);
|
|
|
+ } else {
|
|
|
+ day.setStatus(0);
|
|
|
+ }
|
|
|
}
|
|
|
return day;
|
|
|
}).collect(Collectors.toList());
|
|
|
@@ -236,9 +248,12 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
totalDays = DateUtil.differenceTime(period.getPeriodStartingTime(), period.getPeriodEndTime(), TimeTypeEnum.DAY);
|
|
|
}
|
|
|
totalDays ++;
|
|
|
- // 5. 验证是否超过营期范围
|
|
|
- if (existingDays.size() + param.getVideoIds().size() > totalDays) {
|
|
|
- return R.error("添加的课程数量超过营期范围,营期总天数:" + totalDays + ",当前已有:" + existingDays.size() + ",尝试添加:" + param.getVideoIds().size());
|
|
|
+
|
|
|
+ // 5. 验证是否超过营期范围(开启自由模式时跳过此验证)
|
|
|
+ if (period.getFreeMode() == null || period.getFreeMode() != 1) {
|
|
|
+ if (existingDays.size() + param.getVideoIds().size() > totalDays) {
|
|
|
+ return R.error("添加的课程数量超过营期范围,营期总天数:" + totalDays + ",当前已有:" + existingDays.size() + ",尝试添加:" + param.getVideoIds().size());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 6. 检查重复视频
|
|
|
@@ -351,12 +366,18 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 设置状态 - 默认开启今天及以后的两天
|
|
|
- LocalDate compareDay = LocalDate.now().plusDays(1);
|
|
|
- if (courseDate.isBefore(compareDay)) {
|
|
|
- newDay.setStatus(1); // 已开始
|
|
|
+ // 设置状态:如果开启自由模式,默认为进行中(status=1)
|
|
|
+ if (period.getFreeMode() != null && period.getFreeMode() == 1) {
|
|
|
+ // 自由模式:直接设置为进行中
|
|
|
+ newDay.setStatus(1);
|
|
|
} else {
|
|
|
- newDay.setStatus(0); // 未开始
|
|
|
+ // 固定模式:默认开启今天及以后的两天
|
|
|
+ LocalDate compareDay = LocalDate.now().plusDays(1);
|
|
|
+ if (courseDate.isBefore(compareDay)) {
|
|
|
+ newDay.setStatus(1); // 已开始
|
|
|
+ } else {
|
|
|
+ newDay.setStatus(0); // 未开始
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
newDay.setCreateTime(new Date());
|
|
|
@@ -568,17 +589,31 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
|
|
|
public R updateCourseDate(UpdateCourseTimeVo vo) {
|
|
|
FsUserCoursePeriodDays day = getById(vo.getId());
|
|
|
FsUserCoursePeriod period = fsUserCoursePeriodMapper.selectFsUserCoursePeriodById(day.getPeriodId());
|
|
|
- if(!DateUtil.isWithinRangeSafe(vo.getDayDate(), period.getPeriodStartingTime(), period.getPeriodEndTime())) return R.error("时间不在营期范围内");
|
|
|
+
|
|
|
+ // 如果未开启自由模式,则需要检查日期是否在营期范围内
|
|
|
+ if (period.getFreeMode() == null || period.getFreeMode() != 1) {
|
|
|
+ if(!DateUtil.isWithinRangeSafe(vo.getDayDate(), period.getPeriodStartingTime(), period.getPeriodEndTime())) {
|
|
|
+ return R.error("时间不在营期范围内");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
day.setDayDate(vo.getDayDate());
|
|
|
day.setStartDateTime(LocalDateTime.of(day.getDayDate(), day.getStartDateTime().toLocalTime()));
|
|
|
day.setEndDateTime(LocalDateTime.of(day.getDayDate(), day.getEndDateTime().toLocalTime()));
|
|
|
day.setLastJoinTime(LocalDateTime.of(day.getDayDate(), day.getLastJoinTime().toLocalTime()));
|
|
|
- // 默认开启今天及以后的两天,为进行中
|
|
|
- LocalDate compareDay = LocalDate.now().plusDays(1);
|
|
|
- if(day.getDayDate().isBefore(compareDay)){
|
|
|
+
|
|
|
+ // 设置状态:如果开启自由模式,默认为进行中(status=1)
|
|
|
+ if (period.getFreeMode() != null && period.getFreeMode() == 1) {
|
|
|
+ // 自由模式:直接设置为进行中
|
|
|
day.setStatus(1);
|
|
|
} else {
|
|
|
- day.setStatus(0);
|
|
|
+ // 固定模式:默认开启今天及以后的两天,为进行中
|
|
|
+ LocalDate compareDay = LocalDate.now().plusDays(1);
|
|
|
+ if(day.getDayDate().isBefore(compareDay)){
|
|
|
+ day.setStatus(1);
|
|
|
+ } else {
|
|
|
+ day.setStatus(0);
|
|
|
+ }
|
|
|
}
|
|
|
updateById(day);
|
|
|
return R.ok();
|