Преглед на файлове

fix: 账户余额改为从支付宝实时获取 available_amount

- AccountVO 新增 availableAmount 字段
- AccountService.queryAccounts 调 AlipayTransferService.queryAccounts 拉实时余额
- 前端优先用 available_amount
alphaH преди 2 дни
родител
ревизия
2b2bf5dd14

+ 1 - 1
frontend/src/views/module_payment/account/components/AccountOverview.vue

@@ -479,7 +479,7 @@ async function fetchAccountInfo() {
       const account = res.data.data[0];
       accountData.value = {
         account_book_id: account.account_book_id,
-        balance: Number(account.balance ?? account.available_amount ?? 0),
+        balance: Number(account.available_amount ?? account.balance ?? 0),
         status: account.status ?? account.enable_status,
         scene: account.scene,
         sign_status: account.sign_status,

+ 3 - 0
java/src/main/java/com/payment/platform/module/payment/account/dto/AccountVO.java

@@ -41,6 +41,9 @@ public class AccountVO {
     @Schema(description = "进件单号")
     private String onboardOrderId;
 
+    @Schema(description = "可用余额(支付宝实时)")
+    private String availableAmount;
+
     @Schema(description = "备注")
     private String remark;
 

+ 15 - 1
java/src/main/java/com/payment/platform/module/payment/account/service/AccountService.java

@@ -69,9 +69,23 @@ public class AccountService {
     private final AlipayTransferService alipayTransferService;
 
     public List<AccountVO> queryAccounts(String enterpriseId) {
-        return accountMapper.selectList(
+        List<AccountVO> vos = accountMapper.selectList(
                 new LambdaQueryWrapper<AccountEntity>().eq(AccountEntity::getEnterpriseId, enterpriseId))
                 .stream().map(this::accountVO).toList();
+        // 从支付宝拉取实时余额(available_amount)
+        for (AccountVO vo : vos) {
+            if (vo.getAccountBookId() != null && !vo.getAccountBookId().isBlank()) {
+                try {
+                    var alipayAccounts = alipayTransferService.queryAccounts(enterpriseId);
+                    for (var m : alipayAccounts) {
+                        if (vo.getAccountBookId().equals(m.get("account_book_id"))) {
+                            vo.setAvailableAmount((String) m.get("available_amount"));
+                        }
+                    }
+                } catch (Exception ignored) {}
+            }
+        }
+        return vos;
     }
 
     /** 统计转账金额 — 仅统计 SUCCESS 状态的记录 */

+ 3 - 0
java/src/main/java/com/payment/platform/module/payment/enterprise/dto/EnterpriseUpdateDTO.java

@@ -44,4 +44,7 @@ public class EnterpriseUpdateDTO {
 
     @Schema(description = "万里汇uid")
     private String wanlihuiUid;
+
+    @Schema(description = "是否开通转账功能")
+    private Boolean transferEnabled;
 }

+ 3 - 0
java/src/main/java/com/payment/platform/module/payment/enterprise/entity/EnterpriseEntity.java

@@ -57,6 +57,9 @@ public class EnterpriseEntity extends PaymentTenantBaseEntity {
     /** 入驻材料:法人手持身份证照片(图片路径) */
     private String legalRepIdPhoto;
 
+    /** 是否开通转账功能(admin分配) */
+    private Boolean transferEnabled;
+
     @JsonRawValue
     public String getBaseInfo() { return baseInfo; }