|  | @@ -19,6 +19,8 @@ import java.util.Objects;
 | 
	
		
			
				|  |  |  import java.util.Set;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.*;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.enums.*;
 | 
	
		
			
				|  |  |  import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
	
		
			
				|  | @@ -32,39 +34,6 @@ import com.alibaba.fastjson.TypeReference;
 | 
	
		
			
				|  |  |  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.ChargeTypeDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.ClassGroupDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.CooperationOrganDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.EmployeeDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderCourseSettingsDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDetailDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupPaymentEntitiesDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupPaymentStudentCourseDetailDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupPurchaseListDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupQuitDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.OrganizationDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.SchoolDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.SporadicChargeInfoDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.StudentDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.StudentVisitDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.SubjectChangeDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.SubjectDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.SysConfigDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.TeacherDao;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.BasicUserDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.CloseMusicGroupDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.CourseFormDto;
 | 
	
	
		
			
				|  | @@ -76,35 +45,7 @@ import com.ym.mec.biz.dal.dto.SporadicPayDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.SubjectRegisterDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.UpdateExpectedNumDto;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.ApprovalStatus;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.ChargeType;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.ClassGroup;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.CooperationOrgan;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.CourseSchedule;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.Goods;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.MusicGroup;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.MusicGroupPurchaseList;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.MusicGroupQuit;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.Organization;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.School;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.SporadicChargeInfo;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.Student;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.StudentRegistration;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.Subject;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.SubjectChange;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.service.ClassGroupService;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.service.ClassGroupStudentMapperService;
 | 
	
	
		
			
				|  | @@ -180,6 +121,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |      private SysUserCashAccountDetailService sysUserCashAccountDetailService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | +    private MusicGroupPaymentCalenderStudentDetailDao musicGroupPaymentCalenderStudentDetailDao;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  |      private MusicGroupQuitDao musicGroupQuitDao;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
	
		
			
				|  | @@ -2156,17 +2100,31 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |              rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount());
 | 
	
		
			
				|  |  |              sysUserCashAccountDetailService.insert(rechargeDetail);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            List<MusicGroupPaymentCalenderCourseSettings> courseSettings = musicGroupPaymentCalenderCourseSettingsDao.queryCalenderCourseSettings(calenderDetail.getMusicGroupPaymentCalenderId());
 | 
	
		
			
				|  |  |              List<StudentPaymentOrderDetail> paymentOrderDetails = new ArrayList<>();
 | 
	
		
			
				|  |  | -            courseSettings.forEach(e -> {
 | 
	
		
			
				|  |  | -                StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
 | 
	
		
			
				|  |  | -                studentPaymentOrderDetail.setType(OrderDetailTypeEnum.valueOf(e.getCourseType().getCode()));
 | 
	
		
			
				|  |  | -                studentPaymentOrderDetail.setPrice(e.getCourseCurrentPrice());
 | 
	
		
			
				|  |  | -                studentPaymentOrderDetail.setCreateTime(date);
 | 
	
		
			
				|  |  | -                studentPaymentOrderDetail.setUpdateTime(date);
 | 
	
		
			
				|  |  | -                studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
 | 
	
		
			
				|  |  | -                paymentOrderDetails.add(studentPaymentOrderDetail);
 | 
	
		
			
				|  |  | -            });
 | 
	
		
			
				|  |  | +            List<MusicGroupPaymentCalenderCourseSettings> courseSettings = musicGroupPaymentCalenderCourseSettingsDao.queryCalenderCourseSettings(calenderDetail.getMusicGroupPaymentCalenderId());
 | 
	
		
			
				|  |  | +            //跨团合班没有settings
 | 
	
		
			
				|  |  | +            if(courseSettings.size() == 0){
 | 
	
		
			
				|  |  | +                List<MusicGroupPaymentCalenderStudentDetail> studentDetails = musicGroupPaymentCalenderStudentDetailDao.findByBatchNoAndUserId(paymentCalender.getBatchNo(), userId);
 | 
	
		
			
				|  |  | +                for (MusicGroupPaymentCalenderStudentDetail studentDetail : studentDetails) {
 | 
	
		
			
				|  |  | +                    StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
 | 
	
		
			
				|  |  | +                    studentPaymentOrderDetail.setType(OrderDetailTypeEnum.valueOf(studentDetail.getCourseType()));
 | 
	
		
			
				|  |  | +                    studentPaymentOrderDetail.setPrice(studentDetail.getCourseCurrentPrice());
 | 
	
		
			
				|  |  | +                    studentPaymentOrderDetail.setCreateTime(date);
 | 
	
		
			
				|  |  | +                    studentPaymentOrderDetail.setUpdateTime(date);
 | 
	
		
			
				|  |  | +                    studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
 | 
	
		
			
				|  |  | +                    paymentOrderDetails.add(studentPaymentOrderDetail);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }else {
 | 
	
		
			
				|  |  | +                courseSettings.forEach(e -> {
 | 
	
		
			
				|  |  | +                    StudentPaymentOrderDetail studentPaymentOrderDetail = new StudentPaymentOrderDetail();
 | 
	
		
			
				|  |  | +                    studentPaymentOrderDetail.setType(OrderDetailTypeEnum.valueOf(e.getCourseType().getCode()));
 | 
	
		
			
				|  |  | +                    studentPaymentOrderDetail.setPrice(e.getCourseCurrentPrice());
 | 
	
		
			
				|  |  | +                    studentPaymentOrderDetail.setCreateTime(date);
 | 
	
		
			
				|  |  | +                    studentPaymentOrderDetail.setUpdateTime(date);
 | 
	
		
			
				|  |  | +                    studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
 | 
	
		
			
				|  |  | +                    paymentOrderDetails.add(studentPaymentOrderDetail);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              studentPaymentOrderDetailService.batchAdd(paymentOrderDetails);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              //缴费
 | 
	
	
		
			
				|  | @@ -2369,9 +2327,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |          quitUserIdList.add(oldDirectorUserId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
 | 
	
		
			
				|  |  | -        userRoleMap.put(directorUserId, ImRoleType.DIRECTOR.getDesc());
 | 
	
		
			
				|  |  | -        userRoleMap.put(educationalTeacherId, ImRoleType.EDUCATION.getDesc());
 | 
	
		
			
				|  |  | -        userRoleMap.put(teamTeacherId, ImRoleType.TEAM_TEACHER.getDesc());
 | 
	
		
			
				|  |  | +        userRoleMap.put(directorUserId, "乐队指导");
 | 
	
		
			
				|  |  | +        userRoleMap.put(educationalTeacherId, "运营主管");
 | 
	
		
			
				|  |  | +        userRoleMap.put(teamTeacherId, "教务老师");
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  |          classGroups.forEach(e -> {
 | 
	
		
			
				|  |  |          	imGroupMemberService.quit(e.getId().longValue(), quitUserIdList);
 |