# ============================================================================ # 存量业务参数(从老工程各模块的 application*.properties 迁回) # ============================================================================ # 为什么要有这个文件: # 老工程的 application*.properties 是**按模块各一份**的(zteits-park / zteits-order / # zteits-pay / zteits-charge …),搬迁红线第 9 条禁止改动里面的环境配置, # tools/p2_import_legacy.py 也故意不搬它们 —— 环境配置以新工程 yaml 为准。 # 但存量代码里有 37 个 `@Value("${...}")` 是**业务参数**(不是连接串), # 新工程没人提供,启动会抛 `Could not resolve placeholder`,且**一次只报第一个**。 # 本文件把这一批参数集中搬回来,由 application.yaml 的 spring.config.import 引入。 # # 键是怎么捞出来的(可复跑,不是人工回忆): # python3 tools/p2_audit_placeholders.py # 判据 = 注解确实存在(已去注释)+ 不在 static 字段上(Spring 不注入 static)+ 所在类会成为 Bean # ——这三条过滤掉了 11 个假阳性(AliOssClientConfig 的 7 个 ali.oss.* 是整段被 /* */ 注释、 # 改从数据库 SysCodeValueCacheUtil 读;Wechatpayapiv3Config 的 4 个是标在 static 字段上)。 # # 取值原则(都是「搬迁而非改造」): # 1. 老工程 `application.properties`(默认环境)里的原值**原样搬**; # 2. 凭据类一律写成 `${环境变量名:}`,真实值不进仓库(红线第 11 条), # 部署时必须注入;同时这些值已记入《待轮换密钥清单》; # 3. 老工程多个 profile 值不同的键 = 天然与环境绑定 → 也用环境变量,不钉死某一个环境的值; # 4. 唯一被改值的键是 `local.base.url`(原因见该行注释)。 # # 优先级:application-local.yaml > application.yaml > 本文件。要按环境覆盖这些键, # 在 application-{profile}.properties/yaml 里重写即可。 # ============================================================================ # ---------- 支付回调地址(老 portal 的路由,P5 会随页面迁移重定向到 /app-api)---------- # ⚠️ `local.base.url` 是唯一被**改过值**的键:老工程默认环境指向 # `http://pay.service.rnting.com`(老支付服务的生产域名)。新工程本地启动时若沿用, # 会把「支付回调」指向**老生产环境**——属于会造成实际危害的值,故改为指向本 Jar 自己。 # 生产部署时用 application-prod.yaml 覆盖即可。 local.base.url=http://127.0.0.1:48080 abcbankpay.notify.url=${local.base.url}/abcBankPay/payNotifyUrl alipay.notify.url=${local.base.url}/alipay/aliPayNotify alipay.payback.notify.url=${local.base.url}/alipay/aliPayBackNotify alipay.paycard.notify.url=${local.base.url}/alipay/payCardNotify alipay.payorder.notify.url=${local.base.url}/alipay/aliPayNotify alipay.recharge.notify.url=${local.base.url}/appAcctRecharge/aliRechargeNotify alipay.vipcard.notify.url=${local.base.url}/alipay/vipCardNotify weixin.payback.notify.url=${local.base.url}/weixinpay/payBackNotifyUrl weixin.paycard.notify.url=${local.base.url}/weixinpay/payCardNotify weixin.payorder.notify.url=${local.base.url}/weixinpay/payNotifyUrl weixin.recharge.notify.url=${local.base.url}/appAcctRecharge/weixinRechargeNotify weixin.vipcard.notify.url=${local.base.url}/weixinpay/vipCardNotify wx.notify.url=${local.base.url}/weixinpay/payNotifyUrl wx.notifyUrl=${local.base.url}/weixinPublicPay/payNotifyUrl wx.cardNotifyUrl=${local.base.url}/weixinPublicPay/cardNotifyUrl wx.vipCardNotifyUrl=${local.base.url}/weixinPublicPay/vipCardNotifyUrl # ---------- 支付渠道凭据(老值仅存在于老服务器,仓库里没有过;必须部署时注入)---------- # 支付宝商户 PID(老工程 `application.properties` 里是 2088231036270954) # —— 属于支付账号标识,不写进仓库 alipay.partner=${ALIPAY_PARTNER:} # 支付宝同步跳转页(老默认是 http://39.98.54.240/codepay/page/alipayResult.html, # 房山环境又是另一个域名 → 天然按环境变,故用环境变量) alipay.return.url=${ALIPAY_RETURN_URL:} # 微信支付证书:文件名可搬,密码(= 商户号)不搬 wx.cert.name=apiclient_cert.p12 wx.cert.pass=${WX_CERT_PASS:} # ---------- 电信 IoT(停车设备直连)---------- telecom.iot.url=https://device.api.ct10649.com:8743 telecom.iot.appid=${TELECOM_IOT_APPID:} telecom.iot.secret=${TELECOM_IOT_SECRET:} # ---------- 邮件 ---------- spring.mail.username=${MAIL_USERNAME:} # 邮件里展示当前环境名:老值 'ali' / '195' / 'WWWTOWN' 三个环境各不相同 current.env.desc=${CURRENT_ENV_DESC:local} # ---------- RocketMQ topic 前缀 ---------- # 老值:TEST(测试)/ NEWPROD(新生产)→ 天然按环境变 spring.rocketmq.environmentPrefix=${ROCKETMQ_ENV_PREFIX:TEST} # ---------- 数据同步开关与参数 ---------- # 这两个是「开关的开关」:老工程里就是这种间接写法,原样保留 switch.auto.default=false switch.auto.defaulXiCheng=true switch.auto.SyncDataToQingDao=${switch.auto.default} switch.auto.SyncDataToXiCheng=${switch.auto.defaulXiCheng} sync.parkinglot.maxnum=100 syncData.qingdao.park.url=http://139.224.115.129:8098 # ---------- 诱导屏(ATMS-LED)---------- induction.showLevelOneInductionReleaseUrl=http://106.74.36.99:18089/ATMS-LED-Server/leveloneInduction/showLevelOneInductionRelease # ---------- 充电(科林)---------- charge.orgId=10007 zteits.operatorId=669142828 # ---------- 门户身份串(P2 迁 bcp-portal 的 Controller 时才出现的键)---------- # ⚠️ 这是「一 Jar 代多门户」留下的唯一一个**语义冲突**点,改之前务必读完。 # # 老工程里每个 portal 各配一份、值就是自己的工程名(审计脚本会列全 9 个: # zteits-bcp-portal / zteits-pay-portal / zteits-pda-portal / zteits-gcp-portal / …)。 # 它会被当成查询条件写进请求(例:`BerthTurnOverQueryRequest.sysCode` 参与 SQL 过滤), # 也就是说**它区分的是「哪套门户写进去的数据」**。 # # 合成单 Jar 后只有一个 Spring 容器,同一个键名只能有一个值 —— 各老 portal 的 # `@Value("${project.syscode}")` 从此拿到**同一个**值。因此: # 1. 取值 = 目前**唯一已迁**的使用方所在门户,即 `AnalysisController`(原 bcp-portal); # 2. 以后每迁一个来自别的 portal、且用了该键的端点,都要回来核对: # 若它依赖的 sysCode 与 bcp-portal 不同,**不能**靠改这个键解决(会打翻已生效的那批), # 得在那个 Controller 里换独立键名(如 `project.syscode.pda`)并各自配置; # 3. 审计命令:`python3 -I tools/p2_audit_placeholders.py`(缺键会报,有默认值的另列一节)。 project.syscode=zteits-bcp-portal # 注:`jinshui.wsdl.url`(金水发票 WSDL)**不需要**配 —— 两处 `@Value` 在老代码里都是 # `//@Value(...)` 注释状态(parking-module-pay 的 InvoiceHelperServiceImpl 两个包各一份, # 其余靠代码里的常量)。审计脚本去掉注释后不再把它算作需求。 # # ⚠️ 这里**故意没有** spring.redis.password: # 它唯一的索取者是 com.clouds.common.redis.RedissonConfig —— 已核实该类零引用、 # 且它的 redissonClient() 没挂 @Bean(注册不出任何 Bean),属于老工程遗留的死配置, # 本次按 tools/p2_import_legacy.py 里 RedisConfig.java 的同一先例删除。 # 若在本文件里补一个 `${SPRING_REDIS_PASSWORD:}`,空串会被 Redisson 当成密码发 AUTH "", # 本地无密码 Redis 会直接拒绝(application-local.yaml 里已记录这个坑)。