本文引用的文件
本文件面向AI有声书生成平台的订单与积分模型,系统性阐述以下内容:
本文件严格基于仓库中的实际代码与文档进行分析,避免臆测。
围绕订单与积分模型,后端主要涉及以下模块与配置:
文档:API规范、数据库结构说明
graph TB
subgraph "前端"
OrdersPage["订单页面<br/>orders/index.vue"]
MemberPage["会员页面<br/>member/index.vue"]
end
subgraph "后端"
PaymentCtrl["支付控制器<br/>payment.controller.ts"]
PaymentSvc["支付服务<br/>payment.service.ts"]
MemberCtrl["会员控制器<br/>member.controller.ts"]
MemberSvc["会员服务<br/>member.service.ts"]
TTSCtrl["TTS控制器<br/>tts.controller.ts"]
TTSSvc["TTS服务<br/>tts.service.ts"]
end
subgraph "数据层"
PrismaSchema["Prisma Schema<br/>schema.prisma"]
ModelsCfg["模型配置<br/>models.json"]
ModelsValidator["模型校验<br/>models-validator.ts"]
end
OrdersPage --> PaymentCtrl
OrdersPage --> MemberCtrl
MemberPage --> MemberCtrl
PaymentCtrl --> PaymentSvc
MemberCtrl --> MemberSvc
TTSCtrl --> TTSSvc
PaymentSvc --> PrismaSchema
MemberSvc --> PrismaSchema
TTSSvc --> PrismaSchema
PaymentSvc --> ModelsCfg
MemberSvc --> ModelsCfg
TTSSvc --> ModelsCfg
PaymentSvc --> ModelsValidator
MemberSvc --> ModelsValidator
TTSSvc --> ModelsValidator
图表来源
章节来源
本节从数据模型与业务服务两个维度,梳理订单与积分的核心组件。
订单模型(Order)
积分余额模型(TokenBalance)
积分流水模型(TokenUsage)
订单管理服务(Payment Service)
会员与积分服务(Member Service)
语音合成消费(TTS Service)
章节来源
下图展示订单与积分在系统中的交互关系与数据流:
sequenceDiagram
participant Client as "客户端"
participant OrdersUI as "订单页面<br/>orders/index.vue"
participant MemberUI as "会员页面<br/>member/index.vue"
participant PaymentCtrl as "支付控制器"
participant PaymentSvc as "支付服务"
participant MemberSvc as "会员服务"
participant TTSSvc as "TTS服务"
participant DB as "数据库"
Client->>OrdersUI : 打开订单列表
OrdersUI->>PaymentCtrl : 查询订单列表
PaymentCtrl->>PaymentSvc : 订单查询
PaymentSvc->>DB : 读取订单表
DB-->>PaymentSvc : 订单数据
PaymentSvc-->>PaymentCtrl : 返回结果
PaymentCtrl-->>OrdersUI : 渲染订单
Client->>MemberUI : 查看积分与充值
MemberUI->>MemberSvc : 查询余额/流水
MemberSvc->>DB : 读取余额与流水
DB-->>MemberSvc : 结果
MemberSvc-->>MemberUI : 展示
Client->>TTSSvc : 发起语音合成
TTSSvc->>TTSSvc : 计算消耗
TTSSvc->>MemberSvc : 扣减积分
MemberSvc->>DB : 更新余额/写入流水
DB-->>MemberSvc : 成功
MemberSvc-->>TTSSvc : 扣减成功
TTSSvc-->>Client : 合成结果
图表来源
金额计算
回调时以第三方返回为准,确保幂等更新
stateDiagram-v2
[*] --> 待支付
待支付 --> 已支付 : "支付成功"
待支付 --> 已取消 : "支付失败/超时"
已支付 --> 已完成 : "服务完成"
已支付 --> 部分退款 : "部分退款"
已支付 --> 已取消 : "主动取消"
已完成 --> [*]
部分退款 --> 已完成 : "剩余完成"
已取消 --> [*]
图表来源
章节来源
重置机制
活动周期:活动结束后统一清零并记录
flowchart TD
Start(["开始"]) --> GetRule["获取积分规则"]
GetRule --> Income{"是否收入类?"}
Income --> |是| AddBalance["增加可用积分/累计获取"]
Income --> |否| Deduct{"是否可抵扣?"}
Deduct --> |是| Freeze["预占积分冻结"]
Freeze --> Consume["实际消费完成"]
Consume --> Unfreeze["转为可用积分"]
Deduct --> |否| Record["记录流水但不扣减"]
AddBalance --> Save["保存余额"]
Unfreeze --> Save
Record --> Save
Save --> End(["结束"])
图表来源
章节来源
金额与风控
实付金额校验、最小/最大限额、重复支付拦截
sequenceDiagram
participant Client as "客户端"
participant Ctrl as "支付控制器"
participant Svc as "支付服务"
participant Pay as "支付渠道"
participant DB as "数据库"
Client->>Ctrl : 提交下单请求
Ctrl->>Svc : 创建订单并发起支付
Svc->>DB : 写入订单
Svc->>Pay : 发起支付
Pay-->>Svc : 支付结果
Svc->>DB : 更新订单状态/金额
Svc-->>Ctrl : 返回结果
Ctrl-->>Client : 订单状态
图表来源
章节来源
与订单的关系
若来自订单,则与订单状态联动(如完成/退款)
sequenceDiagram
participant Client as "客户端"
participant TTSCtrl as "TTS控制器"
participant TTSSvc as "TTS服务"
participant MemberSvc as "会员服务"
participant DB as "数据库"
Client->>TTSCtrl : 发起合成
TTSCtrl->>TTSSvc : 计算消耗
TTSSvc->>MemberSvc : 扣减积分
MemberSvc->>DB : 写入流水/更新余额
DB-->>MemberSvc : 成功
MemberSvc-->>TTSSvc : 扣减成功
TTSSvc-->>Client : 合成结果
图表来源
章节来源
章节来源
潜在风险
性能:高并发下积分与订单的读写锁竞争
graph LR
PaymentSvc["支付服务"] --> MemberSvc["会员服务"]
PaymentSvc --> DB["数据库"]
MemberSvc --> DB
TTSSvc["TTS服务"] --> MemberSvc
TTSSvc --> DB
PaymentCtrl["支付控制器"] --> PaymentSvc
MemberCtrl["会员控制器"] --> MemberSvc
TTSCtrl["TTS控制器"] --> TTSSvc
图表来源
章节来源
章节来源
本文件基于仓库现有代码与文档,系统化梳理了AI有声书平台的订单与积分模型。通过明确数据结构、状态流转、服务职责与交互流程,为后续扩展(如更多支付渠道、复杂积分规则、报表分析)提供了清晰的参考路径。建议在生产环境中进一步完善幂等与一致性保障,并持续优化性能与可观测性。
章节来源
章节来源