|
@@ -0,0 +1,411 @@
|
|
|
|
+# 社区分享模块描述
|
|
|
|
+## 作品展示与交流模块
|
|
|
|
+***功能描述***
|
|
|
|
+
|
|
|
|
+该模块为用户提供一个平台,用于展示和交流在课程学习过程中完成的作品。用户可以上传各种类型的作品(如绘画、手工艺、编程代码、摄影等),并与其他用户进行互动。
|
|
|
|
+
|
|
|
|
+***主要功能***
|
|
|
|
+
|
|
|
|
+1、**作品上传**
|
|
|
|
+
|
|
|
|
+- 用户可以通过简单的界面上传自己的作品。
|
|
|
|
+- 支持多种文件格式和类型,确保多样性。
|
|
|
|
+
|
|
|
|
+2、**作品分类**
|
|
|
|
+
|
|
|
|
+- 作品根据类型进行分类(如绘画、手工艺、编程、摄影等),方便用户浏览。
|
|
|
|
+- 每个分类下可以显示最新作品和热门作品。
|
|
|
|
+
|
|
|
|
+3、**浏览与互动**
|
|
|
|
+
|
|
|
|
+- 用户可以浏览其他用户的作品,并进行点赞、评论。
|
|
|
|
+- 提供搜索功能,用户可以根据关键词快速找到感兴趣的作品。
|
|
|
|
+
|
|
|
|
+4、**热门作品推荐**
|
|
|
|
+
|
|
|
|
+- 系统根据点赞和评论数量,推荐热门作品给用户,提升作品曝光率。
|
|
|
|
+## 学习经验分享模块
|
|
|
|
+***功能描述***
|
|
|
|
+- 该模块鼓励用户分享自己的学习经验和技巧,促进用户之间的知识交流和互助。
|
|
|
|
+
|
|
|
|
+***主要功能***
|
|
|
|
+
|
|
|
|
+1、**经验分享发布**
|
|
|
|
+
|
|
|
|
+- 用户可以发布文字帖子、图片或视频,分享学习心得、技巧等。
|
|
|
|
+- 提供编辑器,支持基本的文本格式化。
|
|
|
|
+
|
|
|
|
+2、**经验浏览与互动**
|
|
|
|
+
|
|
|
|
+- 用户可以浏览其他用户的分享内容,进行点赞和评论。
|
|
|
|
+- 提供分类标签,用户可以根据主题快速找到相关经验分享。
|
|
|
|
+
|
|
|
|
+3、**困难与解决方案分享**
|
|
|
|
+
|
|
|
|
+- 用户可以分享在学习过程中遇到的困难以及解决方法,促进经验的传承和交流。
|
|
|
|
+
|
|
|
|
+4、**学习成果展示**
|
|
|
|
+
|
|
|
|
+- 用户可以分享学习成果,展示自己的进步和成就,激励其他用户。
|
|
|
|
+
|
|
|
|
+# 具体范式设计
|
|
|
|
+## Parse Schema 设计
|
|
|
|
+1、**作品表 (Artwork)**
|
|
|
|
+
|
|
|
|
+- objectId: 唯一标识符
|
|
|
|
+- userId: 上传用户的ID
|
|
|
|
+- title: 作品标题
|
|
|
|
+- description: 作品描述
|
|
|
|
+- category: 作品分类
|
|
|
|
+- fileUrl: 作品文件链接
|
|
|
|
+- likesCount: 点赞数量
|
|
|
|
+- commentsCount: 评论数量
|
|
|
|
+- createdAt: 创建时间
|
|
|
|
+- updatedAt: 更新时间
|
|
|
|
+
|
|
|
|
+2、**评论表 (Comment)**
|
|
|
|
+
|
|
|
|
+- objectId: 唯一标识符
|
|
|
|
+- artworkId: 关联的作品ID
|
|
|
|
+- userId: 评论用户的ID
|
|
|
|
+- content: 评论内容
|
|
|
|
+- createdAt: 创建时间
|
|
|
|
+
|
|
|
|
+3、**经验分享表 (ExperienceShare)**
|
|
|
|
+
|
|
|
|
+- objectId: 唯一标识符
|
|
|
|
+- userId: 发布用户的ID
|
|
|
|
+- title: 分享标题
|
|
|
|
+- content: 分享内容
|
|
|
|
+- mediaUrl: 附加的图片或视频链接
|
|
|
|
+- likesCount: 点赞数量
|
|
|
|
+- commentsCount: 评论数量
|
|
|
|
+- createdAt: 创建时间
|
|
|
|
+- updatedAt: 更新时间
|
|
|
|
+
|
|
|
|
+4、**经验评论表 (ExperienceComment)**
|
|
|
|
+
|
|
|
|
+- objectId: 唯一标识符
|
|
|
|
+- experienceId: 关联的经验分享ID
|
|
|
|
+- userId: 评论用户的ID
|
|
|
|
+- content: 评论内容
|
|
|
|
+- createdAt: 创建时间
|
|
|
|
+
|
|
|
|
+5、**用户表 (User)**
|
|
|
|
+- objectId: 唯一标识符
|
|
|
|
+- username: 用户名
|
|
|
|
+- password: 密码
|
|
|
|
+- email: 用户邮箱
|
|
|
|
+- profilePictureUrl: 用户头像链接
|
|
|
|
+- createdAt: 创建时间
|
|
|
|
+- updatedAt: 更新时间
|
|
|
|
+
|
|
|
|
+# PlantUML 类图表示
|
|
|
|
+以下是使用PlantUML表示的类图:
|
|
|
|
+```plantuml
|
|
|
|
+@startuml
|
|
|
|
+class User {
|
|
|
|
+ +objectId: String
|
|
|
|
+ +username: String
|
|
|
|
+ +password: String
|
|
|
|
+ +email: String
|
|
|
|
+ +profilePictureUrl: String
|
|
|
|
+ +createdAt: Date
|
|
|
|
+ +updatedAt: Date
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+class Artwork {
|
|
|
|
+ +objectId: String
|
|
|
|
+ +userId: Pointer
|
|
|
|
+ +title: String
|
|
|
|
+ +description: String
|
|
|
|
+ +category: String
|
|
|
|
+ +fileUrl: String
|
|
|
|
+ +likesCount: Number
|
|
|
|
+ +commentsCount: Number
|
|
|
|
+ +createdAt: Date
|
|
|
|
+ +updatedAt: Date
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+class Comment {
|
|
|
|
+ +objectId: String
|
|
|
|
+ +artworkId: Pointer
|
|
|
|
+ +userId: Pointer
|
|
|
|
+ +content: String
|
|
|
|
+ +createdAt: Date
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+class ExperienceShare {
|
|
|
|
+ +objectId: String
|
|
|
|
+ +userId: Pointer
|
|
|
|
+ +title: String
|
|
|
|
+ +content: String
|
|
|
|
+ +mediaUrl: String
|
|
|
|
+ +likesCount: Number
|
|
|
|
+ +commentsCount: Number
|
|
|
|
+ +createdAt: Date
|
|
|
|
+ +updatedAt: Date
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+class ExperienceComment {
|
|
|
|
+ +objectId: String
|
|
|
|
+ +experienceId: Pointer
|
|
|
|
+ +userId: Pointer
|
|
|
|
+ +content: String
|
|
|
|
+ +createdAt: Date
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+User "1" -- "*" Artwork : uploads
|
|
|
|
+User "1" -- "*" Comment : writes
|
|
|
|
+User "1" -- "*" ExperienceShare : shares
|
|
|
|
+User "1" -- "*" ExperienceComment : comments
|
|
|
|
+Artwork "1" -- "*" Comment : contains
|
|
|
|
+ExperienceShare "1" -- "*" ExperienceComment : contains
|
|
|
|
+@enduml
|
|
|
|
+```
|
|
|
|
+# 设计说明
|
|
|
|
+- 用户表 (User):用户表用于存储用户的基本信息,包括用户名、密码、邮箱和头像链接。字段的设计考虑了用户在平台上的基本需求。
|
|
|
|
+- 外键关联:在 Artwork、Comment、ExperienceShare 和 ExperienceComment 表中,userId 字段指向 User 表,以确保用户与其作品和评论之间的关联。
|
|
|
|
+- 安全性:密码字段应进行加密存储,以确保用户信息的安全性。
|
|
|
|
+- 数据完整性:通过外键关联,确保用户在上传作品和分享经验时,其身份信息是完整且可追溯的。
|
|
|
|
+
|
|
|
|
+通过增加用户表,整个社区分享模块的结构变得更加完善,能够支持用户的多样化需求,并确保数据的完整性和安全性。
|
|
|
|
+# 业务逻辑描述
|
|
|
|
+# 作品展示与交流和学习经验分享的完整逻辑
|
|
|
|
+## 作品展示与交流生成逻辑
|
|
|
|
+
|
|
|
|
+**生成逻辑**
|
|
|
|
+
|
|
|
|
+1、**用户输入:**
|
|
|
|
+
|
|
|
|
+- 用户上传的作品信息(包括标题、描述、分类、文件链接等)。
|
|
|
|
+
|
|
|
|
+2、**作品上传:**
|
|
|
|
+
|
|
|
|
+- 用户通过简单的界面上传自己的作品。
|
|
|
|
+数据存储到 Artwork 表中。
|
|
|
|
+
|
|
|
|
+3、**作品分类:**
|
|
|
|
+
|
|
|
|
+- 作品根据类型进行分类(如绘画、手工艺、编程、摄影等)。
|
|
|
|
+
|
|
|
|
+4、**浏览与互动:**
|
|
|
|
+
|
|
|
|
+- 用户可以浏览其他用户的作品,进行点赞和评论。
|
|
|
|
+- 提供搜索功能,用户可以根据关键词快速找到感兴趣的作品。
|
|
|
|
+
|
|
|
|
+5、**热门作品推荐:**
|
|
|
|
+
|
|
|
|
+- 系统根据点赞和评论数量,推荐热门作品给用户。
|
|
|
|
+
|
|
|
|
+**结果存储:**
|
|
|
|
+
|
|
|
|
+**Artwork 表**
|
|
|
|
+- objectId: 唯一标识符
|
|
|
|
+- userId: 上传用户的ID
|
|
|
|
+- title: 作品标题
|
|
|
|
+- description: 作品描述
|
|
|
|
+- category: 作品分类
|
|
|
|
+- fileUrl: 作品文件链接
|
|
|
|
+- likesCount: 点赞数量
|
|
|
|
+- commentsCount: 评论数量
|
|
|
|
+- createdAt: 创建时间
|
|
|
|
+- updatedAt: 更新时间
|
|
|
|
+## 学习经验分享生成逻辑
|
|
|
|
+**功能描述**
|
|
|
|
+- 该模块鼓励用户分享自己的学习经验和技巧,促进用户之间的知识交流和互助。
|
|
|
|
+
|
|
|
|
+**生成逻辑**
|
|
|
|
+
|
|
|
|
+1、**用户输入:**
|
|
|
|
+
|
|
|
|
+- 用户发布的学习经验信息(包括标题、内容、媒体链接等)。
|
|
|
|
+
|
|
|
|
+2、**经验分享发布:**
|
|
|
|
+
|
|
|
|
+- 用户可以发布文字帖子、图片或视频,分享学习心得、技巧等。
|
|
|
|
+- 数据存储到 ExperienceShare 表中。
|
|
|
|
+
|
|
|
|
+3、**经验浏览与互动:**
|
|
|
|
+
|
|
|
|
+- 用户可以浏览其他用户的分享内容,进行点赞和评论。
|
|
|
|
+
|
|
|
|
+4、**困难与解决方案分享:**
|
|
|
|
+
|
|
|
|
+- 用户可以分享在学习过程中遇到的困难以及解决方法。
|
|
|
|
+
|
|
|
|
+5、**学习成果展示:**
|
|
|
|
+
|
|
|
|
+- 用户可以分享学习成果,展示自己的进步和成就。
|
|
|
|
+
|
|
|
|
+**结果存储:**
|
|
|
|
+
|
|
|
|
+**ExperienceShare 表**
|
|
|
|
+- objectId: 唯一标识符
|
|
|
|
+- userId: 发布用户的ID
|
|
|
|
+- title: 分享标题
|
|
|
|
+- content: 分享内容
|
|
|
|
+- mediaUrl: 附加的图片或视频链接
|
|
|
|
+- likesCount: 点赞数量
|
|
|
|
+- commentsCount: 评论数量
|
|
|
|
+- createdAt: 创建时间
|
|
|
|
+- updatedAt: 更新时间
|
|
|
|
+
|
|
|
|
+## JSON 格式的测试数据
|
|
|
|
+```json
|
|
|
|
+[
|
|
|
|
+ {
|
|
|
|
+ "Artwork": {
|
|
|
|
+ "objectId": "artwork1",
|
|
|
|
+ "userId": "user1",
|
|
|
|
+ "title": "Abstract Painting",
|
|
|
|
+ "description": "An abstract representation of emotions.",
|
|
|
|
+ "category": "Painting",
|
|
|
|
+ "fileUrl": "https://example.com/artwork/abstract_painting.jpg",
|
|
|
|
+ "likesCount": 15,
|
|
|
|
+ "commentsCount": 3,
|
|
|
|
+ "createdAt": "2024-01-15T10:00:00Z",
|
|
|
|
+ "updatedAt": "2024-01-15T10:00:00Z"
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ "Artwork": {
|
|
|
|
+ "objectId": "artwork2",
|
|
|
|
+ "userId": "user2",
|
|
|
|
+ "title": "Handmade Pottery",
|
|
|
|
+ "description": "A beautifully crafted pottery piece.",
|
|
|
|
+ "category": "Craft",
|
|
|
|
+ "fileUrl": "https://example.com/artwork/handmade_pottery.jpg",
|
|
|
|
+ "likesCount": 10,
|
|
|
|
+ "commentsCount": 1,
|
|
|
|
+ "createdAt": "2024-01-16T11:00:00Z",
|
|
|
|
+ "updatedAt": "2024-01-16T11:00:00Z"
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ "Artwork": {
|
|
|
|
+ "objectId": "artwork3",
|
|
|
|
+ "userId": "user3",
|
|
|
|
+ "title": "Nature Photography",
|
|
|
|
+ "description": "Capturing the beauty of nature during sunset.",
|
|
|
|
+ "category": "Photography",
|
|
|
|
+ "fileUrl": "https://example.com/artwork/nature_photography.jpg",
|
|
|
|
+ "likesCount": 20,
|
|
|
|
+ "commentsCount": 5,
|
|
|
|
+ "createdAt": "2024-01-17T12:00:00Z",
|
|
|
|
+ "updatedAt": "2024-01-17T12:00:00Z"
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ "ExperienceShare": {
|
|
|
|
+ "objectId": "experience1",
|
|
|
|
+ "userId": "user1",
|
|
|
|
+ "title": "My Journey in Painting",
|
|
|
|
+ "content": "I started painting last year and it has been an incredible journey. Here are some tips I learned along the way.",
|
|
|
|
+ "mediaUrl": "https://example.com/experience/painting_journey.jpg",
|
|
|
|
+ "likesCount": 12,
|
|
|
|
+ "commentsCount": 4,
|
|
|
|
+ "createdAt": "2024-02-01T10:00:00Z",
|
|
|
|
+ "updatedAt": "2024-02-01T10:00:00Z"
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ "ExperienceShare": {
|
|
|
|
+ "objectId": "experience2",
|
|
|
|
+ "userId": "user2",
|
|
|
|
+ "title": "Crafting Techniques",
|
|
|
|
+ "content": "Sharing some techniques I learned while crafting pottery.",
|
|
|
|
+ "mediaUrl": "https://example.com/experience/crafting_techniques.jpg",
|
|
|
|
+ "likesCount": 8,
|
|
|
|
+ "commentsCount": 2,
|
|
|
|
+ "createdAt": "2024-02-02T11:00:00Z",
|
|
|
|
+ "updatedAt": "2024-02-02T11:00:00Z"
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ "ExperienceShare": {
|
|
|
|
+ "objectId": "experience3",
|
|
|
|
+ "userId": "user3",
|
|
|
|
+ "title": "Photography Basics",
|
|
|
|
+ "content": "Here are some basic tips for taking great photos.",
|
|
|
|
+ "mediaUrl": "https://example.com/experience/photography_basics.jpg",
|
|
|
|
+ "likesCount": 15,
|
|
|
|
+ "commentsCount": 6,
|
|
|
|
+ "createdAt": "2024-02-03T12:00:00Z",
|
|
|
|
+ "updatedAt": "2024-02-03T12:00:00Z"
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+]
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+# 作品展示与交流模块的业务执行逻辑
|
|
|
|
+- 用户在作品展示页面加载所有作品
|
|
|
|
+ - 用户浏览作品
|
|
|
|
+ - 用户主动点赞或评论作品
|
|
|
|
+ - 作品标记为热门
|
|
|
|
+```plantuml
|
|
|
|
+@startuml
|
|
|
|
+actor 用户
|
|
|
|
+participant "系统" as 系统
|
|
|
|
+participant "作品表" as 作品数据库
|
|
|
|
+
|
|
|
|
+用户 -> 系统: 上传作品(标题、描述、分类、文件链接)
|
|
|
|
+系统 -> 作品数据库: 存储作品数据
|
|
|
|
+系统 -> 作品数据库: 对作品进行分类
|
|
|
|
+系统 -> 用户: 确认上传成功
|
|
|
|
+
|
|
|
|
+用户 -> 系统: 浏览作品
|
|
|
|
+系统 -> 作品数据库: 加载所有作品
|
|
|
|
+系统 -> 用户: 显示作品(按分类、点赞、评论排序)
|
|
|
|
+
|
|
|
|
+用户 -> 系统: 点赞作品
|
|
|
|
+系统 -> 作品数据库: 更新点赞数量
|
|
|
|
+系统 -> 作品数据库: 更新评论数量
|
|
|
|
+
|
|
|
|
+用户 -> 系统: 评论作品
|
|
|
|
+系统 -> 作品数据库: 存储评论数据
|
|
|
|
+系统 -> 作品数据库: 更新评论数量
|
|
|
|
+
|
|
|
|
+系统 -> 作品数据库: 评估作品的热门程度
|
|
|
|
+系统 -> 用户: 推荐热门作品
|
|
|
|
+@enduml
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+```plantuml
|
|
|
|
+@startuml
|
|
|
|
+@startuml
|
|
|
|
+actor 用户
|
|
|
|
+participant "系统" as 系统
|
|
|
|
+participant "作品表" as 作品数据库
|
|
|
|
+participant "评论表" as 评论数据库
|
|
|
|
+
|
|
|
|
+用户 -> 系统: 加载所有作品
|
|
|
|
+系统 -> 作品数据库: 获取作品
|
|
|
|
+系统 -> 用户: 显示作品
|
|
|
|
+
|
|
|
|
+用户 -> 系统: 浏览作品
|
|
|
|
+系统 -> 用户: 显示作品详情
|
|
|
|
+
|
|
|
|
+用户 -> 系统: 点赞作品
|
|
|
|
+系统 -> 作品数据库: 更新点赞数量
|
|
|
|
+
|
|
|
|
+用户 -> 系统: 评论作品
|
|
|
|
+系统 -> 评论数据库: 存储评论数据
|
|
|
|
+系统 -> 作品数据库: 更新评论数量
|
|
|
|
+
|
|
|
|
+系统 -> 作品数据库: 评估热门作品
|
|
|
|
+系统 -> 用户: 显示热门作品
|
|
|
|
+@enduml
|
|
|
|
+```
|
|
|
|
+# 说明
|
|
|
|
+1、**生成逻辑时序图:**
|
|
|
|
+
|
|
|
|
+用户上传作品后,系统将作品信息存储到作品表中,并进行分类。
|
|
|
|
+用户可以浏览作品,系统从数据库加载所有作品并按要求排序。
|
|
|
|
+用户可以选择点赞或评论,系统相应地更新作品的点赞和评论数量,并定期评估热门作品。
|
|
|
|
+
|
|
|
|
+2、**业务执行逻辑时序图:**
|
|
|
|
+
|
|
|
|
+用户在作品展示页面加载所有作品,系统从数据库获取数据并展示。
|
|
|
|
+用户可以浏览作品详情,进行点赞和评论操作。
|
|
|
|
+系统在用户进行互动后,更新相应的数据,并评估哪些作品是热门作品。
|