| 
					
				 | 
			
			
				@@ -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); 
			 |