Ver código fonte

1、新增学员兼容赠课

Joburgess 5 anos atrás
pai
commit
ac36a556b5

+ 70 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -126,10 +126,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			throw new BizException("请选择指导老师");
 		}
 
-		if(Objects.isNull(vipGroup.getVipGroupApplyBaseInfo().getTeacherSchoolId())){
-			throw new BizException("请设置教学点");
-		}
-
 	    if(vipGroup.getCourseSchedules().size()!=(vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum()+vipGroup.getVipGroupApplyBaseInfo().getOnlineClassesNum())){
 	        throw new BizException("建课失败,当前课程存在未排课课程,请调整相关设置");
         }
@@ -1875,9 +1871,59 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			return;
 		}
 
+		VipGroupActivity vipGroupActivity = null;
+		if(Objects.nonNull(vipGroup.getVipGroupActivityId())){
+			vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
+		}
+
 		BigDecimal surplusCourseNum = new BigDecimal(surplusCourses.size());
 		BigDecimal surplusCoursesPrice=new BigDecimal(0);
-		for (CourseSchedule courseSchedule : surplusCourses) {
+		boolean hasGiveClass=false;
+		int onlineCourseTimes=0,
+			offlineCourseTimes=0,
+			onlineCourseTotalTimes=0,
+			offlineCourseTotalTimes=0,
+			giveClassTimes=0;
+		if(vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)
+				&&Objects.nonNull(vipGroupActivity)
+			&&vipGroupActivity.getType().equals(VipGroupActivityTypeEnum.GIVE_CLASS)
+			&&surplusCourses.size()>=Integer.parseInt(vipGroupActivity.getAttribute1())){
+			hasGiveClass=true;
+			giveClassTimes=Integer.parseInt(vipGroupActivity.getAttribute2());
+			surplusCourseNum=surplusCourseNum.subtract(new BigDecimal(giveClassTimes));
+			Map<TeachModeEnum, List<CourseSchedule>> teachModeCourseMap = surplusCourses.stream()
+					.collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
+			List<CourseSchedule> onlineCourses=teachModeCourseMap.get(TeachModeEnum.ONLINE);
+			if(!CollectionUtils.isEmpty(onlineCourses)){
+				onlineCourseTotalTimes=onlineCourses.size();
+			}
+			List<CourseSchedule> offlineCourses=teachModeCourseMap.get(TeachModeEnum.OFFLINE);
+			if(!CollectionUtils.isEmpty(offlineCourses)){
+				offlineCourseTotalTimes=offlineCourses.size();
+			}
+		}
+		for (int i=0;i<surplusCourses.size();i++) {
+			CourseSchedule courseSchedule=surplusCourses.get(i);
+			if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
+				offlineCourseTimes+=1;
+			}else if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
+				onlineCourseTimes+=1;
+			}
+			if(hasGiveClass
+					&&vipGroup.getGiveTeachMode() == courseSchedule.getTeachMode()){
+				if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)
+					&&offlineCourseTimes>(offlineCourseTotalTimes-giveClassTimes)){
+					continue;
+				}
+
+				if(hasGiveClass
+						&&vipGroup.getGiveTeachMode() == courseSchedule.getTeachMode()){
+					if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)
+							&&onlineCourseTimes>(onlineCourseTotalTimes-giveClassTimes)){
+						continue;
+					}
+				}
+			}
 			if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
 				surplusCoursesPrice=surplusCoursesPrice.add(vipGroup.getOfflineClassesUnitPrice());
 			}else if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
@@ -1896,7 +1942,15 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 //			courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroupId,studentId);
 
 			List<CourseScheduleStudentPayment> courseScheduleStudentPayments=new ArrayList<>();
+
+			offlineCourseTimes=0;
+			onlineCourseTimes=0;
 			for (CourseSchedule vipGroupCourseSchedule : surplusCourses) {
+				if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
+					offlineCourseTimes+=1;
+				}else if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
+					onlineCourseTimes+=1;
+				}
 				CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
 				courseScheduleStudentPayment.setGroupType(GroupType.VIP);
 				courseScheduleStudentPayment.setMusicGroupId(vipGroupId.toString());
@@ -1904,6 +1958,17 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				courseScheduleStudentPayment.setCourseScheduleId(vipGroupCourseSchedule.getId());
 				courseScheduleStudentPayment.setUserId(studentId);
 				courseScheduleStudentPayment.setExpectPrice(avgCourseFee);
+				if(hasGiveClass
+						&&vipGroup.getGiveTeachMode() == vipGroupCourseSchedule.getTeachMode()){
+					if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)
+							&&offlineCourseTimes>(offlineCourseTotalTimes-giveClassTimes)){
+						courseScheduleStudentPayment.setExpectPrice(new BigDecimal(0));
+					}
+					if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)
+							&&onlineCourseTimes>(onlineCourseTotalTimes-giveClassTimes)){
+						courseScheduleStudentPayment.setExpectPrice(new BigDecimal(0));
+					}
+				}
 				courseScheduleStudentPayment.setCreateTime(now);
 				courseScheduleStudentPayment.setUpdateTime(now);
 				courseScheduleStudentPayments.add(courseScheduleStudentPayment);
@@ -2058,7 +2123,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(Objects.isNull(sysUserCashAccount)){
 			throw new BizException("当前用户没有现金账户");
 		}
-		CourseSchedule
 		vipGroupPayInfo.setBalance(sysUserCashAccount.getBalance());
 		return  vipGroupPayInfo;
 	}