|  | @@ -1,8 +1,10 @@
 | 
	
		
			
				|  |  |  package com.ym.mec.biz.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  | +import com.ym.mec.auth.api.entity.SysUserRole;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dao.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.*;
 | 
	
	
		
			
				|  | @@ -107,7 +109,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  | -	public void createVipGroup(VipGroupApplyDto vipGroup) {
 | 
	
		
			
				|  |  | +	public void createVipGroup(VipGroupApplyDto vipGroup,Integer systemId) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		if (Objects.isNull(vipGroup.getVipGroupApplyBaseInfo().getUserId())){
 | 
	
		
			
				|  |  |  			throw new BizException("请选择指导老师");
 | 
	
	
		
			
				|  | @@ -256,6 +258,17 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  		courseScheduleService.checkNewCourseSchedules(vipGroup.getCourseSchedules(),false);
 | 
	
		
			
				|  |  |  		vipGroupApplyBaseInfoDto.setCourseSchedulesJson(JSON.toJSONString(vipGroup.getCourseSchedules()));
 | 
	
		
			
				|  |  |  		vipGroupDao.update(vipGroupApplyBaseInfoDto);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		SysUser systemUser = sysUserFeignService.queryUserById(systemId);
 | 
	
		
			
				|  |  | +		Set<Integer> roleIds = new HashSet<>(1);
 | 
	
		
			
				|  |  | +		roleIds.add(SysUserRole.OPERATION_EXECUTIVE);
 | 
	
		
			
				|  |  | +		Map<String,Long> memo = new HashMap<>(1);
 | 
	
		
			
				|  |  | +		memo.put("vipGroupId",vipGroupApplyBaseInfoDto.getId());
 | 
	
		
			
				|  |  | +		if (systemId != null){
 | 
	
		
			
				|  |  | +			sysMessageService.batchSeoMessage(roleIds,MessageTypeEnum.BACKSTAGE_VIP_COURSE_APPLY, JSONObject.toJSONString(memo),systemUser.getUsername(),sysUser.getUsername());
 | 
	
		
			
				|  |  | +		}else {
 | 
	
		
			
				|  |  | +			sysMessageService.batchSeoMessage(roleIds,MessageTypeEnum.BACKSTAGE_TEACHER_APPLY_VIP, JSONObject.toJSONString(memo),sysUser.getUsername());
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
	
		
			
				|  | @@ -528,6 +541,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  		StudentVipGroupDetailDto vipGroupDetail = vipGroupDao.getVipGroupDetail(vipGroupId);
 | 
	
		
			
				|  |  |  		if(StringUtils.isNotEmpty(vipGroup.getCourseSchedulesJson())){
 | 
	
		
			
				|  |  |  			vipGroupDetail.setCourseSchedules(JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class));
 | 
	
		
			
				|  |  | +			List<CourseSchedule> collect = vipGroupDetail.getCourseSchedules().stream()
 | 
	
		
			
				|  |  | +					.sorted(Comparator.comparing(CourseSchedule::getStartClassTime))
 | 
	
		
			
				|  |  | +					.collect(Collectors.toList());
 | 
	
		
			
				|  |  | +			vipGroupDetail.setCourseSchedules(collect);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          vipGroupDetail.setNumberOfClasses(vipGroupDao.countTeacherVipGroups(vipGroupDetail.getTeacherId().longValue()));
 | 
	
	
		
			
				|  | @@ -1303,6 +1320,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  | +	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |  	public void appendVipGroupCourseSchedules(VipGroupApplyDto vipGroupApplyDto) {
 | 
	
		
			
				|  |  |  		if(Objects.isNull(vipGroupApplyDto.getVipGroupApplyBaseInfo().getId())){
 | 
	
		
			
				|  |  |  			throw new BizException("请指定vip课");
 | 
	
	
		
			
				|  | @@ -1311,7 +1329,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  		if(Objects.isNull(vipGroup)){
 | 
	
		
			
				|  |  |  			throw new BizException("指定的vip课不存在");
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -		VipGroupClassGroupMapper vipGroupClassGroupMapper = vipGroupClassGroupMapperDao.findByVipGroupId(vipGroup.getId());
 | 
	
		
			
				|  |  | +		ClassGroup classGroup = classGroupDao.findByVipGroup(vipGroup.getId(), null);
 | 
	
		
			
				|  |  |  		//课程信息调整
 | 
	
		
			
				|  |  |  		vipGroupApplyDto.getCourseSchedules().forEach(courseSchedule -> {
 | 
	
		
			
				|  |  |  			courseSchedule.setSchoolId(vipGroup.getTeacherSchoolId());
 | 
	
	
		
			
				|  | @@ -1319,17 +1337,51 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  			courseSchedule.setActualTeacherId(vipGroup.getUserId());
 | 
	
		
			
				|  |  |  			courseSchedule.setStatus(CourseStatusEnum.NOT_START);
 | 
	
		
			
				|  |  |  			courseSchedule.setType(CourseSchedule.CourseScheduleType.VIP);
 | 
	
		
			
				|  |  | -			courseSchedule.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId());
 | 
	
		
			
				|  |  | +			courseSchedule.setClassGroupId(classGroup.getId());
 | 
	
		
			
				|  |  |  		});
 | 
	
		
			
				|  |  |  		courseScheduleService.batchAddCourseSchedule(vipGroupApplyDto.getCourseSchedules());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		TeacherDefaultVipGroupSalary byTeacherAndCategory = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId(), vipGroup.getVipGroupCategoryId());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +		BigDecimal onlineTeacherSalary=new BigDecimal(0),offlineTeacherSalary=new BigDecimal(0);
 | 
	
		
			
				|  |  | +		if(Objects.nonNull(byTeacherAndCategory)){
 | 
	
		
			
				|  |  | +			onlineTeacherSalary=byTeacherAndCategory.getOnlineClassesSalary();
 | 
	
		
			
				|  |  | +			offlineTeacherSalary=byTeacherAndCategory.getOfflineClassesSalary();
 | 
	
		
			
				|  |  | +		}else{
 | 
	
		
			
				|  |  | +			ClassGroupTeacherSalary classGroupTeacherSalary = classGroupTeacherSalaryDao.findByVipGoupAndTeacher(vipGroup.getId().intValue(), vipGroup.getUserId());
 | 
	
		
			
				|  |  | +			onlineTeacherSalary=classGroupTeacherSalary.getOnlineClassesSalary();
 | 
	
		
			
				|  |  | +			offlineTeacherSalary=classGroupTeacherSalary.getSalary();
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		//创建老师单节课课酬信息
 | 
	
		
			
				|  |  |  		courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(vipGroup,
 | 
	
		
			
				|  |  |  				vipGroupApplyDto.getCourseSchedules(),
 | 
	
		
			
				|  |  | -				byTeacherAndCategory.getOnlineClassesSalary(),
 | 
	
		
			
				|  |  | -				byTeacherAndCategory.getOfflineClassesSalary());
 | 
	
		
			
				|  |  | +				onlineTeacherSalary,
 | 
	
		
			
				|  |  | +				offlineTeacherSalary);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		List<ClassGroupStudentMapper> classGroupStudents = classGroupStudentMapperDao.findByClassGroup(classGroup.getId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		List<ImGroupMember> imGroupMemberList = new ArrayList<>();
 | 
	
		
			
				|  |  | +		//生成学生单课缴费信息
 | 
	
		
			
				|  |  | +		for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
 | 
	
		
			
				|  |  | +			courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroup.getId(),classGroupStudent.getUserId());
 | 
	
		
			
				|  |  | +			imGroupMemberList.add(new ImGroupMember(classGroupStudent.getUserId().toString()));
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
 | 
	
		
			
				|  |  | +		imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(),
 | 
	
		
			
				|  |  | +				imGroupMembers, classGroup.getName()));
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Override
 | 
	
		
			
				|  |  | +	public void addVipGroupStudents(Long vipGroupId, List<Integer> studentIds) {
 | 
	
		
			
				|  |  | +		if(CollectionUtils.isEmpty(studentIds)){
 | 
	
		
			
				|  |  | +			throw new BizException("请选择学生");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(Objects.isNull(vipGroupId)){
 | 
	
		
			
				|  |  | +			throw new BizException("请指定班级");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 |