From 3f35f18f9bc8edca6c2b6210168d5ce7c135c825 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 09 十月 2025 15:19:41 +0800
Subject: [PATCH] update

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysOrderController.java |  138 +++++++++++++++++++++++++--------------------
 1 files changed, 77 insertions(+), 61 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysOrderController.java
index b794052..139a22a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysOrderController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSysOrderController.java
@@ -125,6 +125,12 @@
             String outTradeNo = time + nonce;
             String amount = String.valueOf(erpProcurement.getPayMoney().multiply(new BigDecimal("100")).intValue());
 
+            TCrmSupplier supplier = crmSupplierService.getById(erpProcurement.getSupplierId());
+            String trans_type ="41";
+            if("WECHAT".equals(type)){
+                trans_type= "51";
+            }
+
 
             String apiPath = "sit/api/v3/labs/trans/preorder";
             String body = "{\n" +
@@ -132,8 +138,8 @@
                     "\t\"version\": \"3.0\",\n" +
                     "\t\"req_data\": {\n" +
                     "\t\t\"out_trade_no\": \"" + outTradeNo + "\",\n" +
-                    "\t\t\"merchant_no\": \"822290059430BFA\",\n" +
-                    "\t\t\"term_no\": \"D9261078\",\n" +
+                    "\t\t\"merchant_no\": \""+supplier.getRecvMerchantNo()+"\",\n" +
+                    "\t\t\"term_no\": \""+supplier.getTermNo()+"\",\n" +
                     "\t\t\"notify_url\": \"http://221.182.45.100:8089/t-sys-order/messageHandle\",\n" +
                     "\t\t\"location_info\": {\n" +
                     "\t\t\t\"request_ip\": \"" + ipAddr + "\"\n" +
@@ -142,9 +148,10 @@
                     "\t\t\"settle_type\": \"1\",\n" +
                     "\t\t\"total_amount\": " + amount + ",\n" +
                     "\t\t\"account_type\": \"" + type + "\",\n" +
-                    "\t\t\"trans_type\": \"41\"\n" +
+                    "\t\t\"trans_type\": \""+trans_type+"\"\n" +
                     "\t}\n" +
                     "}";
+
             String authorization = getAuthorization(body);
             org.apache.http.HttpResponse response = post(LakalaConfig.getServerUrl() + apiPath, body, authorization);
             if (response.getStatusLine().getStatusCode() != 200) {
@@ -160,9 +167,9 @@
             String code = jsonObject1.getString("log_no");
             erpProcurement.setPayTransactionId(code);
             erpProcurement.setStatus(2);
-            erpProcurement.setTermNo("D9261078");
+            erpProcurement.setTermNo(supplier.getTermNo());
             erpProcurement.setAccountType(type);
-            erpProcurement.setTransType("41");
+            erpProcurement.setTransType(trans_type);
             erpProcurementService.updateById(erpProcurement);
 
             return R.ok(responseStr);
@@ -173,10 +180,6 @@
     }
 
 
-    public static void main(String[] args) {
-        String a = "{\"code\":\"BBS00000\",\"msg\":\"成功\",\"resp_time\":\"20250916114506\",\"resp_data\":{\"merchant_no\":\"822290059430BFA\",\"out_trade_no\":\"202509161144582Kck\",\"trade_no\":\"2025091666200821320234\",\"log_no\":\"66200821320234\",\"settle_merchant_no\":\"\",\"settle_term_no\":\"\",\"trade_req_date\":\"20250916\",\"acc_resp_fields\":{\"code\":\"https://qr.alipay.com/bax01747cbtdjneesjaz0044\",\"code_image\":\"\",\"prepay_id\":\"\",\"app_id\":\"\",\"pay_sign\":\"\",\"time_stamp\":\"\",\"nonce_str\":\"\",\"package\":\"\",\"sign_type\":\"\",\"form_data\":\"\",\"redirect_url\":\"\",\"best_pay_info\":\"\",\"partner_id\":\"\",\"sub_mch_id\":\"2088240727800097\"}}}";
-
-    }
 
     @RequestMapping("/messageHandle")
     @ApiOperation(value = "拉卡拉支付信息回调接口")
@@ -223,7 +226,7 @@
 
 
             HashMap<String, Object> map = new HashMap<>();
-            map.put("merchant_no", "822290059430BFA");
+            map.put("merchant_no", erpProcurement.getMerchantNo());
             map.put("log_no", erpProcurement.getPayTransactionId());
             map.put("log_date", DateUtils.dateTime());
             map.put("notify_url", "http://221.182.45.100:8089/t-sys-order/messageSeparateHandle");
@@ -237,25 +240,29 @@
             String outTradeNo = time + str;
             map.put("out_separate_no", outTradeNo);
             map.put("total_amt", erpProcurement.getPayMoney().multiply(BigDecimal.valueOf(100)).intValue() + "");
-            // 平台应得分账
+
+
+
             BigDecimal allMoney = erpProcurement.getPayMoney();
-            BigDecimal payMoney = erpProcurement.getPayMoney();
+            // 平台应得分账
+            BigDecimal payMoney = erpProcurement.getMoney();
             ArrayList<HashMap<String, Object>> objects = new ArrayList<>();
             // 根据供应商id分组
             Map<String, List<TErpProcurementGoods>> collect = list.stream().collect(Collectors.groupingBy(TErpProcurementGoods::getSupplierId));
-            for (Map.Entry<String, List<TErpProcurementGoods>> entry : collect.entrySet()) {
-                HashMap<String, Object> map1 = new HashMap<>();
-                String supplierId = entry.getKey();
-                TCrmSupplier supplier = crmSupplierService.getById(supplierId);
-                List<TErpProcurementGoods> value = entry.getValue();
-                BigDecimal reduce = value.stream().map(TErpProcurementGoods::getSupplierMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
-                payMoney = payMoney.subtract(reduce);
-                map1.put("recv_merchant_no", supplier.getRecvMerchantNo());
-                map1.put("separate_value", reduce.multiply(BigDecimal.valueOf(100)).intValue() + "");
-                objects.add(map1);
-            }
+//            for (Map.Entry<String, List<TErpProcurementGoods>> entry : collect.entrySet()) {
+//                HashMap<String, Object> map1 = new HashMap<>();
+//                String supplierId = entry.getKey();
+//                TCrmSupplier supplier = crmSupplierService.getById(supplierId);
+//                List<TErpProcurementGoods> value = entry.getValue();
+//                BigDecimal reduce = value.stream().map(TErpProcurementGoods::getSupplierMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+//                payMoney = payMoney.subtract(reduce);
+//                map1.put("recv_no", supplier.getRecvMerchantNo());
+//                map1.put("separate_value", reduce.multiply(BigDecimal.valueOf(100)).intValue() + "");
+////                objects.add(map1);
+//            }
             HashMap<String, Object> map1 = new HashMap<>();
-            map1.put("recv_merchant_no", "822641048160MMJ");
+            //TODO hzt
+            map1.put("recv_no", "SR2024000006413");
             // 手续费
             BigDecimal bigDecimal = allMoney.multiply(new BigDecimal("0.038")).setScale(2, RoundingMode.HALF_UP);
             payMoney = payMoney.subtract(bigDecimal);
@@ -274,9 +281,18 @@
 
 
             String jsonString = JSON.toJSONString(reqMap);
-            post.body(jsonString);
-            HttpResponse response = post.execute();
-            String responseStr = response.body();
+//            String authorization1 = getAuthorization(jsonString);
+//            post.header("Authorization", SCHEMA + " " + authorization);
+//
+//            post.body(jsonString);
+//            HttpResponse response = post.execute();
+//            String responseStr = response.body();
+
+            String authorization1 = getAuthorization(jsonString);
+            org.apache.http.HttpResponse response1 = post(LakalaConfig.getServerUrl() + "sit/api/v3/sacs/separate", jsonString, authorization1);
+            String responseStr = IOUtils.toString(response1.getEntity().getContent(), ENCODING);
+
+
             JSONObject jsonObject = JSONObject.parseObject(responseStr);
             if ("成功".equals(jsonObject.getString("msg"))) {
                 Object o1 = jsonObject.get("resp_data");
@@ -311,15 +327,12 @@
             if ( erpProcurement!=null && "SUCCESS".equals(status)) {
                 erpProcurement.setRefundStatus(1);
                 erpProcurementService.updateById(erpProcurement);
+                // 修改分账状态
                 List<TErpProcurementGoods> list1 = erpProcurementGoodsService.list(new LambdaQueryWrapper<TErpProcurementGoods>().eq(TErpProcurementGoods::getProcurementId, erpProcurement.getId()));
-                for (Object object : jsonArray) {
-                    JSONObject jsonObject = JSONObject.parseObject(object.toString());
-                    String recvMerchantNo = jsonObject.getString("recv_merchant_no");
-                    String recvNo = jsonObject.getString("recv_no");
-                    List<TErpProcurementGoods> collect1 = list1.stream().filter(e -> e.getRecvMerchantNo().equals(recvMerchantNo)).collect(Collectors.toList());
-                    collect1.stream().forEach(e->e.setRecvNo(recvNo));
-                    erpProcurementGoodsService.updateBatchById(collect1);
-                }
+                list1.stream().forEach(e->e.setStatus(1));
+                erpProcurementGoodsService.updateBatchById(list1);
+
+
                 // 响应success
                 JSONObject jsonObject = new JSONObject();
                 jsonObject.put("code", "SUCCESS");
@@ -352,7 +365,7 @@
                         "\t\"req_time\": \"" + time + "\",\n" +
                         "\t\"version\": \"3.0\",\n" +
                         "\t\"req_data\": {\n" +
-                        "\t\t\"merchant_no\": \"822290059430BFA\",\n" +
+                        "\t\t\"merchant_no\": \""+erpProcurement.getMerchantNo()+"\",\n" +
                         "\t\t\"term_no\": \""+erpProcurement.getTermNo()+"\",\n" +
                         "\t\t\"refund_amount\": " + refund_amount + ",\n" +
                         "\t\t\"out_trade_no\": \"" + outTradeNo + "\",\n" +
@@ -410,7 +423,6 @@
                 return jsonObject;
             }
         }
-
         return null;
     }
 
@@ -420,7 +432,7 @@
     @ApiOperation(value = "退款")
     @PostMapping(value = "/refundOrder")
     @SneakyThrows
-    public R<?> refundOrder(@RequestParam String id, String type, HttpServletRequest request) {
+    public R<?> refundOrder(@RequestParam String id, HttpServletRequest request) {
         SysUser user = tokenService.getLoginUser().getUser();
         try {
             // 先退分账  在退订单
@@ -443,7 +455,7 @@
             String outTradeNo = time + str;
 
             // 操作分账
-            HttpRequest post = HttpUtil.createPost(LakalaConfig.getServerUrl() + "sit/api/v3/sacs/fallback");
+//            HttpRequest post = HttpUtil.createPost(LakalaConfig.getServerUrl() + "sit/api/v3/sacs/fallback");
             HashMap<String, Object> reqMap = new HashMap<>();
             reqMap.put("version", "3.0");
             reqMap.put("req_time", DateUtils.dateTimeNow());
@@ -451,45 +463,49 @@
 
 
             HashMap<String, Object> map = new HashMap<>();
-            map.put("merchant_no", "822290059430BFA");
+            map.put("merchant_no", erpProcurement.getMerchantNo());
             map.put("origin_separate_no", erpProcurement.getSeparateNo());
             map.put("out_separate_no",outTradeNo);
             erpProcurement.setRefundOutSeparateNo(outTradeNo);
             erpProcurementService.updateById(erpProcurement);
-
-
-            List<TErpProcurementGoods> list = erpProcurementGoodsService.list(new LambdaQueryWrapper<TErpProcurementGoods>().eq(TErpProcurementGoods::getProcurementId, erpProcurement.getId()));
-
+//            List<TErpProcurementGoods> list = erpProcurementGoodsService.list(new LambdaQueryWrapper<TErpProcurementGoods>().eq(TErpProcurementGoods::getProcurementId, erpProcurement.getId()));
             // 根据供应商id分组
-            Map<String, List<TErpProcurementGoods>> collect = list.stream().collect(Collectors.groupingBy(TErpProcurementGoods::getSupplierId));
+//            Map<String, List<TErpProcurementGoods>> collect = list.stream().collect(Collectors.groupingBy(TErpProcurementGoods::getSupplierId));
             ArrayList<HashMap<String, Object>> objects = new ArrayList<>();
-            BigDecimal allMoney = list.stream().map(TErpProcurementGoods::getSupplierMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
-            for (Map.Entry<String, List<TErpProcurementGoods>> entry : collect.entrySet()) {
-                HashMap<String, Object> map1 = new HashMap<>();
-                List<TErpProcurementGoods> value = entry.getValue();
-                BigDecimal reduce = value.stream().map(TErpProcurementGoods::getSupplierMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
-                String recv_no = value.stream().map(TErpProcurementGoods::getRecvNo).collect(Collectors.toList()).get(0);
-                map1.put("recv_no", recv_no);
-                map1.put("amt", reduce.multiply(BigDecimal.valueOf(100)).intValue() + "");
-                objects.add(map1);
-            }
-            BigDecimal add = allMoney.add(erpProcurement.getMoney()).multiply(BigDecimal.valueOf(100));
-            map.put("total_amt",add);
+//            BigDecimal allMoney = list.stream().map(TErpProcurementGoods::getSupplierMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+//            for (Map.Entry<String, List<TErpProcurementGoods>> entry : collect.entrySet()) {
+//
+//                List<TErpProcurementGoods> value = entry.getValue();
+//                BigDecimal reduce = value.stream().map(TErpProcurementGoods::getSupplierMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+//                String recv_no = value.stream().map(TErpProcurementGoods::getRecvNo).collect(Collectors.toList()).get(0);
+//            }
+            HashMap<String, Object> map1 = new HashMap<>();
+            // TODO hzt
+            map1.put("recv_no", "SR2024000006413");
+            map1.put("amt", erpProcurement.getMoney().multiply(BigDecimal.valueOf(100)).intValue() + "");
+            objects.add(map1);
+            map.put("total_amt",erpProcurement.getMoney().multiply(BigDecimal.valueOf(100)).intValue() + "");
             map.put("origin_recv_datas",objects);
             reqMap.put("req_data", map);
 
 
             String jsonString = JSON.toJSONString(reqMap);
-            post.body(jsonString);
-            HttpResponse response = post.execute();
-            String responseStr = response.body();
+
+            String authorization1 = getAuthorization(jsonString);
+            org.apache.http.HttpResponse response1 = post(LakalaConfig.getServerUrl() + "sit/api/v3/sacs/fallback", jsonString, authorization1);
+            String responseStr = IOUtils.toString(response1.getEntity().getContent(), ENCODING);
+
+
+//            post.body(jsonString);
+//            HttpResponse response = post.execute();
+//            String responseStr = response.body();
 
 
             return R.ok(responseStr);
         } catch (Exception e) {
             e.printStackTrace();
         }
-        return R.fail(500, "调用支付宝支付预下单接口错误");
+        return R.fail(500, "退款失败请联系平台管理员");
     }
 
 

--
Gitblit v1.7.1