From ba28ae386403cf6a9c9b722580dcb732a2294471 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 05 七月 2023 20:09:12 +0800
Subject: [PATCH] 新增提现部分代码

---
 ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TPubWithdrawalController.java |  119 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 105 insertions(+), 14 deletions(-)

diff --git a/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TPubWithdrawalController.java b/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TPubWithdrawalController.java
index 1bf6156..a1a5b4d 100644
--- a/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TPubWithdrawalController.java
+++ b/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TPubWithdrawalController.java
@@ -1,5 +1,7 @@
 package com.stylefeng.guns.modular.system.controller.general;
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.stylefeng.guns.core.base.controller.BaseController;
 import com.stylefeng.guns.core.common.constant.factory.PageFactory;
@@ -8,19 +10,28 @@
 import com.stylefeng.guns.core.util.ExcelExportUtil;
 import com.stylefeng.guns.core.util.SinataUtil;
 import com.stylefeng.guns.core.util.ToolUtil;
+import com.stylefeng.guns.modular.system.util.Tingg.model.*;
+import com.stylefeng.guns.modular.system.model.TDriver;
 import com.stylefeng.guns.modular.system.model.TPubWithdrawal;
 import com.stylefeng.guns.modular.system.model.TSystemNotice;
+import com.stylefeng.guns.modular.system.model.TUser;
+import com.stylefeng.guns.modular.system.service.ITDriverService;
 import com.stylefeng.guns.modular.system.service.ITPubWithdrawalService;
 import com.stylefeng.guns.modular.system.service.ITSystemNoticeService;
-import com.stylefeng.guns.modular.system.util.HttpRequestUtil;
-import com.stylefeng.guns.modular.system.util.PushURL;
+import com.stylefeng.guns.modular.system.service.ITUserService;
+import com.stylefeng.guns.modular.system.util.ResultUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
+import com.stylefeng.guns.modular.system.util.Tingg.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -39,6 +50,22 @@
 
     @Autowired
     private ITSystemNoticeService tSystemNoticeService;
+
+    @Autowired
+    private TinggPayoutUtil tinggPayoutUtil;
+
+    @Autowired
+    private ITUserService userService;
+
+    @Autowired
+    private ITDriverService driverService;
+
+    @Value("${callbackPath}")
+    private String callbackPath;
+
+
+
+
 
     /**
      * 跳转到提现列表首页
@@ -117,23 +144,53 @@
     public Object immediately(@RequestParam Integer id,@RequestParam Integer state,@RequestParam String remark) {
         TPubWithdrawal tPubWithdrawal = tPubWithdrawalService.selectById(id);
         if (SinataUtil.isNotEmpty(tPubWithdrawal)){
-//            tPubWithdrawal.setState(state);  //调用接口修改状态
             tPubWithdrawal.setRemark(remark);
-            tPubWithdrawal.setHandleTime(new Date());
 
-            Integer stateObj = 1;
-            if (2 == state){   //同意提现
-                stateObj = 1;
-            }else if (3 == state){  //拒绝提现
-                stateObj = 2;
+            String serviceCode = "";
+            String phone = "";
+            if(tPubWithdrawal.getUserType() == 1){
+                TUser tUser = userService.selectById(tPubWithdrawal.getUserId());
+                serviceCode = tUser.getPhoneOperator();
+                phone = tUser.getPhone();
+            }else{
+                TDriver tDriver = driverService.selectById(tPubWithdrawal.getUserId());
+                serviceCode = tDriver.getPhoneOperator();
+                phone = tDriver.getPhone();
+            }
+            if(2 == state){
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+                String payerTransactionID = sdf.format(new Date()) + tPubWithdrawal.getId();
+                PayoutResponse payoutResponse = tinggPayoutUtil.sendPayout(serviceCode, "+" + phone, payerTransactionID, tPubWithdrawal.getMoney().doubleValue(), callbackPath + "/tPubWithdrawal/base/withdrawalCallback", "用户提现");
+                AuthStatus authStatus = payoutResponse.getAuthStatus();
+                Results results = payoutResponse.getResults().get(0);
+                String statusCode = results.getStatusCode();
+                if(!"131".equals(authStatus.getAuthStatusCode())){
+                    return ResultUtil.error(authStatus.getAuthStatusDescription());
+                }
+                if(!"139".equals(statusCode)){
+                    return ResultUtil.error(results.getStatusDescription());
+                }
+                tPubWithdrawal.setSerialNo(results.getBeepTransactionID());
+            }else{//回退金额
+                tPubWithdrawal.setHandleTime(new Date());
+                tPubWithdrawal.setState(state);
+                if(tPubWithdrawal.getUserType() == 1){
+                    TUser tUser = userService.selectById(tPubWithdrawal.getUserId());
+                    tUser.setBalance(tUser.getBalance().add(tPubWithdrawal.getMoney()));
+                    userService.updateById(tUser);
+                }else{
+                    TDriver tDriver = driverService.selectById(tPubWithdrawal.getUserId());
+                    tDriver.setBalance(tDriver.getBalance().add(tPubWithdrawal.getMoney()));
+                    if(tPubWithdrawal.getType() == 1){//活动提现
+                        tDriver.setLaveActivityMoney(new BigDecimal(tDriver.getLaveActivityMoney()).add(tPubWithdrawal.getMoney()).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                    }else{//业务提现
+                        tDriver.setLaveBusinessMoney(new BigDecimal(tDriver.getLaveBusinessMoney()).add(tPubWithdrawal.getMoney()).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                    }
+                    driverService.updateById(tDriver);
+                }
             }
             tPubWithdrawalService.updateById(tPubWithdrawal);
 
-            Map<String,String> map = new HashMap<>();
-            map.put("id", String.valueOf(tPubWithdrawal.getId()));
-            map.put("state", String.valueOf(stateObj));
-            String result = HttpRequestUtil.postRequest(PushURL.withdraw_auth_url, map);
-            System.out.println("提现审核接口 :【recordId="+tPubWithdrawal.getId().toString()+"】,调用接口:"+result);
 
             //增加系统消息
             TSystemNotice notice = new TSystemNotice();
@@ -148,6 +205,40 @@
         return SUCCESS_TIP;
     }
 
+
+    @ResponseBody
+    @PostMapping("/base/withdrawalCallback")
+    public PayoutCallbackResponse tinggPayoutCallback(@RequestBody PayoutCallbackRequest request){
+        System.err.println("转账回调>>>>" + JSON.toJSONString(request));
+        PayoutCallbackResponse payoutCallbackResponse = new PayoutCallbackResponse();
+        AuthStatus authStatus = new AuthStatus();
+        authStatus.setAuthStatusCode(131);
+        authStatus.setAuthStatusDescription("Authentication was successful");
+        payoutCallbackResponse.setAuthStatus(authStatus);
+        Results results = new Results();
+        PayoutPacket packet = request.getPayload().getPacket();
+        String statusCode = packet.getStatusCode();
+        String beepTransactionID = packet.getBeepTransactionID();
+        String payerTransactionID = packet.getPayerTransactionID();
+
+        String id = payerTransactionID.substring(17);
+        TPubWithdrawal tPubWithdrawal = tPubWithdrawalService.selectById(id);
+        tPubWithdrawal.setState(2);
+        tPubWithdrawal.setHandleTime(new Date());
+        tPubWithdrawal.setSerialNo(beepTransactionID);
+        tPubWithdrawalService.updateById(tPubWithdrawal);
+
+        results.setBeepTransactionID(beepTransactionID);
+        results.setPayerTransactionID(payerTransactionID);
+        results.setStatusCode("188");
+        results.setStatusDescription("Response was received");
+        payoutCallbackResponse.setResults(results);
+        return payoutCallbackResponse;
+    }
+
+
+
+
     /**
      * 修改提现列表
      */

--
Gitblit v1.7.1