|  | @@ -3,6 +3,7 @@ package com.ym.mec.biz.service.impl;
 | 
	
		
			
				|  |  |  import static com.ym.mec.biz.dal.enums.DealStatusEnum.SUCCESS;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dao.*;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.SubjectChangeParamDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.enums.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.page.SubjectChangeQueryInfo;
 | 
	
	
		
			
				|  | @@ -114,10 +115,10 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -    public Map payChange(Integer id, BigDecimal viewAmount, Boolean isUseBalancePayment, Boolean isRepay) throws Exception {
 | 
	
		
			
				|  |  | +    public Map payChange(SubjectChangeParamDto subjectChangeParamDto) throws Exception {
 | 
	
		
			
				|  |  |          Date date = new Date();
 | 
	
		
			
				|  |  | -        SubjectChange subjectChange = subjectChangeDao.get(id);
 | 
	
		
			
				|  |  | -        if (isRepay) {
 | 
	
		
			
				|  |  | +        SubjectChange subjectChange = subjectChangeDao.get(subjectChangeParamDto.getId());
 | 
	
		
			
				|  |  | +        if (subjectChangeParamDto.getRepay()) {
 | 
	
		
			
				|  |  |              StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.get(subjectChange.getOrderId().longValue());
 | 
	
		
			
				|  |  |              
 | 
	
		
			
				|  |  |              if(studentPaymentOrder != null && studentPaymentOrder.getStatus() == DealStatusEnum.ING){
 | 
	
	
		
			
				|  | @@ -160,13 +161,12 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          String channelType = "";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
 | 
	
		
			
				|  |  | +        StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(subjectChangeParamDto.getCouponIdList(),amount,true);
 | 
	
		
			
				|  |  | +        amount = studentPaymentOrder.getActualAmount();
 | 
	
		
			
				|  |  |          studentPaymentOrder.setUserId(subjectChange.getStudentId());
 | 
	
		
			
				|  |  |          studentPaymentOrder.setGroupType(GroupType.SUBJECT_CHANGE);
 | 
	
		
			
				|  |  |          studentPaymentOrder.setOrderNo(orderNo);
 | 
	
		
			
				|  |  |          studentPaymentOrder.setType(OrderTypeEnum.SUBJECT_CHANGE);
 | 
	
		
			
				|  |  | -        studentPaymentOrder.setExpectAmount(amount);
 | 
	
		
			
				|  |  | -        studentPaymentOrder.setActualAmount(amount);
 | 
	
		
			
				|  |  |          studentPaymentOrder.setStatus(DealStatusEnum.ING);
 | 
	
		
			
				|  |  |          studentPaymentOrder.setMusicGroupId(subjectChange.getId().toString());
 | 
	
		
			
				|  |  |          studentPaymentOrder.setPaymentChannel("BALANCE");
 | 
	
	
		
			
				|  | @@ -186,12 +186,12 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          studentPaymentOrder.setVersion(0);
 | 
	
		
			
				|  |  | -        if (amount.compareTo(viewAmount) != 0) {
 | 
	
		
			
				|  |  | +        if (amount.compareTo(subjectChangeParamDto.getAmount()) != 0) {
 | 
	
		
			
				|  |  |              throw new BizException("价格异常");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          BigDecimal balance = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | -        if (isUseBalancePayment != null && isUseBalancePayment && amount.compareTo(BigDecimal.ZERO) > 0) {
 | 
	
		
			
				|  |  | +        if (subjectChangeParamDto.getUseBalancePayment() && amount.compareTo(BigDecimal.ZERO) > 0) {
 | 
	
		
			
				|  |  |              SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(subjectChange.getStudentId());
 | 
	
		
			
				|  |  |              if (userCashAccount == null) {
 | 
	
		
			
				|  |  |                  throw new BizException("用户账户找不到");
 | 
	
	
		
			
				|  | @@ -204,7 +204,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
 | 
	
		
			
				|  |  |                  sysUserCashAccountService.updateBalance(subjectChange.getStudentId(), balance.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "乐器维修");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if (amount.compareTo(viewAmount) != 0) {
 | 
	
		
			
				|  |  | +        if (amount.compareTo(subjectChangeParamDto.getAmount()) != 0) {
 | 
	
		
			
				|  |  |              throw new BizException("价格异常");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          studentPaymentOrderService.update(studentPaymentOrder);
 |