server:
|
port: ${SERVER_PORT:8080}
|
|
spring:
|
application:
|
name: talent-card-server
|
servlet:
|
multipart:
|
max-file-size: 10MB
|
max-request-size: 10MB
|
datasource:
|
## url: ${MYSQL_URL:jdbc:mysql://192.168.110.13:3306/talent_card?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&useSSL=false}
|
url: ${MYSQL_URL:jdbc:mysql://127.0.0.1:8134/talent_card?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&useSSL=false}
|
username: ${MYSQL_USERNAME:root}
|
password: ${MYSQL_PASSWORD:123456}
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
hikari:
|
# 池只有 10 条连接,任何一条被长期占用都足以让整个后台排队到超时
|
# (2026-09-15 的事故:一个空闲未提交事务持着元数据锁,ALTER 无限等锁,
|
# 该表所有查询跟着排队,10 条连接很快被借光,健康检查都超时)。
|
# 超过这个时间还没归还的连接,Hikari 会连调用栈一起打进日志——
|
# 这是定位「谁在长事务里等外部 HTTP」最直接的手段。
|
leak-detection-threshold: 10000
|
data:
|
redis:
|
host: ${REDIS_HOST:localhost}
|
port: ${REDIS_PORT:6368}
|
password: ${REDIS_PASSWORD:123456}
|
database: ${REDIS_DATABASE:0}
|
timeout: 3s
|
repositories:
|
enabled: false
|
flyway:
|
enabled: false
|
locations: classpath:db/migration
|
baseline-on-migrate: true
|
jpa:
|
hibernate:
|
ddl-auto: validate
|
open-in-view: false
|
properties:
|
hibernate:
|
format_sql: true
|
jdbc:
|
time_zone: Asia/Shanghai
|
|
app:
|
cors:
|
# 后台管理端(vite dev,默认 5273)与 HBuilderX Web 调试来源;部署时用 CORS_ALLOWED_ORIGINS 覆盖为真实域名。
|
# localhost 与局域网地址都要列:换网段后局域网 IP 会变,localhost 是最稳的调试入口。
|
allowed-origins: ${CORS_ALLOWED_ORIGINS:http://localhost:5273,http://127.0.0.1:5273,http://localhost:7893,http://localhost:7894,http://127.0.0.1:7893,http://127.0.0.1:7894,http://192.168.110.26:5273,http://192.168.110.26:,http://192.168.110.15:5273,http://192.168.110.15:5173}
|
# 本机调试来源的端口是随机的:微信开发者工具每次启动都换一个端口(见过 42665),
|
# HBuilderX 内置浏览器同理。写死端口必然漏,所以按 origin 通配匹配任意端口。
|
# 只放行 localhost / 127.0.0.1,不对公网来源开口子;真实域名请加进上面的精确白名单。
|
allowed-origin-patterns: ${CORS_ALLOWED_ORIGIN_PATTERNS:http://localhost:[*],http://127.0.0.1:[*]}
|
# 核销后把延迟入账的钱确认给商户;确认失败或超时时由这个补偿任务重试,避免钱永远冻在延迟户。
|
privacy:
|
# Production must provide APP_PRIVACY_ENCRYPTION_KEY through the deployment secret store.
|
encryption-key: ${APP_PRIVACY_ENCRYPTION_KEY:talent-card-local-development-key}
|
upload:
|
directory: ${UPLOAD_DIR:uploads}
|
external-web:
|
# Only URLs on these operator-approved HTTPS hosts can be returned to the mini-program.
|
allowed-hosts: ${EXTERNAL_WEB_ALLOWED_HOSTS:${CAR_WASH_ALLOWED_WEB_HOSTS:}}
|
development-session:
|
# Local payment debugging only. Set false before any shared or production deployment.
|
enabled: false
|
talent-id: 2
|
payment:
|
# 核销后把延迟入账的钱确认给商户;确认失败或超时时由补偿任务重试,避免钱永远冻在延迟户。
|
fund-confirmation-retry:
|
fixed-delay-ms: ${FUND_CONFIRMATION_RETRY_FIXED_DELAY_MS:300000}
|
huifu:
|
# Keep disabled until the Huifu test/production product, merchant and keys are provisioned.
|
enabled: true
|
environment: prod
|
system-id: 6666000220591054
|
product-id: KAZX
|
merchant-id: 6666000220591054
|
mini-program-app-id: wxcfee477acb54d179
|
private-key: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCSEpJD4Z62cb+g82jGY+d87noMrXkoHlw4CCCTtna1whTed5haEqGH3B6czSC7E2c9d/QdMP4Vt67uhS9OK0IgFdLG+r1uH6K4snV/CW4rMN7f9EZOJyzjfZ8gJeuwpGZHozfUeEoBwE6XTq9/2Us9moDQfRpEX3Q4MYF5dl/r35b8m0wdGndDq4aBugJf0+VXZ9bev8v6tQBm/VkGePpX9EeynQB7YxH7Bl3JW9LsHD+GJalO+Vmzo32o72YquryR9qmNmoC4mc9yFO4FSg6k6Bc2+CDBjwk4u//Y2jtccXHNNjJ/2JUA3EBNF4JpHl2lGt47DGXqgByASgHXF11NAgMBAAECggEAYpminauYhLK3lZ94pCIfyhb3z8LxO4Fy4meqBctuyjXd/GViM7rLyndtOo7Ef0MTt0xXPbUqbeJ1dI/2ZJ+SnTHd+26Zm9JC9sWPxlbJROJSL34mTu7mwBC17u9p7uyqFcU5FHS2EASNiFkW4gf9X/IA7brkli6QtrXEHgcnrIFVihAkLdI/MCrvD9RUa5QYHG0DqXT8RGwfVz4D/VHpjkqN3Tt8lEks56GRaZmNjWSZJmaeboKZC7jLDwUx07WSab7ZWAYU72X8NlY3t34NCBVPRAyrVW/UOIRGCHW/OibrMn4O7qOvHFgsNUWtd3ewSZkpZEt1oLc+cuXkt95bSQKBgQDKGHIxo3cllsCtrLedM5cAR75yy0MT+miL4TUvljTZ25JoUX+G1nmxeDrFhS0/pUJojjn+rSBqLkzsBOrisJ+7tmGKMWaUwikl0KOCHVXuKvzGWsPFdr7093Va9E/AgM2zFJf9S3VgF/FK4c0sBCra6NB5TXDjV92uXKjaDbRtqwKBgQC5CL8/l6hn2S+xMvf6NWmy1vGZXt0Dl8MfTwTBRFgiAy5nNdJLCbhypG/+d6sCe8nXddgr55LHLzf/gvA4SeGP4+WQvkVG3bCn/DyZOwgK0irKRcrUpHrFWssRYYQDEfRWPJYZE4yYjFT1pGhVF2ly3zwnHagjMUJoVwPY2uE45wKBgEJgVxlQnDB/XBdu0/vQ1vajmbywX/6uzymqNULE7eTkBik3I1CRHvUYDQ2U2TC/QZl/pTKtgCj/vgoC73a3Fi+cDltKMGwJfWRLK3jv06pe+hjX9NblUoC4yhWuiocqhuUbjXQHFa0TEBBNK4sab0zpDJfaxIoW8Nt02YyM1cbzAoGACykk6AAMz17BSq3pWTU5j+j5H6giKqJPyaapgcLOkhahCOatLYuDjZ6vhqjPLtIqpY1dIaDRMKR/ezD5rlt+eIBli2p+oTyj+C31tcRiwsxUemjlSBg3s4m7b+vy24CMvVrgLtkIBPeJ9FsbU+6alKw0Y6OdTaod+E8vUzg4l4cCgYEAsukZsL2AdMqjIZyeuitO0CPnvmRTCihuWi18M1Vun2RaCFSUavlLrmDt9i9v+eI5fRCGz8YgIMEyAp8T+xHX/tLTlXcWh9JS30RT+r3yQAOLnr4KG4LBBLgK64EOjhlo38gV6th7nvoi2R7rlPRBl3qW3bbgQyaAz2cZ0iHIoXo=
|
platform-public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiuRE4WR7SQqRs+3xNHpneFSU0YkftkBFRec7x1KQP9xCtOoySt/9pyjk+OyKypHnAHWGijpMRyd3AnJGzwgHS7PQ0Fj1yawbb94zYaNjsHsVg0py15vsvZexxLUttrY6s3F17hcMXHTqTutRR1zk9bsYehNkoooj09r9+5x6c5hIyWDXB7UQ+frnLBxhG8SQkeYnm1DqsRs4yB4qvDTb++h3X24bN7AaYcujL2ju3HI+eh4PrgWw9DZKtGpjNc+4imayE+of+nebkTQ4W2gtt+5gECmYEL6jcc06ZGzd8pi4MkASqER+PYt9zIFdavkHGCT8PDMRCl7AiwDkP6VVUQIDAQAB
|
notify-url: ${HUIFU_NOTIFY_URL:http://221.182.45.100:11451/api/payments/huifu/notify}
|
merchant-onboarding-notify-url: ${HUIFU_MERCHANT_ONBOARDING_NOTIFY_URL:http://221.182.45.100:11451/api/payments/huifu/merchant-onboarding-notify}
|
merchant-wechat-config-notify-url: ${HUIFU_MERCHANT_WECHAT_CONFIG_NOTIFY_URL:http://221.182.45.100:11451/api/payments/huifu/merchant-wechat-config-notify}
|
merchant-business-open-notify-url: ${HUIFU_MERCHANT_BUSINESS_OPEN_NOTIFY_URL:http://221.182.45.100:11451/api/payments/huifu/merchant-business-open-notify}
|
onboarding-upper-huifu-id: ${HUIFU_ONBOARDING_UPPER_HUIFU_ID:6666000220591054}
|
# 进件只做「渠道商 → 普通商户」两级:不再用 head_office_flag=0 + head_huifu_id 把商户
|
# 建成平台自己的下级商户。实测那条路没有收益(建完照样 20002 数据权限认证失败),
|
# 还会按总部客群类型索要 F725/F726/F727 材料。
|
# 商户业务开通是否复用上级(渠道商)的微信商户号:3=仅微信;留空=不下发该字段。
|
merchant-use-chains-flag: ${HUIFU_MERCHANT_USE_CHAINS_FLAG:3}
|
merchant-wechat-fee-rate: ${HUIFU_MERCHANT_WECHAT_FEE_RATE:0.60}
|
merchant-online-business-type: ${HUIFU_MERCHANT_ONLINE_BUSINESS_TYPE:H5311L}
|
merchant-online-media-name: ${HUIFU_MERCHANT_ONLINE_MEDIA_NAME:东区人才卡}
|
# 运营媒介主体与商户主体是否一致。平台用一个运营媒介给众多子商户开通,主体天然不一致。
|
# 这是商户业务开通的顶层必填,缺了会被通道拒(实测报 media_merCommon_flag 不能为空)。
|
merchant-media-subject-same: ${HUIFU_MERCHANT_MEDIA_SUBJECT_SAME:N}
|
# 小微经营类型,个人商户开通微信业务时必填;三种取值都要求 F22 门头照 + F24 内景照。
|
merchant-micro-business-type: ${HUIFU_MERCHANT_MICRO_BUSINESS_TYPE:MICRO_TYPE_ONLINE}
|
merchant-agreement-url: ${HUIFU_MERCHANT_AGREEMENT_URL:https://cloudpnrcdn.oss-cn-shanghai.aliyuncs.com/opps/api/prod/download_file/PaymentServiceAgreement.htm}
|
# 收款能力只要求「斗拱子商户正常 + 取现可用」:未核销的钱由延迟户兜住,
|
# 自动结算开着不再影响收款。设 false 仅用于刻意跳过通道能力确认的部署。
|
merchant-capability-required: ${HUIFU_MERCHANT_CAPABILITY_REQUIRED:true}
|
capability-refresh:
|
enabled: ${HUIFU_CAPABILITY_REFRESH_ENABLED:true}
|
stale-hours: ${HUIFU_CAPABILITY_STALE_HOURS:6}
|
fixed-delay-ms: ${HUIFU_CAPABILITY_REFRESH_FIXED_DELAY_MS:1800000}
|
wechat:
|
mini-program:
|
# The app id must be the same mini-program that invokes uni.login and uni.requestPayment.
|
app-id: ${WECHAT_MINI_PROGRAM_APP_ID:wxcfee477acb54d179}
|
# Keep this only in the deployment environment. It is required to exchange a wx.login code for an OpenID.
|
app-secret: ${WECHAT_MINI_PROGRAM_APP_SECRET:716aae42f04d3c5f17904e894f1c1ee9}
|
|
management:
|
endpoints:
|
web:
|
exposure:
|
include: health,info,metrics
|
endpoint:
|
health:
|
probes:
|
enabled: true
|
|
logging:
|
level:
|
com.talentcard.server: debug
|