From ab9cd2c82bd64de8e33510db1d1e78a5b3b4de70 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 20 四月 2026 19:37:20 +0800
Subject: [PATCH] 代码生成

---
 server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java |   94 +++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 90 insertions(+), 4 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
index 3484958..0d0b4c4 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
@@ -19,6 +19,8 @@
 import com.doumee.dao.business.model.ShopInfo;
 import com.doumee.dao.business.model.WithdrawalOrders;
 import com.doumee.dao.dto.WithdrawalApproveDTO;
+import com.doumee.config.alipay.AlipayFundTransUniTransfer;
+import com.doumee.dao.dto.AlipayTransferDTO;
 import com.doumee.dao.dto.WithdrawalDTO;
 import com.doumee.dao.system.SystemUserMapper;
 import com.doumee.dao.system.model.SystemUser;
@@ -27,6 +29,7 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
@@ -229,6 +232,7 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void approve(WithdrawalApproveDTO dto) {
         if (dto == null || dto.getId() == null || dto.getStatus() == null) {
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀹℃壒鍙傛暟涓嶅畬鏁�");
@@ -249,13 +253,95 @@
         Integer currentUserId = getCurrentUserId();
         Date now = new Date();
 
+        // 瀹℃壒閫氳繃鏃讹紝璋冪敤鏀粯瀹濇墦娆�
+        Integer finalStatus = dto.getStatus();
+        String doneInfo = null;
+        if (Constants.ONE.equals(dto.getStatus())) {
+            String aliAccount = order.getAliAccount();
+            String aliName = null;
+
+            // 浠庡徃鏈烘垨闂ㄥ簵鑾峰彇鏀粯瀹濊处鎴峰拰瀹炲悕濮撳悕
+            if (StringUtils.isBlank(aliAccount)) {
+                if (Constants.equalsInteger(order.getMemberType(), Constants.ONE)) {
+                    DriverInfo driver = driverInfoMapper.selectOne(new QueryWrapper<DriverInfo>().lambda()
+                            .eq(DriverInfo::getMemberId, order.getMemberId())
+                            .eq(DriverInfo::getDeleted, Constants.ZERO)
+                            .last("limit 1"));
+                    if (driver != null) {
+                        aliAccount = driver.getAliAccount();
+                        aliName = driver.getAliName();
+                    }
+                } else if (Constants.equalsInteger(order.getMemberType(), Constants.TWO)) {
+                    ShopInfo shop = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda()
+                            .eq(ShopInfo::getRegionMemberId, order.getMemberId())
+                            .eq(ShopInfo::getDeleted, Constants.ZERO)
+                            .last("limit 1"));
+                    if (shop != null) {
+                        aliAccount = shop.getAliAccount();
+                        aliName = shop.getAliName();
+                    }
+                }
+            } else {
+                // 浠� WithdrawalOrders 鐨� aliAccount 鏌ュ搴斿鍚�
+                if (Constants.equalsInteger(order.getMemberType(), Constants.ONE)) {
+                    DriverInfo driver = driverInfoMapper.selectOne(new QueryWrapper<DriverInfo>().lambda()
+                            .eq(DriverInfo::getMemberId, order.getMemberId())
+                            .eq(DriverInfo::getDeleted, Constants.ZERO)
+                            .last("limit 1"));
+                    if (driver != null) {
+                        aliName = driver.getAliName();
+                    }
+                } else if (Constants.equalsInteger(order.getMemberType(), Constants.TWO)) {
+                    ShopInfo shop = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda()
+                            .eq(ShopInfo::getRegionMemberId, order.getMemberId())
+                            .eq(ShopInfo::getDeleted, Constants.ZERO)
+                            .last("limit 1"));
+                    if (shop != null) {
+                        aliName = shop.getAliName();
+                    }
+                }
+            }
+
+            if (StringUtils.isBlank(aliAccount)) {
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鏀粯瀹濇彁鐜拌处鎴锋湭閰嶇疆锛屾棤娉曟墦娆�");
+            }
+
+            // 閲戦杞崲锛氬垎 鈫� 鍏�
+            Long amountFen = order.getAmount() != null ? order.getAmount() : 0L;
+            BigDecimal transAmount = new BigDecimal(amountFen).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
+
+            AlipayTransferDTO transferDTO = new AlipayTransferDTO();
+            transferDTO.setOutBizNo(order.getOutBillNo());
+            transferDTO.setTransAmount(transAmount);
+            transferDTO.setPayeeAccount(aliAccount);
+            transferDTO.setPayeeName(aliName);
+            transferDTO.setRemark("鎻愮幇鎵撴");
+
+            String alipayOrderId;
+            try {
+                alipayOrderId = AlipayFundTransUniTransfer.transfer(transferDTO);
+            } catch (BusinessException e) {
+                throw e;
+            } catch (Exception e) {
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鏀粯瀹濇墦娆惧け璐ワ細" + e.getMessage());
+            }
+            doneInfo = "鏀粯瀹濊浆璐﹀崟鍙凤細" + alipayOrderId;
+        }
+
         WithdrawalOrders update = new WithdrawalOrders();
         update.setId(dto.getId());
-        update.setStatus(dto.getStatus());
+        update.setStatus(finalStatus);
         update.setUserId(currentUserId);
         update.setApproveTime(now);
         update.setApproveRemark(dto.getApproveRemark());
         update.setUpdateTime(now);
+        if (Constants.ONE.equals(finalStatus)) {
+            update.setDoneTime(now);
+            update.setDoneInfo(doneInfo);
+        } else if (doneInfo != null) {
+            update.setDoneTime(now);
+            update.setDoneInfo(doneInfo);
+        }
         withdrawalOrdersMapper.updateById(update);
 
         // 鏇存柊鍏宠仈鐨勬彁鐜� Revenue 璁板綍鐘舵��
@@ -267,15 +353,15 @@
                 .eq(Revenue::getDeleted, Constants.ZERO)
                 .last("limit 1"));
         if (withdrawalRevenue != null) {
-            Integer revenueStatus = Constants.ONE.equals(dto.getStatus()) ? Constants.ZERO : Constants.ONE; // 閫氳繃=0鎴愬姛, 椹冲洖=1澶辫触
+            Integer revenueStatus = Constants.ONE.equals(finalStatus) ? Constants.ZERO : Constants.ONE; // 閫氳繃=0鎴愬姛, 椹冲洖=1澶辫触
             revenueMapper.update(new UpdateWrapper<Revenue>().lambda()
                     .set(Revenue::getStatus, revenueStatus)
                     .set(Revenue::getUpdateTime, now)
                     .eq(Revenue::getId, withdrawalRevenue.getId()));
         }
 
-        // 椹冲洖鏃堕��鍥炰綑棰�
-        if (Constants.TWO.equals(dto.getStatus())) {
+        // 椹冲洖鎴栨墦娆惧け璐ユ椂閫�鍥炰綑棰�
+        if (Constants.TWO.equals(finalStatus)) {
             Long amountFen = order.getAmount() != null ? order.getAmount() : 0L;
             if (amountFen > 0 && order.getMemberId() != null) {
                 if (Constants.equalsInteger(order.getMemberType(), Constants.ONE)) {

--
Gitblit v1.9.3