| 
					
				 | 
			
			
				@@ -1,14 +1,91 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.ym.mec.biz.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.math.BigDecimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Objects; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.lang.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.util.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.auth.api.client.SysUserFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.auth.api.entity.SysUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.dao.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.dto.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.entity.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.enums.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.page.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.service.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.ClassGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.ClassGroupTeacherSalaryDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.CourseScheduleDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.StudentApplyRefundsDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.StudentVipGroupPaymentDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.SubjectDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.SysUserCashAccountDetailDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.TeacherDefaultVipGroupSalaryDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.VipGroupActivityDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.VipGroupCategoryDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.VipGroupClassGroupMapperDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.VipGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.VipGroupDefaultClassesUnitPriceDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dto.TeachingRecordBaseInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dto.VipGroupApplyBaseInfoDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dto.VipGroupApplyDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dto.VipGroupBuyParamsDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dto.VipGroupCostCountDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dto.VipGroupCostCountParamsDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dto.VipGroupManageDetailDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dto.VipGroupSalaryBaseInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dto.VipGroupSalaryDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dto.VipGroupSalarySettlementDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.ClassGroup; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.CourseSchedule; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.StudentApplyRefunds; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.StudentPaymentOrder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.StudentVipGroupPayment; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.SysUserCashAccount; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.VipGroup; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.VipGroupActivity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.VipGroupCategory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.VipGroupClassGroupMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.VipGroupDefaultClassesUnitPrice; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.AuditStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.CourseStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.DealStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.OrderTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.TeachModeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.TeachTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.VipGroupActivityTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.VipGroupStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.YesOrNoEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.page.StudentVipGroupQueryInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.page.VipGroupQueryInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.page.VipGroupSalaryQueryInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.page.VipGroupTeachingRecordQueryInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.service.ClassGroupService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.service.CourseScheduleRewardsRulesService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.service.CourseScheduleService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.service.CourseScheduleStudentPaymentService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.service.PayService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.service.SysUserCashAccountDetailService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.service.SysUserCashAccountService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.service.VipGroupService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.dal.BaseDAO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.entity.ImGroupMember; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.entity.ImGroupModel; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -17,19 +94,10 @@ import com.ym.mec.common.page.PageInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.service.impl.BaseServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.im.ImFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.util.collection.MapUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.apache.commons.lang.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.util.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.math.BigDecimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> implements VipGroupService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private VipGroupDao vipGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -50,38 +118,43 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private VipGroupActivityDao vipGroupActivityDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private VipGroupCategoryDao vipGroupCategoryDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private SysUserFeignService sysUserFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private StudentPaymentOrderDao studentPaymentOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private StudentVipGroupPaymentDao studentVipGroupPaymentDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private SysUserFeignService sysUserFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private StudentPaymentOrderDao studentPaymentOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private StudentVipGroupPaymentDao studentVipGroupPaymentDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private StudentApplyRefundsDao studentApplyRefundsDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private SysUserCashAccountService sysUserCashAccountService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private SysUserCashAccountDetailDao sysUserCashAccountDetailDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private ClassGroupTeacherSalaryDao classGroupTeacherSalaryDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private ImFeignService imFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private SubjectDao subjectDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private PayService payService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private CourseScheduleRewardsRulesService courseScheduleRewardsRulesService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private SysUserCashAccountDetailService sysUserCashAccountDetailService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public BaseDAO<Long, VipGroup> getDAO() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return vipGroupDao; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -91,99 +164,101 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public void createVipGroup(VipGroupApplyDto vipGroup) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (Objects.isNull(vipGroup.getVipGroupApplyBaseInfo().getUserId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(vipGroup.getVipGroupApplyBaseInfo().getUserId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("请选择指导老师"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    if(vipGroup.getCourseSchedules().size()!=(vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum()+vipGroup.getVipGroupApplyBaseInfo().getOnlineClassesNum())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	        throw new BizException("课时总数不匹配!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (vipGroup.getCourseSchedules().size() != (vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum() + vipGroup.getVipGroupApplyBaseInfo() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.getOnlineClassesNum())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("课时总数不匹配!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroup = vipGroup.getCourseSchedules().stream().collect(Collectors.groupingBy(CourseSchedule::getTeachMode)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroup = vipGroup.getCourseSchedules().stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.collect(Collectors.groupingBy(CourseSchedule::getTeachMode)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    if((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE))&&vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum()!=0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				||(!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE))&&(courseScheduleGroup.get(TeachModeEnum.OFFLINE).size()<vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum()))){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	        throw new BizException("线下课课时数量安排有误!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE))&&vipGroup.getVipGroupApplyBaseInfo().getOnlineClassesNum()!=0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				||(!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE))&&(courseScheduleGroup.get(TeachModeEnum.ONLINE).size()<vipGroup.getVipGroupApplyBaseInfo().getOnlineClassesNum()))){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("线上课课时数量安排有误!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if ((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE)) && vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum() != 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				|| (!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE)) && (courseScheduleGroup.get(TeachModeEnum.OFFLINE).size() < vipGroup 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						.getVipGroupApplyBaseInfo().getOfflineClassesNum()))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("线下课课时数量安排有误!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if ((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE)) && vipGroup.getVipGroupApplyBaseInfo().getOnlineClassesNum() != 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				|| (!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE)) && (courseScheduleGroup.get(TeachModeEnum.ONLINE).size() < vipGroup 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						.getVipGroupApplyBaseInfo().getOnlineClassesNum()))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("线上课课时数量安排有误!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //获取活动信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupActivityId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取活动信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupActivityId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//生成vip课信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		VipGroupApplyBaseInfoDto vipGroupApplyBaseInfoDto=vipGroup.getVipGroupApplyBaseInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 生成vip课信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		VipGroupApplyBaseInfoDto vipGroupApplyBaseInfoDto = vipGroup.getVipGroupApplyBaseInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<String> bySubIds = subjectDao.findBySubIds(vipGroupApplyBaseInfoDto.getSubjectIdList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		StringBuffer className=new StringBuffer(StringUtils.join(bySubIds,",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		StringBuffer className = new StringBuffer(StringUtils.join(bySubIds, ",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		className.append("•"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		className.append(vipGroupApplyBaseInfoDto.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		vipGroupApplyBaseInfoDto.setName(className.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		vipGroupApplyBaseInfoDto.setTotalPrice(countVipGroupPredictFee(vipGroupApplyBaseInfoDto, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vipGroupApplyBaseInfoDto.setTotalPrice(countVipGroupPredictFee(vipGroupApplyBaseInfoDto, vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice()).get("totalPrice")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		vipGroupApplyBaseInfoDto.setStatus(VipGroupStatusEnum.APPLYING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		vipGroupDao.insert(vipGroupApplyBaseInfoDto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//获取vip课类型信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取vip课类型信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupCategoryId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//创建班级信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		ClassGroup classGroup=new ClassGroup(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 创建班级信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ClassGroup classGroup = new ClassGroup(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroup.setSubjectIdList(vipGroupApplyBaseInfoDto.getSubjectIdList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroup.setExpectStudentNum(vipGroupCategory.getStudentNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroup.setName(vipGroupApplyBaseInfoDto.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroup.setExpectStudentNum(vipGroupApplyBaseInfoDto.getExpectStudentNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		classGroup.setTotalClassTimes(vipGroupApplyBaseInfoDto.getOnlineClassesNum()+vipGroupApplyBaseInfoDto.getOfflineClassesNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		classGroup.setTotalClassTimes(vipGroupApplyBaseInfoDto.getOnlineClassesNum() + vipGroupApplyBaseInfoDto.getOfflineClassesNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroup.setType(ClassGroupTypeEnum.VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroup.setDelFlag(YesOrNoEnum.NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroupDao.insert(classGroup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//创建vip课班级关联记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		VipGroupClassGroupMapper vipGroupClassGroupMapper=new VipGroupClassGroupMapper(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 创建vip课班级关联记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		VipGroupClassGroupMapper vipGroupClassGroupMapper = new VipGroupClassGroupMapper(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		vipGroupClassGroupMapper.setVipGroupId(vipGroupApplyBaseInfoDto.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		vipGroupClassGroupMapper.setClassGroupId(classGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		vipGroupClassGroupMapperDao.insert(vipGroupClassGroupMapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//创建融云班级群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 创建融云班级群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 指导老师加入群组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		ImGroupMember[] imGroupMembers = { new ImGroupMember(vipGroup.getVipGroupApplyBaseInfo().getUserId().toString())}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ImGroupMember[] imGroupMembers = { new ImGroupMember(vipGroup.getVipGroupApplyBaseInfo().getUserId().toString()) }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 创建群组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//创建班级老师关联记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		ClassGroupTeacherMapper classGroupTeacherMapper=new ClassGroupTeacherMapper(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 创建班级老师关联记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ClassGroupTeacherMapper classGroupTeacherMapper = new ClassGroupTeacherMapper(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.BISHOP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroupTeacherMapper.setUserId(vipGroupApplyBaseInfoDto.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroupTeacherMapperDao.insert(classGroupTeacherMapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//创建班级与老师课酬记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		ClassGroupTeacherSalary classGroupTeacherSalary=new ClassGroupTeacherSalary(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 创建班级与老师课酬记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ClassGroupTeacherSalary classGroupTeacherSalary = new ClassGroupTeacherSalary(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroupTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroupTeacherSalary.setUserId(vipGroupApplyBaseInfoDto.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroupTeacherSalary.setSalary(vipGroupApplyBaseInfoDto.getOfflineTeacherSalary()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroupTeacherSalary.setOnlineClassesSalary(vipGroupApplyBaseInfoDto.getOnlineTeacherSalary()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroupTeacherSalaryDao.insert(classGroupTeacherSalary); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//课程信息调整 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		vipGroup.getCourseSchedules().forEach(courseSchedule -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		    if(courseSchedule.getEndClassTime().after(vipGroupActivity.getCoursesEndTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                &&courseSchedule.getStartClassTime().before(vipGroupActivity.getCoursesStartTime())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		        throw new BizException("课时安排时间超出范围!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		    courseSchedule.setTeacherId(vipGroupApplyBaseInfoDto.getUserId().longValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			courseSchedule.setStatus(CourseStatusEnum.NOT_START); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		    courseSchedule.setType(CourseSchedule.CourseScheduleType.VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			courseSchedule.setClassGroupId(classGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 课程信息调整 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vipGroup.getCourseSchedules().forEach( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				courseSchedule -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (courseSchedule.getEndClassTime().after(vipGroupActivity.getCoursesEndTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							&& courseSchedule.getStartClassTime().before(vipGroupActivity.getCoursesStartTime())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						throw new BizException("课时安排时间超出范围!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					courseSchedule.setTeacherId(vipGroupApplyBaseInfoDto.getUserId().longValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					courseSchedule.setStatus(CourseStatusEnum.NOT_START); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					courseSchedule.setType(CourseSchedule.CourseScheduleType.VIP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					courseSchedule.setClassGroupId(classGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		courseScheduleService.batchAddCourseSchedule(vipGroup.getCourseSchedules()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//创建老师单节课课酬信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(vipGroupApplyBaseInfoDto, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				vipGroup.getCourseSchedules(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				vipGroupApplyBaseInfoDto.getOnlineTeacherSalary(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				vipGroupApplyBaseInfoDto.getOfflineTeacherSalary()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 创建老师单节课课酬信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(vipGroupApplyBaseInfoDto, vipGroup.getCourseSchedules(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				vipGroupApplyBaseInfoDto.getOnlineTeacherSalary(), vipGroupApplyBaseInfoDto.getOfflineTeacherSalary()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -230,7 +305,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public Map<String, Object> findVipGroupTeachingRecord(VipGroupTeachingRecordQueryInfo queryInfo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(Objects.isNull(queryInfo.getVipGroupId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(queryInfo.getVipGroupId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("请指定vip课程!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -251,18 +326,18 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		TeachingRecordBaseInfo classTimes = vipGroupDao.getClassTimes(queryInfo.getVipGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classTimes.setIsSalaryNum(vipGroupDao.countIsSalaryNum(queryInfo.getVipGroupId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classTimes.setComplaintsNum(vipGroupDao.countComplaintsNum(queryInfo.getVipGroupId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Map<String,Object> result=new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		result.put("pageInfo",pageInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		result.put("baseInfo",classTimes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map<String, Object> result = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		result.put("pageInfo", pageInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		result.put("baseInfo", classTimes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public TeachingRecordBaseInfo findTeachingRecordBaseInfo(Long vipGroupId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        TeachingRecordBaseInfo classTimes = vipGroupDao.getClassTimes(vipGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        classTimes.setIsSalaryNum(vipGroupDao.countIsSalaryNum(vipGroupId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        classTimes.setComplaintsNum(vipGroupDao.countComplaintsNum(vipGroupId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return classTimes; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		TeachingRecordBaseInfo classTimes = vipGroupDao.getClassTimes(vipGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		classTimes.setIsSalaryNum(vipGroupDao.countIsSalaryNum(vipGroupId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		classTimes.setComplaintsNum(vipGroupDao.countComplaintsNum(vipGroupId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return classTimes; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -287,11 +362,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public VipGroupManageDetailDto getVipGroupDetail(Long vipGroupId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(Objects.isNull(vipGroupId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(vipGroupId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("请指定vip课程"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		VipGroupManageDetailDto vipGroupBaseInfo = vipGroupDao.getVipGroupBaseInfo(vipGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		vipGroupBaseInfo.setSubjectName(StringUtils.join(subjectDao.findBySubIds(vipGroupBaseInfo.getSubjectIdList()),",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vipGroupBaseInfo.setSubjectName(StringUtils.join(subjectDao.findBySubIds(vipGroupBaseInfo.getSubjectIdList()), ",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return vipGroupBaseInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -317,162 +392,167 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public StudentVipGroupDetailDto getVipGroupShowDetail(Long vipGroupId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(Objects.isNull(vipGroupId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(vipGroupId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("请指定vip课程"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        StudentVipGroupDetailDto vipGroupDetail = vipGroupDao.getVipGroupDetail(vipGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        vipGroupDetail.setNumberOfClasses(vipGroupDao.countTeacherVipGroups(vipGroupDetail.getTeacherId().longValue())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return vipGroupDetail; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		StudentVipGroupDetailDto vipGroupDetail = vipGroupDao.getVipGroupDetail(vipGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		vipGroupDetail.setNumberOfClasses(vipGroupDao.countTeacherVipGroups(vipGroupDetail.getTeacherId().longValue())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return vipGroupDetail; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public VipGroupCostCountDto vipGroupCostCount(VipGroupCostCountParamsDto vipGroupCostCountParamsDto) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SysUser user = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(user.getId().longValue(), vipGroupCostCountParamsDto.getVipGroupCategoryId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.get(vipGroupCostCountParamsDto.getVipGroupDefaultClassesUnitPriceId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		SysUser user = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(user.getId().longValue(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				vipGroupCostCountParamsDto.getVipGroupCategoryId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.get(vipGroupCostCountParamsDto 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.getVipGroupDefaultClassesUnitPriceId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroupCostCountParamsDto.getVipGroupActivityId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BigDecimal offlineClassNum=new BigDecimal(vipGroupCostCountParamsDto.getOfflineClassesNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BigDecimal onlineClassNum=new BigDecimal(vipGroupCostCountParamsDto.getOnlineClassesNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //教师课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BigDecimal teacherOnlineSalary,teacherOfflineSalary,teacherSalary; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case TEACHER_DEFAULT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                teacherOnlineSalary=teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(onlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case RATIO_DISCOUNT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                teacherOnlineSalary=vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice().multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()).multiply(onlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case FIXED_SALARY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                teacherOnlineSalary=vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue().multiply(onlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                 throw new BizException("未指定课酬结算标准!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case TEACHER_DEFAULT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(offlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case RATIO_DISCOUNT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                teacherOfflineSalary=vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice().multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).multiply(offlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            case FIXED_SALARY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                teacherOfflineSalary=vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue().multiply(offlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                throw new BizException("未指定课酬结算标准!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        teacherSalary=teacherOnlineSalary.add(teacherOfflineSalary); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return new VipGroupCostCountDto(null,teacherSalary); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @Author: Joburgess 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @Date: 2019/10/2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 计算VIP课程预计收费 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public Map<String,BigDecimal> countVipGroupPredictFee(VipGroup vipGroup,BigDecimal onlineClassesUnitPrice,BigDecimal offlineClassesUnitPrice){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(Objects.isNull(vipGroup.getUserId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				VipGroupSalarySettlementDto.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		BigDecimal offlineClassNum = new BigDecimal(vipGroupCostCountParamsDto.getOfflineClassesNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		BigDecimal onlineClassNum = new BigDecimal(vipGroupCostCountParamsDto.getOnlineClassesNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 教师课酬 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		BigDecimal teacherOnlineSalary, teacherOfflineSalary, teacherSalary; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case TEACHER_DEFAULT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			teacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(onlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case RATIO_DISCOUNT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			teacherOnlineSalary = vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()).multiply(onlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case FIXED_SALARY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			teacherOnlineSalary = vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue().multiply(onlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("未指定课酬结算标准!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case TEACHER_DEFAULT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			teacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(offlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case RATIO_DISCOUNT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			teacherOfflineSalary = vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).multiply(offlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case FIXED_SALARY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			teacherOfflineSalary = vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue().multiply(offlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("未指定课酬结算标准!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		teacherSalary = teacherOnlineSalary.add(teacherOfflineSalary); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return new VipGroupCostCountDto(null, teacherSalary); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @Author: Joburgess 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @Date: 2019/10/2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * 计算VIP课程预计收费 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public Map<String, BigDecimal> countVipGroupPredictFee(VipGroup vipGroup, BigDecimal onlineClassesUnitPrice, BigDecimal offlineClassesUnitPrice) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(vipGroup.getUserId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("请指定教师"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(Objects.isNull(vipGroup.getVipGroupCategoryId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(vipGroup.getVipGroupCategoryId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("请指定课程形式"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    	TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId().longValue(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId().longValue(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				vipGroup.getVipGroupCategoryId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(Objects.isNull(vipGroupActivity)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(vipGroupActivity)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("指定的活动方案不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				VipGroupSalarySettlementDto.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(Objects.isNull(vipGroupSalarySettlementDto)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(vipGroupSalarySettlementDto)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("课酬结算方案错误"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Map<String,BigDecimal> results=new HashMap<>(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map<String, BigDecimal> results = new HashMap<>(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		BigDecimal offlineClassNum = new BigDecimal(vipGroup.getOfflineClassesNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		BigDecimal onlineClassNum = new BigDecimal(vipGroup.getOnlineClassesNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//教师课酬线上单课酬计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			case TEACHER_DEFAULT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if(Objects.isNull(teacherDefaultVipGroupSalary)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					throw new BizException("未设置教师默认课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				results.put("onlineTeacherSalary",teacherDefaultVipGroupSalary.getOfflineClassesSalary()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			case RATIO_DISCOUNT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			case FIXED_SALARY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				throw new BizException("未指定课酬结算标准!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//教师线下单课酬计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			case TEACHER_DEFAULT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if(Objects.isNull(teacherDefaultVipGroupSalary)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					throw new BizException("未设置教师默认课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				results.put("offlineTeacherSalary",teacherDefaultVipGroupSalary.getOfflineClassesSalary()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			case RATIO_DISCOUNT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				results.put("offlineTeacherSalary",offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			case FIXED_SALARY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				throw new BizException("未指定课酬结算标准!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//课程购买费用计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 教师课酬线上单课酬计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case TEACHER_DEFAULT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (Objects.isNull(teacherDefaultVipGroupSalary)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				throw new BizException("未设置教师默认课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			results.put("onlineTeacherSalary", teacherDefaultVipGroupSalary.getOfflineClassesSalary()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case RATIO_DISCOUNT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			results.put("onlineTeacherSalary", onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case FIXED_SALARY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			results.put("onlineTeacherSalary", vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("未指定课酬结算标准!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 教师线下单课酬计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case TEACHER_DEFAULT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (Objects.isNull(teacherDefaultVipGroupSalary)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				throw new BizException("未设置教师默认课酬"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			results.put("offlineTeacherSalary", teacherDefaultVipGroupSalary.getOfflineClassesSalary()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case RATIO_DISCOUNT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			results.put("offlineTeacherSalary", offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case FIXED_SALARY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			results.put("offlineTeacherSalary", vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("未指定课酬结算标准!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 课程购买费用计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		BigDecimal totalPrice; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		switch (vipGroupActivity.getType()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			case BASE_ACTIVITY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			case DISCOUNT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				BigDecimal discount=new BigDecimal(vipGroupActivity.getAttribute1()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				totalPrice=totalPrice.multiply(discount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			case GIVE_CLASS: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if(vipGroup.getGiveTeachMode()==TeachModeEnum.OFFLINE){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if(offlineClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						offlineClassNum=offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}else if(vipGroup.getGiveTeachMode()==TeachModeEnum.ONLINE){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if(onlineClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						onlineClassNum=onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					throw new BizException("请指定赠送课程类型!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		switch (vipGroupActivity.getType()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case BASE_ACTIVITY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case DISCOUNT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			BigDecimal discount = new BigDecimal(vipGroupActivity.getAttribute1()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			totalPrice = totalPrice.multiply(discount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case GIVE_CLASS: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (vipGroup.getGiveTeachMode() == TeachModeEnum.OFFLINE) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (offlineClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1())) > -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					offlineClassNum = offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else if (vipGroup.getGiveTeachMode() == TeachModeEnum.ONLINE) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (onlineClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1())) > -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					onlineClassNum = onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				throw new BizException("活动类型错误!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				throw new BizException("请指定赠送课程类型!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("活动类型错误!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		results.put("totalPrice",totalPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return results; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		results.put("totalPrice", totalPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return results; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -481,51 +561,46 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		StudentPaymentOrder byStudentVipGroup = studentPaymentOrderDao.findByStudentVipGroup(vipGroupBuyParams.getVipGroupId(), user.getId().longValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(Objects.nonNull(byStudentVipGroup)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.nonNull(byStudentVipGroup)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("订单已存在!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		VipGroup vipGroup = vipGroupDao.get(vipGroupBuyParams.getVipGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(vipGroup.getStatus()!=VipGroupStatusEnum.APPLYING){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (vipGroup.getStatus() != VipGroupStatusEnum.APPLYING) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("该课程已结束报名!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		VipGroupClassGroupMapper vipGroupClassGroupMapper = vipGroupClassGroupMapperDao.findByVipGroupId(vipGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		StudentPaymentOrder studentPaymentOrder=new StudentPaymentOrder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentPaymentOrder.setUserId(user.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		String orderNo=StringUtils.join(new String[]{user.getId().toString(),String.valueOf(System.currentTimeMillis())}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String orderNo = StringUtils.join(new String[] { user.getId().toString(), String.valueOf(System.currentTimeMillis()) }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentPaymentOrder.setOrderNo(orderNo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentPaymentOrder.setType(OrderTypeEnum.SMALL_CLASS_TO_BUY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentPaymentOrder.setExpectAmount(vipGroup.getTotalPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(vipGroupActivity.getType()==VipGroupActivityTypeEnum.DISCOUNT){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (vipGroupActivity.getType() == VipGroupActivityTypeEnum.DISCOUNT) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			studentPaymentOrder.setActualAmount(studentPaymentOrder.getExpectAmount().multiply(new BigDecimal(vipGroupActivity.getAttribute1()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			studentPaymentOrder.setActualAmount(studentPaymentOrder.getExpectAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentPaymentOrder.setMusicGroupId(vipGroup.getId().toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentPaymentOrder.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentPaymentOrderDao.insert(studentPaymentOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		StudentVipGroupPayment studentVipGroupPayment=new StudentVipGroupPayment(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		StudentVipGroupPayment studentVipGroupPayment = new StudentVipGroupPayment(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentVipGroupPayment.setUserId(user.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentVipGroupPayment.setVipGroupId(vipGroup.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentVipGroupPayment.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentVipGroupPayment.setStudentPaymentOrderId(studentPaymentOrder.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentVipGroupPaymentDao.insert(studentVipGroupPayment); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//更新班级人数,如果订单支付失败则减少 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		classGroupService.updateClassStudentNum(vipGroupClassGroupMapper.getClassGroupId().longValue(),1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 更新班级人数,如果订单支付失败则减少 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		classGroupService.updateClassStudentNum(vipGroupClassGroupMapper.getClassGroupId().longValue(), 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//生成回调地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Map payMap = payService.getPayMap( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				vipGroup.getTotalPrice(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				orderNo, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				"https://pay.dayaedu.com/api/yqpay/notify", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				"http://dev.dayaedu.com", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				"vip课购买", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 生成回调地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map payMap = payService.getPayMap(vipGroup.getTotalPrice(), orderNo, "https://pay.dayaedu.com/api/yqpay/notify", "http://dev.dayaedu.com", "vip课购买", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				vipGroup.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return payMap; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -536,54 +611,53 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public void orderCallback(String callbackParams) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		根据回调信息调整订单状态及vip课程状态等相关信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 * 根据回调信息调整订单状态及vip课程状态等相关信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Long vipGroupId=1L,userId=1L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Long vipGroupId = 1L, userId = 1L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		VipGroup vipGroup = vipGroupDao.get(vipGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//生成学生单课缴费信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroupId,userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 生成学生单课缴费信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroupId, userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		VipGroupClassGroupMapper vipGroupClassGroupMapper = vipGroupClassGroupMapperDao.findByVipGroupId(vipGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//更新订单状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		StudentPaymentOrder studentPaymentOrder=studentPaymentOrderDao.findByStudentVipGroup(vipGroupId,userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 更新订单状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentPaymentOrderDao.update(studentPaymentOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//将学生加入到班级,更新班级报名状态及人数信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 将学生加入到班级,更新班级报名状态及人数信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		ClassGroup classGroup = classGroupDao.get(vipGroupClassGroupMapper.getClassGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		int classStudents = classGroupDao.countClassStudent(vipGroupClassGroupMapper.getClassGroupId().longValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(classGroup.getExpectStudentNum()==classStudents){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (classGroup.getExpectStudentNum() == classStudents) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			vipGroup.setStatus(VipGroupStatusEnum.FINISH); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			vipGroupDao.update(vipGroup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		classGroup.setStudentNum(classGroup.getStudentNum()+1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		classGroup.setStudentNum(classGroup.getStudentNum() + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		classGroupDao.update(classGroup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public void applyRefund(Long vipGroupId,Long studentId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		SysUser sysUser=sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    	if(null==studentId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    		studentId=sysUser.getId().longValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		StudentApplyRefunds studentApplyRefunds=new StudentApplyRefunds(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId,studentId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(null==studentPaymentOrder){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void applyRefund(Long vipGroupId, Long studentId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		SysUser sysUser = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (null == studentId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			studentId = sysUser.getId().longValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		StudentApplyRefunds studentApplyRefunds = new StudentApplyRefunds(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, studentId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (null == studentPaymentOrder) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("未找到相关订单信息!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		VipGroup vipGroup=vipGroupDao.get(vipGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//剩余课时数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Map surplusClassTimes=MapUtil.convertMybatisMap(vipGroupDao.countSurplusClassTimes(vipGroupId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		studentApplyRefunds.setExpectAmount(countVipGroupPredictFee(vipGroup, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				new BigDecimal(surplusClassTimes.get(TeachModeEnum.ONLINE.getCode()).toString()), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		VipGroup vipGroup = vipGroupDao.get(vipGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 剩余课时数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map surplusClassTimes = MapUtil.convertMybatisMap(vipGroupDao.countSurplusClassTimes(vipGroupId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		studentApplyRefunds.setExpectAmount(countVipGroupPredictFee(vipGroup, new BigDecimal(surplusClassTimes.get(TeachModeEnum.ONLINE.getCode()).toString()), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				new BigDecimal(surplusClassTimes.get(TeachModeEnum.OFFLINE.getCode()).toString())).get("totalPrice")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentApplyRefunds.setStatus(AuditStatusEnum.ING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		String orderNo=StringUtils.join(new String[]{studentId.toString(),String.valueOf(System.currentTimeMillis())}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String orderNo = StringUtils.join(new String[] { studentId.toString(), String.valueOf(System.currentTimeMillis()) }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentApplyRefunds.setOrderNo(orderNo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentApplyRefunds.setOrigPaymentOrderId(studentPaymentOrder.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentApplyRefunds.setUserId(studentId.intValue()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -593,44 +667,44 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public void applyRefundAudit(StudentApplyRefunds studentApplyRefunds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    	if(Objects.isNull(studentApplyRefunds.getId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    		throw new BizException("请指定退费订单!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(studentApplyRefunds.getId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("请指定退费订单!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		StudentApplyRefunds oldStudentApplyRefunds=studentApplyRefundsDao.get(studentApplyRefunds.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		StudentApplyRefunds oldStudentApplyRefunds = studentApplyRefundsDao.get(studentApplyRefunds.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		oldStudentApplyRefunds.setStatus(studentApplyRefunds.getStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(null==studentApplyRefunds.getActualAmount()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (null == studentApplyRefunds.getActualAmount()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			oldStudentApplyRefunds.setActualAmount(oldStudentApplyRefunds.getExpectAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			oldStudentApplyRefunds.setActualAmount(studentApplyRefunds.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		oldStudentApplyRefunds.setRemark(studentApplyRefunds.getRemark()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentApplyRefundsDao.update(oldStudentApplyRefunds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		switch (studentApplyRefunds.getStatus()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			case PASS: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUserCashAccountService.updateBalance(oldStudentApplyRefunds.getUserId(),oldStudentApplyRefunds.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentApplyRefunds.getUserId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				SysUserCashAccountDetail sysUserCashAccountDetail=new SysUserCashAccountDetail(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUserCashAccountDetail.setUserId(studentApplyRefunds.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUserCashAccountDetail.setStatus(DealStatusEnum.SUCCESS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUserCashAccountDetail.setAmount(oldStudentApplyRefunds.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUserCashAccountDetail.setBalance(sysUserCashAccount.getBalance()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUserCashAccountDetail.setAttribute(oldStudentApplyRefunds.getId().toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUserCashAccountDetailDao.insert(sysUserCashAccountDetail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			case REJECT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				throw new BizException("审核状态错误!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		switch (studentApplyRefunds.getStatus()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case PASS: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUserCashAccountService.updateBalance(oldStudentApplyRefunds.getUserId(), oldStudentApplyRefunds.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentApplyRefunds.getUserId().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SysUserCashAccountDetail sysUserCashAccountDetail = new SysUserCashAccountDetail(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUserCashAccountDetail.setUserId(studentApplyRefunds.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUserCashAccountDetail.setStatus(DealStatusEnum.SUCCESS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUserCashAccountDetail.setAmount(oldStudentApplyRefunds.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUserCashAccountDetail.setBalance(sysUserCashAccount.getBalance()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUserCashAccountDetail.setAttribute(oldStudentApplyRefunds.getId().toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUserCashAccountDetailDao.insert(sysUserCashAccountDetail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		case REJECT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("审核状态错误!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public Map<String, Object> findVipGroupSalarys(VipGroupSalaryQueryInfo queryInfo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    	if(Objects.isNull(queryInfo.getVipGroupId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    		throw new BizException("请指定vip课程!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(queryInfo.getVipGroupId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("请指定vip课程!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -644,13 +718,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			params.put("offset", pageInfo.getOffset()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			dataList = courseScheduleTeacherSalaryDao.findVipGroupSalarys(params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			dataList.forEach(vipGroupSalaryDto -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if(Objects.isNull(vipGroupSalaryDto.getExpectSalary())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (Objects.isNull(vipGroupSalaryDto.getExpectSalary())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					vipGroupSalaryDto.setExpectSalary(new BigDecimal(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if(Objects.isNull(vipGroupSalaryDto.getActualSalary())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (Objects.isNull(vipGroupSalaryDto.getActualSalary())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					vipGroupSalaryDto.setActualSalary(new BigDecimal(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					vipGroupSalaryDto.setIsSalary(YesOrNoEnum.NO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					vipGroupSalaryDto.setIsSalary(YesOrNoEnum.YES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				vipGroupSalaryDto.setDeductionFee(vipGroupSalaryDto.getExpectSalary().subtract(vipGroupSalaryDto.getActualSalary())); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -662,28 +736,28 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		pageInfo.setRows(dataList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		VipGroupSalaryBaseInfo vipGroupSalaryBaseInfo = vipGroupDao.getVipGroupSalaryInfo(queryInfo.getVipGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(Objects.isNull(vipGroupSalaryBaseInfo)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			vipGroupSalaryBaseInfo=new VipGroupSalaryBaseInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(vipGroupSalaryBaseInfo)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			vipGroupSalaryBaseInfo = new VipGroupSalaryBaseInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(Objects.isNull(vipGroupSalaryBaseInfo.getExpectTotalSalary())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(vipGroupSalaryBaseInfo.getExpectTotalSalary())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			vipGroupSalaryBaseInfo.setExpectTotalSalary(new BigDecimal(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(Objects.isNull(vipGroupSalaryBaseInfo.getTotalSalary())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(vipGroupSalaryBaseInfo.getTotalSalary())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			vipGroupSalaryBaseInfo.setTotalSalary(new BigDecimal(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		vipGroupSalaryBaseInfo.setTotalFeeDeduction(vipGroupSalaryBaseInfo.getExpectTotalSalary().subtract(vipGroupSalaryBaseInfo.getTotalSalary())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		vipGroupSalaryBaseInfo.setFeeDeductionNum(vipGroupDao.countVipGroupDeductionNum(queryInfo.getVipGroupId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Map<String,Object> result=new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		result.put("pageInfo",pageInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		result.put("baseInfo",vipGroupSalaryBaseInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map<String, Object> result = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		result.put("pageInfo", pageInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		result.put("baseInfo", vipGroupSalaryBaseInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public List<String> findVipGroupAttendanceStudents(Long courseScheduleId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    	if(Objects.isNull(courseScheduleId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    		throw new BizException("请指定课程"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(courseScheduleId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("请指定课程"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return courseScheduleDao.findStudentNamesByCourseSchedule(courseScheduleId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -691,36 +765,36 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public void stopGroup(Long vipGroupId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    	if(Objects.isNull(vipGroupId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    		throw new BizException("请指定vip课"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(vipGroupId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("请指定vip课"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		VipGroup vipGroup = vipGroupDao.get(vipGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    	if(Objects.isNull(vipGroup)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    		throw new BizException("该课程不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (Objects.isNull(vipGroup)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("该课程不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    	if(vipGroup.getStatus()==VipGroupStatusEnum.FINISH||vipGroup.getStatus()==VipGroupStatusEnum.CANCEL){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    		throw new BizException("该课程已结束或者已被停止,无法进行此操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (vipGroup.getStatus() == VipGroupStatusEnum.FINISH || vipGroup.getStatus() == VipGroupStatusEnum.CANCEL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("该课程已结束或者已被停止,无法进行此操作"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    	if(vipGroup.getStatus()==VipGroupStatusEnum.NOT_START){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (vipGroup.getStatus() == VipGroupStatusEnum.NOT_START) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			vipGroup.setStatus(VipGroupStatusEnum.CANCEL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    		vipGroupDao.update(vipGroup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    		return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			vipGroupDao.update(vipGroup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<Map<Long, BigDecimal>> maps = vipGroupDao.countSurplusCourseFee(vipGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    	if(CollectionUtils.isEmpty(maps)||(maps.size()==1&&Objects.isNull(maps.get(0)))){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (CollectionUtils.isEmpty(maps) || (maps.size() == 1 && Objects.isNull(maps.get(0)))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			vipGroup.setStatus(VipGroupStatusEnum.CANCEL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			vipGroupDao.update(vipGroup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Map<Long, BigDecimal> studentSurplusClassFees = MapUtil.convertMybatisMap(maps); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    	for(Long userId:studentSurplusClassFees.keySet()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId,userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if(null==studentPaymentOrder){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (Long userId : studentSurplusClassFees.keySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (null == studentPaymentOrder) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				throw new BizException("未找到相关订单信息!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			sysUserCashAccountService.updateBalance(userId.intValue(),studentSurplusClassFees.get(userId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUserCashAccountService.updateBalance(userId.intValue(), studentSurplusClassFees.get(userId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(userId.intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			SysUserCashAccountDetail sysUserCashAccountDetail=new SysUserCashAccountDetail(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SysUserCashAccountDetail sysUserCashAccountDetail = new SysUserCashAccountDetail(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			sysUserCashAccountDetail.setUserId(userId.intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			sysUserCashAccountDetail.setStatus(DealStatusEnum.SUCCESS); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -735,6 +809,25 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public boolean awardedMonthlyRewards() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<Map<Integer, Integer>> list = courseScheduleDao.queryVipGroupTeachereClassTimesByMonth(new Date(), CourseStatusEnum.OVER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (list != null && list.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Integer organId = null, teacherId = null, coursesTimes = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (Map<Integer, Integer> map : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				organId = map.get("organ_id_"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				teacherId = map.get("teacher_id_"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				coursesTimes = map.get("times"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				BigDecimal decimal = courseScheduleRewardsRulesService.queryRewardsAmount(organId, CourseScheduleType.VIP, coursesTimes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (decimal.doubleValue() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					sysUserCashAccountDetailService.addCashAccountDetail(teacherId, decimal, "", SysUserCashAccountDetailService.ORGAN, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							PlatformCashAccountDetailTypeEnum.REWARDS, null, DealStatusEnum.SUCCESS, "分部奖励"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |