zizi 0a0616a370 feat: add subscription redemption support to redemption codes
Redemption codes can now redeem either quota (existing) or a subscription
plan (new). The Redemption model gains Type (1=quota, 2=subscription) and
PlanId fields. When Type=2, Redeem() calls CreateUserSubscriptionFromPlanTx
to activate the plan, reusing all existing subscription logic (purchase
limits, group upgrade, quota reset, expiry). Old codes default to Type=0
which behaves identically to Type=1 (quota).
2026-05-19 01:10:14 +08:00
..
2026-01-14 22:29:43 +08:00
2025-07-30 20:31:51 +08:00
2024-07-07 02:24:51 +08:00
2025-07-10 20:55:43 +08:00
2025-12-02 21:34:39 +08:00
2025-07-21 15:39:16 +08:00
2025-12-19 23:16:56 +08:00
2023-04-22 20:39:27 +08:00
2025-08-03 10:41:00 +08:00
2023-04-22 20:39:27 +08:00