blob: 8470e61fb060e467a6ad0c5629e916d182f568db [file] [log] [blame]
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> = {
'12345': {
artworkId: '12345',
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: ''
},
{
username: '设计素材库', uploadTotal: '89.2GB',
userId: ''
},
{
username: '创意工作室', uploadTotal: '67.5GB',
userId: ''
},
{
username: '学院资源组', uploadTotal: '45.3GB',
userId: ''
},
{
username: '独立设计师', uploadTotal: '23.7GB',
userId: ''
},
],
},
'23456': {
artworkId: '23456',
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: ''
},
{
username: '设计师联盟', uploadTotal: '45.6GB',
userId: ''
},
{
username: '学习小组', uploadTotal: '23.4GB',
userId: ''
},
],
},
'67890': {
artworkId: '67890',
artworkCover: 'https://picsum.photos/300/400?random=6',
author: '刘松林',
authorId: '2', // 用户ID为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: ''
},
{
username: '开源社区', uploadTotal: '234.5GB',
userId: ''
},
{
username: '技术培训机构', uploadTotal: '189.7GB',
userId: ''
},
],
},
};
// 获取指定作品的评论数据
export const getCommentsForArtwork = (artworkId: string): Comment[] => {
// 为不同作品生成不同的评论
const commentVariations: Record<string, Comment[]> = {
'12345': baseComments,
'23456': baseComments.slice(0, 5).map(comment => ({
...comment,
id: `ui_${comment.id}`,
content: comment.content.replace('作品', 'UI套件').replace('设计', '界面设计'),
})),
'67890': [
{
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: [],
},
],
};
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)
);
};