|  | @@ -2802,157 +2802,168 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  		ClassGroup classGroup = classGroupDao.get(order.getClassGroupId());
 | 
	
		
			
				|  |  |  		if(studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS){
 | 
	
		
			
				|  |  |  			VipGroup vipGroup = vipGroupDao.get(Long.parseLong(classGroup.getMusicGroupId()));
 | 
	
		
			
				|  |  | -			//活动赠送
 | 
	
		
			
				|  |  | -			Integer activityUserMapperId = studentPaymentOrderService.activityGive(vipGroup.getVipGroupActivityId(),studentPaymentOrder,
 | 
	
		
			
				|  |  | -					vipGroup.getId(),null,vipGroup.getUserId());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			//生成班级学员关联
 | 
	
		
			
				|  |  | -			ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
 | 
	
		
			
				|  |  | -			classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
 | 
	
		
			
				|  |  | -			classGroupStudentMapper.setClassGroupId(classGroup.getId());
 | 
	
		
			
				|  |  | -			classGroupStudentMapper.setUserId(userId);
 | 
	
		
			
				|  |  | -			classGroupStudentMapper.setCreateTime(date);
 | 
	
		
			
				|  |  | -			classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
 | 
	
		
			
				|  |  | -			classGroupStudentMapper.setGroupType(GroupType.VIP);
 | 
	
		
			
				|  |  | -			classGroupStudentMapperDao.insert(classGroupStudentMapper);
 | 
	
		
			
				|  |  | +			if(vipGroup.getStatus() == VipGroupStatusEnum.DELETE ||
 | 
	
		
			
				|  |  | +					vipGroup.getStatus() == VipGroupStatusEnum.CANCEL ||
 | 
	
		
			
				|  |  | +					vipGroup.getStatus() == VipGroupStatusEnum.PAUSE){
 | 
	
		
			
				|  |  | +				//增加用户余额
 | 
	
		
			
				|  |  | +				sysUserCashAccountService.updateBalance(order.getUserId(), order.getActualAmount(),
 | 
	
		
			
				|  |  | +						PlatformCashAccountDetailTypeEnum.REFUNDS, "课程组关闭退还课程余额,订单号:" + order.getOrderNo());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				//退还优惠券
 | 
	
		
			
				|  |  | +				sysCouponCodeService.quit(order.getCouponCodeId());
 | 
	
		
			
				|  |  | +			}else {
 | 
	
		
			
				|  |  | +				//活动赠送
 | 
	
		
			
				|  |  | +				Integer activityUserMapperId = studentPaymentOrderService.activityGive(vipGroup.getVipGroupActivityId(),studentPaymentOrder,
 | 
	
		
			
				|  |  | +						vipGroup.getId(),null,vipGroup.getUserId());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -			//获取班级实际人数
 | 
	
		
			
				|  |  | -			Integer studentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(VIP, classGroup.getMusicGroupId());
 | 
	
		
			
				|  |  | -			//课程组人数已满,变更状态
 | 
	
		
			
				|  |  | -			if(studentNum.equals(classGroup.getExpectStudentNum())){
 | 
	
		
			
				|  |  | -				vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
 | 
	
		
			
				|  |  | -				classGroup.setDelFlag(0);
 | 
	
		
			
				|  |  | -				VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroupCategory(vipGroup.getVipGroupCategoryId(), vipGroup.getOrganId());
 | 
	
		
			
				|  |  | +				//生成班级学员关联
 | 
	
		
			
				|  |  | +				ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
 | 
	
		
			
				|  |  | +				classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
 | 
	
		
			
				|  |  | +				classGroupStudentMapper.setClassGroupId(classGroup.getId());
 | 
	
		
			
				|  |  | +				classGroupStudentMapper.setUserId(userId);
 | 
	
		
			
				|  |  | +				classGroupStudentMapper.setCreateTime(date);
 | 
	
		
			
				|  |  | +				classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
 | 
	
		
			
				|  |  | +				classGroupStudentMapper.setGroupType(GroupType.VIP);
 | 
	
		
			
				|  |  | +				classGroupStudentMapperDao.insert(classGroupStudentMapper);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				//获取班级实际人数
 | 
	
		
			
				|  |  | +				Integer studentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(VIP, classGroup.getMusicGroupId());
 | 
	
		
			
				|  |  | +				//课程组人数已满,变更状态
 | 
	
		
			
				|  |  | +				if(studentNum.equals(classGroup.getExpectStudentNum())){
 | 
	
		
			
				|  |  | +					vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
 | 
	
		
			
				|  |  | +					classGroup.setDelFlag(0);
 | 
	
		
			
				|  |  | +					VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroupCategory(vipGroup.getVipGroupCategoryId(), vipGroup.getOrganId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +					//生成课表
 | 
	
		
			
				|  |  | +					List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class);
 | 
	
		
			
				|  |  | +					classGroup.setTotalClassTimes(courseSchedules.size());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +					courseScheduleService.batchAddCourseSchedule(courseSchedules);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +					//考勤信息
 | 
	
		
			
				|  |  | +					List<TeacherAttendance> teacherAttendances = new ArrayList<>();
 | 
	
		
			
				|  |  | +					//创建课酬信息
 | 
	
		
			
				|  |  | +					List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>();
 | 
	
		
			
				|  |  | +					Map<String, BigDecimal> stringBigDecimalMap = countVipGroupPredictFee1(vipGroup, vipGroup.getUserId(), null);
 | 
	
		
			
				|  |  | +					for (CourseSchedule courseSchedule : courseSchedules) {
 | 
	
		
			
				|  |  | +						//创建教师课程薪水记录
 | 
	
		
			
				|  |  | +						CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
 | 
	
		
			
				|  |  | +						courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
 | 
	
		
			
				|  |  | +						courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
 | 
	
		
			
				|  |  | +						courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
 | 
	
		
			
				|  |  | +						courseScheduleTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
 | 
	
		
			
				|  |  | +						courseScheduleTeacherSalary.setUserId(courseSchedule.getActualTeacherId().intValue());
 | 
	
		
			
				|  |  | +						courseScheduleTeacherSalary.setClassGroupId(courseSchedule.getClassGroupId());
 | 
	
		
			
				|  |  | +						courseScheduleTeacherSalary.setExpectSalary(stringBigDecimalMap.get("offlineTeacherSalary"));
 | 
	
		
			
				|  |  | +						courseScheduleTeacherSalary.setActualSalary(null);
 | 
	
		
			
				|  |  | +						courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +						TeacherAttendance teacherAttendance = new TeacherAttendance();
 | 
	
		
			
				|  |  | +						teacherAttendance.setGroupType(courseSchedule.getGroupType());
 | 
	
		
			
				|  |  | +						teacherAttendance.setClassGroupId(courseSchedule.getClassGroupId());
 | 
	
		
			
				|  |  | +						teacherAttendance.setMusicGroupId(courseSchedule.getMusicGroupId());
 | 
	
		
			
				|  |  | +						teacherAttendance.setTeacherId(courseSchedule.getActualTeacherId());
 | 
	
		
			
				|  |  | +						teacherAttendance.setCourseScheduleId(courseSchedule.getId());
 | 
	
		
			
				|  |  | +						teacherAttendances.add(teacherAttendance);
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +					courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
 | 
	
		
			
				|  |  | +					teacherAttendanceDao.batchInsert(teacherAttendances);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -				//生成课表
 | 
	
		
			
				|  |  | -				List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class);
 | 
	
		
			
				|  |  | -				classGroup.setTotalClassTimes(courseSchedules.size());
 | 
	
		
			
				|  |  | +					//群聊数据
 | 
	
		
			
				|  |  | +					Map<Integer,String> userRoleMap = new HashMap<Integer, String>(5);
 | 
	
		
			
				|  |  | +					if(Objects.nonNull(vipGroup.getEducationalTeacherId())){
 | 
	
		
			
				|  |  | +						userRoleMap.put(vipGroup.getEducationalTeacherId(),"乐团主管");
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +					userRoleMap.put(vipGroup.getUserId(),"指导老师");
 | 
	
		
			
				|  |  | +					//生成课程学员关联
 | 
	
		
			
				|  |  | +					List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
 | 
	
		
			
				|  |  | +					List<ClassGroupStudentMapper> classGroupStudents = classGroupStudentMapperDao.findByClassGroup(classGroup.getId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +					List<Integer> studentIdList = classGroupStudents.stream().map(e -> e.getUserId()).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +					for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
 | 
	
		
			
				|  |  | +						StudentPaymentOrder successOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroup.getId(), classGroupStudent.getUserId(), "SUCCESS");
 | 
	
		
			
				|  |  | +						//实际支付金额,去除优惠券
 | 
	
		
			
				|  |  | +						BigDecimal actualPrice = successOrder.getExpectAmount();
 | 
	
		
			
				|  |  | +						BigDecimal divide = actualPrice.divide(new BigDecimal(courseSchedules.size()), ROUND_DOWN);
 | 
	
		
			
				|  |  | +						BigDecimal firstAmount = actualPrice.subtract(divide.multiply(new BigDecimal(courseSchedules.size()))).add(divide);
 | 
	
		
			
				|  |  | +						for (int i = 0; i < courseSchedules.size(); i++) {
 | 
	
		
			
				|  |  | +							CourseSchedule courseSchedule = courseSchedules.get(i);
 | 
	
		
			
				|  |  | +							CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
 | 
	
		
			
				|  |  | +							courseScheduleStudentPayment.setUserId(classGroupStudent.getUserId());
 | 
	
		
			
				|  |  | +							courseScheduleStudentPayment.setGroupType(courseSchedule.getGroupType());
 | 
	
		
			
				|  |  | +							courseScheduleStudentPayment.setMusicGroupId(courseSchedule.getMusicGroupId());
 | 
	
		
			
				|  |  | +							courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
 | 
	
		
			
				|  |  | +							courseScheduleStudentPayment.setClassGroupId(courseSchedule.getClassGroupId());
 | 
	
		
			
				|  |  | +							if (i == 0) {
 | 
	
		
			
				|  |  | +								courseScheduleStudentPayment.setExpectPrice(firstAmount);
 | 
	
		
			
				|  |  | +							}else{
 | 
	
		
			
				|  |  | +								courseScheduleStudentPayment.setExpectPrice(divide);
 | 
	
		
			
				|  |  | +							}
 | 
	
		
			
				|  |  | +							courseScheduleStudentPayment.setOriginalPrice(TeachModeEnum.ONLINE.equals(courseSchedule.getTeachMode())?vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice():vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
 | 
	
		
			
				|  |  | +							courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
 | 
	
		
			
				|  |  | +							courseScheduleStudentPayments.add(courseScheduleStudentPayment);
 | 
	
		
			
				|  |  | +						}
 | 
	
		
			
				|  |  | +						userRoleMap.put(classGroupStudent.getUserId(),null);
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +					studentDao.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -				courseScheduleService.batchAddCourseSchedule(courseSchedules);
 | 
	
		
			
				|  |  | +					courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
 | 
	
		
			
				|  |  | +//				courseScheduleService.checkNewCourseSchedules(courseSchedules, false,false);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -				//考勤信息
 | 
	
		
			
				|  |  | -				List<TeacherAttendance> teacherAttendances = new ArrayList<>();
 | 
	
		
			
				|  |  | -				//创建课酬信息
 | 
	
		
			
				|  |  | -				List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>();
 | 
	
		
			
				|  |  | -				Map<String, BigDecimal> stringBigDecimalMap = countVipGroupPredictFee1(vipGroup, vipGroup.getUserId(), null);
 | 
	
		
			
				|  |  | -				for (CourseSchedule courseSchedule : courseSchedules) {
 | 
	
		
			
				|  |  | -					//创建教师课程薪水记录
 | 
	
		
			
				|  |  | -					CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
 | 
	
		
			
				|  |  | -					courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
 | 
	
		
			
				|  |  | -					courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
 | 
	
		
			
				|  |  | -					courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
 | 
	
		
			
				|  |  | -					courseScheduleTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
 | 
	
		
			
				|  |  | -					courseScheduleTeacherSalary.setUserId(courseSchedule.getActualTeacherId().intValue());
 | 
	
		
			
				|  |  | -					courseScheduleTeacherSalary.setClassGroupId(courseSchedule.getClassGroupId());
 | 
	
		
			
				|  |  | -					courseScheduleTeacherSalary.setExpectSalary(stringBigDecimalMap.get("offlineTeacherSalary"));
 | 
	
		
			
				|  |  | -					courseScheduleTeacherSalary.setActualSalary(null);
 | 
	
		
			
				|  |  | -					courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -					TeacherAttendance teacherAttendance = new TeacherAttendance();
 | 
	
		
			
				|  |  | -					teacherAttendance.setGroupType(courseSchedule.getGroupType());
 | 
	
		
			
				|  |  | -					teacherAttendance.setClassGroupId(courseSchedule.getClassGroupId());
 | 
	
		
			
				|  |  | -					teacherAttendance.setMusicGroupId(courseSchedule.getMusicGroupId());
 | 
	
		
			
				|  |  | -					teacherAttendance.setTeacherId(courseSchedule.getActualTeacherId());
 | 
	
		
			
				|  |  | -					teacherAttendance.setCourseScheduleId(courseSchedule.getId());
 | 
	
		
			
				|  |  | -					teacherAttendances.add(teacherAttendance);
 | 
	
		
			
				|  |  | +					imGroupService.create(classGroup.getId().longValue(), null, classGroup.getName(), classGroup.getName(), vipGroup.getName(), null, null, GroupType.VIP.getCode());
 | 
	
		
			
				|  |  | +					imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
 | 
	
		
			
				|  |  | +					imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(),classGroup.getGroupType());
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  | -				courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
 | 
	
		
			
				|  |  | -				teacherAttendanceDao.batchInsert(teacherAttendances);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				//群聊数据
 | 
	
		
			
				|  |  | -				Map<Integer,String> userRoleMap = new HashMap<Integer, String>(5);
 | 
	
		
			
				|  |  | -				if(Objects.nonNull(vipGroup.getEducationalTeacherId())){
 | 
	
		
			
				|  |  | -					userRoleMap.put(vipGroup.getEducationalTeacherId(),"乐团主管");
 | 
	
		
			
				|  |  | +				SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(userId);
 | 
	
		
			
				|  |  | +				//插入缴费明细
 | 
	
		
			
				|  |  | +				//收入
 | 
	
		
			
				|  |  | +				SysUserCashAccountDetail sysUserIncomeCashAccountDetail = new SysUserCashAccountDetail();
 | 
	
		
			
				|  |  | +				sysUserIncomeCashAccountDetail.setUserId(userId);
 | 
	
		
			
				|  |  | +				sysUserIncomeCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
 | 
	
		
			
				|  |  | +				sysUserIncomeCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
 | 
	
		
			
				|  |  | +				sysUserIncomeCashAccountDetail.setAmount(order.getActualAmount());
 | 
	
		
			
				|  |  | +				sysUserIncomeCashAccountDetail.setBalance(sysUserCashAccount.getBalance().add(order.getActualAmount()));
 | 
	
		
			
				|  |  | +				sysUserIncomeCashAccountDetail.setAttribute(order.getTransNo());
 | 
	
		
			
				|  |  | +				sysUserIncomeCashAccountDetail.setChannel(studentPaymentOrder.getPaymentChannel());
 | 
	
		
			
				|  |  | +				sysUserIncomeCashAccountDetail.setComAmount(studentPaymentOrder.getComAmount());
 | 
	
		
			
				|  |  | +				sysUserIncomeCashAccountDetail.setPerAmount(studentPaymentOrder.getPerAmount());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				//支出
 | 
	
		
			
				|  |  | +				SysUserCashAccountDetail sysUserExpendCashAccountDetail = new SysUserCashAccountDetail();
 | 
	
		
			
				|  |  | +				sysUserExpendCashAccountDetail.setUserId(userId);
 | 
	
		
			
				|  |  | +				sysUserExpendCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.PAY_FEE);
 | 
	
		
			
				|  |  | +				sysUserExpendCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
 | 
	
		
			
				|  |  | +				sysUserExpendCashAccountDetail.setAmount(order.getActualAmount().negate());
 | 
	
		
			
				|  |  | +				sysUserExpendCashAccountDetail.setBalance(sysUserCashAccount.getBalance());
 | 
	
		
			
				|  |  | +				sysUserExpendCashAccountDetail.setAttribute(order.getTransNo());
 | 
	
		
			
				|  |  | +				sysUserExpendCashAccountDetail.setChannel(studentPaymentOrder.getPaymentChannel());
 | 
	
		
			
				|  |  | +				if(studentPaymentOrder.getComAmount() != null){
 | 
	
		
			
				|  |  | +					sysUserExpendCashAccountDetail.setComAmount(studentPaymentOrder.getComAmount().negate());
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  | -				userRoleMap.put(vipGroup.getUserId(),"指导老师");
 | 
	
		
			
				|  |  | -				//生成课程学员关联
 | 
	
		
			
				|  |  | -				List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
 | 
	
		
			
				|  |  | -				List<ClassGroupStudentMapper> classGroupStudents = classGroupStudentMapperDao.findByClassGroup(classGroup.getId());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				List<Integer> studentIdList = classGroupStudents.stream().map(e -> e.getUserId()).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -				for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
 | 
	
		
			
				|  |  | -					StudentPaymentOrder successOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroup.getId(), classGroupStudent.getUserId(), "SUCCESS");
 | 
	
		
			
				|  |  | -					//实际支付金额,去除优惠券
 | 
	
		
			
				|  |  | -					BigDecimal actualPrice = successOrder.getExpectAmount();
 | 
	
		
			
				|  |  | -					BigDecimal divide = actualPrice.divide(new BigDecimal(courseSchedules.size()), ROUND_DOWN);
 | 
	
		
			
				|  |  | -					BigDecimal firstAmount = actualPrice.subtract(divide.multiply(new BigDecimal(courseSchedules.size()))).add(divide);
 | 
	
		
			
				|  |  | -					for (int i = 0; i < courseSchedules.size(); i++) {
 | 
	
		
			
				|  |  | -						CourseSchedule courseSchedule = courseSchedules.get(i);
 | 
	
		
			
				|  |  | -						CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
 | 
	
		
			
				|  |  | -						courseScheduleStudentPayment.setUserId(classGroupStudent.getUserId());
 | 
	
		
			
				|  |  | -						courseScheduleStudentPayment.setGroupType(courseSchedule.getGroupType());
 | 
	
		
			
				|  |  | -						courseScheduleStudentPayment.setMusicGroupId(courseSchedule.getMusicGroupId());
 | 
	
		
			
				|  |  | -						courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
 | 
	
		
			
				|  |  | -						courseScheduleStudentPayment.setClassGroupId(courseSchedule.getClassGroupId());
 | 
	
		
			
				|  |  | -						if (i == 0) {
 | 
	
		
			
				|  |  | -							courseScheduleStudentPayment.setExpectPrice(firstAmount);
 | 
	
		
			
				|  |  | -						}else{
 | 
	
		
			
				|  |  | -							courseScheduleStudentPayment.setExpectPrice(divide);
 | 
	
		
			
				|  |  | -						}
 | 
	
		
			
				|  |  | -						courseScheduleStudentPayment.setOriginalPrice(TeachModeEnum.ONLINE.equals(courseSchedule.getTeachMode())?vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice():vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
 | 
	
		
			
				|  |  | -						courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
 | 
	
		
			
				|  |  | -						courseScheduleStudentPayments.add(courseScheduleStudentPayment);
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -					userRoleMap.put(classGroupStudent.getUserId(),null);
 | 
	
		
			
				|  |  | +				if(studentPaymentOrder.getPerAmount() != null){
 | 
	
		
			
				|  |  | +					sysUserExpendCashAccountDetail.setPerAmount(studentPaymentOrder.getPerAmount().negate());
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  | -				studentDao.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -				courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
 | 
	
		
			
				|  |  | -//				courseScheduleService.checkNewCourseSchedules(courseSchedules, false,false);
 | 
	
		
			
				|  |  | +				sysUserCashAccountDetailService.insert(sysUserIncomeCashAccountDetail);
 | 
	
		
			
				|  |  | +				sysUserCashAccountDetailService.insert(sysUserExpendCashAccountDetail);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -				imGroupService.create(classGroup.getId().longValue(), null, classGroup.getName(), classGroup.getName(), vipGroup.getName(), null, null, GroupType.VIP.getCode());
 | 
	
		
			
				|  |  | -				imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
 | 
	
		
			
				|  |  | -				imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(),classGroup.getGroupType());
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(userId);
 | 
	
		
			
				|  |  | -			//插入缴费明细
 | 
	
		
			
				|  |  | -			//收入
 | 
	
		
			
				|  |  | -			SysUserCashAccountDetail sysUserIncomeCashAccountDetail = new SysUserCashAccountDetail();
 | 
	
		
			
				|  |  | -			sysUserIncomeCashAccountDetail.setUserId(userId);
 | 
	
		
			
				|  |  | -			sysUserIncomeCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
 | 
	
		
			
				|  |  | -			sysUserIncomeCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
 | 
	
		
			
				|  |  | -			sysUserIncomeCashAccountDetail.setAmount(order.getActualAmount());
 | 
	
		
			
				|  |  | -			sysUserIncomeCashAccountDetail.setBalance(sysUserCashAccount.getBalance().add(order.getActualAmount()));
 | 
	
		
			
				|  |  | -			sysUserIncomeCashAccountDetail.setAttribute(order.getTransNo());
 | 
	
		
			
				|  |  | -			sysUserIncomeCashAccountDetail.setChannel(studentPaymentOrder.getPaymentChannel());
 | 
	
		
			
				|  |  | -			sysUserIncomeCashAccountDetail.setComAmount(studentPaymentOrder.getComAmount());
 | 
	
		
			
				|  |  | -			sysUserIncomeCashAccountDetail.setPerAmount(studentPaymentOrder.getPerAmount());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			//支出
 | 
	
		
			
				|  |  | -			SysUserCashAccountDetail sysUserExpendCashAccountDetail = new SysUserCashAccountDetail();
 | 
	
		
			
				|  |  | -			sysUserExpendCashAccountDetail.setUserId(userId);
 | 
	
		
			
				|  |  | -			sysUserExpendCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.PAY_FEE);
 | 
	
		
			
				|  |  | -			sysUserExpendCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
 | 
	
		
			
				|  |  | -			sysUserExpendCashAccountDetail.setAmount(order.getActualAmount().negate());
 | 
	
		
			
				|  |  | -			sysUserExpendCashAccountDetail.setBalance(sysUserCashAccount.getBalance());
 | 
	
		
			
				|  |  | -			sysUserExpendCashAccountDetail.setAttribute(order.getTransNo());
 | 
	
		
			
				|  |  | -			sysUserExpendCashAccountDetail.setChannel(studentPaymentOrder.getPaymentChannel());
 | 
	
		
			
				|  |  | -			if(studentPaymentOrder.getComAmount() != null){
 | 
	
		
			
				|  |  | -				sysUserExpendCashAccountDetail.setComAmount(studentPaymentOrder.getComAmount().negate());
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			if(studentPaymentOrder.getPerAmount() != null){
 | 
	
		
			
				|  |  | -				sysUserExpendCashAccountDetail.setPerAmount(studentPaymentOrder.getPerAmount().negate());
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			sysUserCashAccountDetailService.insert(sysUserIncomeCashAccountDetail);
 | 
	
		
			
				|  |  | -			sysUserCashAccountDetailService.insert(sysUserExpendCashAccountDetail);
 | 
	
		
			
				|  |  | +				Map<Integer,String> map = new HashMap<>(1);
 | 
	
		
			
				|  |  | +				map.put(userId,userId.toString());
 | 
	
		
			
				|  |  | +				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_VIP_BUY, map, null, 0, "2","STUDENT",
 | 
	
		
			
				|  |  | +						vipGroup.getName());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -			Map<Integer,String> map = new HashMap<>(1);
 | 
	
		
			
				|  |  | -			map.put(userId,userId.toString());
 | 
	
		
			
				|  |  | -			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_VIP_BUY, map, null, 0, "2","STUDENT",
 | 
	
		
			
				|  |  | -					vipGroup.getName());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			//更新所属分部列表
 | 
	
		
			
				|  |  | -			List<Integer> organIds = classGroupDao.findStudentOrganIdsByClassGroup(classGroup.getId().longValue());
 | 
	
		
			
				|  |  | -			organIds.add(vipGroup.getOrganId());
 | 
	
		
			
				|  |  | -			HashSet<Integer> hashSet = new HashSet<>(organIds);
 | 
	
		
			
				|  |  | -			String organIdsString = StringUtils.join(hashSet, ",");
 | 
	
		
			
				|  |  | -			vipGroup.setOrganIdList(organIdsString);
 | 
	
		
			
				|  |  | -			vipGroupDao.update(vipGroup);
 | 
	
		
			
				|  |  | -			try {
 | 
	
		
			
				|  |  | -				contractService.transferVipGroupCoursesContract(userId,vipGroup.getId());
 | 
	
		
			
				|  |  | -			} catch (Exception e) {
 | 
	
		
			
				|  |  | -				LOGGER.error(MessageFormatter.arrayFormat("小课[{}]购买协议错误:{}", vipGroup.getId(), e.getMessage()), e);
 | 
	
		
			
				|  |  | +				//更新所属分部列表
 | 
	
		
			
				|  |  | +				List<Integer> organIds = classGroupDao.findStudentOrganIdsByClassGroup(classGroup.getId().longValue());
 | 
	
		
			
				|  |  | +				organIds.add(vipGroup.getOrganId());
 | 
	
		
			
				|  |  | +				HashSet<Integer> hashSet = new HashSet<>(organIds);
 | 
	
		
			
				|  |  | +				String organIdsString = StringUtils.join(hashSet, ",");
 | 
	
		
			
				|  |  | +				vipGroup.setOrganIdList(organIdsString);
 | 
	
		
			
				|  |  | +				vipGroupDao.update(vipGroup);
 | 
	
		
			
				|  |  | +				try {
 | 
	
		
			
				|  |  | +					contractService.transferVipGroupCoursesContract(userId,vipGroup.getId());
 | 
	
		
			
				|  |  | +				} catch (Exception e) {
 | 
	
		
			
				|  |  | +					LOGGER.error(MessageFormatter.arrayFormat("小课[{}]购买协议错误:{}", vipGroup.getId(), e.getMessage()), e);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}else {
 | 
	
		
			
				|  |  |  			classGroup.setStudentNum(classGroup.getStudentNum() - 1);
 |