|  | @@ -17,6 +17,7 @@ import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  import javax.annotation.Resource;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.enums.CertificateTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.*;
 | 
	
		
			
				|  |  |  import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.slf4j.Logger;
 | 
	
		
			
				|  |  |  import org.slf4j.LoggerFactory;
 | 
	
	
		
			
				|  | @@ -56,29 +57,6 @@ import com.ym.mec.biz.dal.dto.StudentFeeDetailDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.StudentInfo;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.StudentMusicDetailDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.StudentMusicGroupDto;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.ClassGroup;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.CooperationOrgan;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.CourseSchedule;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.Goods;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.MusicGroup;
 | 
	
		
			
				|  |  | -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.MusicGroupPaymentStudentCourseDetail;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.Student;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.StudentCourseFeeDetail;
 | 
	
		
			
				|  |  | -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.enums.ClassGroupStudentStatusEnum;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 | 
	
	
		
			
				|  | @@ -322,7 +300,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          StudentRegistration hasReg = getByPhoneAndMusicGroupId(studentRegistration.getMusicGroupId(), studentRegistration.getParentsPhone());
 | 
	
		
			
				|  |  | -        if (hasReg != null) {
 | 
	
		
			
				|  |  | +        if (hasReg != null && hasReg.getMusicGroupStatus() != StudentMusicGroupStatusEnum.QUIT) {
 | 
	
		
			
				|  |  |              throw new BizException("该乐团您已报名");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -352,18 +330,24 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |          studentRegistration.setUpdateTime(date);
 | 
	
		
			
				|  |  |          studentRegistration.setUserId(sysUser.getId());
 | 
	
		
			
				|  |  |          studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.APPLY);
 | 
	
		
			
				|  |  | -        studentRegistrationDao.insert(studentRegistration);
 | 
	
		
			
				|  |  | +        if(hasReg != null){
 | 
	
		
			
				|  |  | +            studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
 | 
	
		
			
				|  |  | +            studentRegistration.setId(hasReg.getId());
 | 
	
		
			
				|  |  | +            studentRegistrationDao.update(studentRegistration);
 | 
	
		
			
				|  |  | +        }else {
 | 
	
		
			
				|  |  | +            studentRegistrationDao.insert(studentRegistration);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 增加报名学生数
 | 
	
		
			
				|  |  | -        musicGroupSubjectPlanService.addApplyStudentNum(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId(), 1);
 | 
	
		
			
				|  |  | +        musicGroupSubjectPlanService.addApplyStudentNum(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId(), 1);
 | 
	
		
			
				|  |  |          // 报名成功后,发送短信
 | 
	
		
			
				|  |  |          // String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + studentRegistration.getMusicGroupId();
 | 
	
		
			
				|  |  |          String serverPhone = sysConfigDao.findConfigValue(SysConfigService.SERVER_PHONE);
 | 
	
		
			
				|  |  | -        Subject subject = subjectDao.get(studentRegistration.getActualSubjectId());
 | 
	
		
			
				|  |  | +        Subject subject = subjectDao.get(studentRegistration.getSubjectId());
 | 
	
		
			
				|  |  |          // MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          Map<Integer, String> map = new HashMap<>(1);
 | 
	
		
			
				|  |  | -        map.put(studentRegistration.getUserId(), studentRegistration.getParentsPhone());
 | 
	
		
			
				|  |  | +        map.put(sysUser.getId(), studentRegistration.getParentsPhone());
 | 
	
		
			
				|  |  |          sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_APPLY_MESSAGE, map, null, 0, "", "",
 | 
	
		
			
				|  |  |                  studentRegistration.getParentsName(), subject.getName(), serverPhone);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -841,16 +825,20 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -    public void insertStudent(String studentIds,String oldMusicGroupId,String newMusicGroupId,BigDecimal masterTotalPrice){
 | 
	
		
			
				|  |  | -        if(oldMusicGroupId == newMusicGroupId){
 | 
	
		
			
				|  |  | -            return;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +    public void insertStudent(String studentIds,String oldMusicGroupId,String newMusicGroupId,Map<Integer, List<MusicGroupPaymentCalenderStudentDetail>> collect){
 | 
	
		
			
				|  |  |          SysUser sysUser1 = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  |          //获取旧乐团学员注册信息
 | 
	
		
			
				|  |  |          List<StudentRegistration> studentRegistrations = studentRegistrationDao.queryByUserIdsAndMusicGroupId(studentIds,oldMusicGroupId);
 | 
	
		
			
				|  |  |          List<StudentCourseFeeDetail> studentCourseFeeDetails = new ArrayList<>();
 | 
	
		
			
				|  |  |          BigDecimal amount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  |          for (StudentRegistration studentRegistration : studentRegistrations) {
 | 
	
		
			
				|  |  | +            BigDecimal masterTotalPrice = collect.get(studentRegistration.getUserId()).stream().map(e->e.getCourseCurrentPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
 | 
	
		
			
				|  |  | +            if(masterTotalPrice.doubleValue() > studentRegistration.getSurplusCourseFee().doubleValue()){
 | 
	
		
			
				|  |  | +                throw new BizException("用户信息发生变动,请重新提交");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if(oldMusicGroupId == newMusicGroupId){
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              //记录课程余额消费日志
 | 
	
		
			
				|  |  |              if(studentRegistration.getSurplusCourseFee().doubleValue() > 0d && masterTotalPrice.doubleValue() > 0d){
 | 
	
		
			
				|  |  |                  StudentCourseFeeDetail studentCourseFeeDetail = new StudentCourseFeeDetail();
 | 
	
	
		
			
				|  | @@ -875,6 +863,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |              StudentRegistration registration = studentRegistrationDao.getByPhoneAndMusicGroupId(newMusicGroupId, studentRegistration.getParentsPhone());
 | 
	
		
			
				|  |  |              if (registration != null) {
 | 
	
		
			
				|  |  |                  //修改剩余课程余额
 | 
	
		
			
				|  |  | +                registration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
 | 
	
		
			
				|  |  |                  registration.setSurplusCourseFee(registration.getSurplusCourseFee().add(amount));
 | 
	
		
			
				|  |  |                  studentRegistrationDao.update(registration);
 | 
	
		
			
				|  |  |              }else {
 | 
	
	
		
			
				|  | @@ -1618,6 +1607,11 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public Boolean batchDelRegs(String musicGroupId, List<Integer> userIds) {
 | 
	
		
			
				|  |  |          List<StudentRegistration> registrations = studentRegistrationDao.findStudentListByUserIdList(musicGroupId, userIds);
 | 
	
		
			
				|  |  | +        for (StudentRegistration registration : registrations) {
 | 
	
		
			
				|  |  | +            if(registration.getPaymentStatus().equals(PaymentStatusEnum.OPEN)||registration.getPaymentStatus().equals(PaymentStatusEnum.YES)){
 | 
	
		
			
				|  |  | +                throw new BizException("开启缴费/已缴费的学员不能删除");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          if (registrations.size() <= 0) {
 | 
	
		
			
				|  |  |              throw new BizException("删除的学员不存在,请核查");
 | 
	
		
			
				|  |  |          }
 |