blob: 8470e61fb060e467a6ad0c5629e916d182f568db [file] [log] [blame]
223010144ce05872025-06-08 22:33:28 +08001import type { ArtworkData, Comment } from './types';
2
3// 生成随机时间的工具函数
4const generateRandomDate = (daysAgo: number): string => {
5 const date = new Date();
6 date.setDate(date.getDate() - Math.floor(Math.random() * daysAgo));
7 return date.toLocaleString('zh-CN', {
8 year: 'numeric',
9 month: '2-digit',
10 day: '2-digit',
11 hour: '2-digit',
12 minute: '2-digit'
13 });
14};
15
16// 通用评论数据
17const baseComments: Comment[] = [
18 {
19 id: 'comment_1',
20 content: '这个作品真的很棒!设计思路很新颖,学到了很多东西。',
21 author: '设计爱好者小王',
22 authorId: 'user_wang_001',
23 createdAt: generateRandomDate(3),
24 child: [
25 {
26 id: 'comment_1_1',
27 content: '同感!特别是色彩搭配的部分,很有启发性。',
28 author: '视觉设计师李雷',
29 authorId: 'user_lilei_002',
30 createdAt: generateRandomDate(2),
31 child: [],
32 },
33 {
34 id: 'comment_1_2',
35 content: '确实,作者的审美很在线,期待更多作品!',
36 author: '创意总监韩梅梅',
37 authorId: 'user_hanmeimei_003',
38 createdAt: generateRandomDate(2),
39 child: [
40 {
41 id: 'comment_1_2_1',
42 content: '@创意总监韩梅梅 您说得对,这种风格确实很难得',
43 author: '设计爱好者小王',
44 authorId: 'user_wang_001',
45 createdAt: generateRandomDate(1),
46 child: [],
47 }
48 ],
49 },
50 ],
51 },
52 {
53 id: 'comment_2',
54 content: '技术实现方面有什么特别的难点吗?想了解一下制作过程。',
55 author: '技术控阿明',
56 authorId: 'user_aming_004',
57 createdAt: generateRandomDate(5),
58 child: [],
59 },
60 {
61 id: 'comment_3',
62 content: '看起来很专业,请问这是用什么软件制作的?',
63 author: '新手小白',
64 authorId: 'user_xiaobai_005',
65 createdAt: generateRandomDate(4),
66 child: [
67 {
68 id: 'comment_3_1',
69 content: '从效果来看应该是用Adobe全家桶,主要是PS和AI',
70 author: '软件专家老刘',
71 authorId: 'user_laoliu_006',
72 createdAt: generateRandomDate(3),
73 child: [],
74 }
75 ],
76 },
77 {
78 id: 'comment_4',
79 content: '色彩运用得很巧妙,给人一种很舒服的视觉感受。',
80 author: '色彩搭配师小张',
81 authorId: 'user_xiaozhang_007',
82 createdAt: generateRandomDate(6),
83 child: [],
84 },
85 {
86 id: 'comment_5',
87 content: '作品质量很高,但是感觉在某些细节上还可以再优化一下。',
88 author: '完美主义者',
89 authorId: 'user_perfect_008',
90 createdAt: generateRandomDate(7),
91 child: [
92 {
93 id: 'comment_5_1',
94 content: '能具体说说哪些地方可以优化吗?我也想学习学习',
95 author: '求知者小陈',
96 authorId: 'user_xiaochen_009',
97 createdAt: generateRandomDate(6),
98 child: [],
99 }
100 ],
101 },
102 {
103 id: 'comment_6',
104 content: '已经下载收藏了,感谢分享!🎉',
105 author: '收藏家大佬',
106 authorId: 'user_collector_010',
107 createdAt: generateRandomDate(8),
108 child: [],
109 },
110 {
111 id: 'comment_7',
112 content: '这个风格很适合我正在做的项目,能不能商用呢?',
113 author: '商务合作方',
114 authorId: 'user_business_011',
115 createdAt: generateRandomDate(9),
116 child: [],
117 },
118 {
119 id: 'comment_8',
120 content: '教程什么时候出?期待大神的分享!',
121 author: '学习狂人',
122 authorId: 'user_learner_012',
123 createdAt: generateRandomDate(10),
124 child: [],
125 }
126];
127
128// 作品数据集合
129export const mockArtworks: Record<string, ArtworkData> = {
130 '12345': {
131 artworkId: '12345',
132 artworkCover: 'https://picsum.photos/300/400?random=1',
133 author: '视觉设计师张三',
134 authorId: 'author_zhangsan_001',
135 artworkName: '未来城市概念设计',
136 artworkCategory: '概念设计',
137 comments: [],
138 artworkDescription: `# 未来城市概念设计
139
140这是一个关于2050年智慧城市的概念设计作品。整个设计融合了**可持续发展**、**人工智能**和**绿色科技**的理念。
141
142## 设计理念
143
144- 🌱 **生态友好**:建筑与自然和谐共生
145- 🤖 **智能化**:AI驱动的城市管理系统
146- 🚗 **零排放**:全面电动化的交通系统
147- 🏗️ **模块化**:可扩展的建筑结构
148
149## 技术特点
150
151采用了最新的**参数化设计**方法,通过算法生成建筑形态,确保每个结构都能最大化利用自然光和风能。
152
153*希望这个设计能为未来城市规划提供一些启发。*`,
154 versionList: [
155 {
156 version: '1.0',
157 seedFile: 'magnet:?xt=urn:btih:future_city_v1_0&dn=未来城市v1.0.zip',
158 versionDescription: `## 初始版本 v1.0
159
160### 包含内容
161- 🎨 **高分辨率效果图** (4K)
162- 📐 **CAD源文件** (.dwg)
163- 🖼️ **PSD分层文件**
164- 📄 **设计说明文档**
165
166### 更新说明
167首次发布,包含完整的设计方案和素材文件。`,
168 },
169 {
170 version: '1.1',
171 seedFile: 'magnet:?xt=urn:btih:future_city_v1_1&dn=未来城市v1.1.zip',
172 versionDescription: `## 更新版本 v1.1
173
174### 新增内容
175- 🌃 **夜景渲染图**
176- 🎬 **动画演示视频** (1080p)
177- 🔧 **Blender源文件**
178
179### 修复内容
180- 修复了部分贴图丢失问题
181- 优化了文件结构
182- 添加了英文版说明文档`,
183 },
184 ],
185 usersSeedingCurrently: [
186 { username: '设计师小李', userId: 'user_xiaoli_101' },
187 { username: '建筑师王工', userId: 'user_wanggong_102' },
188 { username: '学生小赵', userId: 'user_xiaozhao_103' },
189 { username: '创意总监', userId: 'user_director_104' },
190 ],
191 usersSeedingHistory: [
192 {
193 username: '资深下载者', uploadTotal: '156.8GB',
194 userId: ''
195 },
196 {
197 username: '设计素材库', uploadTotal: '89.2GB',
198 userId: ''
199 },
200 {
201 username: '创意工作室', uploadTotal: '67.5GB',
202 userId: ''
203 },
204 {
205 username: '学院资源组', uploadTotal: '45.3GB',
206 userId: ''
207 },
208 {
209 username: '独立设计师', uploadTotal: '23.7GB',
210 userId: ''
211 },
212 ],
213 },
214
215 '23456': {
216 artworkId: '23456',
217 artworkCover: 'https://picsum.photos/300/400?random=2',
218 author: 'UI设计师李四',
219 authorId: 'author_lisi_002',
220 artworkName: '移动应用界面设计套件',
221 artworkCategory: 'UI/UX设计',
222 comments: [],
223 artworkDescription: `# 移动应用界面设计套件
224
225一套完整的移动端UI设计规范和组件库,包含**100+个精美界面**和**500+个设计组件**。
226
227## 包含内容
228
229### 📱 界面设计
230- 登录注册页面
231- 主页和导航
232- 商品展示页面
233- 个人中心
234- 设置页面
235
236### 🎨 设计系统
237- **颜色规范**:主色调、辅助色、状态色
238- **字体系统**:标题、正文、注释文字
239- **图标库**:线性图标、填充图标
240- **组件库**:按钮、输入框、卡片等`,
241 versionList: [
242 {
243 version: '1.0',
244 seedFile: 'magnet:?xt=urn:btih:ui_kit_v1_0&dn=UI设计套件v1.0.zip',
245 versionDescription: `## 基础版本 v1.0
246
247### 核心功能
248- 📱 **50个界面模板**
249- 🎨 **基础组件库**
250- 📋 **设计规范文档**
251- 🎯 **Sketch源文件**`,
252 },
253 ],
254 usersSeedingCurrently: [
255 { username: 'UI设计新手', userId: 'user_ui_newbie_201' },
256 { username: '产品经理小王', userId: 'user_pm_wang_202' },
257 ],
258 usersSeedingHistory: [
259 {
260 username: 'UI设计公司', uploadTotal: '78.9GB',
261 userId: ''
262 },
263 {
264 username: '设计师联盟', uploadTotal: '45.6GB',
265 userId: ''
266 },
267 {
268 username: '学习小组', uploadTotal: '23.4GB',
269 userId: ''
270 },
271 ],
272 },
273
274 '67890': {
275 artworkId: '67890',
276 artworkCover: 'https://picsum.photos/300/400?random=6',
277 author: '刘松林',
278 authorId: '2', // 用户ID为2
279 artworkName: 'React组件库开发指南',
280 artworkCategory: '前端开发',
281 comments: [],
282 artworkDescription: `# React组件库开发指南
283
284一套完整的**企业级React组件库**开发教程和源码,包含从设计到发布的完整流程。
285
286## 项目特色
287
288### 🚀 技术栈
289- **React 18** + **TypeScript**
290- **Styled-components** 样式解决方案
291- **Storybook** 组件文档
292- **Jest** + **Testing Library** 测试
293
294### 📦 组件覆盖
295- **基础组件**: Button, Input, Select, Modal等
296- **布局组件**: Grid, Layout, Container等
297- **数据展示**: Table, List, Card, Timeline等`,
298 versionList: [
299 {
300 version: '1.0',
301 seedFile: 'magnet:?xt=urn:btih:react_components_v1_0&dn=React组件库v1.0.zip',
302 versionDescription: `## 基础版本 v1.0
303
304### 核心内容
305- 📚 **完整教程文档** (50+页)
306- 💻 **基础组件源码** (20+个组件)
307- 🧪 **单元测试示例**
308- 📖 **Storybook配置**`,
309 },
310 ],
311 usersSeedingCurrently: [
312 { username: '前端新手小李', userId: 'user_frontend_newbie_601' },
313 { username: 'React爱好者', userId: 'user_react_fan_602' },
314 ],
315 usersSeedingHistory: [
316 {
317 username: '大厂前端团队', uploadTotal: '567.8GB',
318 userId: ''
319 },
320 {
321 username: '开源社区', uploadTotal: '234.5GB',
322 userId: ''
323 },
324 {
325 username: '技术培训机构', uploadTotal: '189.7GB',
326 userId: ''
327 },
328 ],
329 },
330};
331
332// 获取指定作品的评论数据
333export const getCommentsForArtwork = (artworkId: string): Comment[] => {
334 // 为不同作品生成不同的评论
335 const commentVariations: Record<string, Comment[]> = {
336 '12345': baseComments,
337 '23456': baseComments.slice(0, 5).map(comment => ({
338 ...comment,
339 id: `ui_${comment.id}`,
340 content: comment.content.replace('作品', 'UI套件').replace('设计', '界面设计'),
341 })),
342 '67890': [
343 {
344 id: 'dev_comment_1',
345 content: '这个组件库的设计思路很棒!TypeScript类型定义特别完善。',
346 author: '前端架构师张工',
347 authorId: 'user_architect_zhang',
348 createdAt: generateRandomDate(2),
349 child: [
350 {
351 id: 'dev_comment_1_1',
352 content: '同感!特别是组件API的设计,很符合React的设计理念。',
353 author: 'React核心开发者',
354 authorId: 'user_react_core',
355 createdAt: generateRandomDate(1),
356 child: [],
357 }
358 ],
359 },
360 {
361 id: 'dev_comment_2',
362 content: '构建配置写得很详细,我们团队已经参考这个搭建了自己的组件库。',
363 author: '技术负责人小刘',
364 authorId: 'user_tech_liu',
365 createdAt: generateRandomDate(3),
366 child: [],
367 },
368 ],
369 };
370
371 return commentVariations[artworkId] || baseComments;
372};
373
374// 根据作品ID获取作品数据
375export const getArtworkById = (artworkId: string): ArtworkData | null => {
376 const artwork = mockArtworks[artworkId];
377 if (artwork) {
378 return {
379 ...artwork,
380 comments: getCommentsForArtwork(artworkId)
381 };
382 }
383 return null;
384};
385
386// 获取所有作品列表
387export const getAllArtworks = (): ArtworkData[] => {
388 return Object.values(mockArtworks);
389};
390
391// 按分类获取作品
392export const getArtworksByCategory = (category: string): ArtworkData[] => {
393 return Object.values(mockArtworks).filter(artwork => artwork.artworkCategory === category);
394};
395
396// 搜索作品
397export const searchArtworks = (keyword: string): ArtworkData[] => {
398 const lowerKeyword = keyword.toLowerCase();
399 return Object.values(mockArtworks).filter(artwork =>
400 artwork.artworkName.toLowerCase().includes(lowerKeyword) ||
401 artwork.artworkDescription.toLowerCase().includes(lowerKeyword) ||
402 artwork.author.toLowerCase().includes(lowerKeyword) ||
403 artwork.artworkCategory.toLowerCase().includes(lowerKeyword)
404 );
405};