# 用户作品管理系统 ## 概述 用户作品管理系统实现了任务完成后自动保存结果到"我的作品"中的功能,用户可以管理自己的视频作品,包括查看、编辑、删除、分享等操作。 ## 系统特性 ### 🎬 **作品管理** - **自动保存**: 任务完成后自动创建作品记录 - **作品分类**: 支持文生视频和图生视频两种类型 - **状态管理**: 处理中、已完成、失败、已删除四种状态 - **软删除**: 支持作品软删除,保留数据完整性 ### 📊 **作品统计** - **浏览统计**: 记录作品浏览次数 - **点赞功能**: 支持作品点赞 - **下载统计**: 记录作品下载次数 - **积分记录**: 记录作品消耗的积分 ### 🔍 **作品发现** - **公开作品**: 支持作品公开分享 - **搜索功能**: 根据提示词搜索作品 - **标签系统**: 支持标签分类和搜索 - **热门排行**: 按浏览次数排序的热门作品 ## API接口 ### 我的作品管理 #### 获取我的作品列表 ``` GET /api/works/my-works?page=0&size=10 Authorization: Bearer ``` #### 获取作品详情 ``` GET /api/works/{workId} Authorization: Bearer ``` #### 更新作品信息 ``` PUT /api/works/{workId} Authorization: Bearer Content-Type: application/json ``` #### 删除作品 ``` DELETE /api/works/{workId} Authorization: Bearer ``` ### 作品互动 #### 点赞作品 ``` POST /api/works/{workId}/like Authorization: Bearer ``` #### 下载作品 ``` POST /api/works/{workId}/download Authorization: Bearer ``` ### 公开作品浏览 #### 获取公开作品列表 ``` 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()` 方法中集成了作品创建: ```java 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); } ``` ## 前端集成示例 ### 获取我的作品列表 ```javascript 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; }; ``` ### 更新作品信息 ```javascript 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; }; ``` ## 注意事项 1. **数据一致性**: 确保任务状态与作品状态一致 2. **异常处理**: 作品创建失败不影响任务完成 3. **存储管理**: 定期清理过期的失败作品 4. **性能监控**: 监控作品查询和统计性能 5. **用户体验**: 提供友好的作品管理界面