From 49148072078220c92f94f2e7ea25cd79a6810fc7 Mon Sep 17 00:00:00 2001
From: zhibing.pu <393733352@qq.com>
Date: 星期六, 24 八月 2024 15:31:37 +0800
Subject: [PATCH] 封装支付宝支付和完善充电支付功能

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |   54 ++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 44 insertions(+), 10 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index 80fa994..51ec3ab 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -20,19 +20,18 @@
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.service.TokenService;
-import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.order.api.model.TChargingOrder;
 import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
 import com.ruoyi.order.api.query.ChargingOrderQuery;
 import com.ruoyi.order.api.vo.ChargingOrderVO;
+import com.ruoyi.order.api.vo.TCharingOrderVO;
 import com.ruoyi.order.dto.*;
 import com.ruoyi.order.mapper.TChargingOrderMapper;
 import com.ruoyi.order.service.TChargingOrderAccountingStrategyService;
 import com.ruoyi.order.service.TChargingOrderService;
-import com.ruoyi.other.api.domain.TVip;
+import com.ruoyi.payment.api.feignClient.AliPaymentClient;
 import com.ruoyi.payment.api.feignClient.WxPaymentClient;
-import com.ruoyi.payment.api.vo.NotifyV3PayDecodeRespBody;
-import com.ruoyi.payment.api.vo.PaymentOrder;
+import com.ruoyi.payment.api.vo.*;
 import io.seata.spring.annotation.GlobalTransactional;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -43,7 +42,6 @@
 import java.time.ZoneOffset;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -75,6 +73,9 @@
 	
 	@Resource
 	private WxPaymentClient wxPaymentClient;
+	
+	@Resource
+	private AliPaymentClient aliPaymentClient;
 	
 	@Resource
 	private ChargingPileClient chargingPileClient;
@@ -226,7 +227,14 @@
 				}
 			}
 			if(2 == rechargePaymentType){
-			
+				AliQueryOrder data = aliPaymentClient.query(tChargingOrder.getCode()).getData();
+				if(null != data){
+					//支付失败,删除无效的订单
+					String tradeStatus = data.getTradeStatus();
+					if(tradeStatus.equals("TRADE_CLOSED")){
+						this.removeById(tChargingOrder.getId());
+					}
+				}
 			}
 		}
 		
@@ -256,7 +264,19 @@
 				}
 			}
 			if(2 == one.getRechargePaymentType()){
-			
+				AliQueryOrder data = aliPaymentClient.query(one.getCode()).getData();
+				if(null != data){
+					String trade_state = data.getTradeStatus();
+					//支付失败,删除无效的订单
+					if(trade_state.equals("TRADE_CLOSED")){
+						this.removeById(one.getId());
+					}
+					if(trade_state.equals("WAIT_BUYER_PAY")){
+						//结束第三方支付,删除订单
+						aliPaymentClient.close(one.getCode());
+						this.removeById(one.getId());
+					}
+				}
 			}
 		}
 		
@@ -308,7 +328,17 @@
 			return AjaxResult.success(data);
 		}
 		if(2 == addChargingOrder.getPaymentType()){
-		
+			AliPaymentReq req = new AliPaymentReq();
+			req.setOutTradeNo(chargingOrder.getCode());
+			req.setTotalAmount(chargingOrder.getPaymentAmount().toString());
+			req.setSubject("充电充值");
+			req.setBuyerOpenId(appUser.getAliOpenid());
+			req.setBody("充电充值");
+			AliPaymentResp data = aliPaymentClient.payment(req).getData();
+			if(null != data){
+				data.setNotifyUrl(data.getNotifyUrl() + "/t-charging-order/chargingOrderALICallback");
+				return AjaxResult.success(data);
+			}
 		}
 		throw new RuntimeException("无效的支付方式");
 	}
@@ -392,8 +422,10 @@
 		return AjaxResult.success();
 	}
 
+
     @Override
-    public PageInfo<ChargingOrderVO> chargingOrder(ChargingOrderQuery dto) {
+    public TCharingOrderVO chargingOrder(ChargingOrderQuery dto) {
+		TCharingOrderVO tCharingOrderVO = new TCharingOrderVO();
 		String startTime1 = null;
 		String startTime2 = null;
 		String endTime1 = null;
@@ -418,7 +450,9 @@
 		}
 		PageInfo<ChargingOrderVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
 		List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
+
 		pageInfo.setRecords(list);
-        return pageInfo;
+		tCharingOrderVO.setList(pageInfo);
+        return tCharingOrderVO;
     }
 }

--
Gitblit v1.7.1