From e52227b01983146f2e3c81dc575141d8b9889497 Mon Sep 17 00:00:00 2001
From: yanghb <yanghb>
Date: 星期五, 21 四月 2023 10:16:30 +0800
Subject: [PATCH] 代码调整

---
 DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java |  159 ++++++++++++++++++++++-------------------------------
 1 files changed, 66 insertions(+), 93 deletions(-)

diff --git a/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java b/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java
index 00cb39d..06fd775 100644
--- a/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java
+++ b/DriverTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java
@@ -4,17 +4,18 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.system.dao.UserInfoMapper;
 import com.stylefeng.guns.modular.system.dao.WithdrawalMapper;
+import com.stylefeng.guns.modular.system.model.BankCard;
 import com.stylefeng.guns.modular.system.model.Driver;
-import com.stylefeng.guns.modular.system.model.SysWithdrawalPoundage;
 import com.stylefeng.guns.modular.system.model.UserInfo;
 import com.stylefeng.guns.modular.system.model.Withdrawal;
+import com.stylefeng.guns.modular.system.service.IBankCardService;
 import com.stylefeng.guns.modular.system.service.IDriverService;
-import com.stylefeng.guns.modular.system.service.ISysWithdrawalPoundageService;
 import com.stylefeng.guns.modular.system.service.IWithdrawalService;
 import com.stylefeng.guns.modular.system.util.ICBCPayUtil;
-import com.stylefeng.guns.modular.system.util.PayMoneyUtil;
+import com.stylefeng.guns.modular.system.util.LiuZhouBank.ProtocolSignUtil;
 import com.stylefeng.guns.modular.system.util.ResultUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpEntity;
@@ -50,14 +51,10 @@
     private ICBCPayUtil icbcPayUtil;
 
     @Autowired
-    private PayMoneyUtil payMoneyUtil;
-
-
-    @Autowired
     private RestTemplate internalRestTemplate;
 
     @Autowired
-    private ISysWithdrawalPoundageService sysWithdrawalPoundageService;
+    private IBankCardService bankCardService;
 
 
 
@@ -75,7 +72,7 @@
      * @throws Exception
      */
     @Override
-    public ResultUtil withdrawal(Double money, String bankName, String code, String name, Integer uid, Integer type) throws Exception {
+    public ResultUtil withdrawal(Double money, Integer bankCardId, String name, Integer uid, Integer type) throws Exception {
         if(money.compareTo(0D) <= 0){
             return ResultUtil.error("提现金额必须大于0");
         }
@@ -103,8 +100,8 @@
             }
             withdrawal.setBalance(driver.getLaveBusinessMoney());
         }
-        withdrawal.setBankName(bankName);
-        withdrawal.setCode(code);
+        BankCard bankCard = bankCardService.selectById(bankCardId);
+        withdrawal.setCode(bankCard.getCode());
         withdrawal.setFlag(1);
         withdrawal.setInsertTime(new Date());
         withdrawal.setMoney(money);
@@ -114,7 +111,6 @@
         withdrawal.setUserType(2);
         withdrawal.setType(type);
         withdrawal.setWithdrawalType(1);//线上
-        withdrawal.setRealGetMoney(money*(sysWithdrawalPoundageService.selectOne(null).getPercentage()/100));
 
         if(type == 1){
             double v = new BigDecimal(driver.getLaveActivityMoney()).subtract(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
@@ -165,103 +161,80 @@
         }
 
         if(withdrawal.getUserType() == 1){//用户
+            UserInfo userInfo = userInfoMapper.selectById(withdrawal.getUserId());
             if(state == 2){//审核拒绝
-                UserInfo userInfo = userInfoMapper.selectById(withdrawal.getUserId());
                 userInfo.setBalance(new BigDecimal(userInfo.getBalance()).add(new BigDecimal(withdrawal.getMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                 userInfoMapper.updateById(userInfo);
 
                 withdrawal.setState(3);
                 this.updateById(withdrawal);
             }else{
-                //调用银行转账申请(客户要求提交申请就成功了,剩下的他们自己处理)
-                Map<String, String> map = payMoneyUtil.wxPayBank("用户提现", withdrawal.getMoney().toString(), withdrawal.getId().toString(), withdrawal.getCode(), withdrawal.getName(), withdrawal.getBankName());
-                if("SUCCESS".equals(map.get("return_code"))){
-                    withdrawal.setSerialNo(map.get("payment_no"));//交易序列号
-                    withdrawal.setState(2);
-                    this.updateById(withdrawal);
-                }else{
-                    return ResultUtil.error(map.get("err_code_des"));
+                String code = withdrawal.getCode();
+                BankCard bankCard = bankCardService.selectOne(new EntityWrapper<BankCard>().eq("code", code).eq("userType", 1).eq("userId", userInfo.getId()));
+                if(null == bankCard){
+                    return ResultUtil.error("请先绑定该银行卡");
                 }
-
-
-//                TimerTask timerTask = new TimerTask() {
-//                    @Override
-//                    public void run() {
-//                        Integer integer = icbcPayUtil.queryTransfer(withdrawal.getSerialNo());
-//                        if(integer == 0){//交易成功
-//                            withdrawal.setState(2);
-//                            WithdrawalServiceImpl.this.updateById(withdrawal);
-//
-//                            Timer timer = timerMap.get(withdrawal.getSerialNo());
-//                            timer.cancel();
-//                        }
-//                        if(integer == 2){//交易拒绝/失败
-//                            //还原余额
-//                            if(withdrawal.getUserType() == 1){//用户
-//                                withdrawal.setState(3);
-//                                WithdrawalServiceImpl.this.updateById(withdrawal);
-//
-//                                UserInfo userInfo = userInfoMapper.selectById(withdrawal.getUserId());
-//                                userInfo.setBalance(new BigDecimal(userInfo.getBalance()).add(new BigDecimal(withdrawal.getMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-//                                userInfoMapper.updateById(userInfo);
-//
-//                                Timer timer = timerMap.get(withdrawal.getSerialNo());
-//                                timer.cancel();
-//                            }
-//
-//                        }
-//                    }
-//                };
-//                Timer timer = new Timer();
-//                timer.schedule(timerTask, 1000, 10000);//1秒钟后间隔10秒钟查询交易结果
-//                timerMap.put(withdrawal.getSerialNo(), timer);
+//                Map<String, String> map = ProtocolSignUtil.queryProtocolSign(bankCard.getSignNum(), bankCard.getCode());
+//                String code2 = map.get("code");
+//                if("01".equals(code2)){
+//                    String msg = map.get("msg");
+//                    return ResultUtil.error(msg);
+//                }
+//                String signStatus = map.get("SignStatus");
+//                if("02".equals(signStatus)){
+//                    return ResultUtil.error("该银行卡已解约,请先进行签约");
+//                }
+//                if("03".equals(signStatus)){
+//                    return ResultUtil.error("该银行卡客户黑名单");
+//                }
+//                if("04".equals(signStatus)){
+//                    return ResultUtil.error("垫资超限冻结");
+//                }
+//                Map<String, Object> map1 = ProtocolSignUtil.protocolAgentPay(bankCard.getSignNum(), withdrawal.getMoney(), "用户提现");
+//                String code1 = map1.get("code").toString();
+//                if("01".equals(code1)){
+//                    return ResultUtil.error(map1.get("msg").toString());
+//                }
+//                withdrawal.setSerialNo(map1.get("TransSeq").toString());//交易序列号
+//                withdrawal.setState(2);
+//                this.updateById(withdrawal);
             }
         }else{//司机
+            Driver driver = driverService.selectById(withdrawal.getUserId());
             if(state == 2){//拒绝
-                Driver driver = driverService.selectById(withdrawal.getUserId());
                 driver.setBalance(new BigDecimal(driver.getBalance()).add(new BigDecimal(withdrawal.getMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                 driver.setLaveActivityMoney(new BigDecimal(driver.getLaveActivityMoney()).add(new BigDecimal(withdrawal.getMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                 driverService.updateById(driver);
             }else{
-                //调用银行转账申请(客户要求提交申请就成功了,剩下的他们自己处理)
-                Map<String, String> map = payMoneyUtil.wxPayBank("司机提现", withdrawal.getMoney().toString(), withdrawal.getId().toString(), withdrawal.getCode(), withdrawal.getName(), withdrawal.getBankName());
-                if("SUCCESS".equals(map.get("return_code"))){
-                    withdrawal.setSerialNo(map.get("payment_no"));//交易序列号
-                    withdrawal.setState(2);
-                    this.updateById(withdrawal);
-                }else{
-                    return ResultUtil.error(map.get("err_code_des"));
+                String code = withdrawal.getCode();
+                BankCard bankCard = bankCardService.selectOne(new EntityWrapper<BankCard>().eq("code", code).eq("userType", 2).eq("userId", driver.getId()));
+                if(null == bankCard){
+                    return ResultUtil.error("请先绑定该银行卡");
                 }
-
-//                TimerTask timerTask = new TimerTask() {
-//                    @Override
-//                    public void run() {
-//                        Integer integer = icbcPayUtil.queryTransfer(withdrawal.getSerialNo());
-//                        if(integer == 0){//交易成功
-//                            withdrawal.setState(2);
-//                            WithdrawalServiceImpl.this.updateById(withdrawal);
-//
-//                            Timer timer = timerMap.get(withdrawal.getSerialNo());
-//                            timer.cancel();
-//                        }
-//                        if(integer == 2){//交易拒绝/失败
-//                            withdrawal.setState(3);
-//                            WithdrawalServiceImpl.this.updateById(withdrawal);
-//
-//                            //还原余额
-//                            Driver driver = driverService.selectById(withdrawal.getUserId());
-//                            driver.setBalance(new BigDecimal(driver.getBalance()).add(new BigDecimal(withdrawal.getMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-//                            driver.setLaveActivityMoney(new BigDecimal(driver.getLaveActivityMoney()).add(new BigDecimal(withdrawal.getMoney())).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-//                            driverService.updateById(driver);
-//
-//                            Timer timer = timerMap.get(withdrawal.getSerialNo());
-//                            timer.cancel();
-//                        }
-//                    }
-//                };
-//                Timer timer = new Timer();
-//                timer.schedule(timerTask, 1000, 10000);//1秒钟后间隔10秒钟查询交易结果
-//                timerMap.put(withdrawal.getSerialNo(), timer);
+//                Map<String, String> map = ProtocolSignUtil.queryProtocolSign(bankCard.getSignNum(), bankCard.getCode());
+//                String code2 = map.get("code");
+//                if("01".equals(code2)){
+//                    String msg = map.get("msg");
+//                    return ResultUtil.error(msg);
+//                }
+//                String signStatus = map.get("SignStatus");
+//                if("02".equals(signStatus)){
+//                    return ResultUtil.error("该银行卡已解约,请先进行签约");
+//                }
+//                if("03".equals(signStatus)){
+//                    return ResultUtil.error("该银行卡客户黑名单");
+//                }
+//                if("04".equals(signStatus)){
+//                    return ResultUtil.error("垫资超限冻结");
+//                }
+//                Map<String, Object> map1 = ProtocolSignUtil.protocolAgentPay(bankCard.getSignNum(), withdrawal.getMoney(), "司机提现");
+//                String code1 = map1.get("code").toString();
+//                if("01".equals(code1)){
+//                    return ResultUtil.error(map1.get("msg").toString());
+//                }
+//                withdrawal.setSerialNo(map1.get("TransSeq").toString());//交易序列号
+//                withdrawal.setState(2);
+//                this.updateById(withdrawal);
             }
         }
         return ResultUtil.success();

--
Gitblit v1.7.1