# Change: 套餐管理系统实现 ## Why 根据业务需求文档(docs/套餐.md),需要实现完整的套餐管理系统,包括4个核心模块: 1. **套餐系列管理** - 管理套餐的分类和组织 2. **套餐管理** - 管理具体的套餐产品(流量、价格、时长等) 3. **代理可售套餐** - 代理商查看被分配的可售套餐及定价 4. **单套餐分配** - 为代理商分配特定套餐并设置成本价 当前系统虽然有套餐相关的类型定义(src/types/api/package.ts)和部分页面骨架,但缺少完整的 API 对接和业务逻辑实现。此变更将实现完整的套餐管理能力。 ## What Changes ### 1. API 层实现 采用模块化设计,拆分为 4 个独立的 API 服务文件: - **新增**: `src/api/modules/packageSeries.ts` - 套餐系列 API 服务 - 套餐系列列表查询(分页、筛选) - 创建套餐系列 - 获取套餐系列详情 - 更新套餐系列 - 删除套餐系列 - 更新套餐系列状态 - **新增**: `src/api/modules/package.ts` - 套餐管理 API 服务 - 套餐列表查询(分页、多条件筛选) - 创建套餐 - 获取套餐详情 - 更新套餐 - 删除套餐 - 更新套餐状态 - 更新套餐上架状态 - 获取系列下拉选项(用于表单选择) - **新增**: `src/api/modules/myPackage.ts` - 代理可售套餐 API 服务 - 我的可售套餐列表查询 - 获取可售套餐详情 - 我的被分配系列列表 - **新增**: `src/api/modules/shopPackageAllocation.ts` - 单套餐分配 API 服务 - 单套餐分配列表查询 - 创建单套餐分配 - 获取单套餐分配详情 - 更新单套餐分配 - 删除单套餐分配 - 更新单套餐分配状态 - **修改**: `src/api/modules/index.ts` - 导出新增的服务模块 - 导出 PackageSeriesService - 导出 PackageService - 导出 MyPackageService - 导出 ShopPackageAllocationService ### 2. 类型定义增强 - **新增**: `src/types/api/packageManagement.ts` - 完整的套餐管理类型定义 - 匹配文档的 API 字段(下划线命名) - 包含所有请求/响应类型 - 包含分页结果类型 ### 3. 页面实现 **套餐系列管理** (`src/views/package-management/package-series/index.vue`) - 列表展示(支持名称搜索、状态筛选) - 新增/编辑套餐系列 - 删除套餐系列 - 状态开关(启用/禁用) **套餐管理** (`src/views/package-management/package-list/index.vue`) - 列表展示(支持多条件筛选:名称、系列、状态、上架状态、套餐类型) - 新增/编辑套餐 - 删除套餐 - 状态开关(启用/禁用) - 上架状态开关(上架/下架) **代理可售套餐** (`src/views/package-management/my-packages/index.vue`) - 查看被分配的套餐列表(支持系列、类型筛选) - 查看套餐详情(成本价、建议售价、利润空间等) - 查看被分配系列列表 **单套餐分配** (`src/views/package-management/package-assign/index.vue`) - 分配列表(支持店铺、套餐、状态筛选) - 创建分配(选择套餐、店铺、设置成本价) - 编辑分配(修改成本价) - 删除分配 - 状态管理(启用/禁用) ### 4. 常量配置 - **新增**: `src/config/constants/package.ts` - 套餐相关常量 - 套餐类型枚举(formal/addon) - 流量类型枚举(real/virtual) - 上架状态枚举(1:上架, 2:下架) - 定价模式枚举(fixed/percent) - 价格来源枚举(series_pricing/package_override) ### 5. 路由配置 已存在的路由(无需修改): - `/package-management/package-series` - 套餐系列管理 - `/package-management/package-list` - 套餐管理 - `/package-management/package-assign` - 单套餐分配 需要新增的路由: - **新增**: `src/router/routesAlias.ts` - 添加路由别名 - `MyPackages = '/package-management/my-packages'` - 代理可售套餐 - **新增**: `src/router/routes/asyncRoutes.ts` - 添加路由配置 - `/package-management/my-packages` - 代理可售套餐页面路由 ## Impact ### 受影响的规范 - `package-series-management` - 新增能力 - `package-management` - 新增能力 - `my-packages` - 新增能力 - `shop-package-allocation` - 新增能力 ### 受影响的代码 - `src/api/modules/*` - 新增 4 个 API 服务模块 - `src/types/api/*` - 新增类型定义文件 - `src/views/package-management/*` - 4 个页面完整实现 - `src/config/constants/*` - 新增常量配置 - `src/router/routes/asyncRoutes.ts` - 路由配置 ### 依赖关系 - 依赖现有的组件库(ArtTable、ArtSearchBar、ArtTableHeader 等) - 依赖现有的 HTTP 请求工具(request.ts) - 依赖现有的权限控制和路由守卫 - 依赖 ShopService(用于单套餐分配页面的店铺选择器) - 后端 API 需已实现(docs/套餐.md 中定义的接口) **注意事项**: - ShopService 应该已经存在于 src/api/modules/shop.ts - 如果不存在,需要先实现或使用 Mock 数据 ### 风险评估 - **低风险**: 独立模块,不影响现有功能 - **API 依赖**: 需确保后端接口已实现并联调 - **权限控制**: 需配置对应的菜单和按钮权限