소스 검색

fetal: 论坛

jackcoder 3 달 전
부모
커밋
94422a56cf
1개의 변경된 파일368개의 추가작업 그리고 0개의 파일을 삭제
  1. 368 0
      huinongbao-app/docs-prod/论坛.md

+ 368 - 0
huinongbao-app/docs-prod/论坛.md

@@ -0,0 +1,368 @@
+# 一、Parse Schema 设计
+## 1. 数据表设计
+
+* User (用户表)
+```
+  - objectId (默认) // 唯一标识符
+  - createdAt (默认) // 创建时间
+  - username: String // 用户名
+  - email: String // 电子邮件
+  - preferences: Array // 用户偏好设置数组
+```
+* ForumCategory (板块表)
+```
+ - objectId: 唯一标识符
+ - name: 版块名称
+ - description: 版块描述
+ - createdAt: 创建时间
+ - updatedAt: 更新时间
+```
+* Tag (标签表)
+```
+ - objectId: 唯一标识符
+ - name: 标签名称
+ - createdAt: 创建时间  
+```
+* Post (帖子表)
+```
+ - objectId: 唯一标识符
+ - title: 帖子标题
+ - content: 帖子内容
+ - author: Pointer<User> // 外键关联到User表
+ - category : Pointer<ForumCategory> 所属版块 //指向 ForumCategory 表的外键
+ - tags: Pointer<Tag> 标签列表 //指向多个 Tag 表的外键,通过 PostTag 表实现多对多关系
+ - likeCount: 点赞数
+ - createdAt: 创建时间
+```
+* Comment (评论表)
+```
+ - objectId: 唯一标识符
+ - content: 评论内容
+ - author: Pointer<User> // 外键关联到User表
+ - post: Pointer<Post> // 外键关联到Post表
+ - createdAt: 创建时间
+ - likeCount: 点赞数
+```
+* PostTag (帖子标签关联表)
+```
+ - objectId: 唯一标识符
+ - post: Pointer<Post> // 外键关联到Post表
+ - tag: Pointer<Tag> // 外键关联到Tag表
+ - createdAt: 创建时间
+```
+* Favorite(收藏表,记录用户对帖子的收藏关系)
+```
+ - objectId(唯一标识符)
+ - createdAt(创建时间)
+ - user:Pointer<User>(用户,指向User表的外键,使用Pointer<User>表示)
+ - post:Pointer<Post>(帖子,指向Post表的外键,使用Pointer<Post>表示)
+ ```
+## 2.PlantUML 类图表示
+
+```plantuml
+@startuml
+class User {
+  +objectId: String
+  +createdAt: Date
+  +username: String
+  +email: String
+  +preferences: Array
+}
+
+class ForumCategory {
+  +objectId: String
+  +name: String
+  +description: String
+  +createdAt: Date
+  +updatedAt: Date
+}
+
+class Tag {
+  +objectId: String
+  +name: String
+  +createdAt: Date
+}
+
+class Post {
+  +objectId: String
+  +title: String
+  +content: String
+  +author: Pointer
+  +category: Pointer
+  +tags: Array>
+  +likeCount: Number
+  +createdAt: Date
+}
+
+class Comment {
+  +objectId: String
+  +content: String
+  +author: Pointer
+  +post: Pointer
+  +createdAt: Date
+  +likeCount: Number
+}
+
+class PostTag {
+  +objectId: String
+  +post: Pointer
+  +tag: Pointer
+  +createdAt: Date
+}
+
+class Favorite {
+  +objectId: String
+  +createdAt: Date
+  +user: Pointer
+  +post: Pointer
+}
+
+User "1" -- "0..*" Post : creates >
+User "1" -- "0..*" Comment : writes >
+User "1" -- "0..*" Favorite : favorites >
+ForumCategory "1" -- "0..*" Post : contains >
+Post "1" -- "0..*" Comment : contains >
+Post "1" -- "0..*" PostTag : tagged >
+Tag "1" -- "0..*" PostTag : tags >
+Post "1" -- "0..*" Favorite : is favorited >
+@enduml
+```
+## 3.说明
+- User 表:存储用户信息,包括用户名、电子邮件和用户偏好设置。
+- ForumCategory 表:存储论坛版块信息,包括名称和描述。
+- Tag 表:存储标签信息。
+- Post 表:存储帖子信息,包括标题、内容、作者、类别、标签、点赞数和创建时间。
+- Comment 表:存储评论信息,包括评论内容、作者、关联的帖子、点赞数和创建时间。
+- PostTag 表:实现帖子与标签的多对多关系,存储帖子与标签的关联。
+- Favorite 表:存储用户对帖子的收藏记录。
+
+这个设计确保了各个表之间的关系清晰,并且符合设计范式,能够支持一个功能全面的论坛系统。
+# 二、业务逻辑的描述
+### 1. 用户表(User)
+
+**业务逻辑描述:**
+- **用户注册与登录**:用户可以通过提供用户名和电子邮件注册账号,系统会生成唯一的`objectId`作为用户的标识符。
+- **用户偏好设置**:用户可以设置其偏好,如通知设置、主题选择等,这些设置将存储在`preferences`数组中。
+- **用户信息管理**:用户可以更新其用户名和电子邮件,系统会记录创建时间`createdAt`。
+
+### 2. 板块表(ForumCategory)
+
+**业务逻辑描述:**
+- **创建与管理版块**:管理员可以创建新的论坛版块,提供版块名称和描述,系统将记录创建时间`createdAt`和最后更新时间`updatedAt`。
+- **版块展示**:系统将在论坛首页展示所有版块,用户可以浏览和选择感兴趣的版块进行讨论。
+
+### 3. 标签表(Tag)
+
+**业务逻辑描述:**
+- **创建与管理标签**:管理员可以创建新的标签,用于对帖子进行分类和标记,标签名称将存储在`name`字段中。
+- **标签的使用**:标签可以帮助用户快速找到相关主题的帖子,提升帖子搜索的效率。
+
+### 4. 帖子表(Post)
+
+**业务逻辑描述:**
+- **发帖功能**:用户可以在选定的论坛版块中发布新帖子,帖子内容包括标题、正文、作者(用户)、所属版块(通过`category`字段)和标签(通过`tags`字段)。
+- **点赞功能**:用户可以对帖子进行点赞,点赞数将被记录在`likeCount`字段中,以反映帖子受欢迎程度。
+- **帖子管理**:系统将记录每个帖子的创建时间`createdAt`,并允许用户对其帖子进行编辑或删除。
+
+### 5. 评论表(Comment)
+
+**业务逻辑描述:**
+- **评论功能**:用户可以对帖子进行评论,评论内容将存储在`content`字段中,关联的帖子通过`post`字段指向。
+- **评论管理**:系统将记录每条评论的作者、创建时间`createdAt`和点赞数`likeCount`,用户可以对评论进行点赞。
+- **互动性增强**:评论功能使得用户能够进行互动,讨论帖子内容,增强论坛的社区氛围。
+
+### 6. 帖子标签关联表(PostTag)
+
+**业务逻辑描述:**
+- **多对多关系管理**:`PostTag`表用于实现帖子与标签之间的多对多关系。每个帖子可以关联多个标签,每个标签也可以被多个帖子使用。
+- **标签管理**:当用户发布帖子时,系统将自动记录该帖子所关联的标签,便于后续的搜索和分类。
+
+### 7. 收藏表(Favorite)
+
+**业务逻辑描述:**
+- **帖子收藏功能**:用户可以将感兴趣的帖子收藏,系统将记录用户与帖子之间的关联关系。
+- **快速访问**:用户可以在其收藏列表中快速找到自己喜欢的帖子,提升用户体验。
+- **收藏管理**:系统将记录每条收藏的创建时间`createdAt`,用户可以随时取消收藏。
+
+### 总结
+
+这些业务逻辑描述为论坛的功能提供了清晰的框架,确保用户能够方便地注册、浏览、发帖、评论、点赞和收藏帖子。通过合理的数据库设计和表之间的关联,论坛能够提供良好的用户体验和高效的数据管理。
+
+根据您提供的Parse Schema设计,以下是论坛业务逻辑的整体描述。这些描述涵盖了用户交互、帖子管理、评论功能、标签使用、收藏机制等方面的逻辑。
+
+## 整体业务逻辑描述
+
+### 1. 用户管理
+
+- **用户注册与登录**:用户可以通过提供用户名和电子邮件进行注册,系统会生成唯一的`objectId`作为用户的标识符。注册后,用户可以登录论坛,访问其个人资料和论坛功能。
+- **用户信息管理**:用户可以在其个人账户中更新用户名和电子邮件,系统将记录用户的偏好设置(如通知设置、主题选择等)在`preferences`数组中。
+
+### 2. 论坛板块管理
+
+- **创建与管理论坛版块**:管理员可以创建和管理多个论坛板块,每个板块都有名称和描述。管理员可以更新板块信息并记录其创建和更新时间,以便于用户在论坛中浏览和选择感兴趣的讨论区域。
+- **版块展示**:系统将在论坛首页展示所有可用的版块,用户可以点击进入相应的版块以查看帖子。
+
+### 3. 帖子管理
+
+- **发帖功能**:注册用户可以在选择的论坛版块中发布帖子,帖子包括标题、内容、作者信息、所属版块和标签。帖子将被存储在`Post`表中,并记录创建时间。
+- **点赞功能**:用户可以对帖子进行点赞,点赞数将被记录在`likeCount`字段中,反映帖子受欢迎程度。
+- **帖子编辑与删除**:用户可以编辑或删除他们发布的帖子,系统将更新或移除相应的帖子记录。
+
+### 4. 评论功能
+
+- **评论帖子**:用户可以对帖子进行评论,评论内容将存储在`Comment`表中,关联的帖子通过`post`字段指向。每个评论也将记录作者信息和创建时间。
+- **点赞评论**:用户可以对评论进行点赞,增加互动性,评论的点赞数将记录在`likeCount`字段中。
+- **评论管理**:用户可以编辑或删除他们的评论,系统将相应更新或移除评论记录。
+
+### 5. 标签管理
+
+- **创建与使用标签**:管理员可以创建标签以便于对帖子进行分类和标记。用户在发布帖子时可以选择多个标签,系统将通过`PostTag`表记录帖子与标签之间的关系。
+- **标签搜索与过滤**:用户可以通过标签快速找到相关主题的帖子,提升帖子搜索的效率。
+
+### 6. 收藏机制
+
+- **帖子收藏功能**:用户可以将感兴趣的帖子收藏,系统将在`Favorite`表中记录用户与帖子的关联。每个收藏记录将包含用户和帖子的信息及创建时间。
+- **快速访问收藏**:用户可以在其个人账户中查看和管理收藏的帖子,便于快速访问感兴趣的内容。
+
+### 7. 数据完整性与安全性
+
+- **数据关系管理**:所有表之间的关系通过Pointer类型的外键进行管理,确保数据一致性。例如,帖子表中的`author`字段指向用户表,确保每个帖子都有有效的作者。
+- **权限控制**:系统可以根据用户角色(如普通用户、管理员)设置不同的权限,确保只有授权用户可以进行特定操作(如创建、编辑、删除帖子和评论)。
+
+### 总结
+
+这个论坛系统的业务逻辑设计提供了一个完整的用户交互框架,支持用户注册、发帖、评论、点赞、标签管理和收藏功能。通过合理的数据结构和关系管理,系统能够有效地处理用户请求并维护数据的完整性,从而提供良好的用户体验和社区互动。
+
+## 4、论坛业务逻辑图例
+
+### 1. 用户注册与登录时序图
+
+```plantuml
+@startuml
+actor User
+participant "System" as System
+
+User -> System: 提交注册信息 (username, email)
+System -> System: 生成唯一标识符 (objectId)
+System -> System: 创建用户记录
+System --> User: 注册成功,返回用户信息
+
+User -> System: 提交登录信息 (username, password)
+System -> System: 验证用户信息
+System --> User: 登录成功,返回用户信息
+@enduml
+```
+
+### 2. 发帖功能时序图
+
+```plantuml
+@startuml
+actor User
+participant "Post" as Post
+participant "ForumCategory" as ForumCategory
+participant "System" as System
+
+User -> System: 选择论坛版块
+System -> ForumCategory: 获取版块信息
+ForumCategory --> System: 返回版块信息
+
+User -> System: 提交新帖子 (title, content, tags)
+System -> Post: 创建帖子记录
+System -> Post: 记录创建时间
+System --> User: 发帖成功,返回帖子信息
+@enduml
+```
+
+### 3. 评论功能时序图
+
+```plantuml
+@startuml
+actor User
+participant "Comment" as Comment
+participant "Post" as Post
+participant "System" as System
+
+User -> System: 提交评论 (postId, content)
+System -> Comment: 创建评论记录
+System -> Comment: 记录创建时间
+System -> Post: 更新评论计数
+Post --> System: 返回更新后的评论计数
+System --> User: 评论成功,返回评论信息
+@enduml
+```
+
+### 4. 点赞功能时序图(针对帖子)
+
+```plantuml
+@startuml
+actor User
+participant "Post" as Post
+participant "System" as System
+
+User -> System: 点赞帖子 (postId)
+System -> Post: 更新点赞计数
+Post --> System: 返回更新后的点赞计数
+System --> User: 点赞成功,返回新点赞数
+@enduml
+```
+
+### 5. 标签管理时序图
+
+```plantuml
+@startuml
+actor Admin
+participant "Tag" as Tag
+participant "Post" as Post
+participant "System" as System
+
+Admin -> System: 创建新标签 (name)
+System -> Tag: 创建标签记录
+System --> Admin: 标签创建成功
+
+Admin -> System: 为帖子添加标签 (postId, tagId)
+System -> Post: 更新帖子标签信息
+System --> Admin: 标签添加成功
+@enduml
+```
+
+### 6. 收藏功能时序图
+
+```plantuml
+@startuml
+actor User
+participant "Favorite" as Favorite
+participant "Post" as Post
+participant "System" as System
+
+User -> System: 收藏帖子 (postId)
+System -> Favorite: 创建收藏记录
+System -> Post: 更新收藏计数
+Post --> System: 返回更新后的收藏计数
+System --> User: 收藏成功,返回收藏信息
+@enduml
+```
+
+### 7. 数据完整性与安全性
+
+```plantuml
+@startuml
+actor User
+participant "System" as System
+participant "Database" as Database
+
+User -> System: 提交请求 (create/edit/delete)
+System -> Database: 验证用户权限
+Database --> System: 返回权限结果
+
+alt 权限通过
+    System -> Database: 执行操作 (create/edit/delete)
+    Database --> System: 操作成功
+    System --> User: 返回成功消息
+else 权限拒绝
+    System --> User: 返回权限拒绝消息
+end
+@enduml
+```
+
+
+