| 
					
				 | 
			
			
				@@ -178,7 +178,6 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public HttpResponseResult<Boolean> doAuth(AuthOperaReq authOperaReq, SysUser user) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Long[] ids = StringUtil.toLongArray(StringPool.COMMA, authOperaReq.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (Long id : ids) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -196,7 +195,6 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             orderRefund.setOperateId(user.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             orderRefund.setOperateReason(authOperaReq.getReason()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             orderRefund.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            updateById(orderRefund); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (authOperaReq.getPass()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //通过调用退款接口 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -220,7 +218,7 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Transactional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public HttpResponseResult<UserOrderRefundBill> orderRefund(String orderNo, String reason) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         UserOrderVo detail = orderService.detail(orderNo, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -289,12 +287,12 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return doOrderRefund(orderRefunds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void refundPaymentCallBack(PaymentCallBack data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (TradeStatusEnum.succeeded.equals(data.getStatus())) {//退款成功 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             paymentRefundSucceededHandle(data); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -303,7 +301,8 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private HttpResponseResult<UserOrderRefundBill> doOrderRefund(UserOrderRefund orderRefund) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    HttpResponseResult<UserOrderRefundBill> doOrderRefund(UserOrderRefund orderRefund) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         UserOrderPayment payment = orderPaymentService.getOne(Wrappers.<UserOrderPayment>lambdaQuery() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .eq(UserOrderPayment::getOrderNo, orderRefund.getOrderNo()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .eq(UserOrderPayment::getStatus, TradeStatusEnum.succeeded) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -313,20 +312,22 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new BizException("订单状态异常"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //单号生成 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Long billNo = idGeneratorService.generatorId("billNo"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         RefundBill refundBill = new RefundBill(payment.getOpenType(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 PaymentClientEnum.valueOf(payment.getPaymentClient()), payment.getPayChannel()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         refundBill.setTradeNo(payment.getTransNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         refundBill.setPaymentNo(payment.getPaymentNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //单号生成 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long billNo = idGeneratorService.generatorId("billNo"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         refundBill.setRefundNo(billNo.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         refundBill.setOrderAmt(payment.getPayAmt()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         refundBill.setRefundAmt(orderRefund.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         refundBill.setReason(orderRefund.getReason()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BaseResult<RefundBill> refundBillBaseResult = paymentClient.refundPayment(refundBill); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log.info("退款返回: {} ", JSONObject.toJSONString(refundBillBaseResult)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //入退款单表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         UserOrderRefundBill orderRefundBill = new UserOrderRefundBill(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         orderRefundBill.setRefundId(orderRefund.getId()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -340,6 +341,7 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             orderRefundBill.setPayFailMsg(refundBillBaseResult.getMsg()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         refundBillService.save(orderRefundBill); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        updateById(orderRefund); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return HttpResponseResult.succeed(orderRefundBill); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -366,26 +368,7 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         one.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         refundBillService.updateById(one); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //处理业务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        UserOrderRefund orderRefund = getById(one.getRefundId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (StringUtil.isEmpty(orderRefund.getOredrDetilIds())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<Long> ids = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (String id : orderRefund.getOredrDetilIds().split(",")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ids.add(Long.parseLong(id)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            OrderDetailSearch search = new OrderDetailSearch(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            search.setIds(ids); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            search.setOrderNo(orderRefund.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<UserOrderDetailVo> userOrderDetails = orderDetailService.selectList(search); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (UserOrderDetailVo vo : userOrderDetails) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Consumer<UserOrderDetailVo> refundAfterConsumer = refundSuccess.get(vo.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (!Objects.isNull(refundAfterConsumer)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    refundAfterConsumer.accept(vo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderRefundSuccessBizHandle(one.getRefundId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /*** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -413,8 +396,17 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         one.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         refundBillService.updateById(one); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderRefundFailBizHandle(one.getRefundId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 处理退款成功业务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param refundId 退款单id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void orderRefundSuccessBizHandle(Long refundId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //处理业务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        UserOrderRefund orderRefund = getById(one.getRefundId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserOrderRefund orderRefund = getById(refundId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (StringUtil.isEmpty(orderRefund.getOredrDetilIds())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<Long> ids = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (String id : orderRefund.getOredrDetilIds().split(",")) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -426,12 +418,39 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<UserOrderDetailVo> userOrderDetails = orderDetailService.selectList(search); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (UserOrderDetailVo vo : userOrderDetails) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Consumer<UserOrderDetailVo> refundAfterConsumer = refundFailed.get(vo.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Consumer<UserOrderDetailVo> refundAfterConsumer = refundSuccess.get(vo.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (!Objects.isNull(refundAfterConsumer)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     refundAfterConsumer.accept(vo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 处理退款失败业务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param refundId 退款单id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void orderRefundFailBizHandle(Long refundId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //处理业务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserOrderRefund orderRefund = getById(refundId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtil.isEmpty(orderRefund.getOredrDetilIds())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<Long> ids = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (String id : orderRefund.getOredrDetilIds().split(",")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ids.add(Long.parseLong(id)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            OrderDetailSearch search = new OrderDetailSearch(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            search.setIds(ids); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            search.setOrderNo(orderRefund.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<UserOrderDetailVo> userOrderDetails = orderDetailService.selectList(search); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (UserOrderDetailVo vo : userOrderDetails) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Consumer<UserOrderDetailVo> refundAfterConsumer = refundFailed.get(vo.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!Objects.isNull(refundAfterConsumer)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    refundAfterConsumer.accept(vo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |