server: port: 8001 servlet: context-path: /api/v1 spring: threads: virtual: enabled: true application: name: payment-platform profiles: active: dev servlet: multipart: max-file-size: 10MB max-request-size: 20MB jackson: time-zone: Asia/Shanghai datasource: type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: org.postgresql.Driver url: jdbc:postgresql://localhost:5432/payment_platform_java?currentSchema=public&stringtype=unspecified username: admin password: 'xjz#123321' initial-size: 5 min-idle: 5 max-active: 20 max-wait: 60000 validation-query: SELECT 1 test-while-idle: true test-on-borrow: false test-on-return: false # 每个物理连接建立后立刻把会话时区钉成北京时间。 # # 为什么必须有这一行:本项目所有 timestamp without time zone 列一律存北京墙钟 # (由 ShanghaiOffsetDateTimeTypeHandler 保证),那部分与会话时区无关; # 但业务表里另有 4 个 timestamptz 列存的是「瞬间」,读出来是会话时区的墙钟 —— # sys_invitation_code.used_time / created_time / updated_time、sys_user.last_login # 这几列的正确性完全押在会话时区上,所以在这里显式钉死,不依赖服务端配置。 # # 已核对 druid-spring-boot-3-starter 1.2.20 的 spring-configuration-metadata.json: # 属性名就是 connection-init-sqls(Collection); # 并已反编译 DruidAbstractDataSource 确认它在建连后逐条 # connection.createStatement() + Statement.execute(sql)。 connection-init-sqls: - SET TIME ZONE 'Asia/Shanghai' data: redis: host: redis port: 6379 database: 1 password: '123456#xjz' timeout: 10s lettuce: pool: max-active: 20 max-idle: 10 min-idle: 5 mybatis-plus: mapper-locations: classpath*:/mapper/**/*.xml type-aliases-package: com.payment.platform.module configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl # JWT jwt: secret: vgb0tnl9d58+6n-6h-ea&u^1#1sccp!794=krylxcjq75vzps$ algorithm: HmacSHA256 access-token-expire: 3600 refresh-token-expire: 7200 token-type: bearer sliding-expire: true # 验证码 captcha: enable: true expire-seconds: 60 # Knife4j springdoc: swagger-ui: path: /swagger-ui.html api-docs: path: /v3/api-docs knife4j: enable: true setting: language: zh_cn # Alipay(仅作 fallback — 正常运行时使用 pay_service_provider 表配置) alipay: app-id: "" app-private-key: "" alipay-public-key: "" server-url: https://openapi.alipay.com/gateway.do format: JSON charset: UTF-8 sign-type: RSA2 sandbox: false notify-url: "" return-url: "" # OAuth 授权回调完成后的前端跳转地址(如 http://localhost:5180)— openid 授权 URL 生成时校验非空 oauth-front-url: "https://qcsj88888.com" # OAuth 授权回调地址(完整 URL)— 支付宝开放平台「授权回调地址」白名单只能配一个,与当面付 app_auth_code 授权共用(按参数分流),须与白名单完全一致 oauth-redirect-uri: "https://qcsj88888.com/api/v1/payment/aplipay/auth" max-retries: 3 request-timeout: 30 rate-limit: 100 # Alibaba Cloud (OSS等) alibaba-cloud: access-key-id: LTAI5t5jHkQMY2T7V5n4ofMr access-key-secret: RYaofbQBRc93LC1oxCbgJGTVMCzNW4 # File upload (OSS) file: upload-path: static/upload allowed-extensions: .gif,.jpg,.jpeg,.png,.ico,.svg,.xls,.xlsx,.pdf,.doc,.docx max-size: 10485760 # Aliyun OSS aliyun: oss: endpoint: "oss-cn-beijing.aliyuncs.com" bucket: "hunanxiaojunzioss" access-key-id: "LTAI5t5jHkQMY2T7V5n4ofMr" access-key-secret: "RYaofbQBRc93LC1oxCbgJGTVMCzNW4" custom-domain: "" # Logging logging: file: path: ./logs level: com.payment.platform: info org.springframework.security: info