ソースを参照

fix: 进件按钮启用逻辑 + authorizeStatus改为基于sign_status判断

- AccountVO + sign_status/onboard_status/agreement_no 映射
- authorizeStatus: sign_status===SIGNED 或已有account_book_id → AUTHORIZED
- 进件按钮: 已签约且未开通专户且非VALID时可点击
- 开通专户按钮: onboard_status===VALID 才可点击
- fetchAccountInfo 映射 sign_status + onboard_status
alphaH 1 日 前
コミット
96235ccf0c

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

@@ -61,7 +61,7 @@
 
         <div
           class="action-item"
-          :class="{ disabled: authorizeStatus !== 'AUTHORIZED' || !!accountData.account_book_id }"
+          :class="{ disabled: authorizeStatus !== 'AUTHORIZED' || !!accountData.account_book_id || accountData.onboard_status === 'VALID' }"
         >
           <div class="action-icon">
             <el-icon :size="32"><Upload /></el-icon>
@@ -76,7 +76,7 @@
           <el-button
             v-hasPerm="['module_payment:account:authorize']"
             type="primary"
-            :disabled="authorizeStatus !== 'AUTHORIZED' || !!accountData.account_book_id"
+            :disabled="authorizeStatus !== 'AUTHORIZED' || !!accountData.account_book_id || accountData.onboard_status === 'VALID'"
             @click="$emit('goTab', 'onboard')"
           >
             {{ accountData.onboard_status === 'VALID' ? '已通过' : '去提交' }}
@@ -323,6 +323,7 @@ const accountData = ref<{
   status?: string;
   balance?: number;
   scene?: string;
+  sign_status?: string;
   onboard_status?: string;
 }>({});
 const recentTransfers = ref<any[]>([]);
@@ -344,8 +345,10 @@ const currentEnterpriseName = computed(() => {
   return `${currentEnterprise.value.name} (${currentEnterprise.value.enterprise_id.slice(-4)})`;
 });
 
+// 签约状态: 有签约协议号即视为已签约(通知已写入 DB)
 const authorizeStatus = computed(() =>
-  accountData.value.account_book_id ? "AUTHORIZED" : "PENDING"
+  accountData.value.sign_status === "SIGNED" || accountData.value.account_book_id
+    ? "AUTHORIZED" : "PENDING"
 );
 
 const currentStep = computed(() => {
@@ -442,6 +445,8 @@ async function fetchAccountInfo() {
         balance: Number(account.balance ?? account.available_amount ?? 0),
         status: account.status ?? account.enable_status,
         scene: account.scene,
+        sign_status: account.sign_status,
+        onboard_status: account.onboard_status,
       };
     }
 
@@ -456,6 +461,8 @@ async function fetchAccountInfo() {
       status: accountData.value.status,
       balance: accountData.value.balance || 0,
       authorize_status: authorizeStatus.value,
+      sign_status: accountData.value.sign_status,
+      onboard_status: accountData.value.onboard_status,
     });
   } catch (error) {
     console.error("获取账户信息失败:", error);

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

@@ -32,6 +32,15 @@ public class AccountVO {
     @Schema(description = "签约时间")
     private OffsetDateTime signTime;
 
+    @Schema(description = "签约协议号")
+    private String agreementNo;
+
+    @Schema(description = "进件状态")
+    private String onboardStatus;
+
+    @Schema(description = "进件单号")
+    private String onboardOrderId;
+
     @Schema(description = "备注")
     private String remark;
 

+ 3 - 0
java/src/main/java/com/payment/platform/module/payment/account/service/AccountService.java

@@ -479,6 +479,9 @@ public class AccountService {
         vo.setScene(a.getScene());
         vo.setSignStatus(a.getSignStatus());
         vo.setSignTime(a.getSignTime());
+        vo.setAgreementNo(a.getAgreementNo());
+        vo.setOnboardStatus(a.getOnboardStatus());
+        vo.setOnboardOrderId(a.getOnboardOrderId());
         vo.setRemark(a.getRemark());
         vo.setStatus(a.getStatus());
         vo.setCreatedTime(a.getCreatedTime());

+ 2 - 0
logs/payment-platform.log

@@ -1506,3 +1506,5 @@ Caused by: org.postgresql.util.PSQLException: ERROR: column "onboard_status" doe
 2026-07-15 14:09:15.363 [tomcat-handler-8] INFO  sdk.biz.info - Summary^_^10000^_^null^_^ProtocalMustParams:charset=UTF-8&method=alipay.user.agreement.query&sign=Auiki6jsgzWWm45cr9U1XPar8sDYikj2fUOaveT7drmQcx/l78e0A9POV6XeExsmKKpgpz/+/LEUrnHQoNK79mqPJNhFN6EsJysXc5aGCYKWIscr5X9FvRgG6RgyNNRdMnTugrV9Q6AoZ67LRgLDZVA0Xa5sd9R8U+9tz1q/mcnJE00mJtkxyPeK/iFw+CDm3hexzRPliwLiPFz+FpIlvEOUGmHj17dSYbfwolocK7VRATEIV+r8RFaYKrS0Z8YDInG4O5g9d3H4d9nvtdD+CWrHgCmGCZch3OnHV6wui2duFD4utIVkvjifPr41Bebt+VFg2z/azNKJB1jZP0tNvA==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-15 14:09:14^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=219945d417840957555154451edad4&biz_content={"external_agreement_no":"2088780324708456_agreement","personal_product_code":"FUND_SAFT_SIGN_WITHHOLDING_P","sign_scene":"INDUSTRY|SATF_ACC","third_party_type":"PARTNER"}^_^9ms,370ms,18ms^_^trace_id:219945d417840957555154451edad4
 2026-07-15 14:09:15.670 [tomcat-handler-8] ERROR sdk.biz.err - ErrorScene^_^40004^_^EXPAND_INDIRECT_VERIFY_FAIL^_^null^_^Windows 10^_^2026-07-15 14:09:15^_^ProtocalMustParams:charset=UTF-8&method=alipay.fund.accountbook.create&sign=K9wbVw8UOUzsWbAX8inUsZVNuaD5idS0jpiGOux3vj9oUVum8b3rROOoayg042uty8gjWWIdpA0LvtzGpWbtrrgCdPaHcPAUGufBBCn/WDDKRYWOwLHrFm8KI0L/YH9TUcHFFhwKTCU8PR9+IRJjsUMziTgCzgrH/fJBOUKCsYXf+XcVNWJG6pl2Br8Ynn7i3NdoOmYkIlmKwWp1Guyr43Vmeo9Zfhp4gOl/gu/8IJBEyyAFwf4kb2Sqjt4sImQUx/hhibC2tFwtiElQPAF0OTpC2Ae68X5umzUSmTDloU4rL8y1hnbDmNaFyNfnG/fKJnCHZsGAJJARBWxjX5wtDQ==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-15 14:09:15^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=219945d417840957557934487edad4&biz_content={"ext_info":"{\"agreement_no\":\"20265515324430130114\"}","merchant_user_id":"2088780324708456","merchant_user_type":"BUSINESS_ORGANIZATION","scene_code":"SATF_FUND_BOOK"}^_^Body:{"alipay_fund_accountbook_create_response":{"msg":"Business Failed","code":"40004","sub_msg":"经校验,缺乏进件信息,请调用进件接口补充进件信息","sub_code":"EXPAND_INDIRECT_VERIFY_FAIL"},"sign":"IEJZaxcmhSpx0PLMYtVv/9Sm7TjgLQFdvD8pEwyVm+kzawlETTwNBbrRUtunI+P+nBrhvpa7iIi/m2iRTRfC7LCl3BrMZTUgPsM4aq4eozhCvP1TQ8mfzUVCtlI7INe6F65OzrQdC/YEjxxJ6JrjDa9SF2vGfyaTv1PeCnHTUbdAQP2gx6zNXWZ8RZnQBv7JStuYtsOWODfOfeSxbktgGhmaeA8CzOV6Aib0YukNbxq6uJw+iHecpR6hQO9I8bh6aRLfFeGlGxebgPiuxFZ8nrvEvZL7dIkuEwV44w2Jbulwriwr2ryAE3DAUdpUPgw10/ZjeoiG8IBIq9E9O1ax3g=="}^_^9ms,202ms,13ms^_^trace_id:219945d417840957557934487edad4
 2026-07-15 14:09:15.712 [tomcat-handler-8] WARN  c.p.p.c.e.GlobalExceptionHandler - 业务异常 [/api/v1/payment/account] 400: 开通资金记账本失败: Business Failed
+2026-07-15 14:17:54.758 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closing ...
+2026-07-15 14:17:54.760 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed