From 8b09fbc19a96b57bf1d0e4d7c79b51a76aeca554 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 28 三月 2025 19:57:56 +0800
Subject: [PATCH] 修改bug

---
 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java |   96 +++++++++++++++++++++++++----------------------
 1 files changed, 51 insertions(+), 45 deletions(-)

diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java
index 4bfbc96..f3dba7d 100644
--- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java
+++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java
@@ -7,6 +7,7 @@
 import com.stylefeng.guns.modular.system.model.Driver;
 import com.stylefeng.guns.modular.system.model.UserInfo;
 import com.stylefeng.guns.modular.system.model.Withdrawal;
+import com.stylefeng.guns.modular.system.service.IBalanceUsageRecordService;
 import com.stylefeng.guns.modular.system.service.IDriverService;
 import com.stylefeng.guns.modular.system.service.IWithdrawalService;
 import com.stylefeng.guns.modular.system.util.ResultUtil;
@@ -15,7 +16,6 @@
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -34,52 +34,38 @@
 
     @Autowired
     private IDriverService driverService;
-
-    /*@Autowired
-    private ICBCPayUtil icbcPayUtil;*/
-
-    @Autowired
-    private RestTemplate internalRestTemplate;
-
-
-
-    private Map<String, Timer> timerMap = new HashMap<>();
-
+    
+    @Resource
+    private IBalanceUsageRecordService balanceUsageRecordService;
 
 
 
     /**
      * 提现操作
      * @param money
-     * @param code
-     * @param name
      * @param uid
      * @throws Exception
      */
     @Override
-    public ResultUtil withdrawal(Double money, String code, String name, Integer uid, Integer type,String bankName) throws Exception {
+    public synchronized ResultUtil withdrawal(Double money, Integer uid, Integer type, String remark, Integer language) throws Exception {
         if(money.compareTo(0D) <= 0){
-            return ResultUtil.error("提现金额必须大于0");
+            return ResultUtil.error(language == 1 ? "提现金额必须大于0" : language == 2 ? "Withdrawal amount must be greater than zero." : "Le montant du retrait doit être supérieur à zéro.");
         }
         Driver driver = driverService.selectById(uid);
         Integer withdrawalRule = driverService.getWithdrawalRule();
         if(withdrawalRule==null){
-            return ResultUtil.error("暂未设置提现时间,请联系平台");
+            return ResultUtil.error(language == 1 ? "暂未设置提现时间,请联系平台" : language == 2 ? "Withdrawal time is not set yet, please contact the platform." : "L’heure de retrait n’est pas encore fixée, veuillez contacter la plateforme.");
         }
-        String week =withdrawalRule==1?"星期一":
-                withdrawalRule==2?"星期二":
-                        withdrawalRule==3?"星期三":
-                                withdrawalRule==4?"星期四":
-                                    withdrawalRule==5?"星期五":
-                                            withdrawalRule==6?"星期六":"星期日";
-        String weeks = DateUtil.getAfterDayWeek("0");
-        if(!weeks.equals(week)){
-            return ResultUtil.error(" 每周"+(withdrawalRule==1?"一":
-                    withdrawalRule==2?"二":
-                            withdrawalRule==3?"三":
-                                    withdrawalRule==4?"四":
-                                            withdrawalRule==5?"五":
-                                                    withdrawalRule==6?"六":"日")+"统一申请提现,平台统一处理。");
+        int weeks = DateUtil.getNowWeekDay();
+
+        if(weeks != withdrawalRule){
+            return ResultUtil.error((language == 1 ? "每周" : language == 2 ? "Apply for withdrawal every " : "Faites une demande de retrait tous les ") +(withdrawalRule==1? (language == 1 ? "一" : language == 2 ? "Monday" : "lundi") :
+                    withdrawalRule==2?(language == 1 ? "二" : language == 2 ? "Tuesday" : "mardi"):
+                            withdrawalRule==3?(language == 1 ? "三" : language == 2 ? "Wednesday" : "mercredi"):
+                                    withdrawalRule==4?(language == 1 ? "四" : language == 2 ? "Thursday" : "jeudi"):
+                                            withdrawalRule==5?(language == 1 ? "五" : language == 2 ? "Friday" : "vendredi"):
+                                                    withdrawalRule==6?(language == 1 ? "六" : language == 2 ? "Saturday" : "samedi"):(language == 1 ? "日" : language == 2 ? "Sunday" : "dimanche")) +
+                    (language == 1 ? "统一申请提现,平台统一处理。" : language == 2 ? ", the platform will handle them together." : ", la plateforme les traitera ensemble."));
         }
         if(null == type){
             type = 1;
@@ -88,48 +74,50 @@
         Withdrawal withdrawal = new Withdrawal();
         if(type == 1){
             if(null == driver.getLaveActivityMoney()){
-                return ResultUtil.error("账户没有余额,不能提现");
+                return ResultUtil.error(language == 1 ? "账户没有余额,不能提现" : language == 2 ? "Insufficient balance, unable to withdraw." : "Solde insuffisant, impossibilité de retirer.");
             }
             if(driver.getLaveActivityMoney().compareTo(money) < 0){
-                return ResultUtil.error("提现金额必须小于账户余额");
+                return ResultUtil.error(language == 1 ? "提现金额必须小于账户余额" : language == 2 ? "Withdrawal amount must be less than account balance." : "Le montant du retrait doit être inférieur au solde du compte.");
             }
             withdrawal.setBalance(driver.getLaveActivityMoney());
         }
         if(type == 2){
             if(null == driver.getLaveBusinessMoney()){
-                return ResultUtil.error("账户没有余额,不能提现");
+                return ResultUtil.error(language == 1 ? "账户没有余额,不能提现" : language == 2 ? "Insufficient balance, unable to withdraw." : "Solde insuffisant, impossibilité de retirer.");
             }
 
             Double money1 = driverService.getThisWeekMoney(uid);
             Double laveBusinessMoney =driver.getLaveBusinessMoney()-(money1==null?0d:money1);
             if(laveBusinessMoney.compareTo(money) < 0){
-                return ResultUtil.error("提现金额必须小于账户余额");
+                return ResultUtil.error(language == 1 ? "提现金额必须小于账户余额" : language == 2 ? "Withdrawal amount must be less than account balance." : "Le montant du retrait doit être inférieur au solde du compte.");
             }
             withdrawal.setBalance(driver.getLaveBusinessMoney()-(money1==null?0d:money1));
         }
-        withdrawal.setCode(code);
+        withdrawal.setCode(driver.getPhone());// TODO: 2023/7/5 第三方支支持手机号提现
+        withdrawal.setBankName(driver.getPhoneOperator());
         withdrawal.setFlag(1);
         withdrawal.setInsertTime(new Date());
         withdrawal.setMoney(money);
-        withdrawal.setName(name);
+        withdrawal.setName(driver.getFirstName() + " " + driver.getLastName());
         withdrawal.setState(1);
         withdrawal.setUserId(uid);
         withdrawal.setUserType(2);
-        withdrawal.setBankName(bankName);
         withdrawal.setType(type);
-        withdrawal.setWithdrawalType(1);//线上
+        withdrawal.setRemark(remark);
+        this.insert(withdrawal);
 
         if(type == 1){
             double v = new BigDecimal(driver.getLaveActivityMoney()).subtract(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
             driver.setLaveActivityMoney(v);
             v = new BigDecimal(driver.getBalance()).subtract(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
             driver.setBalance(v);
+            balanceUsageRecordService.saveBalanceUsageRecord(driver.getId(), 1, money, 6);
         }
         if(type == 2){
             double v = new BigDecimal(driver.getLaveBusinessMoney()).subtract(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
             driver.setLaveBusinessMoney(v);
+            balanceUsageRecordService.saveBalanceUsageRecord(driver.getId(), 2, money, 6);
         }
-        this.insert(withdrawal);
         driverService.updateById(driver);
         return ResultUtil.success();
     }
@@ -144,9 +132,16 @@
      * @throws Exception
      */
     @Override
-    public List<Map<String, Object>> queryWithdrawal(Integer uid, Integer type, Integer pageNum, Integer size) throws Exception {
+    public List<Map<String, Object>> queryWithdrawal(Integer language, Integer uid, Integer type, Integer state, Integer pageNum, Integer size) throws Exception {
         pageNum = (pageNum - 1) * size;
-        return withdrawalMapper.queryWithdrawal(uid, 2, type, pageNum, size);
+        List<Map<String, Object>> list = withdrawalMapper.queryWithdrawal(uid, 2, type, state, pageNum, size);
+        for (Map<String, Object> map : list) {
+            if(null != map.get("insertTime")){
+                String insertTime = map.get("insertTime").toString();
+                map.put("insertTime", com.stylefeng.guns.modular.system.util.DateUtil.conversionFormat(language, insertTime));
+            }
+        }
+        return list;
     }
 
 
@@ -158,13 +153,13 @@
      * @throws Exception
      */
     @Override
-    public ResultUtil withdrawalAudit(Integer id, Integer state) throws Exception {
+    public ResultUtil withdrawalAudit(Integer id, Integer state, Integer language) throws Exception {
         Withdrawal withdrawal = this.selectById(id);
         if(withdrawal.getState() == 2){
-            return ResultUtil.error("申请已审核通过,不能重复提交");
+            return ResultUtil.error(language == 1 ? "申请已审核通过,不能重复提交" : language == 2 ? "Application was approved, do not resubmit." : "La demande a été approuvée, ne pas la soumettre à nouveau.");
         }
         if(withdrawal.getState() == 3){
-            return ResultUtil.error("申请已审核拒绝,不能重复提交");
+            return ResultUtil.error(language == 1 ? "车牌号已经使用" : language == 2 ? "Plate number is already in use" : "Le numéro de plaque est déjà utilisé");
         }
 
         if(withdrawal.getUserType() == 1){//用户
@@ -279,4 +274,15 @@
         }
         return ResultUtil.success();
     }
+    
+    /**
+     * 获取提现总额
+     * @param uid
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public Double queryWithdrawalSum(Integer uid, Integer type) throws Exception {
+        return this.baseMapper.queryWithdrawalSum(uid, 2, type);
+    }
 }

--
Gitblit v1.7.1