|  | @@ -2355,7 +2355,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          Date date = new Date();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if (classGroup.getStudentNum() >= classGroup.getExpectStudentNum()) {
 | 
	
		
			
				|  |  | +        if (groupType == VIP && classGroup.getStudentNum() >= classGroup.getExpectStudentNum()) {
 | 
	
		
			
				|  |  |              throw new BizException("该课程组人数已满,请联系教务老师!");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -2505,114 +2505,113 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |                  //增加用户余额
 | 
	
		
			
				|  |  |                  sysUserCashAccountService.updateBalance(order.getUserId(), order.getActualAmount().add(order.getBalancePaymentAmount()),
 | 
	
		
			
				|  |  |                          PlatformCashAccountDetailTypeEnum.REFUNDS, "课程组关闭退还课程余额,订单号:" + order.getOrderNo());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                  //退还优惠券
 | 
	
		
			
				|  |  |                  sysCouponCodeService.quit(order.getCouponCodeId());
 | 
	
		
			
				|  |  |              } else {
 | 
	
		
			
				|  |  | -                //活动赠送
 | 
	
		
			
				|  |  | -                studentPaymentOrderService.activityGive(vipGroup.getVipGroupActivityId(), order,
 | 
	
		
			
				|  |  | -                        vipGroup.getId().toString(), null);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                //生成班级学员关联
 | 
	
		
			
				|  |  | -                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);
 | 
	
		
			
				|  |  | -                classGroupStudentMapperDao.insert(classGroupStudentMapper);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                //获取班级实际人数
 | 
	
		
			
				|  |  | -                Integer studentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(groupType, classGroup.getMusicGroupId());
 | 
	
		
			
				|  |  | -                //课程组人数已满,变更状态
 | 
	
		
			
				|  |  | -                if (studentNum.equals(classGroup.getExpectStudentNum())) {
 | 
	
		
			
				|  |  | -                    vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
 | 
	
		
			
				|  |  | -                    classGroup.setDelFlag(0);
 | 
	
		
			
				|  |  | -                    VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroupCategory(vipGroup.getVipGroupCategoryId(),
 | 
	
		
			
				|  |  | -                            vipGroup.getOrganId(), vipGroup.getGroupType());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    //生成课表
 | 
	
		
			
				|  |  | -                    List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(), CourseSchedule.class);
 | 
	
		
			
				|  |  | -                    classGroup.setTotalClassTimes(courseSchedules.size());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    courseScheduleService.batchAddCourseSchedule1(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);
 | 
	
		
			
				|  |  | -                        courseScheduleTeacherSalary.setTenantId(tenantId);
 | 
	
		
			
				|  |  | -                        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());
 | 
	
		
			
				|  |  | -                        teacherAttendance.setTenantId(tenantId);
 | 
	
		
			
				|  |  | -                        teacherAttendances.add(teacherAttendance);
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
 | 
	
		
			
				|  |  | -                    teacherAttendanceDao.batchInsert(teacherAttendances);
 | 
	
		
			
				|  |  | +                if(groupType == VIP){
 | 
	
		
			
				|  |  | +                    //活动赠送
 | 
	
		
			
				|  |  | +                    studentPaymentOrderService.activityGive(vipGroup.getVipGroupActivityId(), order,
 | 
	
		
			
				|  |  | +                            vipGroup.getId().toString(), null);
 | 
	
		
			
				|  |  | +                    //生成班级学员关联
 | 
	
		
			
				|  |  | +                    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);
 | 
	
		
			
				|  |  | +                    classGroupStudentMapperDao.insert(classGroupStudentMapper);
 | 
	
		
			
				|  |  | +                    //获取班级实际人数
 | 
	
		
			
				|  |  | +                    Integer studentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(groupType, classGroup.getMusicGroupId());
 | 
	
		
			
				|  |  | +                    //课程组人数已满,变更状态
 | 
	
		
			
				|  |  | +                    if (studentNum.equals(classGroup.getExpectStudentNum())) {
 | 
	
		
			
				|  |  | +                        vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
 | 
	
		
			
				|  |  | +                        classGroup.setDelFlag(0);
 | 
	
		
			
				|  |  | +                        VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroupCategory(vipGroup.getVipGroupCategoryId(),
 | 
	
		
			
				|  |  | +                                vipGroup.getOrganId(), vipGroup.getGroupType());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        //生成课表
 | 
	
		
			
				|  |  | +                        List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(), CourseSchedule.class);
 | 
	
		
			
				|  |  | +                        classGroup.setTotalClassTimes(courseSchedules.size());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        courseScheduleService.batchAddCourseSchedule1(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);
 | 
	
		
			
				|  |  | +                            courseScheduleTeacherSalary.setTenantId(tenantId);
 | 
	
		
			
				|  |  | +                            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());
 | 
	
		
			
				|  |  | +                            teacherAttendance.setTenantId(tenantId);
 | 
	
		
			
				|  |  | +                            teacherAttendances.add(teacherAttendance);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
 | 
	
		
			
				|  |  | +                        teacherAttendanceDao.batchInsert(teacherAttendances);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    //群聊数据
 | 
	
		
			
				|  |  | -                    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);
 | 
	
		
			
				|  |  | +                        //群聊数据
 | 
	
		
			
				|  |  | +                        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","VIP".equals(vipGroup.getGroupType())?"SMALL_CLASS_TO_BUY":"LIVE_GROUP_BUY");
 | 
	
		
			
				|  |  | +                            //实际支付金额,去除优惠券
 | 
	
		
			
				|  |  | +                            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);
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  | -                            courseScheduleStudentPayment.setOriginalPrice(TeachModeEnum.ONLINE.equals(courseSchedule.getTeachMode()) ? vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice() : vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
 | 
	
		
			
				|  |  | -                            courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
 | 
	
		
			
				|  |  | -                            courseScheduleStudentPayments.add(courseScheduleStudentPayment);
 | 
	
		
			
				|  |  | +                            userRoleMap.put(classGroupStudent.getUserId(), null);
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  | -                        userRoleMap.put(classGroupStudent.getUserId(), null);
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    studentDao.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
 | 
	
		
			
				|  |  | +                        studentDao.updateStudentServiceTag(null, studentIdList, YesOrNoEnum.YES.getCode());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
 | 
	
		
			
				|  |  | +                        courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(),
 | 
	
		
			
				|  |  | -                            vipGroup.getName(), null, null, groupType.getCode(), ImGroup.GroupTypeEnum.valueOf(groupType.name()));
 | 
	
		
			
				|  |  | -                    imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
 | 
	
		
			
				|  |  | -                    imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(), classGroup.getGroupType());
 | 
	
		
			
				|  |  | +                        imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(),
 | 
	
		
			
				|  |  | +                                vipGroup.getName(), null, null, groupType.getCode(), ImGroup.GroupTypeEnum.valueOf(groupType.name()));
 | 
	
		
			
				|  |  | +                        imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
 | 
	
		
			
				|  |  | +                        imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(), classGroup.getGroupType());
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(userId);
 | 
	
		
			
				|  |  |                  //插入缴费明细
 | 
	
	
		
			
				|  | @@ -2684,12 +2683,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          SysUser sysUser = sysUserService.getUser();
 | 
	
		
			
				|  |  |          Integer userId = sysUser.getId();
 | 
	
		
			
				|  |  | +        VipGroup vipGroup = vipGroupDao.get(vipGroupId);
 | 
	
		
			
				|  |  |          StudentApplyRefunds studentApplyRefunds = new StudentApplyRefunds();
 | 
	
		
			
				|  |  | -        StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, userId, DealStatusEnum.SUCCESS.getCode());
 | 
	
		
			
				|  |  | +        StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, userId, DealStatusEnum.SUCCESS.getCode(),"VIP".equals(vipGroup.getGroupType())?"SMALL_CLASS_TO_BUY":"LIVE_GROUP_BUY");
 | 
	
		
			
				|  |  |          if (null == studentPaymentOrder) {
 | 
	
		
			
				|  |  |              throw new BizException("未找到相关订单信息!");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        VipGroup vipGroup = vipGroupDao.get(vipGroupId);
 | 
	
		
			
				|  |  |          //剩余课时数
 | 
	
		
			
				|  |  |          int surplusCourses = studentPaymentOrderDao.countSurplusCourseByMusicGroupAndUser(vipGroup.getId().toString(), userId);
 | 
	
		
			
				|  |  |          if (surplusCourses <= 0) {
 | 
	
	
		
			
				|  | @@ -3360,7 +3359,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |          List<StudentCourseInfoDto> userCourseInfos  = courseScheduleDao.findUserCourseInfos(GroupType.VIP, vipGroupId.toString(), studentId, null);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (CollectionUtils.isEmpty(userCourseInfos) && vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)) {
 | 
	
		
			
				|  |  | -            StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, studentId, DealStatusEnum.SUCCESS.getCode());
 | 
	
		
			
				|  |  | +            StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, studentId, DealStatusEnum.SUCCESS.getCode(),"VIP".equals(vipGroup.getGroupType())?"SMALL_CLASS_TO_BUY":"LIVE_GROUP_BUY");
 | 
	
		
			
				|  |  |              if (Objects.nonNull(studentPaymentOrder)) {
 | 
	
		
			
				|  |  |                  bigDecimal = studentPaymentOrder.getActualAmount().add(studentPaymentOrder.getBalancePaymentAmount());
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -3392,7 +3391,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |          result.put("suplusCourseFee", bigDecimal);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (VipGroupStatusEnum.APPLYING.equals(vipGroup.getStatus())) {
 | 
	
		
			
				|  |  | -            StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, studentId, DealStatusEnum.SUCCESS.getCode());
 | 
	
		
			
				|  |  | +            StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, studentId, DealStatusEnum.SUCCESS.getCode(),"VIP".equals(vipGroup.getGroupType())?"SMALL_CLASS_TO_BUY":"LIVE_GROUP_BUY");
 | 
	
		
			
				|  |  |              if (Objects.nonNull(studentPaymentOrder)) {
 | 
	
		
			
				|  |  |                  BigDecimal suplusCourseOriginalFee = studentPaymentOrder.getActualAmount().add(studentPaymentOrder.getBalancePaymentAmount());
 | 
	
		
			
				|  |  |                  result.put("suplusCourseOriginalFee", suplusCourseOriginalFee);
 | 
	
	
		
			
				|  | @@ -3592,7 +3591,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public void stopGroup(Long vipGroupId, String stopReason) {
 | 
	
		
			
				|  |  |          if (Objects.isNull(vipGroupId)) {
 | 
	
		
			
				|  |  | -            throw new BizException("请指定vip课");
 | 
	
		
			
				|  |  | +            throw new BizException("请指定课程");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          VipGroup vipGroup = vipGroupDao.get(vipGroupId);
 | 
	
		
			
				|  |  |          if (Objects.isNull(vipGroup)) {
 | 
	
	
		
			
				|  | @@ -3601,12 +3600,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |          if (vipGroup.getStatus() == VipGroupStatusEnum.CANCEL) {
 | 
	
		
			
				|  |  |              throw new BizException("该课程已结束或者已被停止,无法进行此操作");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(vipGroupId.toString(), "VIP");
 | 
	
		
			
				|  |  | +        ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(vipGroupId.toString(), vipGroup.getGroupType());
 | 
	
		
			
				|  |  |          if (Objects.isNull(classGroup)) {
 | 
	
		
			
				|  |  |              throw new BizException("班级不存在");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          vipGroup.setStopReason(stopReason);
 | 
	
		
			
				|  |  | -        List<Long> courseScheduleIds = courseScheduleDao.findVipGroupNotStartCourseScheduleIds(vipGroupId.toString(), GroupType.VIP.getCode());
 | 
	
		
			
				|  |  | +        List<Long> courseScheduleIds = courseScheduleDao.findVipGroupNotStartCourseScheduleIds(vipGroupId.toString(),vipGroup.getGroupType());
 | 
	
		
			
				|  |  |          if (vipGroup.getStatus() == VipGroupStatusEnum.NOT_START) {
 | 
	
		
			
				|  |  |              vipGroup.setStatus(VipGroupStatusEnum.CANCEL);
 | 
	
		
			
				|  |  |              vipGroupDao.update(vipGroup);
 | 
	
	
		
			
				|  | @@ -3617,7 +3616,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |                  courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              teacherPush(vipGroup);
 | 
	
		
			
				|  |  | -//			stopVipPush(vipGroup.getId(),vipGroup.getName());
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -3642,7 +3640,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          Map<Integer, BigDecimal> studentSurplusClassFees = MapUtil.convertIntegerMap(maps);
 | 
	
		
			
				|  |  |          for (Integer userId : studentSurplusClassFees.keySet()) {
 | 
	
		
			
				|  |  | -            StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, userId, DealStatusEnum.SUCCESS.getCode());
 | 
	
		
			
				|  |  | +            StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, userId, DealStatusEnum.SUCCESS.getCode(),"VIP".equals(vipGroup.getGroupType())?"SMALL_CLASS_TO_BUY":"LIVE_GROUP_BUY");
 | 
	
		
			
				|  |  |              if (null == studentPaymentOrder) {
 | 
	
		
			
				|  |  |                  throw new BizException("无法停止课程,需要全部学员退学后,才能停止,请先操作学员退学。");
 | 
	
		
			
				|  |  |              }
 |