From 99f77c0fd2ee8ed8840be5e5f99309b184a09e9f Mon Sep 17 00:00:00 2001
From: jiaosong <jiaosong6760@dingtalk.com>
Date: 星期三, 18 十月 2023 11:27:57 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java |   78 +++++++++++++++++++++++++++------------
 1 files changed, 54 insertions(+), 24 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java b/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java
index 4c42c9b..04acbcb 100644
--- a/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java
+++ b/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java
@@ -5,24 +5,24 @@
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.utils.ID;
-import com.doumee.dao.business.ActionLogMapper;
+import com.doumee.dao.business.RefundMapper;
+import com.doumee.dao.business.TransactionsMapper;
+import com.doumee.dao.business.model.Refund;
+import com.doumee.dao.business.model.Transactions;
+import com.doumee.dao.business.web.request.RefundDTO;
+import com.doumee.service.business.RefundService;
 import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
-import com.github.binarywang.wxpay.bean.request.WxPayDownloadBillRequest;
 import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
-import com.github.binarywang.wxpay.bean.result.WxPayBillResult;
 import com.github.binarywang.wxpay.bean.result.WxPayRefundResult;
 import com.github.binarywang.wxpay.exception.WxPayException;
 import lombok.extern.slf4j.Slf4j;
+import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.yaml.snakeyaml.scanner.Constant;
 
 import java.math.BigDecimal;
-import java.security.KeyFactory;
-import java.security.Signature;
-import java.security.spec.PKCS8EncodedKeySpec;
-import java.util.Base64;
+import java.util.Date;
 
 /**
  * 寰俊灏忕▼搴�-鍏叡鏂规硶
@@ -31,32 +31,63 @@
 @Slf4j
 public class WxMiniUtilService {
 
+    @Autowired
+    private RefundMapper refundMapper;
 
     @Autowired
-    private SystemDictDataBiz systemDictDataBiz;
+    private TransactionsMapper transactionsMapper;
 
-    /**
-     * 璁㈠崟寰俊閫�娆�
-     * orderNo:鍟嗘埛璁㈠崟鍙�
-     * totalPrice锛氳鍗曟�婚噾棰�
-     * refundPrice锛涢��娆鹃噾棰�
-     */
+
     @Transactional(rollbackFor = Exception.class)
-    public static String wxRefund(String orderNo, BigDecimal totalPrice, BigDecimal refundPrice) {
+    public Refund wxRefund(RefundDTO refundDTO) {
         try {
             // 鍙戦�侀��娆捐姹�
             String refNum = ID.nextGUID();
             WxPayRefundRequest request = new WxPayRefundRequest();
-            request.setOutTradeNo(orderNo);
+            request.setOutTradeNo(refundDTO.getOrderId());
             request.setOutRefundNo(refNum);
-           // request.setTotalFee(2);
-          //  request.setRefundFee(1);
-            request.setTotalFee(BaseWxPayRequest.yuanToFen(totalPrice.toString()));
-            request.setRefundFee(BaseWxPayRequest.yuanToFen(refundPrice.toString()));
+            request.setTotalFee(BaseWxPayRequest.yuanToFen(refundDTO.getTotalAmount().toString()));
+            request.setRefundFee(BaseWxPayRequest.yuanToFen(refundDTO.getRefundAmount().toString()));
+            System.out.println("瀹為檯鎬婚噾棰�" + BaseWxPayRequest.yuanToFen(refundDTO.getTotalAmount().toString()));
+            System.out.println("瀹為檯閫�娆鹃噾棰�" + BaseWxPayRequest.yuanToFen(refundDTO.getRefundAmount().toString()));
+//            request.setTotalFee(1);
+//            request.setRefundFee(1);
             WxPayRefundResult response = WxMiniConfig.wxPayService.refund(request);
             if ("SUCCESS".equals(response.getReturnCode()) && "SUCCESS".equals(response.getResultCode())) {
-                return refNum;
-            } else {
+                //瀛樺偍閫�娆捐褰� 涓� 娴佹按璁板綍
+                Refund refund = new Refund();
+                refund.setId(Constants.getUUID());
+                refund.setCreateDate(new Date());
+                refund.setMemberId(refundDTO.getMemberId());
+                refund.setMoney(refundDTO.getRefundAmount());
+                refund.setOnlineOrderid(refNum);
+                refund.setPayWay(Constants.ZERO);
+                refund.setDoneDate(new Date());
+                refund.setType(refundDTO.getType());
+                refund.setObjId(refundDTO.getOrderId());
+                refund.setReason(refundDTO.getReason());
+                refund.setCanBalance(refundDTO.getCanBalance());
+                refundMapper.insert(refund);
+                //瀛樺偍浜ゆ槗娴佹按琛�
+                Transactions transactions = new Transactions();
+                transactions.setId(Constants.getUUID());
+                transactions.setMemberId(refundDTO.getMemberId());
+                transactions.setCreateDate(new Date());
+                transactions.setIsdeleted(Constants.ZERO);
+                transactions.setOrderId(refundDTO.getOrderId());
+                transactions.setMoney(refundDTO.getRefundAmount());
+                transactions.setType(refundDTO.getType()==Constants.TRANSACTIONS_TYPE.REFUND.getKey()?Constants.TRANSACTIONS_TYPE.PLATFORMREFUND.getKey():Constants.REFUND_TYPE.BACK.getKey());
+                transactions.setPreOrderid(refundDTO.getOrderId());
+                transactions.setOnlineOrderid(refNum);
+                transactions.setDoneDate(new Date());
+                transactions.setTitle(Constants.TRANSACTIONS_TYPE.get(transactions.getType()).getName());
+                transactions.setContent(Constants.TRANSACTIONS_TYPE.get(transactions.getType()).getInfo());
+                transactions.setBalance(BigDecimal.ZERO);
+                transactions.setObjId(refund.getId());
+                transactions.setObjType(Constants.ONE);
+                transactionsMapper.insert(transactions);
+                return refund;
+            } else{
                 throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),response.getErrCode() + response.getErrCodeDes());
             }
         } catch (WxPayException e) {
@@ -64,6 +95,5 @@
         }
         throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閫�娆惧彂鐢熷紓甯歌鑱旂郴绠$悊鍛�");
     }
-
 
 }

--
Gitblit v1.9.3