From f541eaa5c92cb112af6d3f656275105606d31b39 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 30 九月 2024 16:01:21 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java |   75 +++++++++++++++++++++++++++++++------
 1 files changed, 63 insertions(+), 12 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
index e9df54a..85a3ca5 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
@@ -1,6 +1,7 @@
 package com.ruoyi.order.controller;
 
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 
 
@@ -15,10 +16,13 @@
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.order.api.model.TChargingOrderRefund;
 import com.ruoyi.order.api.model.TExchangeOrder;
 import com.ruoyi.order.api.model.TShoppingOrder;
+import com.ruoyi.order.api.model.TShoppingOrderRefund;
 import com.ruoyi.order.api.query.ShoppingOrderQuery;
 import com.ruoyi.order.dto.*;
+import com.ruoyi.order.service.TShoppingOrderRefundService;
 import com.ruoyi.order.service.TShoppingOrderService;
 import com.ruoyi.other.api.domain.TCoupon;
 import com.ruoyi.other.api.domain.TGoods;
@@ -40,6 +44,7 @@
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 /**
@@ -73,7 +78,31 @@
 	private AppCouponClient appCouponClient;
 	@Resource
 	private SysUserClient sysUserClient;
-	
+	@Resource
+	private TShoppingOrderRefundService shoppingOrderRefundService;
+	/**
+	 * 远程管理后台取消订单后退款回调
+	 */
+	@ResponseBody
+	@PostMapping(value = "/shoppingOrderWxRefund")
+	public void shoppingOrderWxRefund(@RequestParam("out_trade_no") String out_refund_no,
+													@RequestParam("out_trade_no") String refund_id,
+													@RequestParam("out_trade_no") String tradeState,
+													@RequestParam("out_trade_no") String success_time){
+		if("SUCCESS".equals(tradeState)){
+			TShoppingOrderRefund one = shoppingOrderRefundService.getOne(new LambdaQueryWrapper<TShoppingOrderRefund>().eq(TShoppingOrderRefund::getRefundCode, out_refund_no));
+			one.setRefundSerialNumber(refund_id);
+			one.setRefundStatus(2);
+			one.setRefundTime(LocalDateTime.parse(success_time, DateTimeFormatter.ofPattern("yyyy-MM-DDTHH:mm:ss+TIMEZONE")));
+			shoppingOrderRefundService.updateById(one);
+			TShoppingOrder byId = shoppingOrderService.getById(one.getShoppingOrderId());
+			byId.setStatus(4);
+			shoppingOrderService.updateById(byId);
+			if (byId.getAppCouponId() != null) {
+				appCouponClient.refund(byId.getAppCouponId().toString());
+			}
+		}
+	}
 	
 	@PostMapping("/getShoppingOrderList")
 	@ApiOperation(value = "列表查询", tags = {"管理后台-购物订单"})
@@ -144,7 +173,7 @@
 		shoppingOrderService.removeBatchByIds(Arrays.asList(ids.split(",")));
 		return AjaxResult.success();
 	}
-	
+
 	@GetMapping("/cancelShoppingOrder")
 	@ApiOperation(value = "取消订单", tags = {"管理后台-购物订单"})
 	public AjaxResult cancelShoppingOrder(String id) {
@@ -154,6 +183,21 @@
 		byId.setCancellationId(userid);
 		byId.setCancellationTime(LocalDateTime.now());
 		byId.setStatus(4);
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+		TShoppingOrderRefund tShoppingOrderRefund = new TShoppingOrderRefund();
+		tShoppingOrderRefund.setPayTime(byId.getPayTime());
+		tShoppingOrderRefund.setPayCode(byId.getSerialNumber());
+		tShoppingOrderRefund.setPayAmount(byId.getPaymentAmount());
+		tShoppingOrderRefund.setPayType(1);
+		tShoppingOrderRefund.setShoppingOrderId(byId.getId());
+		tShoppingOrderRefund.setRefundAmount(byId.getPaymentAmount());
+		tShoppingOrderRefund.setRefundStatus(1);
+		tShoppingOrderRefund.setCode("GWF" + sdf.format(new Date()) + Double.valueOf(Math.random() * 1000).intValue());
+		tShoppingOrderRefund.setRefundTitle("后台取消订单");
+		tShoppingOrderRefund.setRefundContent("后台取消订单");
+		tShoppingOrderRefund.setRefundReason("后台取消订单");
+		tShoppingOrderRefund.setRefundRemark("全额退款");
+		tShoppingOrderRefund.setRefundTotalAmount(byId.getPaymentAmount());
 		switch (byId.getPaymentType()) {
 			case 1:
 				// 微信
@@ -163,8 +207,6 @@
 				wxPaymentRefundModel.setOut_refund_no(OrderCodeUtil.getOrderCode("GWTK"));
 				wxPaymentRefundModel.setReason("后台购物订单退款");
 				wxPaymentRefundModel.setNotify_url("/payment/wx/refund/notify");
-
-				// todo 部署到线上之后写回调地址
 				String string = byId.getPaymentAmount().multiply(new BigDecimal("100")).toString();
 				if (string.contains(".")) {
 					string = string.substring(0, string.indexOf("."));
@@ -175,28 +217,37 @@
 				refundAmount.setCurrency("CNY");
 				refundAmount.setRefund(i);
 				wxPaymentRefundModel.setAmount(refundAmount);
-				wxPaymentClient.refundOrderR(wxPaymentRefundModel);
+				R<String> stringR = wxPaymentClient.refundOrderR(wxPaymentRefundModel);
+				if(200 == stringR.getCode()){
+					shoppingOrderRefundService.save(tShoppingOrderRefund);
+				}
 				break;
 			case 2:
 				// 支付宝
 				RefundReq refundReq = new RefundReq();
 				refundReq.setOutTradeNo(byId.getSerialNumber());
-				String gw = OrderCodeUtil.getOrderCode("GWTK");
+				String gw = OrderCodeUtil.getOrderCode("GWF");
 				refundReq.setOutRequestNo(gw);
 				refundReq.setRefundAmount(byId.getPaymentAmount().toString());
 				refundReq.setRefundReason("后台购物订单退款");
 				RefundResp data = aliPaymentClient.refund(refundReq).getData();
 				if (data != null) {
-					// 退款成功 回退优惠券
 					byId.setStatus(4);
+					SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
+					TShoppingOrderRefund one = shoppingOrderRefundService.getOne(new LambdaQueryWrapper<TShoppingOrderRefund>().eq(TShoppingOrderRefund::getRefundCode, data.getOutTradeNo()));
+					one.setRefundSerialNumber(data.getTradeNo());
+					one.setRefundStatus(2);
+					one.setRefundTime(LocalDateTime.parse(sdf1.format(new Date()), DateTimeFormatter.ofPattern("yyyy-MM-DDTHH:mm:ss+TIMEZONE")));
+					shoppingOrderRefundService.updateById(one);
 					if (byId.getAppCouponId() != null) {
+						// 退款成功 回退优惠券
 						appCouponClient.refund(byId.getAppCouponId().toString());
-						byId.setRefundCode(gw);
-						byId.setRefundAmount(byId.getPaymentAmount());
-						byId.setRefundStatus(2);
-						byId.setRefundSerialNumber(data.getTradeNo());
-						shoppingOrderService.updateById(byId);
 					}
+					byId.setRefundCode(gw);
+					byId.setRefundAmount(byId.getPaymentAmount());
+					byId.setRefundStatus(2);
+					byId.setRefundSerialNumber(data.getTradeNo());
+					shoppingOrderService.updateById(byId);
 				}
 				break;
 		}

--
Gitblit v1.7.1