| import type { ArtworkData, Comment } from './types'; |
| |
| // 生成随机时间的工具函数 |
| const generateRandomDate = (daysAgo: number): string => { |
| const date = new Date(); |
| date.setDate(date.getDate() - Math.floor(Math.random() * daysAgo)); |
| return date.toLocaleString('zh-CN', { |
| year: 'numeric', |
| month: '2-digit', |
| day: '2-digit', |
| hour: '2-digit', |
| minute: '2-digit' |
| }); |
| }; |
| |
| // 通用评论数据 |
| const baseComments: Comment[] = [ |
| { |
| id: 'comment_1', |
| content: '这个作品真的很棒!设计思路很新颖,学到了很多东西。', |
| author: '设计爱好者小王', |
| authorId: 'user_wang_001', |
| createdAt: generateRandomDate(3), |
| child: [ |
| { |
| id: 'comment_1_1', |
| content: '同感!特别是色彩搭配的部分,很有启发性。', |
| author: '视觉设计师李雷', |
| authorId: 'user_lilei_002', |
| createdAt: generateRandomDate(2), |
| child: [], |
| }, |
| { |
| id: 'comment_1_2', |
| content: '确实,作者的审美很在线,期待更多作品!', |
| author: '创意总监韩梅梅', |
| authorId: 'user_hanmeimei_003', |
| createdAt: generateRandomDate(2), |
| child: [ |
| { |
| id: 'comment_1_2_1', |
| content: '@创意总监韩梅梅 您说得对,这种风格确实很难得', |
| author: '设计爱好者小王', |
| authorId: 'user_wang_001', |
| createdAt: generateRandomDate(1), |
| child: [], |
| } |
| ], |
| }, |
| ], |
| }, |
| { |
| id: 'comment_2', |
| content: '技术实现方面有什么特别的难点吗?想了解一下制作过程。', |
| author: '技术控阿明', |
| authorId: 'user_aming_004', |
| createdAt: generateRandomDate(5), |
| child: [], |
| }, |
| { |
| id: 'comment_3', |
| content: '看起来很专业,请问这是用什么软件制作的?', |
| author: '新手小白', |
| authorId: 'user_xiaobai_005', |
| createdAt: generateRandomDate(4), |
| child: [ |
| { |
| id: 'comment_3_1', |
| content: '从效果来看应该是用Adobe全家桶,主要是PS和AI', |
| author: '软件专家老刘', |
| authorId: 'user_laoliu_006', |
| createdAt: generateRandomDate(3), |
| child: [], |
| } |
| ], |
| }, |
| { |
| id: 'comment_4', |
| content: '色彩运用得很巧妙,给人一种很舒服的视觉感受。', |
| author: '色彩搭配师小张', |
| authorId: 'user_xiaozhang_007', |
| createdAt: generateRandomDate(6), |
| child: [], |
| }, |
| { |
| id: 'comment_5', |
| content: '作品质量很高,但是感觉在某些细节上还可以再优化一下。', |
| author: '完美主义者', |
| authorId: 'user_perfect_008', |
| createdAt: generateRandomDate(7), |
| child: [ |
| { |
| id: 'comment_5_1', |
| content: '能具体说说哪些地方可以优化吗?我也想学习学习', |
| author: '求知者小陈', |
| authorId: 'user_xiaochen_009', |
| createdAt: generateRandomDate(6), |
| child: [], |
| } |
| ], |
| }, |
| { |
| id: 'comment_6', |
| content: '已经下载收藏了,感谢分享!🎉', |
| author: '收藏家大佬', |
| authorId: 'user_collector_010', |
| createdAt: generateRandomDate(8), |
| child: [], |
| }, |
| { |
| id: 'comment_7', |
| content: '这个风格很适合我正在做的项目,能不能商用呢?', |
| author: '商务合作方', |
| authorId: 'user_business_011', |
| createdAt: generateRandomDate(9), |
| child: [], |
| }, |
| { |
| id: 'comment_8', |
| content: '教程什么时候出?期待大神的分享!', |
| author: '学习狂人', |
| authorId: 'user_learner_012', |
| createdAt: generateRandomDate(10), |
| child: [], |
| } |
| ]; |
| |
| // 作品数据集合 |
| export const mockArtworks: Record<string, ArtworkData> = { |
| '1': { |
| artworkId: '1', |
| artworkCover: 'https://picsum.photos/300/400?random=1', |
| author: '视觉设计师张三', |
| authorId: 'author_zhangsan_001', |
| artworkName: '未来城市概念设计', |
| artworkCategory: '概念设计', |
| comments: [], |
| artworkDescription: `# 未来城市概念设计 |
| |
| 这是一个关于2050年智慧城市的概念设计作品。整个设计融合了**可持续发展**、**人工智能**和**绿色科技**的理念。 |
| |
| ## 设计理念 |
| |
| - 🌱 **生态友好**:建筑与自然和谐共生 |
| - 🤖 **智能化**:AI驱动的城市管理系统 |
| - 🚗 **零排放**:全面电动化的交通系统 |
| - 🏗️ **模块化**:可扩展的建筑结构 |
| |
| ## 技术特点 |
| |
| 采用了最新的**参数化设计**方法,通过算法生成建筑形态,确保每个结构都能最大化利用自然光和风能。 |
| |
| *希望这个设计能为未来城市规划提供一些启发。*`, |
| versionList: [ |
| { |
| version: '1.0', |
| seedFile: 'magnet:?xt=urn:btih:future_city_v1_0&dn=未来城市v1.0.zip', |
| versionDescription: `## 初始版本 v1.0 |
| |
| ### 包含内容 |
| - 🎨 **高分辨率效果图** (4K) |
| - 📐 **CAD源文件** (.dwg) |
| - 🖼️ **PSD分层文件** |
| - 📄 **设计说明文档** |
| |
| ### 更新说明 |
| 首次发布,包含完整的设计方案和素材文件。`, |
| }, |
| { |
| version: '1.1', |
| seedFile: 'magnet:?xt=urn:btih:future_city_v1_1&dn=未来城市v1.1.zip', |
| versionDescription: `## 更新版本 v1.1 |
| |
| ### 新增内容 |
| - 🌃 **夜景渲染图** |
| - 🎬 **动画演示视频** (1080p) |
| - 🔧 **Blender源文件** |
| |
| ### 修复内容 |
| - 修复了部分贴图丢失问题 |
| - 优化了文件结构 |
| - 添加了英文版说明文档`, |
| }, |
| ], |
| usersSeedingCurrently: [ |
| { username: '设计师小李', userId: 'user_xiaoli_101' }, |
| { username: '建筑师王工', userId: 'user_wanggong_102' }, |
| { username: '学生小赵', userId: 'user_xiaozhao_103' }, |
| { username: '创意总监', userId: 'user_director_104' }, |
| ], |
| usersSeedingHistory: [ |
| { username: '资深下载者', uploadTotal: '156.8GB', userId: 'hist_user_001' }, |
| { username: '设计素材库', uploadTotal: '89.2GB', userId: 'hist_user_002' }, |
| { username: '创意工作室', uploadTotal: '67.5GB', userId: 'hist_user_003' }, |
| { username: '学院资源组', uploadTotal: '45.3GB', userId: 'hist_user_004' }, |
| { username: '独立设计师', uploadTotal: '23.7GB', userId: 'hist_user_005' }, |
| ], |
| }, |
| |
| '2': { |
| artworkId: '2', |
| artworkCover: 'https://picsum.photos/300/400?random=2', |
| author: 'UI设计师李四', |
| authorId: 'author_lisi_002', |
| artworkName: '移动应用界面设计套件', |
| artworkCategory: 'UI/UX设计', |
| comments: [], |
| artworkDescription: `# 移动应用界面设计套件 |
| |
| 一套完整的移动端UI设计规范和组件库,包含**100+个精美界面**和**500+个设计组件**。 |
| |
| ## 包含内容 |
| |
| ### 📱 界面设计 |
| - 登录注册页面 |
| - 主页和导航 |
| - 商品展示页面 |
| - 个人中心 |
| - 设置页面 |
| |
| ### 🎨 设计系统 |
| - **颜色规范**:主色调、辅助色、状态色 |
| - **字体系统**:标题、正文、注释文字 |
| - **图标库**:线性图标、填充图标 |
| - **组件库**:按钮、输入框、卡片等`, |
| versionList: [ |
| { |
| version: '1.0', |
| seedFile: 'magnet:?xt=urn:btih:ui_kit_v1_0&dn=UI设计套件v1.0.zip', |
| versionDescription: `## 基础版本 v1.0 |
| |
| ### 核心功能 |
| - 📱 **50个界面模板** |
| - 🎨 **基础组件库** |
| - 📋 **设计规范文档** |
| - 🎯 **Sketch源文件**`, |
| }, |
| ], |
| usersSeedingCurrently: [ |
| { username: 'UI设计新手', userId: 'user_ui_newbie_201' }, |
| { username: '产品经理小王', userId: 'user_pm_wang_202' }, |
| ], |
| usersSeedingHistory: [ |
| { username: 'UI设计公司', uploadTotal: '78.9GB', userId: 'hist_ui_001' }, |
| { username: '设计师联盟', uploadTotal: '45.6GB', userId: 'hist_ui_002' }, |
| { username: '学习小组', uploadTotal: '23.4GB', userId: 'hist_ui_003' }, |
| ], |
| }, |
| |
| '3': { |
| artworkId: '3', |
| artworkCover: 'https://picsum.photos/300/400?random=6', |
| author: '刘松林', |
| authorId: '2', |
| artworkName: 'React组件库开发指南', |
| artworkCategory: '前端开发', |
| comments: [], |
| artworkDescription: `# React组件库开发指南 |
| |
| 一套完整的**企业级React组件库**开发教程和源码,包含从设计到发布的完整流程。 |
| |
| ## 项目特色 |
| |
| ### 🚀 技术栈 |
| - **React 18** + **TypeScript** |
| - **Styled-components** 样式解决方案 |
| - **Storybook** 组件文档 |
| - **Jest** + **Testing Library** 测试 |
| |
| ### 📦 组件覆盖 |
| - **基础组件**: Button, Input, Select, Modal等 |
| - **布局组件**: Grid, Layout, Container等 |
| - **数据展示**: Table, List, Card, Timeline等`, |
| versionList: [ |
| { |
| version: '1.0', |
| seedFile: 'magnet:?xt=urn:btih:react_components_v1_0&dn=React组件库v1.0.zip', |
| versionDescription: `## 基础版本 v1.0 |
| |
| ### 核心内容 |
| - 📚 **完整教程文档** (50+页) |
| - 💻 **基础组件源码** (20+个组件) |
| - 🧪 **单元测试示例** |
| - 📖 **Storybook配置**`, |
| }, |
| ], |
| usersSeedingCurrently: [ |
| { username: '前端新手小李', userId: 'user_frontend_newbie_601' }, |
| { username: 'React爱好者', userId: 'user_react_fan_602' }, |
| ], |
| usersSeedingHistory: [ |
| { username: '大厂前端团队', uploadTotal: '567.8GB', userId: 'hist_dev_001' }, |
| { username: '开源社区', uploadTotal: '234.5GB', userId: 'hist_dev_002' }, |
| { username: '技术培训机构', uploadTotal: '189.7GB', userId: 'hist_dev_003' }, |
| ], |
| }, |
| |
| '4': { |
| artworkId: '4', |
| artworkCover: 'https://picsum.photos/300/400?random=7', |
| author: '3D艺术家王五', |
| authorId: 'author_wangwu_004', |
| artworkName: '机械战士3D模型', |
| artworkCategory: '3D建模', |
| comments: [], |
| artworkDescription: `# 机械战士3D模型 |
| |
| 一个高精度的科幻机械战士3D模型,包含完整的材质贴图和动画骨骼系统。 |
| |
| ## 模型特点 |
| |
| ### 🤖 设计风格 |
| - 未来科幻风格 |
| - 硬表面建模技术 |
| - PBR材质工作流 |
| - 模块化装备系统 |
| |
| ### 📐 技术规格 |
| - **面数**: 25,000 三角面 |
| - **贴图分辨率**: 4K PBR贴图组 |
| - **骨骼系统**: 完整人形骨骼 |
| - **动画**: 10个基础动作 |
| |
| 适用于游戏开发、影视制作和3D打印。`, |
| versionList: [ |
| { |
| version: '1.0', |
| seedFile: 'magnet:?xt=urn:btih:mech_warrior_v1_0&dn=机械战士v1.0.zip', |
| versionDescription: `## 基础版本 v1.0 |
| |
| ### 核心内容 |
| - 🎯 **高精度3D模型** (.fbx, .obj) |
| - 🎨 **4K PBR贴图组** |
| - 🦴 **完整骨骼系统** |
| - 🎬 **基础动画文件**`, |
| }, |
| ], |
| usersSeedingCurrently: [ |
| { username: '游戏开发者小陈', userId: 'user_gamedev_301' }, |
| { username: '3D建模师', userId: 'user_3dmodeler_302' }, |
| ], |
| usersSeedingHistory: [ |
| { username: '游戏工作室', uploadTotal: '234.5GB', userId: 'hist_3d_001' }, |
| { username: '影视特效团队', uploadTotal: '178.3GB', userId: 'hist_3d_002' }, |
| { username: '独立开发者', uploadTotal: '98.7GB', userId: 'hist_3d_003' }, |
| ], |
| }, |
| |
| '5': { |
| artworkId: '5', |
| artworkCover: 'https://picsum.photos/300/400?random=8', |
| author: '摄影师赵六', |
| authorId: 'author_zhaoliu_005', |
| artworkName: '城市夜景摄影集', |
| artworkCategory: '摄影作品', |
| comments: [], |
| artworkDescription: `# 城市夜景摄影集 |
| |
| 一组精美的城市夜景摄影作品,捕捉了都市夜晚的璀璨光影。 |
| |
| ## 作品特色 |
| |
| ### 📸 拍摄技法 |
| - 长曝光技术 |
| - HDR合成处理 |
| - 光轨艺术表现 |
| - 城市建筑几何美学 |
| |
| ### 🎨 后期处理 |
| - **RAW格式**: 无损原始文件 |
| - **精修版本**: Lightroom + Photoshop |
| - **色彩分级**: 电影级调色 |
| - **分辨率**: 6000x4000像素 |
| |
| 包含20张高分辨率摄影作品,适合商业使用和艺术收藏。`, |
| versionList: [ |
| { |
| version: '1.0', |
| seedFile: 'magnet:?xt=urn:btih:night_city_photos_v1_0&dn=城市夜景v1.0.zip', |
| versionDescription: `## 完整版本 v1.0 |
| |
| ### 包含内容 |
| - 📷 **RAW原始文件** (20张) |
| - 🎨 **精修JPG版本** (高分辨率) |
| - 📋 **拍摄参数记录** |
| - 📍 **拍摄地点信息**`, |
| }, |
| ], |
| usersSeedingCurrently: [ |
| { username: '摄影爱好者小林', userId: 'user_photo_401' }, |
| { username: '设计师小美', userId: 'user_designer_402' }, |
| ], |
| usersSeedingHistory: [ |
| { username: '摄影工作室', uploadTotal: '445.8GB', userId: 'hist_photo_001' }, |
| { username: '商业摄影师', uploadTotal: '367.2GB', userId: 'hist_photo_002' }, |
| { username: '摄影学院', uploadTotal: '289.1GB', userId: 'hist_photo_003' }, |
| ], |
| }, |
| |
| '6': { |
| artworkId: '6', |
| artworkCover: 'https://picsum.photos/300/400?random=9', |
| author: '插画师孙七', |
| authorId: 'author_sunqi_006', |
| artworkName: '奇幻世界插画系列', |
| artworkCategory: '插画艺术', |
| comments: [], |
| artworkDescription: `# 奇幻世界插画系列 |
| |
| 一套充满想象力的奇幻题材插画作品,包含角色设计、场景概念图和完整插图。 |
| |
| ## 创作风格 |
| |
| ### 🎨 艺术特色 |
| - 欧美奇幻风格 |
| - 数字绘画技法 |
| - 丰富色彩层次 |
| - 细腻光影表现 |
| |
| ### 📚 作品内容 |
| - **角色设计**: 15个原创角色 |
| - **场景概念**: 8个奇幻场景 |
| - **完整插图**: 12张精美插画 |
| - **线稿资源**: 黑白线稿版本 |
| |
| 适合游戏美术、小说封面、卡牌设计等多种用途。`, |
| versionList: [ |
| { |
| version: '1.0', |
| seedFile: 'magnet:?xt=urn:btih:fantasy_art_v1_0&dn=奇幻插画v1.0.zip', |
| versionDescription: `## 标准版本 v1.0 |
| |
| ### 核心内容 |
| - 🎨 **高分辨率插画** (35张) |
| - ✏️ **线稿资源包** |
| - 🎯 **PSD分层文件** |
| - 📖 **创作过程记录**`, |
| }, |
| ], |
| usersSeedingCurrently: [ |
| { username: '插画学习者', userId: 'user_illustrator_501' }, |
| { username: '游戏美术师', userId: 'user_gameart_502' }, |
| ], |
| usersSeedingHistory: [ |
| { username: '插画师联盟', uploadTotal: '378.9GB', userId: 'hist_art_001' }, |
| { username: '游戏美术团队', uploadTotal: '256.4GB', userId: 'hist_art_002' }, |
| { username: '艺术学院', uploadTotal: '189.6GB', userId: 'hist_art_003' }, |
| ], |
| }, |
| }; |
| |
| // 获取指定作品的评论数据 |
| export const getCommentsForArtwork = (artworkId: string): Comment[] => { |
| const commentVariations: Record<string, Comment[]> = { |
| '1': baseComments, |
| '2': baseComments.slice(0, 5).map(comment => ({ |
| ...comment, |
| id: `ui_${comment.id}`, |
| content: comment.content.replace('作品', 'UI套件').replace('设计', '界面设计'), |
| })), |
| '3': [ |
| { |
| id: 'dev_comment_1', |
| content: '这个组件库的设计思路很棒!TypeScript类型定义特别完善。', |
| author: '前端架构师张工', |
| authorId: 'user_architect_zhang', |
| createdAt: generateRandomDate(2), |
| child: [ |
| { |
| id: 'dev_comment_1_1', |
| content: '同感!特别是组件API的设计,很符合React的设计理念。', |
| author: 'React核心开发者', |
| authorId: 'user_react_core', |
| createdAt: generateRandomDate(1), |
| child: [], |
| } |
| ], |
| }, |
| { |
| id: 'dev_comment_2', |
| content: '构建配置写得很详细,我们团队已经参考这个搭建了自己的组件库。', |
| author: '技术负责人小刘', |
| authorId: 'user_tech_liu', |
| createdAt: generateRandomDate(3), |
| child: [], |
| }, |
| ], |
| '4': baseComments.slice(0, 4).map(comment => ({ |
| ...comment, |
| id: `3d_${comment.id}`, |
| content: comment.content.replace('作品', '3D模型').replace('设计', '建模'), |
| })), |
| '5': baseComments.slice(0, 6).map(comment => ({ |
| ...comment, |
| id: `photo_${comment.id}`, |
| content: comment.content.replace('作品', '摄影作品').replace('设计思路', '拍摄技法'), |
| })), |
| '6': baseComments.slice(0, 5).map(comment => ({ |
| ...comment, |
| id: `art_${comment.id}`, |
| content: comment.content.replace('作品', '插画').replace('设计', '绘画'), |
| })), |
| }; |
| |
| return commentVariations[artworkId] || baseComments; |
| }; |
| |
| // 根据作品ID获取作品数据 |
| export const getArtworkById = (artworkId: string): ArtworkData | null => { |
| const artwork = mockArtworks[artworkId]; |
| if (artwork) { |
| return { |
| ...artwork, |
| comments: getCommentsForArtwork(artworkId) |
| }; |
| } |
| return null; |
| }; |
| |
| // 获取所有作品列表 |
| export const getAllArtworks = (): ArtworkData[] => { |
| return Object.values(mockArtworks); |
| }; |
| |
| // 按分类获取作品 |
| export const getArtworksByCategory = (category: string): ArtworkData[] => { |
| return Object.values(mockArtworks).filter(artwork => artwork.artworkCategory === category); |
| }; |
| |
| // 搜索作品 |
| export const searchArtworks = (keyword: string): ArtworkData[] => { |
| const lowerKeyword = keyword.toLowerCase(); |
| return Object.values(mockArtworks).filter(artwork => |
| artwork.artworkName.toLowerCase().includes(lowerKeyword) || |
| artwork.artworkDescription.toLowerCase().includes(lowerKeyword) || |
| artwork.author.toLowerCase().includes(lowerKeyword) || |
| artwork.artworkCategory.toLowerCase().includes(lowerKeyword) |
| ); |
| }; |