|  | @@ -65,27 +65,19 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public UserOrderPayment detailByOrderNo(String orderNo, PayChannelEnum payChannel, TradeStatusEnum status) {
 | 
	
		
			
				|  |  | -        return baseMapper.selectOne(Wrappers.<UserOrderPayment>lambdaQuery()
 | 
	
		
			
				|  |  | -                .eq(UserOrderPayment::getOrderNo, orderNo)
 | 
	
		
			
				|  |  | -                .eq(UserOrderPayment::getPayChannel, payChannel)
 | 
	
		
			
				|  |  | -                .eq(UserOrderPayment::getStatus, status));
 | 
	
		
			
				|  |  | +        return baseMapper.selectOne(Wrappers.<UserOrderPayment>lambdaQuery().eq(UserOrderPayment::getOrderNo, orderNo).eq(UserOrderPayment::getPayChannel, payChannel).eq(UserOrderPayment::getStatus, status));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public UserOrderPayment detailByTransNoOrPaymentNo(String transNo, String paymentNo) {
 | 
	
		
			
				|  |  | -        return baseMapper.selectOne(Wrappers.<UserOrderPayment>lambdaQuery().and(
 | 
	
		
			
				|  |  | -                wrapper -> wrapper.eq(UserOrderPayment::getTransNo, transNo)
 | 
	
		
			
				|  |  | -                        .or().eq(UserOrderPayment::getPaymentNo, paymentNo)
 | 
	
		
			
				|  |  | -        ));
 | 
	
		
			
				|  |  | +        return baseMapper.selectOne(Wrappers.<UserOrderPayment>lambdaQuery().and(wrapper -> wrapper.eq(UserOrderPayment::getTransNo, transNo).or().eq(UserOrderPayment::getPaymentNo, paymentNo)));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public UserOrderPayment onlyClosePayment(String orderNo, String reason) {
 | 
	
		
			
				|  |  | -        UserOrderPayment orderPayment = baseMapper.selectOne(Wrappers.<UserOrderPayment>lambdaQuery()
 | 
	
		
			
				|  |  | -                .eq(UserOrderPayment::getOrderNo, orderNo)
 | 
	
		
			
				|  |  | -                .eq(UserOrderPayment::getStatus, TradeStatusEnum.pending));
 | 
	
		
			
				|  |  | +    public Boolean onlyClosePayment(String orderNo, String reason) {
 | 
	
		
			
				|  |  | +        UserOrderPayment orderPayment = baseMapper.selectOne(Wrappers.<UserOrderPayment>lambdaQuery().eq(UserOrderPayment::getOrderNo, orderNo).eq(UserOrderPayment::getStatus, TradeStatusEnum.pending));
 | 
	
		
			
				|  |  |          if (null == orderPayment) {
 | 
	
		
			
				|  |  | -            return orderPayment;
 | 
	
		
			
				|  |  | +            return true;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //更新付款单
 | 
	
	
		
			
				|  | @@ -94,21 +86,25 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
 | 
	
		
			
				|  |  |          orderPayment.setUpdateTime(new Date());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          updateById(orderPayment);
 | 
	
		
			
				|  |  | -        return orderPayment;
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public UserOrderPayment closePaymentAndReqOpen(String orderNo, String reason) {
 | 
	
		
			
				|  |  | -        UserOrderPayment orderPayment = onlyClosePayment(orderNo, reason);
 | 
	
		
			
				|  |  | +    public Boolean closePaymentAndReqOpen(String orderNo, String reason) {
 | 
	
		
			
				|  |  | +        UserOrderPayment orderPayment = baseMapper.selectOne(Wrappers.<UserOrderPayment>lambdaQuery().eq(UserOrderPayment::getOrderNo, orderNo).eq(UserOrderPayment::getStatus, TradeStatusEnum.pending));
 | 
	
		
			
				|  |  |          if (null == orderPayment) {
 | 
	
		
			
				|  |  | -            return orderPayment;
 | 
	
		
			
				|  |  | +            return true;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //更新付款单
 | 
	
		
			
				|  |  | +        orderPayment.setStatus(TradeStatusEnum.close);
 | 
	
		
			
				|  |  | +        orderPayment.setPayFailMsg(StringUtil.isEmpty(reason) ? "交易取消" : reason);
 | 
	
		
			
				|  |  | +        orderPayment.setUpdateTime(new Date());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          //发送支付关单请求
 | 
	
		
			
				|  |  | -        if (!StringUtil.isEmpty(orderPayment.getTransNo())
 | 
	
		
			
				|  |  | -                || !StringUtil.isEmpty(orderPayment.getPaymentNo())) {
 | 
	
		
			
				|  |  | -            ClosePayment param = new ClosePayment(orderPayment.getOpenType(),
 | 
	
		
			
				|  |  | -                    PaymentClientEnum.valueOf(orderPayment.getPaymentClient()), orderPayment.getPayChannel());
 | 
	
		
			
				|  |  | +        if (!StringUtil.isEmpty(orderPayment.getTransNo()) || !StringUtil.isEmpty(orderPayment.getPaymentNo())) {
 | 
	
		
			
				|  |  | +            ClosePayment param = new ClosePayment(orderPayment.getOpenType(), PaymentClientEnum.valueOf(orderPayment.getPaymentClient()), orderPayment.getPayChannel());
 | 
	
		
			
				|  |  |              param.setId(orderPayment.getTransNo());
 | 
	
		
			
				|  |  |              param.setPaymentNo(orderPayment.getPaymentNo());
 | 
	
		
			
				|  |  |              param.setReason(reason);
 | 
	
	
		
			
				|  | @@ -130,7 +126,12 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
 | 
	
		
			
				|  |  |                  e.printStackTrace();
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        return orderPayment;
 | 
	
		
			
				|  |  | +        updateById(orderPayment);
 | 
	
		
			
				|  |  | +        if (TradeStatusEnum.succeeded.equals(orderPayment.getCloseStatus())) {
 | 
	
		
			
				|  |  | +            return true;
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -203,8 +204,7 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public void executePaymentCallBack(PaymentCallBack data) {
 | 
	
		
			
				|  |  |          UserOrderVo userOrderVo = userOrderService.getUserOrderByPaymentNoOrTransNo(data.getPaymentNo(), data.getId());
 | 
	
		
			
				|  |  | -        if (OrderStatusEnum.WAIT_PAY.equals(userOrderVo.getStatus())
 | 
	
		
			
				|  |  | -                || OrderStatusEnum.PAYING.equals(userOrderVo.getStatus())) {
 | 
	
		
			
				|  |  | +        if (OrderStatusEnum.WAIT_PAY.equals(userOrderVo.getStatus()) || OrderStatusEnum.PAYING.equals(userOrderVo.getStatus())) {
 | 
	
		
			
				|  |  |              if (TradeStatusEnum.succeeded.equals(data.getStatus())) {//支付成功
 | 
	
		
			
				|  |  |                  paymentSucceededHandle(data);
 | 
	
		
			
				|  |  |              } else if (TradeStatusEnum.failed.equals(data.getStatus())) {//支付失败
 | 
	
	
		
			
				|  | @@ -216,8 +216,7 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public void closePaymentCallBack(PaymentCallBack data) {
 | 
	
		
			
				|  |  |          UserOrderVo userOrderVo = userOrderService.getUserOrderByPaymentNoOrTransNo(data.getPaymentNo(), data.getId());
 | 
	
		
			
				|  |  | -        if (OrderStatusEnum.WAIT_PAY.equals(userOrderVo.getStatus())
 | 
	
		
			
				|  |  | -                || OrderStatusEnum.PAYING.equals(userOrderVo.getStatus())) {
 | 
	
		
			
				|  |  | +        if (OrderStatusEnum.WAIT_PAY.equals(userOrderVo.getStatus()) || OrderStatusEnum.PAYING.equals(userOrderVo.getStatus())) {
 | 
	
		
			
				|  |  |              if (TradeStatusEnum.succeeded.equals(data.getStatus())) {//关单成功
 | 
	
		
			
				|  |  |                  paymentCloseSucceededHandle(data);
 | 
	
		
			
				|  |  |              } else if (TradeStatusEnum.failed.equals(data.getStatus())) {//关单失败
 | 
	
	
		
			
				|  | @@ -243,9 +242,7 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
 | 
	
		
			
				|  |  |          orderPayment.setOrderNo(payment.getOrderNo());
 | 
	
		
			
				|  |  |          orderPayment.setPaymentNo(payment.getPaymentNo());
 | 
	
		
			
				|  |  |          orderPayment.setTransNo(payment.getId());
 | 
	
		
			
				|  |  | -        orderPayment.setPayAmt(
 | 
	
		
			
				|  |  | -                new BigDecimal(payment.getPayAmt()).setScale(2, RoundingMode.HALF_UP)
 | 
	
		
			
				|  |  | -        );
 | 
	
		
			
				|  |  | +        orderPayment.setPayAmt(new BigDecimal(payment.getPayAmt()).setScale(2, RoundingMode.HALF_UP));
 | 
	
		
			
				|  |  |          orderPayment.setPayInfo(payment.getPayInfo());
 | 
	
		
			
				|  |  |          orderPayment.setStatus(TradeStatusEnum.pending);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -274,8 +271,7 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
 | 
	
		
			
				|  |  |              log.error("支付回调,订单未找到。 req is {}", JSONObject.toJSONString(data));
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if (detail.getStatus().equals(OrderStatusEnum.WAIT_PAY)
 | 
	
		
			
				|  |  | -                || detail.getStatus().equals(OrderStatusEnum.PAYING)) {
 | 
	
		
			
				|  |  | +        if (detail.getStatus().equals(OrderStatusEnum.WAIT_PAY) || detail.getStatus().equals(OrderStatusEnum.PAYING)) {
 | 
	
		
			
				|  |  |              userOrderService.orderSuccess(detail, data);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -310,8 +306,7 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
 | 
	
		
			
				|  |  |              log.error("支付回调,订单未找到。 req is {}", JSONObject.toJSONString(data));
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if (detail.getStatus().equals(OrderStatusEnum.WAIT_PAY)
 | 
	
		
			
				|  |  | -                || detail.getStatus().equals(OrderStatusEnum.PAYING)) {
 | 
	
		
			
				|  |  | +        if (detail.getStatus().equals(OrderStatusEnum.WAIT_PAY) || detail.getStatus().equals(OrderStatusEnum.PAYING)) {
 | 
	
		
			
				|  |  |              userOrderService.doOrderCancel(detail, OrderStatusEnum.FAIL, "支付回调失败:" + errMsg);
 | 
	
		
			
				|  |  |              //关闭付款单
 | 
	
		
			
				|  |  |              onlyClosePayment(detail.getOrderNo(), "支付回调失败:" + errMsg);
 | 
	
	
		
			
				|  | @@ -332,6 +327,14 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
 | 
	
		
			
				|  |  |          orderPayment.setCloseStatus(TradeStatusEnum.succeeded);
 | 
	
		
			
				|  |  |          orderPayment.setUpdateTime(new Date());
 | 
	
		
			
				|  |  |          updateById(orderPayment);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //若当前关单回调是当前订单付款单,则可以关单
 | 
	
		
			
				|  |  | +        UserOrderVo detail = userOrderService.getUserOrderByPaymentNoOrTransNo(data.getPaymentNo(), data.getId());
 | 
	
		
			
				|  |  | +        if (null != detail && OrderStatusEnum.PAYING.equals(detail.getStatus())
 | 
	
		
			
				|  |  | +                && orderPayment.getPaymentNo().equals(detail.getPaymentNo())) {
 | 
	
		
			
				|  |  | +            //关闭订单
 | 
	
		
			
				|  |  | +            userOrderService.doOrderCancel(detail, OrderStatusEnum.CLOSE, "订单取消");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /***
 |