|  | @@ -122,6 +122,10 @@ import com.ym.mec.util.collection.MapUtil;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.date.DateUtil;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.http.HttpUtil;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.NON_PAYMENT;
 | 
	
		
			
				|  |  | +import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED;
 | 
	
		
			
				|  |  | +import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, StudentRegistration> implements StudentRegistrationService {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -783,9 +787,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |              BigDecimal reduce = studentPaymentOrderDetails.stream().map(StudentPaymentOrderDetail::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
 | 
	
		
			
				|  |  |              MusicGroupStudentFee.PaymentStatus paymentStatus = MusicGroupStudentFee.PaymentStatus.NON_PAYMENT;
 | 
	
		
			
				|  |  |              if (reduce.compareTo(BigDecimal.ZERO) == 0) {
 | 
	
		
			
				|  |  | -                paymentStatus = MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED;
 | 
	
		
			
				|  |  | +                paymentStatus = PAID_COMPLETED;
 | 
	
		
			
				|  |  |                  studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
 | 
	
		
			
				|  |  | -                studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
 | 
	
		
			
				|  |  | +                studentRegistration.setPaymentStatus(YES);
 | 
	
		
			
				|  |  |                  studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
 | 
	
		
			
				|  |  |                  studentPaymentOrder.setActualAmount(reduce);
 | 
	
		
			
				|  |  |                  studentPaymentOrder.setPayTime(date);
 | 
	
	
		
			
				|  | @@ -831,6 +835,66 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +    public void insertStudent(String studentIds,String oldMusicGroupId,String newMusicGroupId,BigDecimal masterTotalPrice){
 | 
	
		
			
				|  |  | +        SysUser sysUser1 = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  | +        //获取旧乐团学员注册信息
 | 
	
		
			
				|  |  | +        List<StudentRegistration> studentRegistrations = studentRegistrationDao.queryByUserIdsAndMusicGroupId(studentIds,oldMusicGroupId);
 | 
	
		
			
				|  |  | +        List<StudentCourseFeeDetail> studentCourseFeeDetails = new ArrayList<>();
 | 
	
		
			
				|  |  | +        for (StudentRegistration studentRegistration : studentRegistrations) {
 | 
	
		
			
				|  |  | +            //用户是否在主乐团
 | 
	
		
			
				|  |  | +            StudentRegistration phoneAndMusicGroupId = studentRegistrationDao.getByPhoneAndMusicGroupId(newMusicGroupId, studentRegistration.getParentsPhone());
 | 
	
		
			
				|  |  | +            if (phoneAndMusicGroupId != null && phoneAndMusicGroupId.getMusicGroupStatus() != StudentMusicGroupStatusEnum.QUIT && phoneAndMusicGroupId.getMusicGroupStatus() != StudentMusicGroupStatusEnum.APPLY) {
 | 
	
		
			
				|  |  | +                //该学员已存在
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            SysUser sysUser = studentRegistrationDao.getSysUserByPhone(studentRegistration.getParentsPhone());
 | 
	
		
			
				|  |  | +            if (StringUtils.isNotEmpty(sysUser.getUsername())) {
 | 
	
		
			
				|  |  | +                if (!sysUser.getUsername().equals(studentRegistration.getName())) {
 | 
	
		
			
				|  |  | +                    //账户已被注册
 | 
	
		
			
				|  |  | +                    continue;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            //当前学员是否以前存在过当前乐团
 | 
	
		
			
				|  |  | +            studentRegistration.setMusicGroupId(newMusicGroupId);
 | 
	
		
			
				|  |  | +            if (phoneAndMusicGroupId != null) {
 | 
	
		
			
				|  |  | +                studentRegistration.setId(phoneAndMusicGroupId.getId());
 | 
	
		
			
				|  |  | +                studentRegistrationDao.update(studentRegistration);
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                studentRegistrationDao.insertBasic(studentRegistration);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            //记录课程余额消费日志
 | 
	
		
			
				|  |  | +            if(studentRegistration.getSurplusCourseFee().doubleValue() > 0d){
 | 
	
		
			
				|  |  | +                StudentCourseFeeDetail studentCourseFeeDetail = new StudentCourseFeeDetail();
 | 
	
		
			
				|  |  | +                if(studentRegistration.getSurplusCourseFee().doubleValue() > masterTotalPrice.doubleValue()){
 | 
	
		
			
				|  |  | +                    studentCourseFeeDetail.setAmount(masterTotalPrice);
 | 
	
		
			
				|  |  | +                    studentCourseFeeDetail.setSurplusCourseFee(studentRegistration.getSurplusCourseFee().subtract(masterTotalPrice));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                studentCourseFeeDetail.setAmount(studentRegistration.getSurplusCourseFee());
 | 
	
		
			
				|  |  | +                studentCourseFeeDetail.setSurplusCourseFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                studentCourseFeeDetail.setMemo("跨团合班消费");
 | 
	
		
			
				|  |  | +                studentCourseFeeDetail.setOperator(sysUser1.getId());
 | 
	
		
			
				|  |  | +                studentCourseFeeDetails.add(studentCourseFeeDetail);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            MusicGroupStudentFee studentFeeDaoByUser = musicGroupStudentFeeDao.findByUser(studentRegistration.getUserId(), newMusicGroupId);
 | 
	
		
			
				|  |  | +            if (studentFeeDaoByUser != null) {
 | 
	
		
			
				|  |  | +                //该学员已存在
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            //增加报名学生数
 | 
	
		
			
				|  |  | +            musicGroupSubjectPlanService.addApplyStudentNum(newMusicGroupId, studentRegistration.getSubjectId(), 1);
 | 
	
		
			
				|  |  | +            //新增Fee表
 | 
	
		
			
				|  |  | +            MusicGroupStudentFee musicGroupStudentFee = new MusicGroupStudentFee(newMusicGroupId,
 | 
	
		
			
				|  |  | +                    studentRegistration.getUserId(), studentRegistration.getSubjectId(),BigDecimal.ZERO,
 | 
	
		
			
				|  |  | +                    null, studentRegistration.getTemporaryCourseFee(), studentRegistration.getPaymentStatus()==YES?PAID_COMPLETED:NON_PAYMENT);
 | 
	
		
			
				|  |  | +            musicGroupStudentFeeDao.insert(musicGroupStudentFee);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if(studentCourseFeeDetails.size() > 0){
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      private List<CourseSchedule> addStudent(Integer classGroupId, Integer userId, Date date, List<CourseSchedule> courseScheduleList) {
 | 
	
		
			
				|  |  |          ClassGroup classGroup = classGroupDao.get(classGroupId);
 | 
	
		
			
				|  |  |          ClassGroupStudentMapper classGroupStudentMapper = classGroupStudentMapperDao.findClassStudentMapperByUserIdAndClassGroupId(userId, classGroupId, null);
 | 
	
	
		
			
				|  | @@ -931,7 +995,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |              musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          //更新学生的缴费记录状态
 | 
	
		
			
				|  |  | -        calenderDetail.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
 | 
	
		
			
				|  |  | +        calenderDetail.setPaymentStatus(PAID_COMPLETED);
 | 
	
		
			
				|  |  |          calenderDetail.setActualAmount(calenderDetail.getExpectAmount());
 | 
	
		
			
				|  |  |          calenderDetail.setPayTime(date);
 | 
	
		
			
				|  |  |          calenderDetail.setUpdateTime(date);
 | 
	
	
		
			
				|  | @@ -957,7 +1021,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |          //成功报名状态变更
 | 
	
		
			
				|  |  |          StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(studentPaymentOrder.getUserId(), studentPaymentOrder.getMusicGroupId());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if (studentRegistration.getPaymentStatus().equals(PaymentStatusEnum.YES)) {
 | 
	
		
			
				|  |  | +        if (studentRegistration.getPaymentStatus().equals(YES)) {
 | 
	
		
			
				|  |  |              return studentPaymentOrder;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
 | 
	
	
		
			
				|  | @@ -968,7 +1032,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |              if (studentRegistration.getTemporaryCourseFee() != null) {
 | 
	
		
			
				|  |  |                  studentRegistration.setTemporaryCourseFee(new BigDecimal(0));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
 | 
	
		
			
				|  |  | +            studentRegistration.setPaymentStatus(YES);
 | 
	
		
			
				|  |  |              studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              List<StudentPaymentOrderDetail> orderDetails = studentPaymentOrderDetailService.getOrderDetail(studentPaymentOrder.getId());
 | 
	
	
		
			
				|  | @@ -998,7 +1062,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |                  waitPayOrder.setStatus(DealStatusEnum.CLOSE);
 | 
	
		
			
				|  |  |                  studentPaymentOrderService.update(waitPayOrder);
 | 
	
		
			
				|  |  |                  musicGroupStudentFee.setLatestPaidTime(nowDate);
 | 
	
		
			
				|  |  | -                musicGroupStudentFee.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
 | 
	
		
			
				|  |  | +                musicGroupStudentFee.setPaymentStatus(PAID_COMPLETED);
 | 
	
		
			
				|  |  |                  musicGroupStudentFee.setTemporaryCourseFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  |                  musicGroupStudentFee.setUpdateTime(nowDate);
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -1109,7 +1173,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |          Date nowDate = new Date();
 | 
	
		
			
				|  |  |          MusicGroupStudentFee musicGroupStudentFee = new MusicGroupStudentFee();
 | 
	
		
			
				|  |  |          musicGroupStudentFee.setLatestPaidTime(nowDate);
 | 
	
		
			
				|  |  | -        musicGroupStudentFee.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
 | 
	
		
			
				|  |  | +        musicGroupStudentFee.setPaymentStatus(PAID_COMPLETED);
 | 
	
		
			
				|  |  |          musicGroupStudentFee.setUpdateTime(nowDate);
 | 
	
		
			
				|  |  |          musicGroupStudentFee.setContinuousAbsenteeismTimes(0);
 | 
	
		
			
				|  |  |          musicGroupStudentFee.setSubjectId(studentRegistration.getActualSubjectId());
 | 
	
	
		
			
				|  | @@ -1177,7 +1241,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  |                      musicGroupPaymentCalenderDetail.setActualAmount(courseTotalPrice);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                musicGroupPaymentCalenderDetail.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
 | 
	
		
			
				|  |  | +                musicGroupPaymentCalenderDetail.setPaymentStatus(PAID_COMPLETED);
 | 
	
		
			
				|  |  |                  musicGroupPaymentCalenderDetail.setPayTime(nowDate);
 | 
	
		
			
				|  |  |                  musicGroupPaymentCalenderDetail.setPaymentOrderId(studentPaymentOrder.getId());
 | 
	
		
			
				|  |  |                  musicGroupPaymentCalenderDetail.setUseInCourse(0);
 |