|  | @@ -8,6 +8,7 @@ import com.ym.mec.biz.dal.dto.SimpleUserDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.page.ArrearageStudentsQueryInfo;
 | 
	
	
		
			
				|  | @@ -46,9 +47,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private MusicGroupPaymentCalenderService musicGroupPaymentCalenderService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | -    private MusicGroupPaymentCalenderCourseSettingsDao musicGroupPaymentCalenderCourseSettingsDao;
 | 
	
		
			
				|  |  | -    @Autowired
 | 
	
		
			
				|  |  | -    private MusicGroupPaymentStudentCourseDetailDao musicGroupPaymentStudentCourseDetailDao;
 | 
	
		
			
				|  |  | +    private MusicGroupPaymentStudentCourseDetailService musicGroupPaymentStudentCourseDetailService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private MusicGroupDao musicGroupDao;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
	
		
			
				|  | @@ -70,11 +69,11 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private StudentPaymentOrderDao studentPaymentOrderDao;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | -    private StudentDao studentDao;
 | 
	
		
			
				|  |  | -    @Autowired
 | 
	
		
			
				|  |  |      private VipGroupActivityDao vipGroupActivityDao;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private OperatingReportCloudService operatingReportCloudService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private MemberFeeSettingService memberFeeSettingService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public BaseDAO<Long, MusicGroupPaymentCalenderDetail> getDAO() {
 | 
	
	
		
			
				|  | @@ -215,15 +214,11 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |              throw new BizException("操作失败:包含已存在的学员");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        List<MusicGroupPaymentCalenderCourseSettings> courseSettingsList = musicGroupPaymentCalenderCourseSettingsDao.getWithPaymentCalender(musicGroupPaymentCalenderId);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          Date date = new Date();
 | 
	
		
			
				|  |  |          MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = null;
 | 
	
		
			
				|  |  | -        Map<Integer, Long> userMap = new HashMap<>();
 | 
	
		
			
				|  |  | +        Map<Integer, Long> userCalenderDetailMap = new HashMap<>();
 | 
	
		
			
				|  |  |          Map<Integer, Integer> activityuserMap = new HashMap<>();
 | 
	
		
			
				|  |  |          List<MusicGroupPaymentCalenderDetail> musicGroupPaymentCalenderDetailList = new ArrayList<>();
 | 
	
		
			
				|  |  | -        //创建缴费明细
 | 
	
		
			
				|  |  | -        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          List<MusicGroupPaymentCalenderActivity> calenderActivities = musicGroupPaymentCalenderActivityService.findByCalenderId(musicGroupPaymentCalenderId);
 | 
	
		
			
				|  |  |          Map<Integer, VipGroupActivity> collect = new HashMap<>();
 | 
	
	
		
			
				|  | @@ -248,12 +243,16 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail.setStartPaymentDate(musicGroupPaymentCalender.getStartPaymentDate());
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail.setDeadlinePaymentDate(musicGroupPaymentCalender.getDeadlinePaymentDate());
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail.setResponsibleUserId(musicGroupPaymentCalender.getOperator());
 | 
	
		
			
				|  |  | +            musicGroupPaymentCalenderDetail.setMusicGroupId(musicGroupPaymentCalender.getMusicGroupId());
 | 
	
		
			
				|  |  | +            //设置云教练、课程收入
 | 
	
		
			
				|  |  | +            this.setCourseIncome(calenderMember,musicGroupPaymentCalenderDetail);
 | 
	
		
			
				|  |  | +            Integer organId = musicGroupPaymentCalender.getOrganId();
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetailList.add(musicGroupPaymentCalenderDetail);
 | 
	
		
			
				|  |  |              if (musicGroupPaymentCalender.getCurrentTotalAmount().compareTo(BigDecimal.ZERO) == 0 || musicGroupPaymentCalender.getPayUserType() == SCHOOL) {
 | 
	
		
			
				|  |  |                  // 添加会员
 | 
	
		
			
				|  |  |                  if (calenderMember != null) {
 | 
	
		
			
				|  |  |                      CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder();
 | 
	
		
			
				|  |  | -                    cloudTeacherOrder.setOrganId(musicGroup.getOrganId());
 | 
	
		
			
				|  |  | +                    cloudTeacherOrder.setOrganId(organId);
 | 
	
		
			
				|  |  |                      cloudTeacherOrder.setType(calenderMember.getPeriod());
 | 
	
		
			
				|  |  |                      cloudTeacherOrder.setAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  |                      cloudTeacherOrder.setStudentId(studentId);
 | 
	
	
		
			
				|  | @@ -277,7 +276,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |                          activityUserMapper.setSubNoCoursePrice(BigDecimal.ZERO);
 | 
	
		
			
				|  |  |                          activityUserMapper.setActivityId(calenderActivity.getActivityId());
 | 
	
		
			
				|  |  |                          activityUserMapper.setUserId(studentId);
 | 
	
		
			
				|  |  | -                        activityUserMapper.setOrganId(musicGroup.getOrganId());
 | 
	
		
			
				|  |  | +                        activityUserMapper.setOrganId(organId);
 | 
	
		
			
				|  |  |                          if(musicGroupPaymentCalender.getPayUserType() == SCHOOL){
 | 
	
		
			
				|  |  |                              activityUserMapper.setAddMemo("学校缴费新增学员");
 | 
	
		
			
				|  |  |                          }else {
 | 
	
	
		
			
				|  | @@ -300,7 +299,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (musicGroupPaymentCalenderDetailList.size() > 0) {
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetailDao.batchInsert(musicGroupPaymentCalenderDetailList);
 | 
	
		
			
				|  |  | -            musicGroupPaymentCalenderDetailList.stream().forEach(e -> userMap.put(e.getUserId(), e.getId()));
 | 
	
		
			
				|  |  | +            musicGroupPaymentCalenderDetailList.stream().forEach(e -> userCalenderDetailMap.put(e.getUserId(), e.getId()));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          //更新预计缴费人数
 | 
	
		
			
				|  |  |          musicGroupPaymentCalender.setExpectNum(musicGroupPaymentCalender.getExpectNum() + userIdList.size());
 | 
	
	
		
			
				|  | @@ -309,43 +308,9 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |              musicGroupPaymentCalender.setActualNum(musicGroupPaymentCalender.getActualNum() + userIdList.size());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          musicGroupPaymentCalenderService.update(musicGroupPaymentCalender);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          //创建学生课排课分钟数
 | 
	
		
			
				|  |  | -        if (courseSettingsList != null && courseSettingsList.size() > 0) {
 | 
	
		
			
				|  |  | -            List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetailList = new ArrayList<>();
 | 
	
		
			
				|  |  | -            MusicGroupPaymentStudentCourseDetail musicGroupPaymentStudentCourseDetail = null;
 | 
	
		
			
				|  |  | -            for (Integer studentId : userIdList) {
 | 
	
		
			
				|  |  | -                for (MusicGroupPaymentCalenderCourseSettings courseSettings : courseSettingsList) {
 | 
	
		
			
				|  |  | -                    if (courseSettings.getCourseTotalMinuties() == null || courseSettings.getCourseTotalMinuties() == 0) {
 | 
	
		
			
				|  |  | -                        continue;
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail = new MusicGroupPaymentStudentCourseDetail();
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setMusicGroupId(musicGroupId);
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setCourseType(courseSettings.getCourseType());
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setCreateTime(date);
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalenderId);
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderDetailId(userMap.get(studentId));
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setTotalCourseMinutes(courseSettings.getCourseTotalMinuties());
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setSubCourseMinutes(courseSettings.getCourseTotalMinuties());
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setCourseOriginalPrice(courseSettings.getCourseOriginalPrice());
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setCourseCurrentPrice(courseSettings.getCourseCurrentPrice());
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setSubCourseOriginalPrice(courseSettings.getCourseOriginalPrice());
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setSubCourseCurrentPrice(courseSettings.getCourseCurrentPrice());
 | 
	
		
			
				|  |  | -                    if(musicGroupPaymentCalender.getPayUserType() == SCHOOL){
 | 
	
		
			
				|  |  | -                        musicGroupPaymentStudentCourseDetail.setCourseCurrentPrice(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | -                        musicGroupPaymentStudentCourseDetail.setSubCourseCurrentPrice(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setUpdateTime(date);
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(0);
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setUserId(studentId);
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setCloudTeacherPaymentFlag(musicGroupPaymentCalender.getCloudTeacherPaymentFlag());
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetailList.add(musicGroupPaymentStudentCourseDetail);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (musicGroupPaymentStudentCourseDetailList.size() > 0) {
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetailDao.batchInsert(musicGroupPaymentStudentCourseDetailList);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        musicGroupPaymentStudentCourseDetailService.batchInsert(userIdList,musicGroupPaymentCalender,userCalenderDetailMap);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          //给学员推送缴费通知
 | 
	
		
			
				|  |  |          if (musicGroupPaymentCalender.getPayUserType() == STUDENT && musicGroupPaymentCalender.getStatus() == PaymentCalenderStatusEnum.OPEN) {
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderService.pushWaitRenewMessage(musicGroupPaymentCalender.getId(),
 | 
	
	
		
			
				|  | @@ -353,6 +318,24 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    public void setCourseIncome(MusicGroupPaymentCalenderMember calenderMember, MusicGroupPaymentCalenderDetail calenderDetail){
 | 
	
		
			
				|  |  | +        if(Objects.nonNull(calenderMember)){
 | 
	
		
			
				|  |  | +            MusicGroup musicGroup = musicGroupDao.get(calenderDetail.getMusicGroupId());
 | 
	
		
			
				|  |  | +            if(musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
 | 
	
		
			
				|  |  | +                //获取云教练溢出费用
 | 
	
		
			
				|  |  | +                BigDecimal courseIncome = memberFeeSettingService.getAmount(musicGroup.getOrganId(), 1, calenderMember.getPeriod(),
 | 
	
		
			
				|  |  | +                        calenderMember.getNum(), MemberFeeSettingServiceImpl::getIncome);
 | 
	
		
			
				|  |  | +                if(calenderMember.getActualAmount().compareTo(courseIncome) > 0){
 | 
	
		
			
				|  |  | +                    calenderDetail.setExpectMemberAmount(courseIncome);
 | 
	
		
			
				|  |  | +                    calenderDetail.setActualAmount(calenderMember.getActualAmount().subtract(courseIncome));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }else {
 | 
	
		
			
				|  |  | +                calenderDetail.setExpectMemberAmount(calenderMember.getActualAmount());
 | 
	
		
			
				|  |  | +                calenderDetail.setActualAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public List<FeeStudentDto> queryFeeStudents(String musicGroupId, String search, Integer subjectId) {
 | 
	
		
			
				|  |  |          return musicGroupStudentFeeDao.queryFeeStudents(musicGroupId, search, subjectId);
 | 
	
	
		
			
				|  | @@ -383,7 +366,8 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetailIdList.add(Long.parseLong(s));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          //是否已排课
 | 
	
		
			
				|  |  | -        List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetailList = musicGroupPaymentStudentCourseDetailDao.queryByMusicGroupPaymentStudentCourseDetailId(musicGroupPaymentCalenderDetailIdList);
 | 
	
		
			
				|  |  | +        List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetailList =
 | 
	
		
			
				|  |  | +                musicGroupPaymentStudentCourseDetailService.queryByMusicGroupPaymentStudentCourseDetailId(musicGroupPaymentCalenderDetailIdList);
 | 
	
		
			
				|  |  |          count = musicGroupPaymentStudentCourseDetailList.stream().filter(e -> e.getUsedCourseMinutes() > 0).count();
 | 
	
		
			
				|  |  |          if (count > 0) {
 | 
	
		
			
				|  |  |              throw new BizException("删除失败:存在已排课的学员");
 | 
	
	
		
			
				|  | @@ -391,11 +375,10 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          int currentNum = musicGroupPaymentCalender.getExpectNum() - details.size();
 | 
	
		
			
				|  |  |          musicGroupPaymentCalender.setExpectNum(currentNum < 0 ? 0 : currentNum);
 | 
	
		
			
				|  |  | -        musicGroupPaymentCalender.setUpdateTime(new Date());
 | 
	
		
			
				|  |  |          musicGroupPaymentCalenderDao.update(musicGroupPaymentCalender);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          musicGroupPaymentCalenderDetailDao.batchDel(musicGroupPaymentCalenderDetailIds);
 | 
	
		
			
				|  |  | -        musicGroupPaymentStudentCourseDetailDao.deleteByMusicGroupPaymentCalenderDetailId(musicGroupPaymentCalenderDetailIdList);
 | 
	
		
			
				|  |  | +        musicGroupPaymentStudentCourseDetailService.deleteByMusicGroupPaymentCalenderDetailId(musicGroupPaymentCalenderDetailIdList);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -499,105 +482,51 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -    public void addCalenderDetail(StudentPaymentOrder studentPaymentOrder, StudentRegistration studentRegistration) {
 | 
	
		
			
				|  |  | -        Date nowDate = new Date();
 | 
	
		
			
				|  |  | -        Integer tenantId = studentPaymentOrder.getTenantId();
 | 
	
		
			
				|  |  | +    public MusicGroupPaymentCalenderDetail addCalenderDetail(StudentPaymentOrder studentPaymentOrder) {
 | 
	
		
			
				|  |  |          //缴费详情 calender detail
 | 
	
		
			
				|  |  | -        MusicGroupPaymentCalender musicGroupPaymentCalender = musicGroupPaymentCalenderService.get(studentPaymentOrder.getCalenderId());
 | 
	
		
			
				|  |  | -        Long currentPaymentCalenderId = studentPaymentOrder.getCalenderId();
 | 
	
		
			
				|  |  | +        Long calenderId = studentPaymentOrder.getCalenderId();
 | 
	
		
			
				|  |  | +        MusicGroupPaymentCalender musicGroupPaymentCalender = musicGroupPaymentCalenderService.get(calenderId);
 | 
	
		
			
				|  |  |          //查询缴费项目关联的订单
 | 
	
		
			
				|  |  | -        List<StudentPaymentOrder> orderList = studentPaymentOrderDao.findByCalenderId(currentPaymentCalenderId, studentPaymentOrder.getUserId());
 | 
	
		
			
				|  |  | +        List<StudentPaymentOrder> orderList = studentPaymentOrderDao.findByCalenderId(calenderId, studentPaymentOrder.getUserId());
 | 
	
		
			
				|  |  |          if (orderList.size() == 1) {
 | 
	
		
			
				|  |  | -            // 更新实际缴费人数
 | 
	
		
			
				|  |  | -            if (musicGroupPaymentCalender.getActualNum() == null) {
 | 
	
		
			
				|  |  | -                musicGroupPaymentCalender.setActualNum(1);
 | 
	
		
			
				|  |  | -            } else {
 | 
	
		
			
				|  |  | -                musicGroupPaymentCalender.setActualNum(musicGroupPaymentCalender.getActualNum() + 1);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +            // 更新缴费人数
 | 
	
		
			
				|  |  | +            Integer expectNum = 0;
 | 
	
		
			
				|  |  |              if (musicGroupPaymentCalender.getPaymentType() == MusicGroupPaymentCalender.PaymentType.MUSIC_APPLY) {
 | 
	
		
			
				|  |  | -                if (musicGroupPaymentCalender.getExpectNum() == null) {
 | 
	
		
			
				|  |  | -                    musicGroupPaymentCalender.setExpectNum(1);
 | 
	
		
			
				|  |  | -                } else {
 | 
	
		
			
				|  |  | -                    musicGroupPaymentCalender.setExpectNum(musicGroupPaymentCalender.getExpectNum() + 1);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | +                expectNum = 1;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            musicGroupPaymentCalender.setUpdateTime(nowDate);
 | 
	
		
			
				|  |  | -            musicGroupPaymentCalenderDao.update(musicGroupPaymentCalender);
 | 
	
		
			
				|  |  | +            musicGroupPaymentCalenderDao.updatePaymentNum(studentPaymentOrder.getCalenderId(),1,expectNum);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = musicGroupPaymentCalenderDetailDao.findByCalenderIdAndUserId(currentPaymentCalenderId, studentPaymentOrder.getUserId());
 | 
	
		
			
				|  |  | +        Date date = new Date();
 | 
	
		
			
				|  |  | +        MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = musicGroupPaymentCalenderDetailDao.findByCalenderIdAndUserId(calenderId, studentPaymentOrder.getUserId());
 | 
	
		
			
				|  |  | +        //只有报名订单,缴费详情才会是null
 | 
	
		
			
				|  |  |          if (musicGroupPaymentCalenderDetail == null) {
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
 | 
	
		
			
				|  |  | -            musicGroupPaymentCalenderDetail.setTenantId(tenantId);
 | 
	
		
			
				|  |  | +            musicGroupPaymentCalenderDetail.setTenantId(studentPaymentOrder.getTenantId());
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalender.getId());
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail.setUserId(studentPaymentOrder.getUserId());
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail.setResponsibleUserId(musicGroupPaymentCalender.getOperator());
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail.setPaymentStatus(PAID_COMPLETED);
 | 
	
		
			
				|  |  | -            musicGroupPaymentCalenderDetail.setPayTime(nowDate);
 | 
	
		
			
				|  |  | +            musicGroupPaymentCalenderDetail.setPayTime(date);
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail.setPaymentOrderId(studentPaymentOrder.getId());
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail.setUseInCourse(0);
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail.setOpen(1);
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail.setUserStatus(null);
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail.setDeadlinePaymentDate(musicGroupPaymentCalender.getDeadlinePaymentDate());
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail.setStartPaymentDate(musicGroupPaymentCalender.getStartPaymentDate());
 | 
	
		
			
				|  |  | -            musicGroupPaymentCalenderDetail.setCreateTime(nowDate);
 | 
	
		
			
				|  |  | -            musicGroupPaymentCalenderDetail.setUpdateTime(nowDate);
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetailDao.insert(musicGroupPaymentCalenderDetail);
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail.setPaymentStatus(PAID_COMPLETED);
 | 
	
		
			
				|  |  | -            musicGroupPaymentCalenderDetail.setPayTime(nowDate);
 | 
	
		
			
				|  |  | +            musicGroupPaymentCalenderDetail.setPayTime(date);
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetail.setPaymentOrderId(studentPaymentOrder.getId());
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDetailDao.update(musicGroupPaymentCalenderDetail);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          //保存、更新云教练缴费项目预收
 | 
	
		
			
				|  |  | -        operatingReportCloudService.updateSet(musicGroupPaymentCalender,studentPaymentOrder.getId());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        Boolean cloudTeacherPaymentFlag = false;
 | 
	
		
			
				|  |  | -        if(musicGroupPaymentCalender.getCloudTeacherPaymentFlag()){
 | 
	
		
			
				|  |  | -            List<MusicGroupPaymentCalenderCourseSettings> courseSettings = musicGroupPaymentCalenderCourseSettingsDao.queryCalenderCourseSettings(musicGroupPaymentCalender.getId());
 | 
	
		
			
				|  |  | -            BigDecimal reduce = courseSettings.stream().map(e -> e.getCourseCurrentPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
 | 
	
		
			
				|  |  | -            cloudTeacherPaymentFlag = reduce.compareTo(BigDecimal.ZERO) == 0;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        operatingReportCloudService.updateSet(musicGroupPaymentCalender,musicGroupPaymentCalenderDetail.getExpectMemberAmount());
 | 
	
		
			
				|  |  |          //续费项目加学员时就生成了课程时长,报名项目在缴费成功后才需要添加课程时长
 | 
	
		
			
				|  |  | -        if (musicGroupPaymentCalender.getPaymentType() == MusicGroupPaymentCalender.PaymentType.MUSIC_APPLY) {
 | 
	
		
			
				|  |  | -            List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetails = new ArrayList<>();
 | 
	
		
			
				|  |  | -            List<String> orderDetailTypes = studentPaymentOrderDetailDao.getOrderDetailType(studentPaymentOrder.getId());
 | 
	
		
			
				|  |  | -            List<MusicGroupPaymentCalenderCourseSettings> courseSettingsList = musicGroupPaymentCalenderCourseSettingsDao
 | 
	
		
			
				|  |  | -                    .getWithPaymentCalender(musicGroupPaymentCalender.getId());
 | 
	
		
			
				|  |  | -            for (MusicGroupPaymentCalenderCourseSettings courseSetting : courseSettingsList) {
 | 
	
		
			
				|  |  | -                if (musicGroupPaymentCalender.getPayUserType().equals(MusicGroupPaymentCalender.PayUserType.STUDENT)
 | 
	
		
			
				|  |  | -                        && !orderDetailTypes.contains(courseSetting.getCourseType().getCode())) {
 | 
	
		
			
				|  |  | -                    continue;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                if (courseSetting.getCourseTotalMinuties() == null || courseSetting.getCourseTotalMinuties() == 0) {
 | 
	
		
			
				|  |  | -                    continue;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                MusicGroupPaymentStudentCourseDetail musicGroupPaymentStudentCourseDetail = new MusicGroupPaymentStudentCourseDetail();
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setMusicGroupId(musicGroupPaymentCalender.getMusicGroupId());
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalender.getId());
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderDetailId(musicGroupPaymentCalenderDetail.getId());
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setUserId(studentPaymentOrder.getUserId());
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setCourseType(courseSetting.getCourseType());
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setTotalCourseMinutes(courseSetting.getCourseTotalMinuties());
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setSubCourseMinutes(courseSetting.getCourseTotalMinuties());
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setCourseOriginalPrice(courseSetting.getCourseOriginalPrice());
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setCourseCurrentPrice(courseSetting.getCourseCurrentPrice());
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setSubCourseOriginalPrice(courseSetting.getCourseOriginalPrice());
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setSubCourseCurrentPrice(courseSetting.getCourseCurrentPrice());
 | 
	
		
			
				|  |  | -                if(musicGroupPaymentCalender.getPayUserType() == SCHOOL){
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setCourseCurrentPrice(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | -                    musicGroupPaymentStudentCourseDetail.setSubCourseCurrentPrice(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(0);
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setCreateTime(nowDate);
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setUpdateTime(nowDate);
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setTenantId(tenantId);
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetail.setCloudTeacherPaymentFlag(cloudTeacherPaymentFlag);
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetails.add(musicGroupPaymentStudentCourseDetail);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (musicGroupPaymentStudentCourseDetails.size() > 0) {
 | 
	
		
			
				|  |  | -                musicGroupPaymentStudentCourseDetailDao.batchInsert(musicGroupPaymentStudentCourseDetails);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        musicGroupPaymentStudentCourseDetailService.batchInsert(studentPaymentOrder.getUserId(),
 | 
	
		
			
				|  |  | +                musicGroupPaymentCalender,
 | 
	
		
			
				|  |  | +                musicGroupPaymentCalenderDetail.getId(),
 | 
	
		
			
				|  |  | +                studentPaymentOrder.getId());
 | 
	
		
			
				|  |  | +        return musicGroupPaymentCalenderDetail;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |