# association-bbs
**Repository Path**: code9xs/association-bbs
## Basic Information
- **Project Name**: association-bbs
- **Description**: 社团bbs
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2021-04-25
- **Last Updated**: 2022-03-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 一、系统描述
## 1.1、用户权限描述
1. 游客用户可以访问主页,游客用户可以查看社团列表,如果想要加入社团需要登录;游客用户可以查看精选文章列表,如果想要评论文章需要登陆;游客用户可以查看活动列表,如果想要参加活动需要登录,某些活动会有权限,没有加入社团的普通用户不可参加;游客用户需要登录后才可查看查看详细资源;游客用户可以正常查看校园资讯;

2. 游客用户在注册登录后便成为普通用户,普通用户拥有游客用户所有权限外还可以创建社团,管理社团,发布文章

3. 管理员用户,管理员用户权限由根用户(root)授权,管理员用户登入后,除普通用户所有权限外还可进入后台管理平台

## 1.2、功能描述
### 2.1、登录功能
用户可以使用注册时使用的邮箱、手机号登录平台
- 邮箱登录,用户输入邮箱账号与密码即可实现登录
- 手机号登录,手机号登录可以直接输入账号密码登录,也可以通过手机接收6位动态密码实现登录
- 后续考虑接入第三方授权登录

### 2.2、注册功能
用户在本平台没有注册账号(手机号码、邮箱账号、学号等均未绑定)
1. 用户选择邮箱注册或者手机号注册
2. 用户填入邮箱(手机号)
3. 系统检测邮箱(手机号)合法性和唯一性
4. 用户完善绑定信息(学号、姓名、学院、专业),系统会检测信息是否唯一
5. 系统向用户邮箱(手机)发送注册验证码
6. 验证码正确,注册成功
7. 验证码错误,提示检测邮箱(手机号)是否填写正确

### 2.3、创建社团功能
用户登录后选择创建社团功能,社团合法性一点需要与社团联合会协商
1. 用户填写社团基本信息(社团名、社团类别、初始成员、图标、简介、社团职称),社团创建者默认为社团第一领导人(领导人可转让)
2. 社团创建信息需要平台管理人员审核
3. 审核通过,社团创建成功
4. 审核不通过管理人员附上审核意见退回审核人待办消息

### 2.4、管理社团功能
社团创建者和社团创建者授予二级权限的管理者可以进行社团管理
- 社团管理者可以编辑社团成员的社团信息(职称、部门、权限等)
- 社团管理者可以发布社团活动
- 发布社团活动需要填写活动时间、活动地点、主题、参与人员(社团内或全体人员)
- 社团活动需要提交社团第一领导人审核
- 审核通过,活动发布到活动列表
- 审核不通过,审核人员附上审核意见打回至申请人
- 社团管理者可以申请修改社团信息
- 申请信息需要提交给平台管理者审核,不通过则不能修改
- 社团第一领导人可以解散社团
- 解散社团需要社团第一领导人邮箱或者手机验证
- 社团所有人员可以上传社团活动的影像资料

### 2.5、加入社团功能
除游客用户外所有用户都可以选择加入社团,加入社团数量理论上不做限制
1. 用户在**社团列表**选择自己感兴趣的社团
2. 用户提交加入社团申请后需要社团管理人员审核
3. 审核通过,用户加入成功
4. 审核不通过,管理员附上审核理由拒绝申请

### 2.6、社团列表展视功能
社团列表是所用用户了解社团的渠道之一,用户通过浏览社团列表中的社团,了解社团信息,社团简介中附有社团基本信息,创建人、创建时间、近十张社团活动影像资料
### 2.7、发布文章功能
文章发布功能嵌入强大的富文本编辑器,可以粘贴各种代码,满足全校大多数专业同学的需求。
1. 文章需要有标题、副标题(可选)、主题、文章主体。
2. 文章可以单独发布,也可以联合发布。
### 2.8、文章阅读功能
所有用户都可以阅读其他用户发布的文章,用户需要登录之后才能对文章进行点赞、收藏、评论等功能。
### 2.9、系统公告功能
平台管理员发送到平台首页的通告。
### 2.10、好友系统(暂定)
### 2.11、待办事项
用户拥有代办事项提醒,所有的活动提醒、系统提醒都会在这里。

(申请加入社团)

(创建社团)

(修改社团信息)

(发布活动)

(评论)
### 2.12、平台管理功能
平台管理员对平台所有文章、社团、社团活动、评论都有操作权限。
### 2.13、个人中心
每个常规用户可以编辑自己的信息、退出社团、删除文章、修改文章、修改密码、绑定手机。
### 2.14、资源共享功能
用户可以上传自己的资源以供平台用户共享使用,所有资源必须经过平台管理员审核才可发布。
# 二、系统设计
## 2.1、E-R图
1. 用户(id,用户名,性别,学号,年龄,密码,手机号,邮箱,头像URL)
2. 组织(id,用户id,社团id)
3. 社团(id,社团名,责任人,社团简介,社团类别,社团人数,社团创建时间)
4. 社团职称(id,社团id,职称名,管理级别)
5. 社团图片(id,社团id,图片URL)
6. 社团活动(id,社团id,活动名称 ,活动地点,活动时间,活动内容,宣传图片URL,活动状态)
7. 社团申请(id,用户id,社团id,申请理由,申请时间,状态,反馈)
8. 文章(id,用户id,标题,上次修改时间,正文,点赞数,删除,浏览数)
9. 评论(id,文章id,评论内容,评论时间)
10. 收藏(id,用户id,文章id)
11. 公告(id,用户id,公告主题,发布时间,有效期,公告内容,删除)
12. 待办(id,用户id,事件id,状态)
13. 资源(id,用户id,资源类型,资源URL,上传时间,状态)

## 2.2、实体模型设计
### 2.2.1、用户(User)
| 属性 | 含义 |
| ----------- | -------- |
| id | 用户主键 |
| username | 用户名 |
| gender | 性别 |
| studentID | 学号 |
| age | 年龄 x |
| password | 密码 |
| phoneNumber | 手机号 |
| email | 邮箱 |
| avatar | 头像URL |
### 2.2.2、用户社团(UserAssociation)
| 属性 | 含义 |
| ------------- | -------- |
| id | 主键 |
| associationID | 社团主键 |
| userID | 用户主键 |
| titleID | 职称主键 |
| departmentID | 部门主键 |
### 2.2.3、社团(Association)
| 属性 | 含义 |
| ---------- | ------------ |
| id | 主键 |
| name | 社团名 |
| master | 责任人 |
| profile | 社团简介 |
| members | 成员数 |
| createTime | 社团创建时间 |
| type | 社团类别 |
| status | 状态 |
### 2.2.4、社团职称(Title)
| 属性 | 含义 |
| ------------- | -------------------------- |
| id | 主键 |
| associationID | 社团主键 |
| title | 职称 |
| level | 管理级别 |
| status | 状态(区分在审核中的职称) |
### 2.2.5、社团图片(Image)
| 属性 | 含义 |
| ------------- | -------- |
| id | 主键 |
| associationID | 社团主键 |
| imageURL | 图片URL |
| time | 上传时间 |
### 2.2.6、社团活动(Activity)
| 属性 | 含义 |
| ------------- | ----------- |
| id | 主键 |
| associationID | 社团主键 |
| name | 活动名称 |
| location | 活动地点 |
| time | 活动时间 |
| content | 活动内容 |
| imageURL | 宣传图片URL |
| status | 活动状态 |
### 2.2.7、社团申请(Application)
| 属性 | 含义 |
| ------------- | -------- |
| id | 主键 |
| userID | 用户主键 |
| associationID | 社团主键 |
| reason | 申请理由 |
| time | 申请时间 |
| status | 状态 |
| feedback | 反馈 |
### 2.2.8、文章(Article)
| 属性 | 含义 |
| ---------------- | ------------ |
| id | 主键 |
| userID | 用户主键 |
| title | 标题 |
| lastModifiedTime | 上次修改时间 |
| likes | 点赞数 |
| text | 正文 |
| deletion | 删除 |
| views | 浏览数 |
| status | 状态 |
| favorites | 收藏数 |
### 2.2.9、评论(Comment)
| 属性 | 含义 |
| --------- | -------- |
| id | 主键 |
| uid | 用户主键 |
| articleID | 文章主键 |
| content | 评论内容 |
| time | 评论时间 |
### 2.2.10、收藏(Collection)
| 属性 | 含义 |
| --------- | -------- |
| id | 主键 |
| userID | 用户主键 |
| articleID | 文章主键 |
### 2.2.11、公告(Announcement)
| 属性 | 含义 |
| -------------- | -------- |
| id | 主键 |
| userID | 用户主键 |
| subject | 公告主题 |
| time | 发布时间 |
| validityPeriod | 有效期 |
| content | 公告内容 |
| deletion | 删除 |
| status | 状态 |
### 2.2.12、待办(ToDo)
| 属性 | 含义 |
| ------- | -------- |
| id | 主键 |
| userID | 用户主键 |
| eventID | 事件主键 |
| status | 状态 |
| type | 待办类型 |
### 2.2.13、资源(Resource)
| 属性 | 含义 |
| ------ | -------- |
| id | 主键 |
| userID | 用户主键 |
| type | 资源类型 |
| url | 资源URL |
| time | 上传时间 |
| status | 状态 |
### 2.2.14、角色(Role)
| 属性 | 含义 |
| ------ | -------- |
| id | 主键 |
| userID | 用户主键 |
| name | 角色名 |
### 2.2.15、用户角色(userRole)
| 属性 | 含义 |
| ------ | -------- |
| id | 主键 |
| userID | 用户主键 |
| roleID | 角色主键 |
### 2.2.16、社团部门(AssociationDepartment)
| 属性 | 含义 |
| ------------- | ------------------------ |
| id | 主键 |
| associationID | 社团主键 |
| name | 部门名 |
| status | 状态(区分审核中的部门) |
### 2.2.17、社团信息修改申请(AssociationInformation)
| 属性 | 含义 |
| ---------- | -------- |
| id | 主键 |
| aid | 社团主键 |
| name | 社团名 |
| master | 责任人 |
| profile | 社团简介 |
| type | 社团类别 |
| status | 状态 |
| title | 职称 |
| department | 部门 |
| feedback | 反馈 |
### 2.2.18、文章点赞收藏(LikeAndFavorites)
| 属性 | 含义 |
| --------- | -------- |
| id | 主键 |
| uid | 用户主键 |
| articleID | 文章主键 |
| like | 点赞 |
| favorites | 收藏 |
## 2.3、接口设计
1. 用户登录接口(api/v1/login)
| 请求参数 | 含义 | 返回参数 | 含义 |
| ------------------ | --------------- | -------- | ---------------- |
| email | 用户邮箱 | result | 登录成功或是失败 |
| password/checkCode | 用户密码/验证码 | | |
2. 获取用户接口(api/v1/user/{email/phone})
| 请求参数 | 含义 | 返回参数 | 含义 |
| ----------------- | ------------------- | -------- | -------- |
| email/phoneNumber | 用户邮箱/用户手机号 | result | 查询结果 |
3. 用户注册接口(api/v1/user/register/email | api/v1/user/register/phone)
| 请求参数 | 含义 | 返回参数 | 含义 |
| --------- | -------- | -------- | ---------------- |
| email | 用户邮箱 | result | 注册成功或是失败 |
| password | 用户密码 | | |
| studentID | 学号 | | |
| checkCode | 验证码 | | |
| username | 用户名 | | |
| age | 年龄 | | |
| gender | 性别 | | |
| avatar | 头像 | | |
| 请求参数 | 含义 | 返回参数 | 含义 |
| ----------- | ---------- | -------- | ---------------- |
| phoneNumber | 用户手机号 | result | 注册成功或是失败 |
| password | 用户密码 | | |
| studentID | 学号 | | |
| checkCode | 验证码 | | |
| username | 用户名 | | |
| age | 年龄 | | |
| gender | 性别 | | |
| avatar | 头像 | | |
4. 获取用户角色接口(api/v1/user/role/{uid})
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------- | -------- | -------- | ---------------- |
| uid | 用户主键 | result | 返回用户角色信息 |
5. 创建社团申请接口(api/v1/association/application)
| 请求参数 | 含义 | 返回参数 | 含义 |
| ---------- | -------- | -------- | -------------- |
| name | 社团名 | result | 审批状态或结果 |
| master | 申请人 | | |
| profile | 简介 | | |
| members | 成员数 | | |
| createTime | 创建时间 | | |
| type | 社团类别 | | |
| status | 申请状态 | | |
| title | 社团职称 | | |
| department | 社团部门 | | |
6. 获取社团所有成员(api/v1/association/all_members/{aid})
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------- | -------- | -------- | ---------------- |
| aid | 社团主键 | result | 社团所有成员信息 |
7. 修改社团成员信息接口(api/v1/association/member)
| 请求参数 | 含义 | 返回参数 | 含义 |
| ------------- | -------- | -------- | -------------- |
| uid | 社团主键 | result | 修改成功或失败 |
| title_id | 职称主键 | | |
| department_id | 部门主键 | | |
| uid | 用户主键 | | |
8. 获取社团信息接口(api/v1/association/information/{aid})
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------- | -------- | -------- | -------- |
| aid | 社团主键 | result | 社团信息 |
9. 修改社团信息接口(api/v1/association/information)
| 请求参数 | 含义 | 返回参数 | 含义 |
| ---------- | -------- | -------- | ------------- |
| id | 主键 | result | 提交成功/失败 |
| name | 社团名 | | |
| master | 责任人 | | |
| profile | 社团简介 | | |
| type | 社团类别 | | |
| title | 职称 | | |
| department | 部门 | | |
10. 获取社团职称接口(api/v1/association/title)
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------- | -------- | -------- | ------------ |
| aid | 部门主键 | result | 社团职称信息 |
11. 获取社团部门接口(api/v1/association/department)
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------- | -------- | -------- | ------------ |
| aid | 部门主键 | result | 社团部门信息 |
12. 解散社团接口(api/v1/association/disband)
| 请求参数 | 含义 | 返回参数 | 含义 |
| --------- | -------- | -------- | ------------ |
| aid | 部门主键 | result | 社团部门信息 |
| checkCode | 验证码 | | |
13. 获取社团负责人信息接口(api/v1/association/master)
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------- | -------- | -------- | -------------- |
| aid | 社团主键 | result | 社团负责人信息 |
14. 上传社团图片接口(api/v1/association/upload_img)
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------- | -------- | -------- | -------- |
| aid | 社团主键 | result | 上传状态 |
| imgURL | 图片URL | | |
| currtime | 上传时间 | | |
15. 阿里云OOS接口(api/v1/aliyun/img)------ 暂定
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------- | ---- | -------- | ------- |
| | | result | 文件URL |
| | | | |
| | | | |
16. 加入社团接口(api/v1/user/association)
| 请求参数 | 含义 | 返回参数 | 含义 |
| ------------- | -------- | -------- | -------- |
| userID | 用户主键 | result | 提交状态 |
| associationID | 社团主键 | | |
| reason | 申请理由 | | |
| time | 申请时间 | | |
17. 获取社团列表接口(api/v1/association/list)
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------- | ---- | -------- | ------------ |
| | | result | 所有社团信息 |
18. 添加用户社团(api/v1/association/user_association)
| 请求参数 | 含义 | 返回参数 | 含义 |
| ------------ | -------- | -------- | -------- |
| uid | 用户主键 | result | 加入状态 |
| aid | 社团主键 | | |
| titleID | 职称主键 | | |
| departmentID | 部门主键 | | |
19. 获取展示社团信息接口(api/v1/association/show_information)
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------- | -------- | -------- | ------------------------------------- |
| aid | 社团主键 | result | 社团所有信息以及近十张社团活动图片URL |
20. 发布文章接口(api/v1/article/item)
| 请求参数 | 含义 | 返回参数 | 含义 |
| ---------------- | ----------------- | -------- | --------- |
| userID | 用户主键 | result | 成功/失败 |
| title | 标题 | | |
| lastModifiedTime | 上次修改时间 | | |
| text | 正文 | | |
| status | 状态(发表/暂存) | | |
21. 获取所有文章接口(api/v1/article/list)
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------- | -------- | -------- | -------------- |
| uid | 用户主键 | result | 该用户所有文章 |
22. 获取某一篇文章(api/v1/article/{article_id})
| 请求参数 | 含义 | 返回参数 | 含义 |
| --------- | -------- | -------- | -------- |
| articleID | 文章主键 | result | 文章信息 |
23. 删除某一篇文章(api/v1/article/deletion/{article_id})
| 请求参数 | 含义 | 返回参数 | 含义 |
| --------- | -------- | -------- | -------- |
| articleID | 文章主键 | result | 删除状态 |
24. 对文章点赞接口(api/v1/article/likes)
| 请求参数 | 含义 | 返回参数 | 含义 |
| --------- | -------- | -------- | ---- |
| articleID | 文章主键 | result | 状态 |
| uid | 用户主键 | | |
25. 对文章收藏接口(api/v1/article/favorites)
| 请求参数 | 含义 | 返回参数 | 含义 |
| --------- | -------- | -------- | ---- |
| articleID | 文章主键 | result | 状态 |
| uid | 用户主键 | | |
26. 增加浏览量接口(api/v1/article/views)
| 请求参数 | 含义 | 返回参数 | 含义 |
| --------- | -------- | -------- | ---- |
| articleID | 文章主键 | result | 状态 |
| uid | 用户主键 | | |
27. 发布公告接口(api/v1/announcement/item)
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------------- | ------------ | -------- | ---- |
| userID | 用户主键 | result | 状态 |
| subject | 公告主题 | | |
| time | 上次编辑时间 | | |
| validityPeriod | 有效期 | | |
| content | 公告内容 | | |
| status | 状态 | | |
28. 获取当前用户所有公告(api/v1/announcement/{uid})
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------- | -------- | -------- | -------------------- |
| uid | 用户主键 | result | 当前用户所有公告列表 |
29. 获取所有公告(api/v1/announcement/list)
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------- | -------- | -------- | ------------ |
| uid | 用户主键 | result | 所有公告列表 |
30. 获取当前用户待办事项(api/v1/to_do/{uid})
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------- | -------- | -------- | ---------------- |
| uid | 用户主键 | result | 当前用户待办列表 |
31. 管理员停用社团接口(api/v1/admin/association)
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------------- | -------- | -------- | ---- |
| association_id | 社团主键 | result | 状态 |
| reason | 原因 | | |
32. 管理员删除评论接口(api/v1/admin/{comment_id})
| 请求参数 | 含义 | 返回参数 | 含义 |
| --------- | -------- | -------- | ---- |
| commentID | 评论主键 | result | 状态 |
33. 管理员删除文章接口(api/v1/admin/article)
| 请求参数 | 含义 | 返回参数 | 含义 |
| --------- | -------- | -------- | ---- |
| articleID | 文章主键 | result | 状态 |
| reason | 原因 | | |
34. 管理员删除活动接口(api/v1/admin/activity)
| 请求参数 | 含义 | 返回参数 | 含义 |
| ---------- | -------- | -------- | ---- |
| activityID | 活动主键 | result | 状态 |
| reason | 原因 | | |
35. 获取当前用户接口(api/v1/user/current)
| 请求参数 | 含义 | 返回参数 | 含义 |
| -------- | ---- | -------- | ------------ |
| | | result | 当前用户信息 |
36. 编辑用户自身信息(api/v1/user/information)
| 属性 | 含义 | 返回参数 | 含义 |
| ----------- | -------- | -------- | ---- |
| id | 用户主键 | result | 状态 |
| username | 用户名 | | |
| gender | 性别 | | |
| studentID | 学号 | | |
| age | 年龄 | | |
| password | 密码 | | |
| phoneNumber | 手机号 | | |
| email | 邮箱 | | |
| avatar | 头像URL | | |
37. 修改密码接口(api/v1/user/password)
| 属性 | 含义 | 返回参数 | 含义 |
| ------ | ------ | -------- | ---- |
| newPwd | 新密码 | result | 状态 |
38. 获取验证码接口(api/v1/user/check_code/{uid})
| 属性 | 含义 | 返回参数 | 含义 |
| ------ | -------- | -------- | ------ |
| userID | 用户主键 | result | 验证码 |
39. 资源上传功能(api/v1/user/resource) ----- OOS服务器部署完毕再写
## 2.4、数据库设计
### 2.4.1、用户(tb_user) #
| 属性 | 含义 | 类型 |
| ---------- | -------------- | ------------ |
| id | 用户主键 | int |
| username | 用户名 | varchar(20) |
| gender | 性别 | varchar(4) |
| student_no | 学号 | varchar(9) |
| age | 年龄 | int |
| password | 密码 | varchar(16) |
| phone | 手机号 | varchar(11) |
| email | 邮箱 | varchar(30) |
| avatar | 头像URL | varchar(100) |
| role | 用户权限主键 # | |
### 2.4.2、用户社团(tb_user_association)
| 属性 | 含义 | 类型 |
| ------------- | -------- | ---- |
| id | 主键 | int |
| associationID | 社团主键 | int |
| userID | 用户主键 | int |
| titleID | 职称主键 | int |
| departmentID | 部门主键 | int |
### 2.4.3、社团(tb_association)
| 属性 | 含义 | 类型 |
| ------------------ | ------------ | ----------- |
| id | 主键 | int |
| name | 社团名 | varchar(60) |
| master | 责任人 | varchar(20) |
| profile | 社团简介 | varchar(90) |
| members | 成员数 | int |
| time | 社团创建时间 | time |
| type | 社团类别 | varchar(15) |
| status | 状态 | varchar(15) |
| association_avatar | 社团头像 # | |
### 2.4.4、社团职称(tb_title)
| 属性 | 含义 | 类型 |
| ------ | -------------------------- | ----------- |
| id | 主键 | int |
| aid | 社团主键 | int |
| title | 职称 | varchar(21) |
| level | 管理级别 | int |
| status | 状态(区分在审核中的职称) | varchar(21) |
### 2.4.5、社团图片(tb_image) #
| 属性 | 含义 | |
| ----------- | ---------- | ---- |
| id | 主键 | |
| aid | 社团主键 | |
| url | 图片URL | |
| time | 上传时间 | |
| activity_id | 活动主键 # | |
### 2.4.6、社团活动(tb_activity) #
| 属性 | 含义 |
| -------- | ----------- |
| id | 主键 |
| aid | 社团主键 |
| name | 活动名称 |
| location | 活动地点 |
| time | 活动时间 |
| content | 活动内容 |
| url | 宣传图片URL |
| status | 活动状态 |
| count | 活动容量 # |
### 2.4.7、加入社团申请(tb_application)
| 属性 | 含义 |
| ------------- | -------- |
| id | 主键 |
| userID | 用户主键 |
| associationID | 社团主键 |
| reason | 申请理由 |
| time | 申请时间 |
| status | 状态 |
| feedback | 反馈 |
### 2.4.8、文章(tb_article)
| 属性 | 含义 |
| --------- | ------------ |
| id | 主键 |
| userID | 用户主键 |
| title | 标题 |
| time | 上次修改时间 |
| likes | 点赞数 |
| text | 正文 |
| deletion | 删除 |
| views | 浏览数 |
| status | 状态 |
| favorites | 收藏数 |
### 2.4.9、评论(tb_comment)#
| 属性 | 含义 |
| --------- | ---------- |
| id | 主键 |
| uid | 用户主键 |
| articleID | 文章主键 |
| precursor | 评论前驱 # |
| content | 评论内容 |
| time | 评论时间 |
### 2.4.10、收藏(tb_collection)
| 属性 | 含义 |
| --------- | -------- |
| id | 主键 |
| userID | 用户主键 |
| articleID | 文章主键 |
### 2.4.11、公告(tb_announcement)#
| 属性 | 含义 |
| --------------- | ---------- |
| id | 主键 |
| uid | 用户主键 |
| subject | 公告主题 |
| time | 发布时间 |
| validity_period | 有效期 |
| content | 公告内容 |
| deletion | 删除 |
| status | 状态 |
| type | 公告类型 # |
| aid | 社团主键 # |
### 2.4.12、待办(tb_todo)
| 属性 | 含义 |
| ------- | -------- |
| id | 主键 |
| userID | 用户主键 |
| eventID | 事件主键 |
| status | 状态 |
| type | 待办类型 |
### 2.4.13、资源(tb_resource)
| 属性 | 含义 |
| ------ | -------- |
| id | 主键 |
| userID | 用户主键 |
| type | 资源类型 |
| url | 资源URL |
| time | 上传时间 |
| status | 状态 |
### 2.4.14、角色(tb_role) #
| 属性 | 含义 |
| ------ | ------------------ |
| id | 主键 |
| userID | 用户主键 ----删除 |
| name | 角色名 |
| level | 权限等级 # |
### 2.4.15、用户角色(tb_user_role)-----废弃
| 属性 | 含义 |
| ---- | -------- |
| id | 主键 |
| uid | 用户主键 |
| rid | 角色主键 |
### 2.4.16、社团部门(tb_association_department)
| 属性 | 含义 |
| ------------- | ------------------------ |
| id | 主键 |
| associationID | 社团主键 |
| name | 部门名 |
| status | 状态(区分审核中的部门) |
### 2.4.17、社团信息修改申请(tb_association_information)
| 属性 | 含义 |
| -------- | -------- |
| id | 主键 |
| aid | 社团主键 |
| name | 社团名 |
| master | 责任人 |
| profile | 社团简介 |
| type | 社团类别 |
| status | 状态 |
| feedback | 反馈 |
### 2.4.18、文章点赞收藏(tb_like_and_favorites)
| 属性 | 含义 |
| --------- | -------- |
| id | 主键 |
| uid | 用户主键 |
| articleID | 文章主键 |
| like | 点赞 |
| favorites | 收藏 |
### 2.4.19、活动用户(tb_user_activity)#
| 属性 | 含义 |
| ----------- | -------- |
| id | 主键 |
| uid | 用户主键 |
| activity_id | 活动主键 |
| aid | 社团主键 |
## 2.5、系统ID生成规则
> id生成条件:唯一、尽量短、不能直接看出规则
1. 用户ID使用雪花算法生成9位随机整型ID
2. 社团ID使用雪花算法生成6位随机整型ID
3. 其他ID采用UUID生成
## 2.6、用户角色权限职能分配
| 用户 | 权限 | 职能 |
| ---------- | ---- | ------------------------------------------------------------ |
| 根管理员 | 0 | 新建或删除管理员用户 |
| 一级管理员 | 1 | 负责新建社团的审批 |
| 二级管理员 | 2 | 负责社团信息修改的审批 |
| 一级用户 | 3 | 社团第一负责人,负责社团信息的修改 |
| 二级用户 | 4 | 社团中层干部,负责活动的发布 |
| 三级用户 | 5 | 社团中层干部,负责处理加入社团申请 |
| 四级用户 | 6 | 社团普通成员,可以参加社团活动,上传社团活动图片 |
| 五级用户 | 7 | 未加入任何社团的普通用户,可以发布文章、评论文章、查看文章、点赞、收藏等 |
| 六级用户 | 8 | 未登录用户,只可查看文章与公告 |
# 问题
- 哔哩哔哩是如何记住每个用户的点赞投币的
- 评论区的评论与回复的关系
评论后台数据封装格式:
````json
{
username:"",
uid:1231,
avatar:"",
comment:"",
time:"",
commentId:1231,
isReply:true
reply:[
{
username:"",
uid:1234,
avatar:"",
comment:"",
time:"",
commentId:1231,
replyName:"",
reply:[]
},
{
username:"",
uid:1234,
avatar:"",
comment:"",
time:"",
commentId:1231,
replyName:"",
reply:[]
}
]
}
````
获取文章信息数据格式封装
```json
{
username:"",
likes:22,
favorites:45,
views:890,
avatar:"http://resource.code9xs.cn/avatar1619491060000.jpg",
time:"2021-5-14 21:04:22",
title:"补兵与发育的艺术",
text:"想必很多小伙伴在日常游戏中都有和朋友们开黑的习惯吧,甚至有些人表示不开黑自己都不会主动去玩联盟,那么在开黑时有时就会发现,为什么他塔刀补得总是那么好?如果和你开黑的小伙伴补塔刀不怎么漏刀且很稳定的话,那么他一定属于下面这3种人当中:
1.所喜爱英雄的特性
很多人都是喜欢常年只玩一个英雄,那么你开黑的小伙伴有可能就是这种人。如果他所玩的英雄本就是一个补塔刀的好手的话,那么你经常看到他塔刀补得好就不足为奇了。比如劫和牧魂人这些英雄,劫大家都比较了解,由于其被动加成,塔刀补起来是非常的方便,牧魂人这个英雄补塔刀更是好补,尤其是6级之后,塔刀补起来都不用伸手,老婆儿子直接帮你补得一刀不漏。
2.技术操控型大神
如果他不属于第一类的话,那肯定就是属于技术非常好的玩家了。这类人在游戏当中不光塔刀补得好,在正常对线时的补刀一定也非常棒,10分钟90刀都是日常,如果你看到了他10分钟100刀的话也不要惊讶,一些推线快的英雄在推完线之后都会顺路去刷个野,10分钟100刀基本是这么来的。
正所谓熟能生巧,如果你的小伙伴上述两种人皆不符合,那么他一定是一位终极塔之子了,这种人一般情况下个人操作方面都不是非常出众,在应对实时局势及时作出性价比高的判断这方面也基本指望不上,但在补塔刀这方面却是有着超乎常人的理解。他已经充分了解了防御塔的机制,每一刀都垫得恰到好处,就算是看着要丢的兵,也能通过精准的计算用一种很刁钻的补法给补到。
为什么同样的时间玩游戏,他就能塔刀补得那么好呢?因为他补的每一波兵,都是在防御塔之下!
补塔刀要懂得安排时间
近战兵塔a两下再补,远程兵要先垫一刀。这些常识都是众所周知的,可是很多时候由于己方小兵的干扰经常导致对方小兵的血量不在你的斩杀线而在防御塔的斩杀线,这和最初的理论好像不太一样。
3.终极稳健老抗压
这时要学会合理安排A兵的时间,如上图,防御塔要攻击左侧的小兵,你的这波兵要攻击右侧小兵,这时你若先补左侧小兵防御塔攻击一下之后你A一下是可以补到的,可是你必须要等到防御塔第二次攻击即将到达时再补,目的是为了给右侧小兵争取时间,尽量让你的小兵把右侧小兵打残好让你用技能补,这就是塔下要合理安排时间,并不是残血就立即补。当然方法还有很多,小编只是介绍其中一种。
你身边的塔刀高手都是那种人呢?你又有什么塔刀小妙招?
",
comment:22
}
```