| 
					
				 | 
			
			
				@@ -521,7 +521,8 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		vipGroupDao.insert(applyBaseInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//校验排课资格,消耗排课资格(获取被使用的排课资格) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		CheckScheduleQualificationDto dto = new CheckScheduleQualificationDto(studentIdList, vipGroupCategory.getId(), applyBaseInfo.getSingleClassMinutes(), courseNum, applyBaseInfo.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		CheckScheduleQualificationDto dto = new CheckScheduleQualificationDto(studentIdList, vipGroupCategory.getId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				applyBaseInfo.getSingleClassMinutes(), courseNum, applyBaseInfo.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<CourseScheduleStudentPayment> courseScheduleStudentPayments = this.checkScheduleQualification(dto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<VipGroupStudentCoursePrice> vscps = vipGroup.getVipGroupApplyBaseInfo().getVipGroupStudentCoursePrices(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -614,6 +615,16 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//创建老师单节课课酬信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//如果是1V1的课程,需要处理老师课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map<Integer, String> settlementMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (vipGroupCategory.getStudentNum() == 1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			List<Integer> activityUserMapperIds = courseScheduleStudentPayments.stream().map(e -> e.getActivityUserMapperId()).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(CollectionUtils.isNotEmpty(activityUserMapperIds)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				List<ActivityUserMapperSettlementDto> activityUserMapperSettlementDtos = activityUserMapperDao.querySettlementByIds(activityUserMapperIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				settlementMap = activityUserMapperSettlementDtos.stream().collect(Collectors.groupingBy(e -> e.getActivityId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0).getSalarySettlementJson()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//课程信息调整 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		for (CourseSchedule courseSchedule : courseSchedules) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			courseSchedule.setGroupType(GroupType.VIP); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -641,9 +652,6 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			courseScheduleTeacherSalary.setActualSalary(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (courseScheduleTeacherSalaries.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaries); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		applyBaseInfo.setCourseSchedulesJson(JSON.toJSONString(vipGroup.getCourseSchedules())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		vipGroupDao.update(applyBaseInfo); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -672,6 +680,32 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				userRoleMap.put(courseScheduleStudentPayment.getUserId(), null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//处理老师课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (courseScheduleTeacherSalaries.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(settlementMap.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				Map<Long,CourseScheduleStudentPayment> courseActivityUserMap = courseScheduleStudentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getCourseScheduleId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						Collectors.collectingAndThen(Collectors.toList(),value->value.get(0)))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				for (CourseScheduleTeacherSalary teacherSalary : courseScheduleTeacherSalaries) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					String s = settlementMap.get(courseActivityUserMap.get(teacherSalary.getCourseScheduleId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (StringUtils.isEmpty(s)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					VipGroupSalarySettlementDto settlementDto = JSON.parseObject(s, VipGroupSalarySettlementDto.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					CourseScheduleStudentPayment studentPayment = courseActivityUserMap.get(teacherSalary.getCourseScheduleId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//判断是否使用的赠送的排课资格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					VipGroupSalarySettlementTypeDto vipOfflineSalarySettlement; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if(studentPayment.getGiveFlag()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						vipOfflineSalarySettlement = settlementDto.getGiveVipOfflineSalarySettlement(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						vipOfflineSalarySettlement = settlementDto.getOfflineSalarySettlement(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if(Objects.nonNull(vipOfflineSalarySettlement) && vipOfflineSalarySettlement.getSalarySettlementType() == SalarySettlementTypeEnum.FIXED_SALARY){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						teacherSalary.setExpectSalary(vipOfflineSalarySettlement.getSettlementValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaries); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (courseScheduleStudentPayments.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			List<CourseScheduleStudentPayment> payments = courseScheduleStudentPayments.stream().filter(e -> e.getCalenderId() != null).collect(Collectors.toList()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -755,6 +789,19 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			courseScheduleStudentPayments.add(courseScheduleStudentPayment); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private void getFreeStudentPayment(Integer userId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								   Integer courseNum, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								   List<CourseScheduleStudentPayment> courseScheduleStudentPayments, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								   ActivityUserMapper activityUserMapper){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (Integer i = 0; i < courseNum; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			courseScheduleStudentPayment.setUserId(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			courseScheduleStudentPayment.setActivityUserMapperId(activityUserMapper.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			courseScheduleStudentPayment.setCalenderId(activityUserMapper.getCalenderId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			courseScheduleStudentPayment.setGiveFlag(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			courseScheduleStudentPayments.add(courseScheduleStudentPayment); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public List<CourseScheduleStudentPayment> use(CheckScheduleQualificationDto dto) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -824,10 +871,10 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					if(num <= subCourseNum){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						activityUserMapper.setSubGiveCourseNum(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						subCourseNum = subCourseNum - num; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.getStudentPayment(integer,num,BigDecimal.ZERO,courseScheduleStudentPayments,activityUserMapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.getFreeStudentPayment(integer,num,courseScheduleStudentPayments,activityUserMapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					}else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						activityUserMapper.setSubGiveCourseNum(num - subCourseNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.getStudentPayment(integer,subCourseNum,BigDecimal.ZERO,courseScheduleStudentPayments,activityUserMapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.getFreeStudentPayment(integer,subCourseNum,courseScheduleStudentPayments,activityUserMapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						continue one; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 |