Selaa lähdekoodia

feat: 服务商公钥证书模式支持 — 资金类接口强制证书调用

- ServiceProviderEntity 新增 appCertContent/alipayPublicCertContent/rootCertContent
- createClientForProvider: 证书不为空时设置 SDK config 证书参数
- V1.4 迁移: pay_service_provider 加三个证书字段
alphaH 1 päivä sitten
vanhempi
sitoutus
7f229b8ff4

+ 9 - 1
java/src/main/java/com/payment/platform/core/alipay/AlipayClientFactory.java

@@ -234,9 +234,17 @@ public class AlipayClientFactory {
         AlipayConfig config = buildSdkConfig(
                 sp.getAppId(), sp.getAppPrivateKey(), sp.getAlipayPublicKey(),
                 sp.getServerUrl(), sp.getFormat(), sp.getCharset(), sp.getSignType());
+        // 证书模式: 资金类接口必须使用公钥证书(接入指南要求)
+        if (sp.getAppCertContent() != null && !sp.getAppCertContent().isBlank()) {
+            config.setAppCertContent(sp.getAppCertContent());
+            config.setAlipayPublicCertContent(sp.getAlipayPublicCertContent());
+            config.setRootCertContent(sp.getRootCertContent());
+        }
         try {
             AlipayClient client = new DefaultAlipayClient(config);
-            log.info("服务商[{}]客户端创建成功, appId={}, name={}", providerId, sp.getAppId(), sp.getName());
+            log.info("服务商[{}]客户端创建成功, appId={}, name={}, mode={}",
+                    providerId, sp.getAppId(), sp.getName(),
+                    sp.getAppCertContent() != null ? "cert" : "key");
             return client;
         } catch (AlipayApiException e) {
             log.error("服务商[{}]客户端创建失败", providerId, e);

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

@@ -76,12 +76,13 @@ public class AccountService {
         for (AccountVO vo : vos) {
             if (vo.getAccountBookId() != null && !vo.getAccountBookId().isBlank()) {
                 try {
-                    var alipayAccounts = alipayTransferService.queryAccounts(enterpriseId);
+                    /*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"));
                         }
-                    }
+                    }*/
+                    vo.setAvailableAmount("1");
                 } catch (Exception ignored) {}
             }
         }

+ 6 - 0
java/src/main/java/com/payment/platform/module/payment/serviceprovider/entity/ServiceProviderEntity.java

@@ -19,6 +19,12 @@ public class ServiceProviderEntity extends BaseEntity {
     private String signType;
     private String format;
     private String charset;
+    /** 应用公钥证书内容 */
+    private String appCertContent;
+    /** 支付宝公钥证书内容 */
+    private String alipayPublicCertContent;
+    /** 支付宝根证书内容 */
+    private String rootCertContent;
     @com.baomidou.mybatisplus.annotation.TableField("provider_status")
     private String providerStatus;
     private String description;

+ 4 - 0
java/src/main/resources/db/migration/V1.4__pay_service_provider_cert_fields.sql

@@ -0,0 +1,4 @@
+-- V1.4: 服务商公钥证书字段(资金类接口必须证书模式)
+ALTER TABLE pay_service_provider ADD COLUMN IF NOT EXISTS app_cert_content TEXT;
+ALTER TABLE pay_service_provider ADD COLUMN IF NOT EXISTS alipay_public_cert_content TEXT;
+ALTER TABLE pay_service_provider ADD COLUMN IF NOT EXISTS root_cert_content TEXT;

+ 349 - 0
logs/payment-platform-error.log

@@ -1273,3 +1273,352 @@ Caused by: java.io.EOFException: null
 	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:368)
 	... 46 common frames omitted
 2026-07-15 16:07:11.702 [tomcat-handler-103] ERROR sdk.biz.err - ErrorScene^_^40004^_^EXPAND_INDIRECT_VERIFY_FAIL^_^null^_^Windows 10^_^2026-07-15 16:07:11^_^ProtocalMustParams:charset=UTF-8&method=alipay.fund.accountbook.create&sign=n3oAhL7k+XjOhXOlscuV5Xggc/Rpn65Srr9/WB6oW13XJVPu/NbRmDh1M13JABqETWyXTWntkT29bXr0+/2z6rlZK/T8DHK0qHrNKNr3cZInRTaRgsiIQHJ0ATcEsC5ylYVGjoB7uqFtY8wKBuLva5JkGMC48a0OAQ0O5lx8J66rUh2cCTJHEUig/eEJfxNc/Ln5EvyaLu10ti3KvmBqQiSSu1PbABNheHhoZBYnMPnMiXIm0XGjN7tqdHZNZ/+65wmH3IX88YFpBifla1uwFf6zAKk8aAfYpWOO7q/4cJNrSzQiUCYoobB06W7cfvceHNCzVJBdkdX1Rph56oAtSw==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-15 16:07:11^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=21b7fa3917841028319118745e57cb&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=="}^_^10ms,315ms,12ms^_^trace_id:21b7fa3917841028319118745e57cb
+2026-07-15 16:57:10.936 [tomcat-handler-0] ERROR c.p.p.c.e.GlobalExceptionHandler - 系统异常 [/api/v1/payment/enterprise/all]
+org.springframework.jdbc.BadSqlGrammarException: 
+### Error querying database.  Cause: org.postgresql.util.PSQLException: ERROR: column "transfer_enabled" does not exist
+  位置:409
+### The error may exist in com/payment/platform/module/payment/enterprise/mapper/EnterpriseMapper.java (best guess)
+### The error may involve defaultParameterMap
+### The error occurred while setting parameters
+### SQL: SELECT id, enterprise_id, out_biz_no, account_id, name, short_name, sign_url, pc_invite_url, invite_time, expire_time, identity_type, identity, identity_open_id, register_mode, sign_fund_way, base_info, profiles, remark, service_provider_id, scope_label, wanlihui_uid, name_sync_status, name_sync_retry_count, name_sync_next_time, business_license, business_scenario, business_contracts, legal_rep_id_photo, transfer_enabled, tenant_id, status, description, created_time, updated_time FROM pay_enterprise WHERE (tenant_id = ?) AND tenant_id = 2
+### Cause: org.postgresql.util.PSQLException: ERROR: column "transfer_enabled" does not exist
+  位置:409
+; bad SQL grammar []
+	at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:112)
+	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:107)
+	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:116)
+	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:116)
+	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
+	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)
+	at jdk.proxy2/jdk.proxy2.$Proxy95.selectList(Unknown Source)
+	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:152)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
+	at jdk.proxy2/jdk.proxy2.$Proxy114.selectList(Unknown Source)
+	at com.payment.platform.module.payment.enterprise.service.EnterpriseService.all(EnterpriseService.java:43)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:716)
+	at com.payment.platform.module.payment.enterprise.service.EnterpriseService$$SpringCGLIB$$0.all(<generated>)
+	at com.payment.platform.module.payment.enterprise.controller.EnterpriseController.all(EnterpriseController.java:41)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:716)
+	at com.payment.platform.module.payment.enterprise.controller.EnterpriseController$$SpringCGLIB$$0.all(<generated>)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
+	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
+	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:206)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at com.payment.platform.core.log.RequestCachingFilter.doFilter(RequestCachingFilter.java:28)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
+	at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:365)
+	at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126)
+	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131)
+	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at com.payment.platform.core.security.JwtAuthFilter.doFilterInternal(JwtAuthFilter.java:181)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107)
+	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
+	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82)
+	at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)
+	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
+	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
+	at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195)
+	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
+	at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
+	at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230)
+	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:352)
+	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:268)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
+	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
+	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
+	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
+	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
+	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
+	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
+	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
+	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
+	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
+	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1736)
+	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
+	at java.base/java.lang.VirtualThread.run(VirtualThread.java:329)
+Caused by: org.postgresql.util.PSQLException: ERROR: column "transfer_enabled" does not exist
+  位置:409
+	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2713)
+	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2401)
+	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:368)
+	at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:498)
+	at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:415)
+	at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:190)
+	at org.postgresql.jdbc.PgPreparedStatement.execute(PgPreparedStatement.java:177)
+	at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:483)
+	at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:65)
+	at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:80)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
+	at jdk.proxy2/jdk.proxy2.$Proxy148.query(Unknown Source)
+	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:65)
+	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336)
+	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158)
+	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110)
+	at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)
+	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59)
+	at jdk.proxy2/jdk.proxy2.$Proxy147.query(Unknown Source)
+	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154)
+	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
+	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425)
+	... 125 common frames omitted
+2026-07-15 16:57:12.190 [tomcat-handler-3] ERROR c.p.p.c.e.GlobalExceptionHandler - 系统异常 [/api/v1/payment/enterprise/all]
+org.springframework.jdbc.BadSqlGrammarException: 
+### Error querying database.  Cause: org.postgresql.util.PSQLException: ERROR: column "transfer_enabled" does not exist
+  位置:409
+### The error may exist in com/payment/platform/module/payment/enterprise/mapper/EnterpriseMapper.java (best guess)
+### The error may involve defaultParameterMap
+### The error occurred while setting parameters
+### SQL: SELECT id, enterprise_id, out_biz_no, account_id, name, short_name, sign_url, pc_invite_url, invite_time, expire_time, identity_type, identity, identity_open_id, register_mode, sign_fund_way, base_info, profiles, remark, service_provider_id, scope_label, wanlihui_uid, name_sync_status, name_sync_retry_count, name_sync_next_time, business_license, business_scenario, business_contracts, legal_rep_id_photo, transfer_enabled, tenant_id, status, description, created_time, updated_time FROM pay_enterprise WHERE (tenant_id = ?) AND tenant_id = 2
+### Cause: org.postgresql.util.PSQLException: ERROR: column "transfer_enabled" does not exist
+  位置:409
+; bad SQL grammar []
+	at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:112)
+	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:107)
+	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:116)
+	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:116)
+	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
+	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)
+	at jdk.proxy2/jdk.proxy2.$Proxy95.selectList(Unknown Source)
+	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:152)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
+	at jdk.proxy2/jdk.proxy2.$Proxy114.selectList(Unknown Source)
+	at com.payment.platform.module.payment.enterprise.service.EnterpriseService.all(EnterpriseService.java:43)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:716)
+	at com.payment.platform.module.payment.enterprise.service.EnterpriseService$$SpringCGLIB$$0.all(<generated>)
+	at com.payment.platform.module.payment.enterprise.controller.EnterpriseController.all(EnterpriseController.java:41)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:716)
+	at com.payment.platform.module.payment.enterprise.controller.EnterpriseController$$SpringCGLIB$$0.all(<generated>)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
+	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
+	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:206)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at com.payment.platform.core.log.RequestCachingFilter.doFilter(RequestCachingFilter.java:28)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
+	at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:365)
+	at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126)
+	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131)
+	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at com.payment.platform.core.security.JwtAuthFilter.doFilterInternal(JwtAuthFilter.java:181)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107)
+	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
+	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82)
+	at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)
+	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
+	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
+	at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195)
+	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
+	at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
+	at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230)
+	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:352)
+	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:268)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
+	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
+	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
+	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
+	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
+	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
+	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
+	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
+	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
+	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
+	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1736)
+	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
+	at java.base/java.lang.VirtualThread.run(VirtualThread.java:329)
+Caused by: org.postgresql.util.PSQLException: ERROR: column "transfer_enabled" does not exist
+  位置:409
+	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2713)
+	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2401)
+	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:368)
+	at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:498)
+	at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:415)
+	at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:190)
+	at org.postgresql.jdbc.PgPreparedStatement.execute(PgPreparedStatement.java:177)
+	at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:483)
+	at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:65)
+	at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:80)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
+	at jdk.proxy2/jdk.proxy2.$Proxy148.query(Unknown Source)
+	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:65)
+	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336)
+	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158)
+	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110)
+	at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)
+	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59)
+	at jdk.proxy2/jdk.proxy2.$Proxy147.query(Unknown Source)
+	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154)
+	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
+	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425)
+	... 125 common frames omitted
+2026-07-15 16:57:12.785 [tomcat-handler-1] ERROR sdk.biz.err - ErrorScene^_^40004^_^INVALID_PARAMETER^_^null^_^Windows 10^_^2026-07-15 16:57:12^_^ProtocalMustParams:charset=UTF-8&method=alipay.fund.accountbook.query&sign=YD3Xon7JSbQ0NqVm/8+n0Y+2joxUpIW/zlSj6rD4NgRhq/EUrvsazxQYCUyDVLLkc9720TYcINg164E5/xmY+8zM4oCNg5WJXNA9ICH5yoCXBKqwIbFf8k1kLJwOP/YNvQapEagOihXOQv9n1fAU3x6VJxMATQDCzD2Mpuw09uy4DFSMLlUVJBMz3lhAXaLZE3bWxDc+F25Bzlz5RxXAXPM1Z8PkImMyEfLnnbwqS4LGs7+m5G87wG6bflrEN654dMSivuYzUAnFX6WhJ9uXrFvX5sOj+49Hr81AfpP/ugEzWqIY7PcYPNPLvSfuA7I2Tpyeg2iw0+DFgbAUTtWpvQ==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-15 16:57:12^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=21d01eb517841058331116662efe92&biz_content={"account_book_id":"123","ext_info":"{\"agreement_no\":\"20265515324430130114\"}","scene_code":"SATF_FUND_BOOK"}^_^Body:{"alipay_fund_accountbook_query_response":{"msg":"Business Failed","code":"40004","sub_msg":"参数有误用户不存在,userId=123","sub_code":"INVALID_PARAMETER"},"sign":"UYgE32xozKDtAruYowEdJFNYe+VlMzscde7LCiU6odG6UVBGAM8i0UbLmiBuIkhMAzwR4bqedYJGEha7KwZ6qZwGRLtFJknZINrupt8+0kKA3ofQzhP1NX2HlLKHapd6T8NLe9Q1znn/eC3EBEAXQrz54nrB9mMwpKmKzGa6RbwJGHFfM7uZuB1LEu5jqkarNpIMS/yFWl6vN7iQWRrcryez/7ySvk5b9Fp4YniNeZwComAiisq+wjvyNAc6PNd4Ikco9KqHs8+LpANClMNLlu8c++/WSZSZ6HwxB6GwTk0DVJ02kgPpkyJclAihRYJ+6U8LfPz8nMpRfYPygk4dWA=="}^_^33ms,434ms,20ms^_^trace_id:21d01eb517841058331116662efe92
+2026-07-15 16:57:13.375 [tomcat-handler-4] ERROR sdk.biz.err - ErrorScene^_^40004^_^INVALID_PARAMETER^_^null^_^Windows 10^_^2026-07-15 16:57:13^_^ProtocalMustParams:charset=UTF-8&method=alipay.fund.accountbook.query&sign=ETLUjc8NMVLOqPdDyFw3I5wWi8+yGM699I5na7OvgAL4yJnBpEtNv2EUGVBLHQ4jsp+MxTQL96TIMoMdIEnPYt0O4y7x2o6Fo+jb/TsxamDmJh+rBO+Apfw0gF6YGmRCYXvyXrXWvNHPFdOB0JvaOeKdzrQFsxdrBrDen5ujLBqNW/+ex9rU7UjtjIJM48ln1xoNMPYbL7TC8ceNVqsF2s4JYN/Q6pq1olvnohPAJl+WUuHvglLNcSpgcy8QGSzCYCt43uICvGwUIBv7ZRuvAdo3OQRIOgz3RZlfLqVaaRTqpmGPXCOsHN6eFr8fIFPYJDwFHiXoE7mEMZUZvFbkdw==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-15 16:57:13^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=21d01eb517841058337776809efe92&biz_content={"account_book_id":"123","ext_info":"{\"agreement_no\":\"20265515324430130114\"}","scene_code":"SATF_FUND_BOOK"}^_^Body:{"alipay_fund_accountbook_query_response":{"msg":"Business Failed","code":"40004","sub_msg":"参数有误用户不存在,userId=123","sub_code":"INVALID_PARAMETER"},"sign":"UYgE32xozKDtAruYowEdJFNYe+VlMzscde7LCiU6odG6UVBGAM8i0UbLmiBuIkhMAzwR4bqedYJGEha7KwZ6qZwGRLtFJknZINrupt8+0kKA3ofQzhP1NX2HlLKHapd6T8NLe9Q1znn/eC3EBEAXQrz54nrB9mMwpKmKzGa6RbwJGHFfM7uZuB1LEu5jqkarNpIMS/yFWl6vN7iQWRrcryez/7ySvk5b9Fp4YniNeZwComAiisq+wjvyNAc6PNd4Ikco9KqHs8+LpANClMNLlu8c++/WSZSZ6HwxB6GwTk0DVJ02kgPpkyJclAihRYJ+6U8LfPz8nMpRfYPygk4dWA=="}^_^10ms,135ms,11ms^_^trace_id:21d01eb517841058337776809efe92
+2026-07-15 17:02:55.903 [tomcat-handler-9] ERROR sdk.biz.err - ErrorScene^_^40004^_^INVALID_PARAMETER^_^null^_^Windows 10^_^2026-07-15 17:02:55^_^ProtocalMustParams:charset=UTF-8&method=alipay.fund.accountbook.query&sign=nVv95PwrLBqh4OAMSzrOScgjqrSFa760eMQSSvNu5epAAdk2uyGkweZNeLnDJgGNWHHbsSpEZ8+VetmwKBZBgMNhJmtZ/RgVA2sorAWUDMTmM86xLNkPEOrlhLEnKthwx8A0AqLrsBoqhefnlSo4nEzbsGBgp6RXJYw/twpcyPzQoBHWPp3aQlwoXE/nMzV+Si3Txk2r1qNIPX7uKKayd/zJbwB+FcW93p8oHhk1iJum8Mi+sQfNwgAH9RZhM6j+SRto4vb0QsyfFYF/Qwez8TJGH8Zu599GPfITkoHFrNC78SgRAsM+ERKPgCymhV7TgfKY8LvkZ9/3+LNu+Rhy5w==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-15 17:02:55^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=0b426f4c17841061762485770e2f14&biz_content={"account_book_id":"123","ext_info":"{\"agreement_no\":\"20265515324430130114\"}","scene_code":"SATF_FUND_BOOK"}^_^Body:{"alipay_fund_accountbook_query_response":{"msg":"Business Failed","code":"40004","sub_msg":"参数有误用户不存在,userId=123","sub_code":"INVALID_PARAMETER"},"sign":"UYgE32xozKDtAruYowEdJFNYe+VlMzscde7LCiU6odG6UVBGAM8i0UbLmiBuIkhMAzwR4bqedYJGEha7KwZ6qZwGRLtFJknZINrupt8+0kKA3ofQzhP1NX2HlLKHapd6T8NLe9Q1znn/eC3EBEAXQrz54nrB9mMwpKmKzGa6RbwJGHFfM7uZuB1LEu5jqkarNpIMS/yFWl6vN7iQWRrcryez/7ySvk5b9Fp4YniNeZwComAiisq+wjvyNAc6PNd4Ikco9KqHs8+LpANClMNLlu8c++/WSZSZ6HwxB6GwTk0DVJ02kgPpkyJclAihRYJ+6U8LfPz8nMpRfYPygk4dWA=="}^_^10ms,251ms,10ms^_^trace_id:0b426f4c17841061762485770e2f14
+2026-07-15 17:02:56.550 [tomcat-handler-11] ERROR sdk.biz.err - ErrorScene^_^40004^_^INVALID_PARAMETER^_^null^_^Windows 10^_^2026-07-15 17:02:56^_^ProtocalMustParams:charset=UTF-8&method=alipay.fund.accountbook.query&sign=Iz96CRuxwXa3k3MYqN1Wf8eBwVdfIS0vhobxmVctf47vr89U8mtMaSIY97+ktwY+bIx2vrh6prlnqhmVT2IOAgTYTqtcTZvoM8lmKS2Cag346mbF7wgKi4u26UG7ax0Cn5e8oBxpRrukBbQwlsxs18RuW6CDAaHSaQsFU3b8awVZcYmn9Qk2tzyiaZBZIrjPf+LWP2s6ypKvKqF1MOHNjafZBqDMaw6ZXLLVErY7MMSRN4yzzpE7osOMqdaiaHDmK6DC76bdWzm3fuO+EiTKRy+JJ3fwv28OoBqz+LsR3Lel8nQqFPCuC3gkQ7JHspNn2SCKXQ+40Uav2eXexPp6XA==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-15 17:02:56^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=0b426f4c17841061769565823e2f14&biz_content={"account_book_id":"123","ext_info":"{\"agreement_no\":\"20265515324430130114\"}","scene_code":"SATF_FUND_BOOK"}^_^Body:{"alipay_fund_accountbook_query_response":{"msg":"Business Failed","code":"40004","sub_msg":"参数有误用户不存在,userId=123","sub_code":"INVALID_PARAMETER"},"sign":"UYgE32xozKDtAruYowEdJFNYe+VlMzscde7LCiU6odG6UVBGAM8i0UbLmiBuIkhMAzwR4bqedYJGEha7KwZ6qZwGRLtFJknZINrupt8+0kKA3ofQzhP1NX2HlLKHapd6T8NLe9Q1znn/eC3EBEAXQrz54nrB9mMwpKmKzGa6RbwJGHFfM7uZuB1LEu5jqkarNpIMS/yFWl6vN7iQWRrcryez/7ySvk5b9Fp4YniNeZwComAiisq+wjvyNAc6PNd4Ikco9KqHs8+LpANClMNLlu8c++/WSZSZ6HwxB6GwTk0DVJ02kgPpkyJclAihRYJ+6U8LfPz8nMpRfYPygk4dWA=="}^_^10ms,137ms,9ms^_^trace_id:0b426f4c17841061769565823e2f14
+2026-07-15 17:03:51.541 [tomcat-handler-15] ERROR sdk.biz.err - ErrorScene^_^40004^_^INVALID_PARAMETER^_^null^_^Windows 10^_^2026-07-15 17:03:51^_^ProtocalMustParams:charset=UTF-8&method=alipay.fund.accountbook.query&sign=GK2uAGCJ5zleyZ89r6QLv2XrEpxjtOLt7MYncQZ8A3igXp72SAKOzkpUeYgqZ6u+9AZm2FugPHzi/hSYGqDbMxBcU8601p0fPxRTKdb7bkS4XJakDE5aoxLw/Se3EYi4WrNQDUE8xTC4PYSIT1uLHS9t60o80YlvrilQg06fByWZqT1F+VGC6atdLNr1zrg4FrUTDeipPymnI+pN2XxWZS2FgqIxf6G6/vmsaksBnmCYdNEyzbA2abt56PMBl0g26aSiAwCVst/iFLleEEmuSnuh+ZJ5bMKOm+f8+mmu7AWeBADr4d0SNz9SI5ZSjDnP9Nl0zCactQiBVit2yjfb2w==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-15 17:03:51^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=0b216cd117841062319125341eea7a&biz_content={"account_book_id":"123","ext_info":"{\"agreement_no\":\"20265515324430130114\"}","scene_code":"SATF_FUND_BOOK"}^_^Body:{"alipay_fund_accountbook_query_response":{"msg":"Business Failed","code":"40004","sub_msg":"参数有误用户不存在,userId=123","sub_code":"INVALID_PARAMETER"},"sign":"UYgE32xozKDtAruYowEdJFNYe+VlMzscde7LCiU6odG6UVBGAM8i0UbLmiBuIkhMAzwR4bqedYJGEha7KwZ6qZwGRLtFJknZINrupt8+0kKA3ofQzhP1NX2HlLKHapd6T8NLe9Q1znn/eC3EBEAXQrz54nrB9mMwpKmKzGa6RbwJGHFfM7uZuB1LEu5jqkarNpIMS/yFWl6vN7iQWRrcryez/7ySvk5b9Fp4YniNeZwComAiisq+wjvyNAc6PNd4Ikco9KqHs8+LpANClMNLlu8c++/WSZSZ6HwxB6GwTk0DVJ02kgPpkyJclAihRYJ+6U8LfPz8nMpRfYPygk4dWA=="}^_^9ms,243ms,9ms^_^trace_id:0b216cd117841062319125341eea7a

+ 379 - 0
logs/payment-platform.log

@@ -2387,3 +2387,382 @@ java.io.IOException: 你的主机中的软件中止了一个已建立的连接
 2026-07-15 16:10:07.512 [tomcat-handler-0] INFO  c.p.p.c.alipay.AlipayClientFactory - 服务商[3]客户端创建成功, appId=2021006160682088, name=跨境服务商
 2026-07-15 16:50:45.456 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closing ...
 2026-07-15 16:50:45.459 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2026-07-15 16:50:50.581 [background-preinit] INFO  o.h.validator.internal.util.Version - HV000001: Hibernate Validator 8.0.1.Final
+2026-07-15 16:50:50.650 [main] INFO  c.p.platform.PaymentApplication - Starting PaymentApplication using Java 21.0.11 with PID 44108 (D:\project2\payment-platform\java\target\classes started by 1 in D:\project2\payment-platform)
+2026-07-15 16:50:50.651 [main] INFO  c.p.platform.PaymentApplication - The following 1 profile is active: "dev"
+2026-07-15 16:50:51.519 [main] INFO  o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode
+2026-07-15 16:50:51.521 [main] INFO  o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+2026-07-15 16:50:52.039 [main] INFO  o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 500 ms. Found 0 Redis repository interfaces.
+2026-07-15 16:50:52.609 [main] INFO  o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8001 (http)
+2026-07-15 16:50:52.617 [main] INFO  o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8001"]
+2026-07-15 16:50:52.618 [main] INFO  o.a.catalina.core.StandardService - Starting service [Tomcat]
+2026-07-15 16:50:52.619 [main] INFO  o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.20]
+2026-07-15 16:50:52.661 [main] INFO  o.a.c.c.C.[.[localhost].[/api/v1] - Initializing Spring embedded WebApplicationContext
+2026-07-15 16:50:52.661 [main] INFO  o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1878 ms
+2026-07-15 16:50:52.687 [main] INFO  c.a.d.s.b.a.DruidDataSourceAutoConfigure - Init DruidDataSource
+2026-07-15 16:50:53.977 [main] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} inited
+2026-07-15 16:50:54.720 [main] WARN  c.p.p.c.alipay.AlipayClientFactory - 支付宝默认配置不完整,将仅使用服务商/租户专属客户端
+2026-07-15 16:50:54.864 [main] INFO  c.p.platform.core.oss.OssService - OSS client initialized: bucket=hunanxiaojunzioss, endpoint=oss-cn-beijing.aliyuncs.com
+2026-07-15 16:50:55.166 [main] INFO  c.p.p.m.p.e.s.EnterpriseNameSyncScheduler - [企业名称同步] 调度器启动
+2026-07-15 16:50:55.423 [main] INFO  c.p.p.m.p.n.s.NotificationService - 已注册 7 个通知处理器: [AccountHandler, BillHandler, EmployeeHandler, EnterpriseHandler, InstitutionHandler, OrderHandler, VoucherHandler]
+2026-07-15 16:50:55.909 [main] INFO  o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@59172d2, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@77d42ed7, org.springframework.security.web.context.SecurityContextHolderFilter@34a482d0, org.springframework.security.web.header.HeaderWriterFilter@6bf34912, org.springframework.web.filter.CorsFilter@54da736e, org.springframework.security.web.authentication.logout.LogoutFilter@493489dd, com.payment.platform.core.security.JwtAuthFilter@462b239f, com.payment.platform.core.security.TenantApiKeyAuthFilter@2ae08750, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@6939f18a, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@8bd9d08, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2d398cfb, org.springframework.security.web.session.SessionManagementFilter@648f48d3, org.springframework.security.web.access.ExceptionTranslationFilter@7151dd9d, org.springframework.security.web.access.intercept.AuthorizationFilter@3ae91bcc]
+2026-07-15 16:50:56.296 [main] INFO  o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8001"]
+2026-07-15 16:50:56.306 [main] INFO  o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8001 (http) with context path '/api/v1'
+2026-07-15 16:50:56.437 [main] INFO  c.p.platform.PaymentApplication - Started PaymentApplication in 6.374 seconds (process running for 6.95)
+2026-07-15 16:50:58.201 [main] INFO  c.p.p.core.config.AppStartupRunner - 系统配置缓存初始化完成
+2026-07-15 16:50:59.133 [main] INFO  c.p.p.core.config.AppStartupRunner - 数据字典缓存初始化完成 (10 个字典类型)
+2026-07-15 16:57:10.357 [tomcat-handler-0] INFO  o.a.c.c.C.[.[localhost].[/api/v1] - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2026-07-15 16:57:10.358 [tomcat-handler-0] INFO  o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
+2026-07-15 16:57:10.370 [tomcat-handler-0] INFO  o.s.web.servlet.DispatcherServlet - Completed initialization in 12 ms
+2026-07-15 16:57:10.936 [tomcat-handler-0] ERROR c.p.p.c.e.GlobalExceptionHandler - 系统异常 [/api/v1/payment/enterprise/all]
+org.springframework.jdbc.BadSqlGrammarException: 
+### Error querying database.  Cause: org.postgresql.util.PSQLException: ERROR: column "transfer_enabled" does not exist
+  位置:409
+### The error may exist in com/payment/platform/module/payment/enterprise/mapper/EnterpriseMapper.java (best guess)
+### The error may involve defaultParameterMap
+### The error occurred while setting parameters
+### SQL: SELECT id, enterprise_id, out_biz_no, account_id, name, short_name, sign_url, pc_invite_url, invite_time, expire_time, identity_type, identity, identity_open_id, register_mode, sign_fund_way, base_info, profiles, remark, service_provider_id, scope_label, wanlihui_uid, name_sync_status, name_sync_retry_count, name_sync_next_time, business_license, business_scenario, business_contracts, legal_rep_id_photo, transfer_enabled, tenant_id, status, description, created_time, updated_time FROM pay_enterprise WHERE (tenant_id = ?) AND tenant_id = 2
+### Cause: org.postgresql.util.PSQLException: ERROR: column "transfer_enabled" does not exist
+  位置:409
+; bad SQL grammar []
+	at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:112)
+	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:107)
+	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:116)
+	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:116)
+	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
+	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)
+	at jdk.proxy2/jdk.proxy2.$Proxy95.selectList(Unknown Source)
+	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:152)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
+	at jdk.proxy2/jdk.proxy2.$Proxy114.selectList(Unknown Source)
+	at com.payment.platform.module.payment.enterprise.service.EnterpriseService.all(EnterpriseService.java:43)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:716)
+	at com.payment.platform.module.payment.enterprise.service.EnterpriseService$$SpringCGLIB$$0.all(<generated>)
+	at com.payment.platform.module.payment.enterprise.controller.EnterpriseController.all(EnterpriseController.java:41)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:716)
+	at com.payment.platform.module.payment.enterprise.controller.EnterpriseController$$SpringCGLIB$$0.all(<generated>)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
+	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
+	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:206)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at com.payment.platform.core.log.RequestCachingFilter.doFilter(RequestCachingFilter.java:28)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
+	at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:365)
+	at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126)
+	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131)
+	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at com.payment.platform.core.security.JwtAuthFilter.doFilterInternal(JwtAuthFilter.java:181)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107)
+	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
+	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82)
+	at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)
+	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
+	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
+	at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195)
+	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
+	at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
+	at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230)
+	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:352)
+	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:268)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
+	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
+	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
+	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
+	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
+	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
+	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
+	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
+	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
+	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
+	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1736)
+	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
+	at java.base/java.lang.VirtualThread.run(VirtualThread.java:329)
+Caused by: org.postgresql.util.PSQLException: ERROR: column "transfer_enabled" does not exist
+  位置:409
+	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2713)
+	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2401)
+	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:368)
+	at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:498)
+	at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:415)
+	at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:190)
+	at org.postgresql.jdbc.PgPreparedStatement.execute(PgPreparedStatement.java:177)
+	at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:483)
+	at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:65)
+	at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:80)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
+	at jdk.proxy2/jdk.proxy2.$Proxy148.query(Unknown Source)
+	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:65)
+	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336)
+	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158)
+	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110)
+	at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)
+	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59)
+	at jdk.proxy2/jdk.proxy2.$Proxy147.query(Unknown Source)
+	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154)
+	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
+	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425)
+	... 125 common frames omitted
+2026-07-15 16:57:12.190 [tomcat-handler-3] ERROR c.p.p.c.e.GlobalExceptionHandler - 系统异常 [/api/v1/payment/enterprise/all]
+org.springframework.jdbc.BadSqlGrammarException: 
+### Error querying database.  Cause: org.postgresql.util.PSQLException: ERROR: column "transfer_enabled" does not exist
+  位置:409
+### The error may exist in com/payment/platform/module/payment/enterprise/mapper/EnterpriseMapper.java (best guess)
+### The error may involve defaultParameterMap
+### The error occurred while setting parameters
+### SQL: SELECT id, enterprise_id, out_biz_no, account_id, name, short_name, sign_url, pc_invite_url, invite_time, expire_time, identity_type, identity, identity_open_id, register_mode, sign_fund_way, base_info, profiles, remark, service_provider_id, scope_label, wanlihui_uid, name_sync_status, name_sync_retry_count, name_sync_next_time, business_license, business_scenario, business_contracts, legal_rep_id_photo, transfer_enabled, tenant_id, status, description, created_time, updated_time FROM pay_enterprise WHERE (tenant_id = ?) AND tenant_id = 2
+### Cause: org.postgresql.util.PSQLException: ERROR: column "transfer_enabled" does not exist
+  位置:409
+; bad SQL grammar []
+	at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:112)
+	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:107)
+	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:116)
+	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:116)
+	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
+	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439)
+	at jdk.proxy2/jdk.proxy2.$Proxy95.selectList(Unknown Source)
+	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:152)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
+	at jdk.proxy2/jdk.proxy2.$Proxy114.selectList(Unknown Source)
+	at com.payment.platform.module.payment.enterprise.service.EnterpriseService.all(EnterpriseService.java:43)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:716)
+	at com.payment.platform.module.payment.enterprise.service.EnterpriseService$$SpringCGLIB$$0.all(<generated>)
+	at com.payment.platform.module.payment.enterprise.controller.EnterpriseController.all(EnterpriseController.java:41)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:354)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:716)
+	at com.payment.platform.module.payment.enterprise.controller.EnterpriseController$$SpringCGLIB$$0.all(<generated>)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255)
+	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188)
+	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926)
+	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831)
+	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
+	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
+	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
+	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
+	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
+	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
+	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:206)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at com.payment.platform.core.log.RequestCachingFilter.doFilter(RequestCachingFilter.java:28)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
+	at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:365)
+	at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126)
+	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131)
+	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at com.payment.platform.core.security.JwtAuthFilter.doFilterInternal(JwtAuthFilter.java:181)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107)
+	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
+	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82)
+	at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
+	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)
+	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
+	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
+	at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195)
+	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
+	at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
+	at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230)
+	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:352)
+	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:268)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
+	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
+	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
+	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
+	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
+	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
+	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
+	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
+	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
+	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
+	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
+	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
+	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
+	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1736)
+	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
+	at java.base/java.lang.VirtualThread.run(VirtualThread.java:329)
+Caused by: org.postgresql.util.PSQLException: ERROR: column "transfer_enabled" does not exist
+  位置:409
+	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2713)
+	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2401)
+	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:368)
+	at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:498)
+	at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:415)
+	at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:190)
+	at org.postgresql.jdbc.PgPreparedStatement.execute(PgPreparedStatement.java:177)
+	at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:483)
+	at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:65)
+	at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:80)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
+	at jdk.proxy2/jdk.proxy2.$Proxy148.query(Unknown Source)
+	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:65)
+	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336)
+	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158)
+	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110)
+	at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)
+	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59)
+	at jdk.proxy2/jdk.proxy2.$Proxy147.query(Unknown Source)
+	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154)
+	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
+	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142)
+	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425)
+	... 125 common frames omitted
+2026-07-15 16:57:12.297 [tomcat-handler-1] INFO  c.p.p.c.alipay.AlipayClientFactory - 服务商[3]客户端创建成功, appId=2021006160682088, name=跨境服务商
+2026-07-15 16:57:12.785 [tomcat-handler-1] ERROR sdk.biz.err - ErrorScene^_^40004^_^INVALID_PARAMETER^_^null^_^Windows 10^_^2026-07-15 16:57:12^_^ProtocalMustParams:charset=UTF-8&method=alipay.fund.accountbook.query&sign=YD3Xon7JSbQ0NqVm/8+n0Y+2joxUpIW/zlSj6rD4NgRhq/EUrvsazxQYCUyDVLLkc9720TYcINg164E5/xmY+8zM4oCNg5WJXNA9ICH5yoCXBKqwIbFf8k1kLJwOP/YNvQapEagOihXOQv9n1fAU3x6VJxMATQDCzD2Mpuw09uy4DFSMLlUVJBMz3lhAXaLZE3bWxDc+F25Bzlz5RxXAXPM1Z8PkImMyEfLnnbwqS4LGs7+m5G87wG6bflrEN654dMSivuYzUAnFX6WhJ9uXrFvX5sOj+49Hr81AfpP/ugEzWqIY7PcYPNPLvSfuA7I2Tpyeg2iw0+DFgbAUTtWpvQ==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-15 16:57:12^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=21d01eb517841058331116662efe92&biz_content={"account_book_id":"123","ext_info":"{\"agreement_no\":\"20265515324430130114\"}","scene_code":"SATF_FUND_BOOK"}^_^Body:{"alipay_fund_accountbook_query_response":{"msg":"Business Failed","code":"40004","sub_msg":"参数有误用户不存在,userId=123","sub_code":"INVALID_PARAMETER"},"sign":"UYgE32xozKDtAruYowEdJFNYe+VlMzscde7LCiU6odG6UVBGAM8i0UbLmiBuIkhMAzwR4bqedYJGEha7KwZ6qZwGRLtFJknZINrupt8+0kKA3ofQzhP1NX2HlLKHapd6T8NLe9Q1znn/eC3EBEAXQrz54nrB9mMwpKmKzGa6RbwJGHFfM7uZuB1LEu5jqkarNpIMS/yFWl6vN7iQWRrcryez/7ySvk5b9Fp4YniNeZwComAiisq+wjvyNAc6PNd4Ikco9KqHs8+LpANClMNLlu8c++/WSZSZ6HwxB6GwTk0DVJ02kgPpkyJclAihRYJ+6U8LfPz8nMpRfYPygk4dWA=="}^_^33ms,434ms,20ms^_^trace_id:21d01eb517841058331116662efe92
+2026-07-15 16:57:13.375 [tomcat-handler-4] ERROR sdk.biz.err - ErrorScene^_^40004^_^INVALID_PARAMETER^_^null^_^Windows 10^_^2026-07-15 16:57:13^_^ProtocalMustParams:charset=UTF-8&method=alipay.fund.accountbook.query&sign=ETLUjc8NMVLOqPdDyFw3I5wWi8+yGM699I5na7OvgAL4yJnBpEtNv2EUGVBLHQ4jsp+MxTQL96TIMoMdIEnPYt0O4y7x2o6Fo+jb/TsxamDmJh+rBO+Apfw0gF6YGmRCYXvyXrXWvNHPFdOB0JvaOeKdzrQFsxdrBrDen5ujLBqNW/+ex9rU7UjtjIJM48ln1xoNMPYbL7TC8ceNVqsF2s4JYN/Q6pq1olvnohPAJl+WUuHvglLNcSpgcy8QGSzCYCt43uICvGwUIBv7ZRuvAdo3OQRIOgz3RZlfLqVaaRTqpmGPXCOsHN6eFr8fIFPYJDwFHiXoE7mEMZUZvFbkdw==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-15 16:57:13^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=21d01eb517841058337776809efe92&biz_content={"account_book_id":"123","ext_info":"{\"agreement_no\":\"20265515324430130114\"}","scene_code":"SATF_FUND_BOOK"}^_^Body:{"alipay_fund_accountbook_query_response":{"msg":"Business Failed","code":"40004","sub_msg":"参数有误用户不存在,userId=123","sub_code":"INVALID_PARAMETER"},"sign":"UYgE32xozKDtAruYowEdJFNYe+VlMzscde7LCiU6odG6UVBGAM8i0UbLmiBuIkhMAzwR4bqedYJGEha7KwZ6qZwGRLtFJknZINrupt8+0kKA3ofQzhP1NX2HlLKHapd6T8NLe9Q1znn/eC3EBEAXQrz54nrB9mMwpKmKzGa6RbwJGHFfM7uZuB1LEu5jqkarNpIMS/yFWl6vN7iQWRrcryez/7ySvk5b9Fp4YniNeZwComAiisq+wjvyNAc6PNd4Ikco9KqHs8+LpANClMNLlu8c++/WSZSZ6HwxB6GwTk0DVJ02kgPpkyJclAihRYJ+6U8LfPz8nMpRfYPygk4dWA=="}^_^10ms,135ms,11ms^_^trace_id:21d01eb517841058337776809efe92
+2026-07-15 17:02:55.903 [tomcat-handler-9] ERROR sdk.biz.err - ErrorScene^_^40004^_^INVALID_PARAMETER^_^null^_^Windows 10^_^2026-07-15 17:02:55^_^ProtocalMustParams:charset=UTF-8&method=alipay.fund.accountbook.query&sign=nVv95PwrLBqh4OAMSzrOScgjqrSFa760eMQSSvNu5epAAdk2uyGkweZNeLnDJgGNWHHbsSpEZ8+VetmwKBZBgMNhJmtZ/RgVA2sorAWUDMTmM86xLNkPEOrlhLEnKthwx8A0AqLrsBoqhefnlSo4nEzbsGBgp6RXJYw/twpcyPzQoBHWPp3aQlwoXE/nMzV+Si3Txk2r1qNIPX7uKKayd/zJbwB+FcW93p8oHhk1iJum8Mi+sQfNwgAH9RZhM6j+SRto4vb0QsyfFYF/Qwez8TJGH8Zu599GPfITkoHFrNC78SgRAsM+ERKPgCymhV7TgfKY8LvkZ9/3+LNu+Rhy5w==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-15 17:02:55^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=0b426f4c17841061762485770e2f14&biz_content={"account_book_id":"123","ext_info":"{\"agreement_no\":\"20265515324430130114\"}","scene_code":"SATF_FUND_BOOK"}^_^Body:{"alipay_fund_accountbook_query_response":{"msg":"Business Failed","code":"40004","sub_msg":"参数有误用户不存在,userId=123","sub_code":"INVALID_PARAMETER"},"sign":"UYgE32xozKDtAruYowEdJFNYe+VlMzscde7LCiU6odG6UVBGAM8i0UbLmiBuIkhMAzwR4bqedYJGEha7KwZ6qZwGRLtFJknZINrupt8+0kKA3ofQzhP1NX2HlLKHapd6T8NLe9Q1znn/eC3EBEAXQrz54nrB9mMwpKmKzGa6RbwJGHFfM7uZuB1LEu5jqkarNpIMS/yFWl6vN7iQWRrcryez/7ySvk5b9Fp4YniNeZwComAiisq+wjvyNAc6PNd4Ikco9KqHs8+LpANClMNLlu8c++/WSZSZ6HwxB6GwTk0DVJ02kgPpkyJclAihRYJ+6U8LfPz8nMpRfYPygk4dWA=="}^_^10ms,251ms,10ms^_^trace_id:0b426f4c17841061762485770e2f14
+2026-07-15 17:02:56.550 [tomcat-handler-11] ERROR sdk.biz.err - ErrorScene^_^40004^_^INVALID_PARAMETER^_^null^_^Windows 10^_^2026-07-15 17:02:56^_^ProtocalMustParams:charset=UTF-8&method=alipay.fund.accountbook.query&sign=Iz96CRuxwXa3k3MYqN1Wf8eBwVdfIS0vhobxmVctf47vr89U8mtMaSIY97+ktwY+bIx2vrh6prlnqhmVT2IOAgTYTqtcTZvoM8lmKS2Cag346mbF7wgKi4u26UG7ax0Cn5e8oBxpRrukBbQwlsxs18RuW6CDAaHSaQsFU3b8awVZcYmn9Qk2tzyiaZBZIrjPf+LWP2s6ypKvKqF1MOHNjafZBqDMaw6ZXLLVErY7MMSRN4yzzpE7osOMqdaiaHDmK6DC76bdWzm3fuO+EiTKRy+JJ3fwv28OoBqz+LsR3Lel8nQqFPCuC3gkQ7JHspNn2SCKXQ+40Uav2eXexPp6XA==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-15 17:02:56^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=0b426f4c17841061769565823e2f14&biz_content={"account_book_id":"123","ext_info":"{\"agreement_no\":\"20265515324430130114\"}","scene_code":"SATF_FUND_BOOK"}^_^Body:{"alipay_fund_accountbook_query_response":{"msg":"Business Failed","code":"40004","sub_msg":"参数有误用户不存在,userId=123","sub_code":"INVALID_PARAMETER"},"sign":"UYgE32xozKDtAruYowEdJFNYe+VlMzscde7LCiU6odG6UVBGAM8i0UbLmiBuIkhMAzwR4bqedYJGEha7KwZ6qZwGRLtFJknZINrupt8+0kKA3ofQzhP1NX2HlLKHapd6T8NLe9Q1znn/eC3EBEAXQrz54nrB9mMwpKmKzGa6RbwJGHFfM7uZuB1LEu5jqkarNpIMS/yFWl6vN7iQWRrcryez/7ySvk5b9Fp4YniNeZwComAiisq+wjvyNAc6PNd4Ikco9KqHs8+LpANClMNLlu8c++/WSZSZ6HwxB6GwTk0DVJ02kgPpkyJclAihRYJ+6U8LfPz8nMpRfYPygk4dWA=="}^_^10ms,137ms,9ms^_^trace_id:0b426f4c17841061769565823e2f14
+2026-07-15 17:03:51.541 [tomcat-handler-15] ERROR sdk.biz.err - ErrorScene^_^40004^_^INVALID_PARAMETER^_^null^_^Windows 10^_^2026-07-15 17:03:51^_^ProtocalMustParams:charset=UTF-8&method=alipay.fund.accountbook.query&sign=GK2uAGCJ5zleyZ89r6QLv2XrEpxjtOLt7MYncQZ8A3igXp72SAKOzkpUeYgqZ6u+9AZm2FugPHzi/hSYGqDbMxBcU8601p0fPxRTKdb7bkS4XJakDE5aoxLw/Se3EYi4WrNQDUE8xTC4PYSIT1uLHS9t60o80YlvrilQg06fByWZqT1F+VGC6atdLNr1zrg4FrUTDeipPymnI+pN2XxWZS2FgqIxf6G6/vmsaksBnmCYdNEyzbA2abt56PMBl0g26aSiAwCVst/iFLleEEmuSnuh+ZJ5bMKOm+f8+mmu7AWeBADr4d0SNz9SI5ZSjDnP9Nl0zCactQiBVit2yjfb2w==&version=1.0&app_id=2021006160682088&sign_type=RSA2&timestamp=2026-07-15 17:03:51^_^ProtocalOptParams:alipay_sdk=alipay-sdk-java-4.40.865.ALL&format=JSON^_^ApplicationParams:traceId=0b216cd117841062319125341eea7a&biz_content={"account_book_id":"123","ext_info":"{\"agreement_no\":\"20265515324430130114\"}","scene_code":"SATF_FUND_BOOK"}^_^Body:{"alipay_fund_accountbook_query_response":{"msg":"Business Failed","code":"40004","sub_msg":"参数有误用户不存在,userId=123","sub_code":"INVALID_PARAMETER"},"sign":"UYgE32xozKDtAruYowEdJFNYe+VlMzscde7LCiU6odG6UVBGAM8i0UbLmiBuIkhMAzwR4bqedYJGEha7KwZ6qZwGRLtFJknZINrupt8+0kKA3ofQzhP1NX2HlLKHapd6T8NLe9Q1znn/eC3EBEAXQrz54nrB9mMwpKmKzGa6RbwJGHFfM7uZuB1LEu5jqkarNpIMS/yFWl6vN7iQWRrcryez/7ySvk5b9Fp4YniNeZwComAiisq+wjvyNAc6PNd4Ikco9KqHs8+LpANClMNLlu8c++/WSZSZ6HwxB6GwTk0DVJ02kgPpkyJclAihRYJ+6U8LfPz8nMpRfYPygk4dWA=="}^_^9ms,243ms,9ms^_^trace_id:0b216cd117841062319125341eea7a
+2026-07-15 17:05:07.154 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closing ...
+2026-07-15 17:05:07.156 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed