|  | @@ -539,7 +539,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
 | 
	
		
			
				|  |  |          if (musicSheetDto.getAuditVersion() == null) {
 | 
	
		
			
				|  |  |              musicSheetDto.setAuditVersion(YesOrNoEnum.NO);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if (musicSheetDto.getChargeType().equals(ChargeTypeEnum.VIP)) {
 | 
	
		
			
				|  |  | +        if (musicSheetDto.getChargeType().equals(ChargeTypeEnum.VIP) || musicSheetDto.getChargeType().equals(ChargeTypeEnum.FREE)) {
 | 
	
		
			
				|  |  |              musicSheetDto.setMusicPrice(BigDecimal.ZERO);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -650,16 +650,24 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
 | 
	
		
			
				|  |  |          BigDecimal serviceFee = new BigDecimal(musicSheetServiceFee).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
 | 
	
		
			
				|  |  |          //支付金额
 | 
	
		
			
				|  |  |          BigDecimal actualPrice = userOrderDetailVo.getActualPrice();
 | 
	
		
			
				|  |  | +        BigDecimal expectPrice = userOrderDetailVo.getExpectPrice();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        //服务费
 | 
	
		
			
				|  |  | -        BigDecimal serviceFeeAmount = actualPrice.multiply(serviceFee).setScale(2, RoundingMode.HALF_UP);
 | 
	
		
			
				|  |  | +        //服务费  原价的平台服务费 ,减去优惠券金额
 | 
	
		
			
				|  |  | +        BigDecimal serviceFeeAmount = expectPrice.multiply(serviceFee).subtract(userOrderDetailVo.getCouponAmount()).setScale(2, RoundingMode.HALF_UP);
 | 
	
		
			
				|  |  | +        if (serviceFeeAmount.compareTo(BigDecimal.ZERO) <0) {
 | 
	
		
			
				|  |  | +            serviceFeeAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 保存购买记录
 | 
	
		
			
				|  |  |          addMusicSheetPurchaseRecord(userOrderDetailVo, actualPrice, serviceFeeAmount);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (!musicSheet.getSourceType().getCode().equals(SourceTypeEnum.PLATFORM.getCode())) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 老师收入
 | 
	
		
			
				|  |  | +            BigDecimal teacherAmount = BigDecimal.ONE.subtract(serviceFee).multiply(expectPrice);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              // 加入账户
 | 
	
		
			
				|  |  | -            addTeacherAccount(userOrderDetailVo, actualPrice, serviceFeeAmount, userOrderDetailVo.getBizId());
 | 
	
		
			
				|  |  | +            addTeacherAccount(userOrderDetailVo, teacherAmount, userOrderDetailVo.getBizId());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 消息通知
 | 
	
	
		
			
				|  | @@ -754,16 +762,14 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
 | 
	
		
			
				|  |  |       * 添加金额到老师账户
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  |       * @param userOrderDetailVo 订单信息
 | 
	
		
			
				|  |  | -     * @param actualPrice       付款价格
 | 
	
		
			
				|  |  | -     * @param serviceFeeAmount  服务费
 | 
	
		
			
				|  |  | +     * @param transAmount       老师收入
 | 
	
		
			
				|  |  |       * @param musicSheetId      曲目id
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    private void addTeacherAccount(UserOrderDetailVo userOrderDetailVo, BigDecimal actualPrice, BigDecimal serviceFeeAmount,
 | 
	
		
			
				|  |  | +    private void addTeacherAccount(UserOrderDetailVo userOrderDetailVo, BigDecimal transAmount,
 | 
	
		
			
				|  |  |                                     Long musicSheetId) {
 | 
	
		
			
				|  |  |          //获取账期时间
 | 
	
		
			
				|  |  |          Date accountPeriodTime = userOrderService.getAccountPeriodTime(userOrderDetailVo);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        BigDecimal transAmount = actualPrice.subtract(serviceFeeAmount).setScale(2, RoundingMode.HALF_UP);
 | 
	
		
			
				|  |  |          //插入老师账户变更记录-老师预收
 | 
	
		
			
				|  |  |          userAccountService.accountRecord(
 | 
	
		
			
				|  |  |                  new UserAccountRecordDto(userOrderDetailVo.getMerchId(), PostStatusEnum.WAIT, transAmount, InOrOutEnum.IN,
 |