From 03ee24e370a02b6d4bbce2634821b31fa056fce8 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 16 五月 2023 10:22:51 +0800
Subject: [PATCH] 修改日志存储

---
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java |  144 +++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 130 insertions(+), 14 deletions(-)

diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java
index 53d9271..5b37b5e 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java
@@ -1,13 +1,20 @@
 package com.supersavedriving.user.modular.api;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.supersavedriving.user.core.common.annotion.ServiceLog;
 import com.supersavedriving.user.core.util.ToolUtil;
 import com.supersavedriving.user.modular.system.model.AppUser;
+import com.supersavedriving.user.modular.system.model.Driver;
 import com.supersavedriving.user.modular.system.model.Order;
-import com.supersavedriving.user.modular.system.service.IAppUserService;
-import com.supersavedriving.user.modular.system.service.IBillService;
-import com.supersavedriving.user.modular.system.service.IOrderService;
+import com.supersavedriving.user.modular.system.model.Revenue;
+import com.supersavedriving.user.modular.system.service.*;
+import com.supersavedriving.user.modular.system.util.MallBook.model.InterfaceResponse;
+import com.supersavedriving.user.modular.system.util.MallBook.model.Receive;
+import com.supersavedriving.user.modular.system.util.MallBook.model.ReceiveUser;
+import com.supersavedriving.user.modular.system.util.MallBook.util.RSASignature;
+import com.supersavedriving.user.modular.system.util.MallBook.util.TrhRequest;
 import com.supersavedriving.user.modular.system.util.PayMoneyUtil;
 import com.supersavedriving.user.modular.system.util.ResultUtil;
 import com.supersavedriving.user.modular.system.warpper.*;
@@ -23,9 +30,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.PrintWriter;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -48,6 +53,12 @@
 
     @Autowired
     private IBillService billService;
+
+    @Autowired
+    private IRevenueService revenueService;
+
+    @Autowired
+    private IDriverService driverService;
 
 
 
@@ -345,19 +356,124 @@
     @PostMapping("/base/order/orderPayCallback")
     public void orderPayCallback(HttpServletRequest request, HttpServletResponse response){
         try {
-            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
-            if(null != map){
-                String out_trade_no = map.get("out_trade_no");
-                String transaction_id = map.get("transaction_id");
-                String result = map.get("result");
-                String orderId = out_trade_no.substring(17);
-                ResultUtil resultUtil = orderService.orderPayCallback(orderId, transaction_id);
+            String code = request.getParameter("code");
+            String version = request.getParameter("version");
+            String msg = request.getParameter("msg");
+            String date = request.getParameter("date");
+            String result = request.getParameter("result");
+            String sign = request.getParameter("sign");
+            InterfaceResponse interfaceResponse = new InterfaceResponse();
+            interfaceResponse.setCode(code);
+            interfaceResponse.setVersion(version);
+            interfaceResponse.setMsg(msg);
+            interfaceResponse.setDate(date);
+            interfaceResponse.setResult(result);
+            interfaceResponse.setSign(sign);
+            // 验签
+            boolean verify = RSASignature.validate(interfaceResponse.content(), interfaceResponse.getSign());
+            if (verify) {//验签成功业务处理逻辑
+                JSONObject jsonObject = JSON.parseObject(result);
+                String merOrderId = jsonObject.getString("merOrderId");
+                String orderId = jsonObject.getString("parameter1");
+                ResultUtil resultUtil = orderService.orderPayCallback(orderId, merOrderId);
                 if(resultUtil.getCode() == 10000){
+                    response.setStatus(200);
                     PrintWriter out = response.getWriter();
-                    out.print(result);
+                    out.print("OK");
                     out.flush();
                     out.close();
                 }
+            } else {//验签失败业务处理逻辑
+                System.err.println("支付回调验签失败");
+            }
+
+
+//            Map<String, String> map = payMoneyUtil.weixinpayCallback(request);
+//            if(null != map){
+//                String out_trade_no = map.get("out_trade_no");
+//                String transaction_id = map.get("transaction_id");
+//                String result = map.get("result");
+//                String orderId = out_trade_no.substring(17);
+//                ResultUtil resultUtil = orderService.orderPayCallback(orderId, transaction_id);
+//                if(resultUtil.getCode() == 10000){
+//                    PrintWriter out = response.getWriter();
+//                    out.print(result);
+//                    out.flush();
+//                    out.close();
+//                }
+//            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+
+    /**
+     * 异步分账回调
+     */
+    @ResponseBody
+    @PostMapping("/base/order/ledgerCallback")
+    public void ledgerCallback(HttpServletRequest request, HttpServletResponse response){
+        try{
+            String code = request.getParameter("code");
+            String version = request.getParameter("version");
+            String msg = request.getParameter("msg");
+            String date = request.getParameter("date");
+            String result = request.getParameter("result");
+            String sign = request.getParameter("sign");
+            InterfaceResponse interfaceResponse = new InterfaceResponse();
+            interfaceResponse.setCode(code);
+            interfaceResponse.setVersion(version);
+            interfaceResponse.setMsg(msg);
+            interfaceResponse.setDate(date);
+            interfaceResponse.setResult(result);
+            interfaceResponse.setSign(sign);
+            // 验签
+            boolean verify = RSASignature.validate(interfaceResponse.content(), interfaceResponse.getSign());
+            if (verify) {//验签成功业务处理逻辑
+                JSONObject jsonObject = JSON.parseObject(result);
+                String merOrderId = jsonObject.getString("merOrderId");
+                String orderId = jsonObject.getString("parameter1");
+                //确认收货
+                new Timer().schedule(new TimerTask() {
+                    @Override
+                    public void run() {
+                        Order order = orderService.selectById(orderId);
+                        List<Revenue> revenues = revenueService.selectList(new EntityWrapper<Revenue>().eq("userType", 2).eq("orderId", order.getId()));
+                        Receive receive = new Receive();//确认收货
+                        receive.setOriginalMerOrderId(merOrderId);
+                        receive.setRcvAmount(String.valueOf(order.getPayMoney() * 100));
+                        List<ReceiveUser> splitList = new ArrayList<>();
+                        for (Revenue revenue : revenues) {
+                            Driver driver = driverService.selectById(revenue.getUserId());
+                            ReceiveUser receiveUser = new ReceiveUser();
+                            receiveUser.setSplitUserId(driver.getMerchantNumber());
+                            receiveUser.setRcvSplitAmount(revenue.getAmount().toString());
+                            splitList.add(receiveUser);
+                        }
+                        receive.setSplitList(splitList);
+                        TrhRequest<Receive> request1 = new TrhRequest();
+                        InterfaceResponse execute = request1.execute(receive, Receive.SERVICE_CODE);
+                        if(!"0000".equals(execute.getResult())){
+                            System.err.println("确认收货" + execute.getMsg());
+                        }
+                        JSONObject jsonObject = JSON.parseObject(execute.getResult());
+                        String status = jsonObject.getString("status");
+                        if("2".equals(status)){
+                            System.err.println("确认收货失败");
+                        }
+                        if("0".equals(status)){
+                            System.err.println("确认收货处理中");
+                        }
+                    }
+                }, 30000);
+                response.setStatus(200);
+                PrintWriter out = response.getWriter();
+                out.print("OK");
+                out.flush();
+                out.close();
+            } else {//验签失败业务处理逻辑
+                System.err.println("支付回调验签失败");
             }
         }catch (Exception e){
             e.printStackTrace();

--
Gitblit v1.7.1