|
@@ -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
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+
|