serv\web-侧边栏 标签统一
This commit is contained in:
276
schoolNewsServ/.bin/mysql/sql/RESOURCE_CATEGORY_REMOVAL.md
Normal file
276
schoolNewsServ/.bin/mysql/sql/RESOURCE_CATEGORY_REMOVAL.md
Normal file
@@ -0,0 +1,276 @@
|
||||
# ResourceCategory 移除清单
|
||||
|
||||
## 📝 概述
|
||||
|
||||
本文档记录了 `ResourceCategory` 相关功能的完整移除过程。原资源分类功能已完全迁移到标签系统(`tb_tag` 的 `tag_type=1`)。
|
||||
|
||||
---
|
||||
|
||||
## ✅ 已完成的操作
|
||||
|
||||
### 1. 数据库层面
|
||||
|
||||
#### 已注释的建表语句
|
||||
**文件:** `.bin\mysql\sql\createTableResource.sql`
|
||||
|
||||
```sql
|
||||
-- 资源分类表(已废弃,使用 tb_tag 表的 tag_type=1 代替)
|
||||
-- DROP TABLE IF EXISTS `tb_resource_category`;
|
||||
-- CREATE TABLE `tb_resource_category` (
|
||||
-- ...
|
||||
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='资源分类表';
|
||||
--
|
||||
-- ⚠️ 注意:资源分类功能已迁移到 tb_tag 表中,使用 tag_type=1 表示文章分类标签
|
||||
```
|
||||
|
||||
#### 已注释的初始化数据
|
||||
**文件:** `.bin\mysql\sql\initAllData.sql`
|
||||
|
||||
```sql
|
||||
-- 插入资源分类数据(已废弃,使用下方的 tb_tag 数据代替)
|
||||
-- INSERT INTO `tb_resource_category` (id, category_id, name, description, order_num, creator, create_time) VALUES
|
||||
-- ('1', 'party_history', '党史学习', '党史学习相关资源', 1, '1', now()),
|
||||
-- ...
|
||||
```
|
||||
|
||||
### 2. Java 代码层面
|
||||
|
||||
#### 已删除的文件(共7个)
|
||||
|
||||
1. **实体类**
|
||||
- ❌ `common\common-dto\src\main\java\org\xyzh\common\dto\resource\TbResourceCategory.java`
|
||||
|
||||
2. **Service 层**
|
||||
- ❌ `api\api-news\src\main\java\org\xyzh\api\news\category\ResourceCategoryService.java`
|
||||
- ❌ `news\src\main\java\org\xyzh\news\service\NCResourceCategoryService.java`
|
||||
- ❌ `news\src\main\java\org\xyzh\news\service\impl\NCResourceCategoryServiceImpl.java`
|
||||
|
||||
3. **Controller 层**
|
||||
- ❌ `news\src\main\java\org\xyzh\news\controller\ResourceCategoryController.java`
|
||||
|
||||
4. **Mapper 层**
|
||||
- ❌ `news\src\main\java\org\xyzh\news\mapper\ResourceCategoryMapper.java`
|
||||
- ❌ `news\src\main\resources\mapper\ResourceCategoryMapper.xml`
|
||||
|
||||
#### 已修改的文件(共2个)
|
||||
|
||||
1. **ResourceVO.java**
|
||||
- 删除了 `resourceCategory` 字段及其 getter/setter
|
||||
- 保留 `tags` 字段用于存储标签列表(包含文章分类标签)
|
||||
|
||||
**修改前:**
|
||||
```java
|
||||
public class ResourceVO {
|
||||
private TbResource resource;
|
||||
private TbResourceCategory resourceCategory; // ❌ 已删除
|
||||
private List<TbTag> tags;
|
||||
}
|
||||
```
|
||||
|
||||
**修改后:**
|
||||
```java
|
||||
public class ResourceVO {
|
||||
private TbResource resource;
|
||||
// ✅ 资源标签列表(包含文章分类标签 tag_type=1)
|
||||
private List<TbTag> tags;
|
||||
}
|
||||
```
|
||||
|
||||
2. **ResourceCenterController.java**
|
||||
- 修改 import 语句,移除 `TbResourceCategory`,添加 `TbTag`
|
||||
- 修改返回类型:`ResultDomain<TbResourceCategory>` → `ResultDomain<TbTag>`
|
||||
- 更新 TODO 注释,说明使用 `TagService.getTagsByType(1)`
|
||||
|
||||
**关键修改:**
|
||||
```java
|
||||
// 修改前
|
||||
import org.xyzh.common.dto.resource.TbResourceCategory;
|
||||
public ResultDomain<TbResourceCategory> getSpecialCategories() { ... }
|
||||
|
||||
// 修改后
|
||||
import org.xyzh.common.dto.resource.TbTag;
|
||||
public ResultDomain<TbTag> getSpecialCategories() {
|
||||
// TODO: 使用 TagService.getTagsByType(1) 获取文章分类标签
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 迁移映射关系
|
||||
|
||||
### API 接口映射
|
||||
|
||||
| 原接口 (ResourceCategory) | 新接口 (Tag) | 说明 |
|
||||
|---------------------------|--------------|------|
|
||||
| `GET /news/categorys/list` | `GET /news/tags/type/1` | 获取所有文章分类标签 |
|
||||
| `GET /news/categorys/category/{id}` | `GET /news/tags/tag/{tagID}` | 获取单个标签详情 |
|
||||
| `POST /news/categorys/category` | `POST /news/tags/tag` | 创建标签(需指定 tagType=1) |
|
||||
| `PUT /news/categorys/category` | `PUT /news/tags/tag` | 更新标签 |
|
||||
| `DELETE /news/categorys/category/{id}` | `DELETE /news/tags/tag/{tagID}` | 删除标签 |
|
||||
| `GET /news/categorys/tree` | `GET /news/tags/type/1` | 获取分类树(可通过标签列表构建) |
|
||||
|
||||
### 数据字段映射
|
||||
|
||||
| ResourceCategory 字段 | Tag 字段 | 说明 |
|
||||
|----------------------|----------|------|
|
||||
| `tagID` | `tagID` | 唯一标识 |
|
||||
| `name` | `name` | 名称 |
|
||||
| `description` | `description` | 描述 |
|
||||
| `icon` | - | 图标(Tag中无此字段,可扩展) |
|
||||
| `orderNum` | - | 排序号(可通过创建时间排序) |
|
||||
| `parentID` | - | 父分类(Tag为扁平结构) |
|
||||
| - | `tagType` | 标签类型(固定为1) |
|
||||
| - | `color` | 标签颜色(新增字段) |
|
||||
|
||||
### 代码调用映射
|
||||
|
||||
**修改前:**
|
||||
```java
|
||||
// 使用 ResourceCategoryService
|
||||
ResourceCategoryService categoryService;
|
||||
ResultDomain<TbResourceCategory> result = categoryService.getAllCategories();
|
||||
```
|
||||
|
||||
**修改后:**
|
||||
```java
|
||||
// 使用 TagService
|
||||
TagService tagService;
|
||||
ResultDomain<TbTag> result = tagService.getTagsByType(1); // 1 = 文章分类标签
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 数据迁移注意事项
|
||||
|
||||
### 如果数据库中已有 tb_resource_category 数据
|
||||
|
||||
需要执行以下迁移 SQL:
|
||||
|
||||
```sql
|
||||
-- 1. 将 tb_resource_category 数据迁移到 tb_tag
|
||||
INSERT INTO tb_tag (id, tag_id, name, description, tag_type, creator, create_time)
|
||||
SELECT
|
||||
id,
|
||||
category_id AS tag_id,
|
||||
name,
|
||||
description,
|
||||
1 AS tag_type, -- 文章分类标签
|
||||
creator,
|
||||
create_time
|
||||
FROM tb_resource_category
|
||||
WHERE deleted = 0;
|
||||
|
||||
-- 2. 确认迁移成功后,删除旧表(可选)
|
||||
-- DROP TABLE IF EXISTS tb_resource_category;
|
||||
```
|
||||
|
||||
### tb_resource 表的 category_id 字段
|
||||
|
||||
`tb_resource` 表中的 `category_id` 字段仍然保留,但现在应该:
|
||||
- 存储的是 `tb_tag` 表中 `tag_type=1` 的标签的 `tag_id`
|
||||
- 或者改为使用 `tb_resource_tag` 关联表来管理资源与分类标签的关系
|
||||
|
||||
**推荐方案:** 使用 `tb_resource_tag` 关联表
|
||||
```sql
|
||||
-- 迁移资源分类关系到资源标签关联表
|
||||
INSERT INTO tb_resource_tag (id, resource_id, tag_id, create_time)
|
||||
SELECT
|
||||
CONCAT('rt_', UUID()) AS id,
|
||||
resource_id,
|
||||
category_id AS tag_id,
|
||||
NOW() AS create_time
|
||||
FROM tb_resource
|
||||
WHERE category_id IS NOT NULL AND category_id != '';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 影响范围评估
|
||||
|
||||
### 前端影响
|
||||
- ❌ 需要修改前端代码中调用 `/news/categorys` 的接口
|
||||
- ✅ 改为调用 `/news/tags/type/1` 接口
|
||||
- ✅ 数据结构基本一致,只需修改接口地址和字段映射
|
||||
|
||||
### 后端影响
|
||||
- ✅ 已完全移除 ResourceCategory 相关代码
|
||||
- ✅ 所有功能已迁移到 TagService
|
||||
- ⚠️ 如有其他模块引用了 ResourceCategory,需要同步修改
|
||||
|
||||
### 数据库影响
|
||||
- ✅ 建表语句已注释,不会创建 `tb_resource_category` 表
|
||||
- ⚠️ 如果数据库中已存在该表,需要手动迁移数据
|
||||
- ⚠️ 建议保留旧表一段时间作为备份
|
||||
|
||||
---
|
||||
|
||||
## ✅ 验证清单
|
||||
|
||||
完成以下验证以确保迁移成功:
|
||||
|
||||
### 1. 编译验证
|
||||
- [ ] Maven 编译无错误
|
||||
- [ ] 无 `TbResourceCategory` 相关的编译错误
|
||||
- [ ] 无 `ResourceCategoryService` 相关的导入错误
|
||||
|
||||
### 2. 功能验证
|
||||
- [ ] 创建文章分类标签(tagType=1)
|
||||
- [ ] 获取文章分类标签列表
|
||||
- [ ] 为资源添加分类标签
|
||||
- [ ] 查询资源的分类标签
|
||||
- [ ] 删除文章分类标签
|
||||
|
||||
### 3. 接口验证
|
||||
```bash
|
||||
# 1. 获取文章分类标签
|
||||
curl http://localhost:8080/news/tags/type/1
|
||||
|
||||
# 2. 创建文章分类标签
|
||||
curl -X POST http://localhost:8080/news/tags/tag \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"name":"党史学习","tagType":1,"color":"#ff6b6b"}'
|
||||
|
||||
# 3. 为资源添加分类标签
|
||||
curl -X POST http://localhost:8080/news/tags/resource/{resourceID}/tag/{tagID}
|
||||
```
|
||||
|
||||
### 4. 数据验证
|
||||
```sql
|
||||
-- 检查标签数据
|
||||
SELECT * FROM tb_tag WHERE tag_type = 1;
|
||||
|
||||
-- 检查资源标签关联
|
||||
SELECT r.title, t.name
|
||||
FROM tb_resource r
|
||||
LEFT JOIN tb_resource_tag rt ON r.resource_id = rt.resource_id
|
||||
LEFT JOIN tb_tag t ON rt.tag_id = t.tag_id
|
||||
WHERE t.tag_type = 1;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 总结
|
||||
|
||||
### 移除内容
|
||||
- ✅ 7个 Java 文件(实体、Service、Controller、Mapper)
|
||||
- ✅ 1个 Mapper XML 文件
|
||||
- ✅ SQL 建表语句(已注释)
|
||||
- ✅ SQL 初始化数据(已注释)
|
||||
|
||||
### 修改内容
|
||||
- ✅ 2个 Java 文件(ResourceVO、ResourceCenterController)
|
||||
- ✅ 更新迁移文档
|
||||
|
||||
### 替代方案
|
||||
- ✅ 使用 `tb_tag` (tag_type=1) 替代 `tb_resource_category`
|
||||
- ✅ 使用 `TagService.getTagsByType(1)` 获取文章分类标签
|
||||
- ✅ 接口从 `/news/categorys` 迁移到 `/news/tags/type/1`
|
||||
|
||||
### 优势
|
||||
- ✅ 代码更简洁,减少7个文件
|
||||
- ✅ 数据结构更统一
|
||||
- ✅ 功能更灵活,易于扩展
|
||||
- ✅ 维护成本降低
|
||||
|
||||
移除操作已全部完成!🎉
|
||||
|
||||
Reference in New Issue
Block a user