Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
fly_moon_payment fly_moon_payment
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 6
    • Merge requests 6
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Package Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar

已经迁移到新的代码仓库,使用飞书登录 https://gitlab.deeplink.media/

  • Administrator
  • fly_moon_paymentfly_moon_payment
  • Merge requests
  • !78

Merged
Created Apr 27, 2026 by 冼杰铿@JieKMaintainer

feat(provider): first-payment monthly coupon (ONE50) with dynamic Nacos config

  • Overview 0
  • Commits 10
  • Changes 17

Summary

为从未充值过的用户首次月付订阅自动应用 50% 优惠券(ONE50),仅月付生效。规则、折扣率、生效期、多语言文案均通过 Nacos promotion.config 动态控制。

详见 plan:docs/plans/2026-04-22-001-feat-first-payment-monthly-coupon-plan.md。

改动颗粒度

Step 1(纯读,可独立上线)

  • ConfigConstants.PROMOTION_CONFIG_DATA_ID
  • PromotionConfigDTO + PromotionConfigProperties(Nacos 动态刷新)
  • PromotionService + Impl(snapshotForUser / evaluateForCheckout / computeDiscountedPrice)
  • MultiLanguageConfigVO.Plan 加 monthlyPromotion / annuallyPromotion
  • PlanMultiLanguageConfigService 新增 (String, Long) 重载,旧签名保留 admin 用

Step 2(写侧,结账闭环)

  • CheckoutSessionRO.promotionCode 新增可空字段
  • CheckoutService 新用户分支调 evaluateForCheckout 透传
  • NewSubscriptionFlowService 互斥处理 setAllowPromotionCodes / addDiscount,Stripe 失败降级重试

sit 验证

  • v200 / commit a532e02 / s1-flymoon-payment 已部署到 sit namespace
  • 匿名 getMultiLanguageConfig 返回 monthlyPromotion: null ✓
  • Stripe smoke test:Y3kDqScW coupon + promo_1TPeTb... 命中后金额 50% off ✓

prod 上线依赖

  1. Stripe live mode 必须重建:test 与 live 隔离,新建 Coupon(percent_off=50, duration=once)+ PromotionCode ONE50
  2. prod Nacos 发布 promotion.config,先 enabled=false 冷启动
  3. 切 enabled=true 后第一小时盯:创建 Stripe Session 成功率、evaluateForCheckout warn 日志、Coupon 兑换数

回滚预案

任何异常 PUT Nacos enabled=false,10s 内全 Pod 失效,0 代码回滚。

Assignee
Assign to
Reviewer
Request review from
None
Milestone
None
Assign milestone
Time tracking
Source branch: feat/first-payment-monthly-coupon