zhibo/Zhibo/zhibo-h/分类管理模块快速参考.md

288 lines
7.4 KiB
Markdown
Raw Normal View History

2025-12-29 11:57:36 +08:00
# 分类管理模块 - 快速参考
## 📚 接口列表
### 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