要求
1.用户
1.注册和登入。
2.用户可以发布,删除,修改自己的笔记。
详细要求:发布笔记时,笔记要有专属的区域,比如这个笔记是文学。区的设置自己定义,大概 六个区域就可以了。
3.用户可以在首页查看所有的笔记,以及对应分区的笔记。
4.允许用户修改自己的信息。
5.用户可以收藏,评论,点赞他人的笔记。
6.用户可以在用户中心查询自己发布的笔记,评论的笔记,点赞的笔记。
详细要求:用户查询笔记时可以点击进去看到详细内容,比如评论,点赞量,收藏量等等。
2.区域管理员
1.可以禁用所属区域用户,用户不可以发布笔记。
2.可以删除所属区域用户的笔记。
3.可以审批用户发布的笔记,只有区域管理员同意,用户笔记才能发布。
3.系统管理员
1.可以删除所有笔记。
4.其他
1.分页:分页显示笔记。
2.标签:给笔记添加标签。
3.模糊搜索和精确搜索。
4.文件上传。
5.进阶要求
1.用户有历史浏览记录。
2.笔记可以通过收藏量,点赞量,热度,浏览量之类的排序。
3.用户的笔记被管理员驳回或者删除后可以有申诉功能。
4.用户可以举报笔记。
5.系统管理员可以看到区域管理员被申诉的次数,管理员被申诉多次可以解除管理员身份。
6.每个用户要有自己的唯一标识,显示在个人主页。
7.系统管理员可以管理区域管理员的身份。
8.系统管理员可以发公告通知所有的账号。
9.用户之间可以加好友聊天。、
10.对于管理员审核笔记,笔记的通过与不通过,还有禁止用户等操作要有日志。
11.用户注册绑定邮箱激活。
12.密码加密存储。
项目结构
src
├── com
│ └── hpx
│ ├── controller
│ │ ├── NoteController.java
│ │ └── UserController.java
│ │ └──AdminController.java
│ ├── domain
│ │ ├── Admin.java
│ │ ├── Comment.java
│ │ ├── Like.java
│ │ ├── Note.java
│ │ └── User.java
│ ├── mapper
│ │ ├── NoteMapper.java
│ │ └── UserMapper.java
│ │ └──AdminMapper.java
│ ├── service
│ │ ├── NoteService.java
│ │ └── UserService.java
│ │ └──AdminService.java
│ └── util
│ └── DBUtil.java
详细设计
这部分是一部分的设计。
MySQL数据库设计
创建一个uns的数据库,再创建admins,comments,favorites,likes,messages,note-tags,notes,tags,users这九个表。具体创建表的DDL如下:
1.admins
CREATE TABLE `admins` (
`id` int NOT NULL AUTO_INCREMENT,
`adminname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`password` varchar(50) NOT NULL,
`area` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
PRIMARY KEY (`id`)
)
2.comments
CREATE TABLE `comments` (
`id` int NOT NULL AUTO_INCREMENT,
`note_id` int NOT NULL,
`user_id` int NOT NULL,
`content` text NOT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `note_id` (`note_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`note_id`) REFERENCES `notes` (`id`),
CONSTRAINT `comments_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
)
3.favorites
C