主要更新: - 修复了所有主要的代码逻辑错误 - 实现了完整的任务清理系统 - 添加了系统设置页面的任务清理管理功能 - 修复了API调用认证问题 - 优化了密码加密和验证机制 - 统一了错误处理模式 - 添加了详细的文档和测试工具 新增功能: - 任务清理管理界面 - 任务归档和清理日志 - API监控和诊断工具 - 完整的测试套件 技术改进: - 修复了Repository方法调用错误 - 统一了模型方法调用 - 改进了类型安全性 - 优化了代码结构和可维护性
4.0 KiB
4.0 KiB
用户作品管理系统
概述
用户作品管理系统实现了任务完成后自动保存结果到"我的作品"中的功能,用户可以管理自己的视频作品,包括查看、编辑、删除、分享等操作。
系统特性
🎬 作品管理
- 自动保存: 任务完成后自动创建作品记录
- 作品分类: 支持文生视频和图生视频两种类型
- 状态管理: 处理中、已完成、失败、已删除四种状态
- 软删除: 支持作品软删除,保留数据完整性
📊 作品统计
- 浏览统计: 记录作品浏览次数
- 点赞功能: 支持作品点赞
- 下载统计: 记录作品下载次数
- 积分记录: 记录作品消耗的积分
🔍 作品发现
- 公开作品: 支持作品公开分享
- 搜索功能: 根据提示词搜索作品
- 标签系统: 支持标签分类和搜索
- 热门排行: 按浏览次数排序的热门作品
API接口
我的作品管理
获取我的作品列表
GET /api/works/my-works?page=0&size=10
Authorization: Bearer <token>
获取作品详情
GET /api/works/{workId}
Authorization: Bearer <token>
更新作品信息
PUT /api/works/{workId}
Authorization: Bearer <token>
Content-Type: application/json
删除作品
DELETE /api/works/{workId}
Authorization: Bearer <token>
作品互动
点赞作品
POST /api/works/{workId}/like
Authorization: Bearer <token>
下载作品
POST /api/works/{workId}/download
Authorization: Bearer <token>
公开作品浏览
获取公开作品列表
GET /api/works/public?page=0&size=10&type=TEXT_TO_VIDEO&sort=popular
搜索公开作品
GET /api/works/search?keyword=小猫&page=0&size=10
根据标签搜索作品
GET /api/works/tag/可爱?page=0&size=10
工作流程
1. 任务完成流程
任务完成 → 扣除积分 → 创建作品 → 更新任务状态
2. 作品创建流程
获取任务信息 → 提取作品数据 → 生成作品标题 → 保存作品记录
3. 作品管理流程
查看作品 → 编辑信息 → 设置公开 → 分享作品
集成说明
TaskQueueService 集成
在 TaskQueueService.updateTaskAsCompleted() 方法中集成了作品创建:
private void updateTaskAsCompleted(TaskQueue taskQueue, String resultUrl) {
// 扣除冻结的积分
userService.deductFrozenPoints(taskQueue.getTaskId());
// 创建用户作品
try {
UserWork work = userWorkService.createWorkFromTask(taskQueue.getTaskId(), resultUrl);
logger.info("创建用户作品成功: {}, 任务ID: {}", work.getId(), taskQueue.getTaskId());
} catch (Exception workException) {
logger.error("创建用户作品失败: {}", taskQueue.getTaskId(), workException);
// 作品创建失败不影响任务完成状态
}
// 更新原始任务状态
updateOriginalTaskStatus(taskQueue, "COMPLETED", resultUrl, null);
}
前端集成示例
获取我的作品列表
const getMyWorks = async (page = 0, size = 10) => {
const response = await fetch(`/api/works/my-works?page=${page}&size=${size}`, {
headers: {
'Authorization': `Bearer ${token}`
}
});
const data = await response.json();
return data;
};
更新作品信息
const updateWork = async (workId, updateData) => {
const response = await fetch(`/api/works/${workId}`, {
method: 'PUT',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(updateData)
});
const data = await response.json();
return data;
};
注意事项
- 数据一致性: 确保任务状态与作品状态一致
- 异常处理: 作品创建失败不影响任务完成
- 存储管理: 定期清理过期的失败作品
- 性能监控: 监控作品查询和统计性能
- 用户体验: 提供友好的作品管理界面