# 分类管理模块 - 快速参考 ## 📚 接口列表 ### 1. 获取直播间分类列表 ``` GET /api/front/category/live-room ``` **说明**: 获取所有启用状态的直播间分类 **登录**: 不需要 **返回**: 分类列表(ID、名称、父级ID、排序、扩展字段) --- ### 2. 获取作品分类列表 ``` GET /api/front/category/work ``` **说明**: 获取所有启用状态的作品分类 **登录**: 不需要 **返回**: 分类列表(ID、名称、父级ID、排序、扩展字段) --- ### 3. 获取指定类型的分类列表 ``` GET /api/front/category/list?type={type} ``` **参数**: - `type` (必填): 分类类型 - 1 = 商品分类 - 3 = 文章分类 - 8 = 直播间分类 - 9 = 作品分类 **说明**: 获取指定类型的所有启用状态分类 **登录**: 不需要 **返回**: 分类列表 --- ### 4. 获取分类详情 ``` GET /api/front/category/{id} ``` **参数**: - `id` (必填): 分类ID **说明**: 获取单个分类的详细信息 **登录**: 不需要 **返回**: 分类详情 --- ### 5. 获取分类统计信息 ⭐ 新增 ``` GET /api/front/category/statistics?type={type} ``` **参数**: - `type` (必填): 分类类型(8=直播间,9=作品) **说明**: 统计每个分类下的直播间数量和作品数量 **登录**: 不需要 **返回**: ```json [ { "id": 1, "name": "娱乐", "pid": 0, "sort": 100, "extra": "", "liveRoomCount": 15, "worksCount": 32, "totalCount": 47 } ] ``` --- ### 6. 获取热门分类 ⭐ 新增 ``` GET /api/front/category/hot?type={type}&limit={limit} ``` **参数**: - `type` (必填): 分类类型(8=直播间,9=作品) - `limit` (可选): 返回数量限制,默认10 **说明**: 按使用频率排序返回热门分类(只返回有内容的分类) **登录**: 不需要 **返回**: 热门分类列表(按使用量从高到低排序) --- ### 7. 获取子分类列表 ⭐ 新增 ``` GET /api/front/category/{parentId}/children?recursive={recursive} ``` **参数**: - `parentId` (必填): 父分类ID - `recursive` (可选): 是否递归获取所有子分类,默认false **说明**: 获取某个分类的子分类列表 **登录**: 不需要 **返回**: - `recursive=false`: 只返回直接子分类 - `recursive=true`: 返回所有子孙分类 --- ## 🔍 使用场景 ### 场景1: 首页展示热门分类 ```javascript // 获取热门直播间分类(前5个) GET /api/front/category/hot?type=8&limit=5 // 获取热门作品分类(前10个) GET /api/front/category/hot?type=9&limit=10 ``` ### 场景2: 分类筛选页面 ```javascript // 1. 获取所有直播间分类 GET /api/front/category/live-room // 2. 获取每个分类的统计信息 GET /api/front/category/statistics?type=8 // 3. 按分类筛选直播间 GET /api/front/live/public/rooms?categoryId=1 ``` ### 场景3: 多级分类展示 ```javascript // 1. 获取一级分类 GET /api/front/category/list?type=9 // 2. 获取某个一级分类的直接子分类 GET /api/front/category/1/children?recursive=false // 3. 获取某个一级分类的所有子孙分类 GET /api/front/category/1/children?recursive=true ``` ### 场景4: 作品搜索页面 ```javascript // 1. 获取作品分类列表 GET /api/front/category/work // 2. 按分类搜索作品 GET /api/front/search/works?keyword=测试&categoryId=1 ``` --- ## 📊 数据库表结构 ### eb_category 表 ```sql CREATE TABLE `eb_category` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID', `pid` int DEFAULT NULL COMMENT '父级ID', `path` varchar(255) DEFAULT NULL COMMENT '路径', `name` varchar(100) NOT NULL COMMENT '分类名称', `type` int NOT NULL COMMENT '类型:1-商品 3-文章 8-直播间 9-作品', `url` varchar(255) DEFAULT NULL COMMENT '地址', `extra` varchar(500) DEFAULT NULL COMMENT '扩展字段', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:1-正常 0-失效', `sort` int DEFAULT '0' COMMENT '排序', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_type` (`type`), KEY `idx_pid` (`pid`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分类表'; ``` --- ## 🎯 分类类型说明 | 类型值 | 说明 | 常量名 | |--------|------|--------| | 1 | 商品分类 | CATEGORY_TYPE_PRODUCT | | 2 | 附件分类 | CATEGORY_TYPE_ATTACHMENT | | 3 | 文章分类 | CATEGORY_TYPE_ARTICLE | | 4 | 设置分类 | CATEGORY_TYPE_SETTING | | 5 | 菜单分类 | CATEGORY_TYPE_MENU | | 6 | 配置分类 | CATEGORY_TYPE_CONFIG | | 7 | 秒杀配置 | CATEGORY_TYPE_SECKILL | | 8 | 直播间分类 | CATEGORY_TYPE_LIVE_ROOM | | 9 | 作品分类 | CATEGORY_TYPE_WORK | --- ## 💡 最佳实践 ### 1. 分类统计缓存 建议在前端缓存分类统计数据,避免频繁请求: ```javascript // 缓存5分钟 const cacheKey = `category_stats_${type}`; const cachedData = localStorage.getItem(cacheKey); if (cachedData && Date.now() - cachedData.timestamp < 5 * 60 * 1000) { return cachedData.data; } ``` ### 2. 热门分类更新频率 热门分类数据建议每小时更新一次,避免实时计算影响性能。 ### 3. 递归查询性能 递归查询所有子分类时,建议限制分类层级深度(不超过5级),避免性能问题。 ### 4. 分类筛选优化 在列表页面使用分类筛选时,建议同时显示分类统计信息,让用户知道每个分类下有多少内容。 --- ## 🔧 后台管理接口 后台管理接口位于 `crmeb-admin` 模块,需要管理员权限: - `GET /api/admin/category/list` - 分类列表 - `POST /api/admin/category/save` - 新增分类 - `POST /api/admin/category/update` - 修改分类 - `GET /api/admin/category/delete` - 删除分类 - `GET /api/admin/category/info` - 分类详情 - `GET /api/admin/category/list/tree` - 树形结构列表 - `GET /api/admin/category/updateStatus/{id}` - 更改分类状态 --- ## 📝 注意事项 1. **删除分类**: 删除分类前会检查是否有子分类,如果有子分类则不允许删除 2. **分类状态**: 禁用分类后,前端接口不会返回该分类 3. **统计准确性**: 分类统计会排除已删除和已下架的内容 4. **热门分类**: 只返回有内容的分类(totalCount > 0) 5. **递归查询**: 递归查询只返回启用状态的子分类 --- ## 🚀 快速开始 ### 前端示例代码 ```javascript // 1. 获取直播间分类列表 async function getLiveRoomCategories() { const response = await fetch('/api/front/category/live-room'); const result = await response.json(); return result.data; } // 2. 获取分类统计信息 async function getCategoryStatistics(type) { const response = await fetch(`/api/front/category/statistics?type=${type}`); const result = await response.json(); return result.data; } // 3. 获取热门分类 async function getHotCategories(type, limit = 10) { const response = await fetch(`/api/front/category/hot?type=${type}&limit=${limit}`); const result = await response.json(); return result.data; } // 4. 获取子分类 async function getChildCategories(parentId, recursive = false) { const response = await fetch(`/api/front/category/${parentId}/children?recursive=${recursive}`); const result = await response.json(); return result.data; } ``` --- ## 📞 技术支持 如有问题,请查看: - 业务功能开发完成度报告.md - 分类管理模块完成总结.md