Explorar o código

feat:vip课活动课配置是否允许线上调线下

Joburgess %!s(int64=4) %!d(string=hai) anos
pai
achega
25229d27ad

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java

@@ -92,6 +92,7 @@ public class VipGroupActivity {
 	@ApiModelProperty(value = "适用学生类型:-1:所有;0:老用户;1:新用户")
 	private Integer  applyToStudentType = -1;
 
+	@ApiModelProperty(value = "课程可调整方向:0双向可调,1禁止线上到线下,2禁止线下到线上,3双向不可调")
 	private Integer allowOnlineToOffline = 0;
 
 	public Integer getAllowOnlineToOffline() {

+ 32 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -2754,9 +2754,14 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                     if (Objects.nonNull(vipGroupCourseAdjustInfo.getTeachMode())) {
                     	boolean onlineToOffline = courseSchedules.get(courseStartDates.size() - 1).getTeachMode().equals(TeachModeEnum.ONLINE)
 								&&vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE);
-                        if(onlineToOffline&&vipGroupActivity.getAllowOnlineToOffline()==0){
+						boolean offlineToOnline = courseSchedules.get(courseStartDates.size() - 1).getTeachMode().equals(TeachModeEnum.OFFLINE)
+								&&vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.ONLINE);
+                        if(onlineToOffline&&(vipGroupActivity.getAllowOnlineToOffline()==0||vipGroupActivity.getAllowOnlineToOffline()==3)){
                             throw new BizException("此VIP课活动不支持线上课调整为线下课");
                         }
+						if(offlineToOnline&&(vipGroupActivity.getAllowOnlineToOffline()==2||vipGroupActivity.getAllowOnlineToOffline()==3)){
+							throw new BizException("此VIP课活动不支持线上课调整为线下课");
+						}
 						if(onlineToOffline&&Objects.isNull(vipGroupCourseAdjustInfo.getSchoolId())){
 							throw new BizException("请选择教学点");
 						}
@@ -2943,6 +2948,26 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			if(!CourseStatusEnum.NOT_START.equals(oldCourses.get(i).getStatus())){
 				throw new BizException("选择的课程中存在进行中或已结束的课程,无法进行调整");
 			}
+
+			if(VIP.equals(oldCourses.get(i))){
+				VipGroup vipGroup = vipGroupDao.get(Long.valueOf(oldCourses.get(i).getMusicGroupId()));
+				if(Objects.isNull(vipGroup)){
+					throw new BizException("课程组信息不存在");
+				}
+				VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
+				if(Objects.isNull(vipGroupActivity)){
+					throw new BizException("课程组信息异常");
+				}
+				boolean onlineToOffline = TeachModeEnum.ONLINE.equals(oldCourses.get(i).getTeachMode())&&TeachModeEnum.OFFLINE.equals(courseAdjustInfo.getTeachMode());
+				boolean offlineToOnline = TeachModeEnum.OFFLINE.equals(oldCourses.get(i).getTeachMode())&&TeachModeEnum.ONLINE.equals(courseAdjustInfo.getTeachMode());
+				if(onlineToOffline&&(vipGroupActivity.getAllowOnlineToOffline()==0||vipGroupActivity.getAllowOnlineToOffline()==3)){
+					throw new BizException("此VIP课活动不支持线上课调整为线下课");
+				}
+				if(offlineToOnline&&(vipGroupActivity.getAllowOnlineToOffline()==2||vipGroupActivity.getAllowOnlineToOffline()==3)){
+					throw new BizException("此VIP课活动不支持线上课调整为线下课");
+				}
+			}
+
 			//上课日期变更
 			if(betweenDays!=0){
 				LocalDate classDate = LocalDateTime.ofInstant(oldCourses.get(i).getClassDate().toInstant(), DateUtil.zoneId).toLocalDate();
@@ -3378,7 +3403,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				if(Objects.isNull(vipGroupActivity)){
 					throw new BizException("课程组信息异常");
 				}
-				if(TeachModeEnum.OFFLINE.equals(newCourseSchedule.getTeachMode())&&TeachModeEnum.ONLINE.equals(oldCourseSchedule.getTeachMode())&&vipGroupActivity.getAllowOnlineToOffline()==0){
+				boolean onlineToOffline = TeachModeEnum.OFFLINE.equals(newCourseSchedule.getTeachMode())&&TeachModeEnum.ONLINE.equals(oldCourseSchedule.getTeachMode());
+				if(onlineToOffline&&(vipGroupActivity.getAllowOnlineToOffline()==0||vipGroupActivity.getAllowOnlineToOffline()==3)){
+					throw new BizException("此VIP课活动不支持线上课调整为线下课");
+				}
+				boolean offlineToOnline = TeachModeEnum.ONLINE.equals(newCourseSchedule.getTeachMode())&&TeachModeEnum.OFFLINE.equals(oldCourseSchedule.getTeachMode());
+				if(offlineToOnline&&(vipGroupActivity.getAllowOnlineToOffline()==2||vipGroupActivity.getAllowOnlineToOffline()==3)){
 					throw new BizException("此VIP课活动不支持线上课调整为线下课");
 				}
 			}