瀏覽代碼

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan 5 年之前
父節點
當前提交
9ff5a97a86

+ 70 - 5
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("建课失败,当前课程存在未排课课程,请调整相关设置");
         }
@@ -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);

+ 3 - 1
mec-biz/src/main/resources/config/contracts/courses.ftl

@@ -92,6 +92,8 @@
                 </div>
                 <div class="iInfo">
                     <span>学生姓名:${studentInfo.name!}</span>
+                </div>
+                <div class="iInfo">
                     <span>所在班级:${studentInfo.grade!} ${studentInfo.clazz!}</span>
                 </div>
                 <div class="iInfo">
@@ -127,7 +129,7 @@
         2.4乙方违反上述规定给乐团或乐团其他成员造成任何不良影响的,乙方应尽力弥补并消除该不良影响。
         <h3>3.请假及其处理</h3>
         3.1基于教学进度和质量保证,本课程对于课程的延续性有严格要求,因此乙方学员应尽量参加课程,无特殊情况则应避免请假。<br/>
-        3.2 VIP课程学员如有特殊情况需要请假的,应提前24小时以上以书面形式告知对应的授课老师,以便及时调整时间安排;VIP学员如遇特殊情况需要长期请假时,还可向甲方/授课老师申请办理临时休会。学员可在6个月内申请复学,超过6个月未申请复学的,甲方有权按自动退会处理。VIP课程为一对二课程的,其中一位学员申请临时休会的,还需征得同组另一位学员的同意后方可申请休会。<br/>
+        3.2 VIP课程学员如有特殊情况需要请假的,应提前24小时以上以书面形式告知对应的授课老师,以便及时调整时间安排;VIP学员如遇特殊情况需要长期请假时,还可向甲方/授课老师申请办理临时休会。学员可在6个月内申请复学,超过6个月未申请复学的,甲方有权按自动退会处理。VIP课程为一对二课程的,其中一位学员申请临时休会的,还需征得同组另一位学员的同意后方可申请休会。<br/>
         3.3鉴于团课的特殊性,甲方/乐团不接受团课学员个人单独请假,但如果因学校特殊安排等情形需要团课学员们集体请假的,乙方应提前24小时以上以书面形式告知对应的授课老师并同时提供学校的通知文件,否则当次课程视同已经教授完毕,系统将自动记录并结算课时并扣除相应课程费用。<br/>
         3.4每期课程相对应的有效期,乙方应在有效期内完成课程,10次课一期的,自交费之日起4个月内有效;20次课一期的,自交费之日起8个月内有效;40次课一期的,自交费之日起16个月内有效。如果由于指导老师请假等原因造成课程不能如期完成的,课程有效期将顺延;如课程超出有效期限,乙方所缴纳的课程费用将自动扣除逾期未完成的课时后自动清零。
         <h2>三、退费</h2>

+ 2 - 0
mec-biz/src/main/resources/config/contracts/goods.ftl

@@ -91,6 +91,8 @@
                 </div>
                 <div class="iInfo">
                     <span>学生姓名:${studentInfo.name!}</span>
+                </div>
+                <div class="iInfo">
                     <span>所在班级:${studentInfo.grade!} ${studentInfo.clazz!}</span>
                 </div>
                 <div class="iInfo">