Catalog 模块提供灵活的产品/服务目录,为计费系统提供数据。它管理计划定义、附加产品、权益映射和可配置目录项。
端点
| 端点 | 方法 | 描述 |
|---|---|---|
/api/catalog/items | POST | 创建目录项 |
/api/catalog/items | GET | 列出目录项 |
/api/catalog/items/{id} | GET | 获取项详情 |
/api/catalog/plans | POST | 创建计划 |
/api/catalog/plans | GET | 列出计划 |
/api/catalog/add-ons | POST | 添加附加项到计划 |
/api/catalog/offerings/{tenantId} | PUT | 设置租户目录产品 |
/api/catalog/entitlements/{planId} | POST | 映射权益到计划 |
架构
CatalogEndpoints (Minimal API) │ ▼CatalogService │ ├── ICatalogRepository → SqlSugarCatalogRepository ├── ICatalogEntitlementMappingStore └── ICatalogEventPublisher → NullCatalogEventPublisherCatalogItem 实体
public class CatalogItemEntity : TenantSoftDeleteEntityBase{ public string Name { get; set; } public string Description { get; set; } public string ItemType { get; set; } // Plan, AddOn, Feature, Entitlement public string? Metadata { get; set; } // JSON 配置 public bool IsActive { get; set; }}权益映射
计划 → CatalogOffering → EntitlementMapping → 配额键| 概念 | 描述 |
|---|---|
| 目录项 | 单个产品/功能定义 |
| 计划 | 按价格打包的权益集 |
| 附加项 | 可添加到任何计划的可选功能 |
| 权益映射 | 将目录项链接到配额键 |
| 目录产品 | 每租户分配的计划 + 附加项 |
计划和附加项
计划定义基础订阅层级;附加项扩展功能:
免费计划 → { 存储: 1GB, 工单: 10, 聊天: 1 频道 }专业计划 → { 存储: 100GB, 工单: 100, 聊天: 10 频道 }企业计划 → { 存储: 无限, 工单: 无限, 聊天: 无限 }+ 额外存储 → { 存储: +50GB }+ 优先支持 → { 工单: 优先队列 }