本文引用的文件
本文件面向会员订阅系统,系统化阐述会员体系设计理念、分级策略、订阅管理机制、使用配额系统、支付集成架构、会员权益管理以及API接口与集成指南。系统采用“包月配额+按量超支”的双轨计费策略,结合Token与音频时长两种配额维度,覆盖从免费体验到企业级的多层级套餐,并提供支付宝、微信支付的集成与回调处理能力。
订阅系统由后端服务与前端页面协同构成:
前端页面
支付确认与结果页面:跳转支付、轮询订单状态、展示支付结果
graph TB
subgraph "前端"
FE_Member["订阅页面<br/>pages/member/index.vue"]
end
subgraph "后端"
C_Sub["订阅控制器<br/>subscription.controller.ts"]
S_Sub["订阅服务<br/>subscription.service.ts"]
C_Pay["支付控制器<br/>payment.controller.ts"]
S_Pay["支付服务<br/>payment.service.ts"]
Types["类型定义<br/>types/index.ts"]
Prisma["数据模型<br/>prisma/schema.prisma"]
end
FE_Member --> C_Sub
FE_Member --> C_Pay
C_Sub --> S_Sub
C_Pay --> S_Pay
S_Sub --> Prisma
S_Pay --> Prisma
S_Sub --> Types
S_Pay --> Types
图表来源
章节来源
章节来源
订阅系统采用前后端分离架构,前端通过HTTP接口与后端交互,后端通过Prisma访问MySQL数据库。支付模块支持支付宝与微信支付,回调处理确保订单状态一致性。
sequenceDiagram
participant U as "用户"
participant FE as "前端页面"
participant PC as "支付控制器"
participant PS as "支付服务"
participant SC as "订阅控制器"
participant SS as "订阅服务"
participant DB as "数据库"
U->>FE : 选择套餐与支付方式
FE->>PC : POST /api/payment/create
PC->>PS : 创建支付订单
PS->>DB : 写入订单记录
PS-->>FE : 返回支付链接/二维码
FE->>U : 跳转支付
U-->>PS : 支付完成异步回调
PS->>PS : 验证签名
PS->>DB : 更新订单状态
PS->>SS : 激活订阅
SS->>DB : 创建/续期订阅、更新用户等级
SS->>DB : 初始化/更新Token余额
PS-->>FE : 订单状态轮询
FE-->>U : 展示支付结果
图表来源
章节来源
章节来源
音频时长配额(新增)
提供预估接口,前端展示生成费用与可用时长
flowchart TD
Start(["开始"]) --> CheckQuota["检查用户音频时长配额"]
CheckQuota --> Enough{"剩余时长足够?"}
Enough --> |否| Overage{"是否支持超出?"}
Overage --> |否| Deny["拒绝生成"]
Overage --> |是| Charge["按量计费零售价"]
Enough --> |是| Allow["允许生成"]
Charge --> Consume["生成完成后扣除时长并记录使用"]
Allow --> Consume
Consume --> End(["结束"])
Deny --> End
图表来源
章节来源
回调处理
成功后激活订阅并初始化/更新Token余额
sequenceDiagram
participant FE as "前端"
participant PC as "支付控制器"
participant PS as "支付服务"
participant ALI as "支付宝网关"
participant WX as "微信支付网关"
participant DB as "数据库"
FE->>PC : POST /api/payment/create
alt 支付宝
PC->>PS : 生成支付宝支付链接
PS->>ALI : 发起支付
ALI-->>PS : 返回支付链接/二维码
else 微信支付
PC->>PS : 生成微信支付二维码
PS->>WX : 发起支付
WX-->>PS : 返回二维码
end
PS-->>PC : 返回支付信息
PC-->>FE : 返回支付链接/二维码
ALI-->>PS : 异步回调
WX-->>PS : 异步回调
PS->>PS : 验证签名
PS->>DB : 更新订单状态
PS->>DB : 激活订阅/更新Token余额
图表来源
章节来源
章节来源
章节来源
classDiagram
class SubscriptionController {
+GET /subscription/plans
+GET /subscription/balance
+GET /subscription/usage
+POST /subscription/check-quota
+GET /subscription/audio-balance
+GET /subscription/audio-estimate
}
class SubscriptionService {
+getPlans()
+getUserTokenBalance()
+getTokenUsageList()
+checkQuota()
+getUserAudioBalance()
+getAudioEstimate()
}
class PaymentController {
+POST /payment/create
+POST /payment/mock
+POST /payment/alipay/notify
+POST /payment/wechat/notify
+GET /payment/orders
}
class PaymentService {
+createPaymentOrder()
+generateAlipayPayment()
+generateWechatPayment()
+handlePaymentCallback()
+activateSubscription()
}
class PrismaSchema {
+User
+Order
+Subscription
+TokenBalance
+TokenUsage
+SubscriptionPlan
}
class Types {
+MemberLevel
+OrderStatus
+ProductType
}
SubscriptionController --> SubscriptionService
PaymentController --> PaymentService
SubscriptionService --> PrismaSchema
PaymentService --> PrismaSchema
SubscriptionService --> Types
PaymentService --> Types
图表来源
章节来源
[本节为通用指导,不涉及具体文件分析]
章节来源
会员订阅系统通过清晰的分级策略与灵活的计费模型,满足从个人用户到企业用户的多样化需求。系统在支付集成、配额管理与权益解锁方面具备良好的扩展性与稳定性,建议后续完善自动续费、退款与数据分析等功能,持续优化用户体验与运营效率。
[本节为总结性内容,不涉及具体文件分析]
章节来源
章节来源