|  | @@ -81,7 +81,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -	public void updateExpectAmount(BigDecimal expectAmount,String ids) {
 | 
	
		
			
				|  |  | +	public void updateExpectAmount(BigDecimal expectAmount,BigDecimal expectMemberAmount,String ids) {
 | 
	
		
			
				|  |  |  		if(expectAmount == null || StringUtils.isEmpty(ids)){
 | 
	
		
			
				|  |  |  			throw new BizException("参数校验失败");
 | 
	
		
			
				|  |  |  		}
 | 
	
	
		
			
				|  | @@ -108,7 +108,8 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  			e.setUpdateTime(date);
 | 
	
		
			
				|  |  |  			e.setExpectAmount(expectAmount);
 | 
	
		
			
				|  |  | -			if(expectAmount.doubleValue() > 0){
 | 
	
		
			
				|  |  | +			e.setExpectMemberAmount(expectMemberAmount);
 | 
	
		
			
				|  |  | +			if(expectAmount.doubleValue() > 0 || expectMemberAmount.doubleValue() > 0){
 | 
	
		
			
				|  |  |  				if((e.getOpen() != null && e.getOpen() == 1) || calender.getStatus() == PaymentCalenderStatusEnum.OPEN){
 | 
	
		
			
				|  |  |  					studentIds.add(e.getUserId());
 | 
	
		
			
				|  |  |  				}
 | 
	
	
		
			
				|  | @@ -119,7 +120,8 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  					cloudTeacherOrder.setOrganId(musicGroup.getOrganId());
 | 
	
		
			
				|  |  |  					cloudTeacherOrder.setType(2);
 | 
	
		
			
				|  |  |  					cloudTeacherOrder.setTime(calender.getMemberValidDate());
 | 
	
		
			
				|  |  | -					cloudTeacherOrder.setAmount(expectAmount);
 | 
	
		
			
				|  |  | +					//只用会员价格
 | 
	
		
			
				|  |  | +					cloudTeacherOrder.setAmount(expectMemberAmount);
 | 
	
		
			
				|  |  |  					cloudTeacherOrder.setStatus(2);
 | 
	
		
			
				|  |  |  					cloudTeacherOrder.setStartTime(date);
 | 
	
		
			
				|  |  |  					cloudTeacherOrder.setEndTime(DateUtil.addMonths(date,calender.getMemberValidDate()));
 | 
	
	
		
			
				|  | @@ -233,79 +235,6 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -	public void add(Long musicGroupPaymentCalenderId, Integer userId) {
 | 
	
		
			
				|  |  | -		if(musicGroupPaymentCalenderId == null || userId == null){
 | 
	
		
			
				|  |  | -			throw new BizException("参数校验异常");
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		MusicGroupPaymentCalender calender = musicGroupPaymentCalenderService.get(musicGroupPaymentCalenderId);
 | 
	
		
			
				|  |  | -		if(calender == null){
 | 
	
		
			
				|  |  | -			throw new BizException("缴费信息不存在");
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = musicGroupPaymentCalenderDetailDao.findByCalenderIdAndUserId(musicGroupPaymentCalenderId, userId);
 | 
	
		
			
				|  |  | -		if(musicGroupPaymentCalenderDetail != null){
 | 
	
		
			
				|  |  | -			throw new BizException("新增失败,已经存在缴费记录");
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		List<MusicGroupPaymentCalenderCourseSettings> courseSettingsList = musicGroupPaymentCalenderCourseSettingsDao.getWithPaymentCalender(musicGroupPaymentCalenderId);
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		BigDecimal totalPrice = new BigDecimal(0);
 | 
	
		
			
				|  |  | -		if (calender.getPayUserType() == STUDENT) {
 | 
	
		
			
				|  |  | -			totalPrice = calender.getMemberPaymentAmount();
 | 
	
		
			
				|  |  | -			for (MusicGroupPaymentCalenderCourseSettings courseSettings : courseSettingsList) {
 | 
	
		
			
				|  |  | -				// 剔除可选课程
 | 
	
		
			
				|  |  | -				if (courseSettings.getIsStudentOptional() == false) {
 | 
	
		
			
				|  |  | -					totalPrice.add(courseSettings.getCourseCurrentPrice());
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -				totalPrice.add(courseSettings.getCourseCurrentPrice());
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		Date date = new Date();
 | 
	
		
			
				|  |  | -		calender.setUpdateTime(date);
 | 
	
		
			
				|  |  | -		calender.setExpectNum(calender.getExpectNum() + 1);
 | 
	
		
			
				|  |  | -		musicGroupPaymentCalenderService.update(calender);
 | 
	
		
			
				|  |  | -		//生成详情
 | 
	
		
			
				|  |  | -		musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
 | 
	
		
			
				|  |  | -		musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(calender.getId());
 | 
	
		
			
				|  |  | -		musicGroupPaymentCalenderDetail.setCreateTime(date);
 | 
	
		
			
				|  |  | -		musicGroupPaymentCalenderDetail.setExpectAmount(totalPrice);
 | 
	
		
			
				|  |  | -		if (musicGroupPaymentCalenderDetail.getExpectAmount().compareTo(totalPrice) == 0) {
 | 
	
		
			
				|  |  | -			musicGroupPaymentCalenderDetail.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
 | 
	
		
			
				|  |  | -		} else {
 | 
	
		
			
				|  |  | -			musicGroupPaymentCalenderDetail.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.NON_PAYMENT);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		musicGroupPaymentCalenderDetail.setUpdateTime(date);
 | 
	
		
			
				|  |  | -		musicGroupPaymentCalenderDetail.setUserId(userId);
 | 
	
		
			
				|  |  | -		musicGroupPaymentCalenderDetail.setStartPaymentDate(calender.getStartPaymentDate());
 | 
	
		
			
				|  |  | -		musicGroupPaymentCalenderDetail.setDeadlinePaymentDate(calender.getDeadlinePaymentDate());
 | 
	
		
			
				|  |  | -		musicGroupPaymentCalenderDetail.setResponsibleUserId(calender.getOperator());
 | 
	
		
			
				|  |  | -		musicGroupPaymentCalenderDetailDao.insert(musicGroupPaymentCalenderDetail);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetailList = new ArrayList<MusicGroupPaymentStudentCourseDetail>();
 | 
	
		
			
				|  |  | -		MusicGroupPaymentStudentCourseDetail musicGroupPaymentStudentCourseDetail = null;
 | 
	
		
			
				|  |  | -		for (MusicGroupPaymentCalenderCourseSettings courseSettings : courseSettingsList) {
 | 
	
		
			
				|  |  | -			if (courseSettings.getIsStudentOptional() == true || courseSettings.getCourseTotalMinuties() == null || courseSettings.getCourseTotalMinuties() == 0) {
 | 
	
		
			
				|  |  | -				continue;
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			musicGroupPaymentStudentCourseDetail = new MusicGroupPaymentStudentCourseDetail();
 | 
	
		
			
				|  |  | -			musicGroupPaymentStudentCourseDetail.setCourseType(courseSettings.getCourseType());
 | 
	
		
			
				|  |  | -			musicGroupPaymentStudentCourseDetail.setCreateTime(date);
 | 
	
		
			
				|  |  | -			musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalenderId);
 | 
	
		
			
				|  |  | -			musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderDetailId(musicGroupPaymentCalenderDetail.getId());
 | 
	
		
			
				|  |  | -			musicGroupPaymentStudentCourseDetail.setTotalCourseMinutes(courseSettings.getCourseTotalMinuties());
 | 
	
		
			
				|  |  | -			musicGroupPaymentStudentCourseDetail.setUpdateTime(date);
 | 
	
		
			
				|  |  | -			musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(0);
 | 
	
		
			
				|  |  | -			musicGroupPaymentStudentCourseDetail.setUserId(userId);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			musicGroupPaymentStudentCourseDetailList.add(musicGroupPaymentStudentCourseDetail);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		if (musicGroupPaymentStudentCourseDetailList.size() > 0) {
 | 
	
		
			
				|  |  | -			musicGroupPaymentStudentCourseDetailDao.batchInsert(musicGroupPaymentStudentCourseDetailList);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |  	public void batchAdd(Long musicGroupPaymentCalenderId, Set<Integer> userIdList,MusicGroup musicGroup) {
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  |  		MusicGroupPaymentCalender musicGroupPaymentCalender = musicGroupPaymentCalenderService.get(musicGroupPaymentCalenderId);
 | 
	
	
		
			
				|  | @@ -330,14 +259,14 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  		List<MusicGroupPaymentCalenderCourseSettings> courseSettingsList = musicGroupPaymentCalenderCourseSettingsDao.getWithPaymentCalender(musicGroupPaymentCalenderId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//总金额 = 会员费用 + 课程费用
 | 
	
		
			
				|  |  | -		BigDecimal totalPrice = new BigDecimal(0);
 | 
	
		
			
				|  |  | +		BigDecimal expectAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +		BigDecimal expectMemberAmount = musicGroupPaymentCalender.getMemberPaymentAmount();
 | 
	
		
			
				|  |  |  		if (musicGroupPaymentCalender.getPayUserType() == STUDENT) {
 | 
	
		
			
				|  |  | -			totalPrice = musicGroupPaymentCalender.getMemberPaymentAmount();
 | 
	
		
			
				|  |  |  			if (musicGroupPaymentCalender.getPayUserType() == STUDENT) {
 | 
	
		
			
				|  |  |  				for (MusicGroupPaymentCalenderCourseSettings courseSettings : courseSettingsList) {
 | 
	
		
			
				|  |  |  					// 剔除可选课程
 | 
	
		
			
				|  |  |  					if (courseSettings.getIsStudentOptional() == false) {
 | 
	
		
			
				|  |  | -						totalPrice = totalPrice.add(courseSettings.getCourseCurrentPrice());
 | 
	
		
			
				|  |  | +						expectAmount = expectAmount.add(courseSettings.getCourseCurrentPrice());
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
	
		
			
				|  | @@ -352,8 +281,10 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  			musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
 | 
	
		
			
				|  |  |  			musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalenderId);
 | 
	
		
			
				|  |  |  			musicGroupPaymentCalenderDetail.setCreateTime(date);
 | 
	
		
			
				|  |  | -			musicGroupPaymentCalenderDetail.setExpectAmount(totalPrice);
 | 
	
		
			
				|  |  | -			if (musicGroupPaymentCalenderDetail.getExpectAmount().compareTo(totalPrice) == 0) {
 | 
	
		
			
				|  |  | +			musicGroupPaymentCalenderDetail.setExpectAmount(expectAmount);
 | 
	
		
			
				|  |  | +			musicGroupPaymentCalenderDetail.setExpectMemberAmount(expectMemberAmount);
 | 
	
		
			
				|  |  | +			if (expectAmount.doubleValue() == 0d && expectMemberAmount.doubleValue() == 0d) {
 | 
	
		
			
				|  |  | +				musicGroupPaymentCalenderDetail.setActualAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  |  				musicGroupPaymentCalenderDetail.setPaymentStatus(PaymentStatus.PAID_COMPLETED);
 | 
	
		
			
				|  |  |  			} else {
 | 
	
		
			
				|  |  |  				musicGroupPaymentCalenderDetail.setPaymentStatus(PaymentStatus.NON_PAYMENT);
 | 
	
	
		
			
				|  | @@ -375,6 +306,9 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		//更新预计缴费人数
 | 
	
		
			
				|  |  |  		musicGroupPaymentCalender.setExpectNum(musicGroupPaymentCalender.getExpectNum() + userIdList.size());
 | 
	
		
			
				|  |  | +		if (expectAmount.doubleValue() == 0d && expectMemberAmount.doubleValue() == 0d) {
 | 
	
		
			
				|  |  | +			musicGroupPaymentCalender.setActualNum(musicGroupPaymentCalender.getActualNum() + userIdList.size());
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  		musicGroupPaymentCalender.setUpdateTime(date);
 | 
	
		
			
				|  |  |  		musicGroupPaymentCalenderService.update(musicGroupPaymentCalender);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -393,6 +327,8 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  					musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalenderId);
 | 
	
		
			
				|  |  |  					musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderDetailId(userMap.get(studentId).getId());
 | 
	
		
			
				|  |  |  					musicGroupPaymentStudentCourseDetail.setTotalCourseMinutes(courseSettings.getCourseTotalMinuties());
 | 
	
		
			
				|  |  | +					musicGroupPaymentStudentCourseDetail.setCourseOriginalPrice(courseSettings.getCourseOriginalPrice());
 | 
	
		
			
				|  |  | +					musicGroupPaymentStudentCourseDetail.setCourseCurrentPrice(courseSettings.getCourseCurrentPrice());
 | 
	
		
			
				|  |  |  					musicGroupPaymentStudentCourseDetail.setUpdateTime(date);
 | 
	
		
			
				|  |  |  					musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(0);
 | 
	
		
			
				|  |  |  					musicGroupPaymentStudentCourseDetail.setUserId(studentId);
 | 
	
	
		
			
				|  | @@ -478,8 +414,6 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  |  		Long musicGroupPaymentCalenderId = null;
 | 
	
		
			
				|  |  |  		for(MusicGroupPaymentCalender musicGroupPaymentCalender : musicGroupPaymentCalenderList){
 | 
	
		
			
				|  |  | -			int paymentNum = 0;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  			musicGroupPaymentCalenderId = musicGroupPaymentCalender.getId();
 | 
	
		
			
				|  |  |  			
 | 
	
		
			
				|  |  |  			if(musicGroupPaymentCalender.getPaymentType() == MusicGroupPaymentCalender.PaymentType.MUSIC_APPLY){
 | 
	
	
		
			
				|  | @@ -499,13 +433,14 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  			
 | 
	
		
			
				|  |  |  			List<MusicGroupPaymentCalenderCourseSettings> courseSettingsList = musicGroupPaymentCalenderCourseSettingsDao.getWithPaymentCalender(musicGroupPaymentCalenderId);
 | 
	
		
			
				|  |  |  			
 | 
	
		
			
				|  |  | -			BigDecimal totalPrice = new BigDecimal(0);
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | +			BigDecimal expectAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +			BigDecimal expectMemberAmount = musicGroupPaymentCalender.getMemberPaymentAmount();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  			if (musicGroupPaymentCalender.getPayUserType() == STUDENT) {
 | 
	
		
			
				|  |  |  				for (MusicGroupPaymentCalenderCourseSettings courseSettings : courseSettingsList) {
 | 
	
		
			
				|  |  |  					// 剔除可选课程
 | 
	
		
			
				|  |  |  					if (courseSettings.getIsStudentOptional() == false) {
 | 
	
		
			
				|  |  | -						totalPrice = totalPrice.add(courseSettings.getCourseCurrentPrice());
 | 
	
		
			
				|  |  | +						expectAmount = expectAmount.add(courseSettings.getCourseCurrentPrice());
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
	
		
			
				|  | @@ -519,10 +454,10 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  				musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
 | 
	
		
			
				|  |  |  				musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalenderId);
 | 
	
		
			
				|  |  |  				musicGroupPaymentCalenderDetail.setCreateTime(date);
 | 
	
		
			
				|  |  | -				musicGroupPaymentCalenderDetail.setExpectAmount(totalPrice);
 | 
	
		
			
				|  |  | -				if (musicGroupPaymentCalenderDetail.getExpectAmount().compareTo(new BigDecimal(0)) == 0) {
 | 
	
		
			
				|  |  | +				musicGroupPaymentCalenderDetail.setExpectAmount(expectAmount);
 | 
	
		
			
				|  |  | +				musicGroupPaymentCalenderDetail.setExpectMemberAmount(expectMemberAmount);
 | 
	
		
			
				|  |  | +				if (expectAmount.doubleValue() == 0d && expectMemberAmount.doubleValue() == 0d) {
 | 
	
		
			
				|  |  |  					musicGroupPaymentCalenderDetail.setPaymentStatus(PaymentStatus.PAID_COMPLETED);
 | 
	
		
			
				|  |  | -					paymentNum++;
 | 
	
		
			
				|  |  |  				} else {
 | 
	
		
			
				|  |  |  					musicGroupPaymentCalenderDetail.setPaymentStatus(PaymentStatus.NON_PAYMENT);
 | 
	
		
			
				|  |  |  				}
 | 
	
	
		
			
				|  | @@ -544,7 +479,9 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  			//更新预计缴费人数
 | 
	
		
			
				|  |  |  			musicGroupPaymentCalender.setExpectNum(musicGroupPaymentCalender.getExpectNum() + userIdList.size());
 | 
	
		
			
				|  |  |  			musicGroupPaymentCalender.setUpdateTime(date);
 | 
	
		
			
				|  |  | -			musicGroupPaymentCalender.setActualNum((musicGroupPaymentCalender.getActualNum()==null?0:musicGroupPaymentCalender.getActualNum()) + paymentNum);
 | 
	
		
			
				|  |  | +			if (expectAmount.doubleValue() == 0d && expectMemberAmount.doubleValue() == 0d) {
 | 
	
		
			
				|  |  | +				musicGroupPaymentCalender.setActualNum(musicGroupPaymentCalender.getActualNum() + userIdList.size());
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |  			musicGroupPaymentCalenderService.update(musicGroupPaymentCalender);
 | 
	
		
			
				|  |  |  			
 | 
	
		
			
				|  |  |  			MusicGroupPaymentStudentCourseDetail musicGroupPaymentStudentCourseDetail = null;
 | 
	
	
		
			
				|  | @@ -560,6 +497,8 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 | 
	
		
			
				|  |  |  					musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalenderId);
 | 
	
		
			
				|  |  |  					musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderDetailId(userMap.get(studentId).getId());
 | 
	
		
			
				|  |  |  					musicGroupPaymentStudentCourseDetail.setTotalCourseMinutes(courseSettings.getCourseTotalMinuties());
 | 
	
		
			
				|  |  | +					musicGroupPaymentStudentCourseDetail.setCourseOriginalPrice(courseSettings.getCourseOriginalPrice());
 | 
	
		
			
				|  |  | +					musicGroupPaymentStudentCourseDetail.setCourseCurrentPrice(courseSettings.getCourseCurrentPrice());
 | 
	
		
			
				|  |  |  					musicGroupPaymentStudentCourseDetail.setUpdateTime(date);
 | 
	
		
			
				|  |  |  					musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(0);
 | 
	
		
			
				|  |  |  					musicGroupPaymentStudentCourseDetail.setUserId(studentId);
 |