|  | @@ -1,66 +1,18 @@
 | 
	
		
			
				|  |  |  package com.ym.mec.biz.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -import java.io.IOException;
 | 
	
		
			
				|  |  | -import java.math.BigDecimal;
 | 
	
		
			
				|  |  | -import java.util.ArrayList;
 | 
	
		
			
				|  |  | -import java.util.Arrays;
 | 
	
		
			
				|  |  | -import java.util.Date;
 | 
	
		
			
				|  |  | -import java.util.HashMap;
 | 
	
		
			
				|  |  | -import java.util.HashSet;
 | 
	
		
			
				|  |  | -import java.util.Iterator;
 | 
	
		
			
				|  |  | -import java.util.List;
 | 
	
		
			
				|  |  | -import java.util.Map;
 | 
	
		
			
				|  |  | -import java.util.Set;
 | 
	
		
			
				|  |  | -import java.util.stream.Collectors;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import javax.annotation.Resource;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.*;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.*;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.FeeType;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | -import org.slf4j.Logger;
 | 
	
		
			
				|  |  | -import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  | -import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | -import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | -import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  |  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.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.StudentAddDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.StudentFeeDetailDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.StudentInfo;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.enums.DealStatusEnum;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.enums.GoodsType;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.enums.GroupType;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.*;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.ClassGroupService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.ClassGroupStudentMapperService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.ContractService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.CourseScheduleService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.StudentPaymentOrderService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.StudentRegistrationService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.SubjectService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.SysConfigService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.SysMessageService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.SysUserCashAccountDetailService;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.SysUserCashAccountService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.dal.BaseDAO;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.entity.ImGroupMember;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.entity.ImGroupModel;
 | 
	
	
		
			
				|  | @@ -74,6 +26,18 @@ import com.ym.mec.im.ImFeignService;
 | 
	
		
			
				|  |  |  import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.collection.MapUtil;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.http.HttpUtil;
 | 
	
		
			
				|  |  | +import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | +import org.slf4j.Logger;
 | 
	
		
			
				|  |  | +import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  | +import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | +import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | +import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import javax.annotation.Resource;
 | 
	
		
			
				|  |  | +import java.io.IOException;
 | 
	
		
			
				|  |  | +import java.math.BigDecimal;
 | 
	
		
			
				|  |  | +import java.util.*;
 | 
	
		
			
				|  |  | +import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, StudentRegistration> implements StudentRegistrationService {
 | 
	
	
		
			
				|  | @@ -535,7 +499,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |          String musicGroupId = studentRegistration.getMusicGroupId();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          StudentRegistration phoneAndMusicGroupId = studentRegistrationDao.getByPhoneAndMusicGroupId(musicGroupId, studentRegistration.getParentsPhone());
 | 
	
		
			
				|  |  | -        if (phoneAndMusicGroupId != null && phoneAndMusicGroupId.getMusicGroupStatus() != ClassGroupStudentStatusEnum.QUIT) {
 | 
	
		
			
				|  |  | +        if (phoneAndMusicGroupId != null && phoneAndMusicGroupId.getMusicGroupStatus() != StudentMusicGroupStatusEnum.QUIT && phoneAndMusicGroupId.getMusicGroupStatus() != StudentMusicGroupStatusEnum.APPLY) {
 | 
	
		
			
				|  |  |              throw new BizException("该学员已存在");
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              SysUser sysUser = studentRegistrationDao.getSysUserByPhone(studentRegistration.getParentsPhone());
 | 
	
	
		
			
				|  | @@ -592,10 +556,14 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            MusicGroupStudentFee studentFeeDaoByUser = musicGroupStudentFeeDao.findByUser(userId, musicGroupId);
 | 
	
		
			
				|  |  | +            if(studentFeeDaoByUser != null){
 | 
	
		
			
				|  |  | +                throw new BizException("该学员已存在");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              studentRegistration.setActualSubjectId(studentRegistration.getSubjectId());
 | 
	
		
			
				|  |  |              studentRegistration.setUserId(userId);
 | 
	
		
			
				|  |  |              studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN);
 | 
	
		
			
				|  |  | -            studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.NORMAL);
 | 
	
		
			
				|  |  | +            studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.APPLY);
 | 
	
		
			
				|  |  |              studentRegistration.setTemporaryCourseFee(studentAddDto.getTemporaryCourseFee());
 | 
	
		
			
				|  |  |              //学生报名表
 | 
	
		
			
				|  |  |              Set<Integer> roleIds = new HashSet<>(1);
 | 
	
	
		
			
				|  | @@ -653,13 +621,14 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |                  paymentStatus = MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED;
 | 
	
		
			
				|  |  |                  studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
 | 
	
		
			
				|  |  |                  studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
 | 
	
		
			
				|  |  | +                studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
 | 
	
		
			
				|  |  |                  studentPaymentOrder.setActualAmount(reduce);
 | 
	
		
			
				|  |  |                  studentPaymentOrder.setPayTime(date);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              MusicGroupStudentFee musicGroupStudentFee = new MusicGroupStudentFee(musicGroupId,
 | 
	
		
			
				|  |  |                      userId, studentRegistration.getSubjectId(), studentAddDto.getCourseFee(),
 | 
	
		
			
				|  |  |                      null, studentAddDto.getTemporaryCourseFee(), paymentStatus);
 | 
	
		
			
				|  |  | -            if(musicGroup.getFeeType() != FeeType.OFFLINE && musicGroupStudentFee.getTemporaryCourseFee().doubleValue() * 100 == 0){
 | 
	
		
			
				|  |  | +            if(musicGroup.getFeeType() != null && musicGroup.getFeeType() != MusicGroupPaymentCalender.FeeType.OFFLINE && musicGroupStudentFee.getTemporaryCourseFee().doubleValue() * 100 == 0){
 | 
	
		
			
				|  |  |              	musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              musicGroupStudentFeeDao.insert(musicGroupStudentFee);
 | 
	
	
		
			
				|  | @@ -807,7 +776,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |                  studentRegistration.setTemporaryCourseFee(new BigDecimal(0));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
 | 
	
		
			
				|  |  | -            studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.NORMAL);
 | 
	
		
			
				|  |  | +            studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
 | 
	
		
			
				|  |  |              studentRegistrationDao.update(studentRegistration);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              //进行中乐团加入学生缴费
 | 
	
	
		
			
				|  | @@ -820,7 +789,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |                  musicGroupStudentFee.setLatestPaidTime(nowDate);
 | 
	
		
			
				|  |  |                  musicGroupStudentFee.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
 | 
	
		
			
				|  |  |                  musicGroupStudentFee.setTemporaryCourseFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | -                if(musicGroup.getFeeType() != FeeType.OFFLINE){
 | 
	
		
			
				|  |  | +                if(musicGroup.getFeeType() != null && musicGroup.getFeeType() != MusicGroupPaymentCalender.FeeType.OFFLINE){
 | 
	
		
			
				|  |  |                  	musicGroupStudentFee.setRemainNetworkClassTimes(musicGroupStudentFee.getRemainNetworkClassTimes() + 1);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  musicGroupStudentFee.setUpdateTime(nowDate);
 |