|
@@ -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("建课失败,当前课程存在未排课课程,请调整相关设置");
|
|
|
}
|
|
@@ -1883,9 +1879,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)){
|
|
@@ -1904,7 +1950,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());
|
|
@@ -1912,6 +1966,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);
|