feat: 功能优化

This commit is contained in:
2026-01-17 14:43:42 +08:00
parent 5ed0cfff07
commit fecd47e25d
60 changed files with 3529 additions and 827 deletions

View File

@@ -0,0 +1,74 @@
-- 素材列表布局重构迁移脚本
-- Change ID: refactor-material-list-layout
-- Date: 2025-12-28
-- Description: 添加分组分类功能,支持混剪素材和数字人素材
-- =====================================
-- 1. 为tik_file_group表添加category字段
-- =====================================
ALTER TABLE tik_file_group
ADD COLUMN category VARCHAR(20) NOT NULL DEFAULT 'MIX'
COMMENT '分组分类: MIX(混剪素材), DIGITAL_HUMAN(数字人素材)'
AFTER description;
-- =====================================
-- 2. 创建索引优化查询性能
-- =====================================
CREATE INDEX idx_file_group_user_category
ON tik_file_group (user_id, category, deleted);
-- =====================================
-- 3. 为tik_user_file表的groupId字段添加注释
-- =====================================
ALTER TABLE tik_user_file
MODIFY COLUMN group_id BIGINT NULL
COMMENT '关联素材分组编号关联tik_file_group.id';
-- =====================================
-- 4. 迁移现有数据将所有现有分组设置为MIX分类
-- =====================================
UPDATE tik_file_group SET category = 'MIX' WHERE category IS NULL OR category = '';
-- =====================================
-- 5. 验证迁移结果
-- =====================================
SELECT category, COUNT(*) as group_count
FROM tik_file_group
WHERE deleted = FALSE
GROUP BY category;
-- =====================================
-- 6. 创建统计视图(可选,用于性能优化)
-- =====================================
CREATE OR REPLACE VIEW v_file_group_stats AS
SELECT
g.id,
g.user_id,
g.name,
g.category,
g.sort,
COUNT(f.id) as file_count
FROM tik_file_group g
LEFT JOIN tik_user_file f ON g.id = f.group_id AND f.deleted = FALSE
WHERE g.deleted = FALSE
GROUP BY g.id, g.user_id, g.name, g.category, g.sort;
-- =====================================
-- 7. 按分类统计文件数量
-- =====================================
SELECT
g.category,
COUNT(DISTINCT g.id) as group_count,
COUNT(f.id) as file_count
FROM tik_file_group g
LEFT JOIN tik_user_file f ON g.id = f.group_id AND f.deleted = FALSE
WHERE g.deleted = FALSE
GROUP BY g.category
ORDER BY g.category;