蒲公英论坛

简介: 蒲公英论坛实验报告

目录
一、 项目概述 3
1.1. 项目目的 3
1.2. 需求分析 3
1.3. 小组分工 4
二、 项目开发环境 5
2.1. 开发技术 5
2.2. 服务器部署要求 6
2.3. 开发环境 6
三、 项目设计 6
3.1. 前后端框架 6
3.2. 数据库设计 8
四、 功能总览 9
4.1. 用户登录 9
4.2. 查看话题 10
4.3. 用户评论 11
4.4. 更换头像 11
五、 项目功能 12
5.1. 用户登录 12
5.2. 查看话题 13
5.3. 用户评论 14
5.4. 更换头像 16
(参考)

一、
项目概述
1.1. 项目目的
伴随大数据时代到来,网络通信蓬勃发展,用户需求量日益上升,前景光明,“蒲公英”论坛项目应运而生。该项目旨在为大量使用者提供便捷服务,其目标涵盖发帖话题、评论热度、发表观点、后期维护等,营造丰富文明的论坛环境。
1.2. 需求分析
致力于打造用户在线交流平台,提高交流效率。用户通过URL网址访问首页,注册自己专属的论坛账号,以此发表话题讨论或者对某个帖子发表自己的观点。与此同时,为维护良好的交流环境,防止恶意访问等情况发生,在安全方面引入拦截予以屏蔽。
1.3. 小组分工
前端:葛宇航 宗冰 朱谭天宇
后端:张子健 孙宇飞

二、项目开发环境
2.1 开发技术
Java,vue
2.2 服务器部署要求
使用阿里云的云服务器
2.3 开发环境
Visual Studio Code

三、项目设计
3.1 前后端框架

3.2 数据库设计

评论表

CREATE TABLE `comments`  (
   `comments_id` int(11) 
        NOT NULL 
        AUTO_INCREMENT,
  `user_id` int(11) NULL 
        DEFAULT NULL,
  `topic_id` int(11) 
        NOT NULL,
  `comments_detail_id` varchar(500)
        CHARACTER SET utf8 COLLATE utf8_general_ci             NOT NULL,
  `likes` int(11)
        NOT NULL DEFAULT 0,
  `hates` int(11) 
        NOT NULL DEFAULT 0,
  `comments_time` timestamp 
        NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE             CURRENT_TIMESTAMP     
        COMMENT '发表时间',
  `del_flag` enum('true','false')    
        CHARACTER SET utf8 COLLATE utf8_general_ci
        NOT NULL
        DEFAULT 'false' 
        COMMENT 'true表示已经被删除',
  `reply_id` int(11)
        NOT NULL 
        DEFAULT 0 
        COMMENT '回复目标的id',
  `reply_type` int(11) 
        NOT NULL 
        DEFAULT 0 
COMMENT '0代表回复主题 1代表回复评论',
  `parent_id` int(11) 
        NOT NULL
        DEFAULT -1
        COMMENT '回复的评论的id',
  `children_id` int(11) 
        NOT NULL 
        DEFAULT -1 
        COMMENT '被评论的评论id',
  PRIMARY KEY (`comments_id`) USING BTREE
) ENGINE = InnoDB 
AUTO_INCREMENT = 6 
CHARACTER SET = utf8 
COLLATE = utf8_general_ci 
ROW_FORMAT = DYNAMIC;

评论详情表

CREATE TABLE `comment_detail`  (
   `comment_detail_id` int(11) 
NOT NULL 
    AUTO_INCREMENT,
  `comment_detail` varchar(500) 
    CHARACTER SET utf8 COLLATE utf8_general_ci
    NOT NULL,
  PRIMARY KEY (`comment_detail_id`)
    USING BTREE
) 
ENGINE = InnoDB
AUTO_INCREMENT = 2 
CHARACTER SET = utf8 
COLLATE = utf8_general_ci 
ROW_FORMAT = DYNAMIC;

拆分评论和评论内容是为了在数据量增加之后尽量的提高内存块命中率以提高速度

话题表

CREATE TABLE `topic`  (
  `topic_id` int(11) NOT NULL AUTO_INCREMENT,
  `topic_title` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `topic_detail_id` int(11) NOT NULL,
  `topic_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `topic_type` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '帖子类型',
  `user_id` int(11) NOT NULL,
  `comment_num` int(11) NOT NULL DEFAULT 0,
  `report_num` int(11) NOT NULL DEFAULT 0,
  `heat_num` int(11) NOT NULL DEFAULT 100,
  `likes_num` int(11) NOT NULL DEFAULT 0,
  `hates_num` int(11) NOT NULL DEFAULT 0,
  `views` int(11) NOT NULL DEFAULT 0 COMMENT '浏览次数',
  `stars` int(11) NOT NULL DEFAULT 0 COMMENT '收藏量',
  `del_flag` int(11) NOT NULL DEFAULT 0,
  PRIMARY KEY (`topic_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

话题详情表

DROP TABLE IF EXISTS `topic_detail`;
CREATE TABLE `topic_detail`  (
  `topic_detail_id` int(11) NOT NULL AUTO_INCREMENT,
  `topic_detail` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  PRIMARY KEY (`topic_detail_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

用户表

CREATE TABLE `user`  (
  `user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `user_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户账号',
  `nick_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户昵称',
  `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户邮箱',
  `phonenumber` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '手机号码',
  `sex` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)',
  `password` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
  `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '帐号状态(0正常 1停用)',
  `del_flag` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  `login_ip` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '最后登录IP',
  `login_date` datetime NULL DEFAULT NULL COMMENT '最后登录时间',
  `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者',
  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
  `avatar_path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'default.png',
  PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户信息表' ROW_FORMAT = DYNAMIC;

四、功能总览
4.1 用户登录
用户通过URL访问前端首页,并输入账号密码点击登录。
4.2 查看话题
用户登录后携带认证,验证通过后即可查看。
4.3 用户评论
用户点击话题进入话题主页即可直接阅读,可发表对话题的直接评论也可对评论再评论。
4.4 更换头像

五、项目功能
5.1 用户登录
前端完成第一次校验账号密码长度并向后端发送登录请求,后端接收并进行第二次校验,如果失败证明直接通过接口调用访问后端,定性为恶意访问;若成功则登录完成。
5.2 查看话题
用户登录后需携带token认证,以此验证身份是否合法。话题的展示需要首先展示加载动画告知用户正在加载信息,之后向后端发起请求获得话题的标题内容等信息。后端收到前端的请求信息后首先要经过两个拦截器,第一个是黑名单的拦截器,检测访问的IP是否存在于黑名单中,若存在则直接返回错误信息而不占用服务器资源,通过后经过第二个拦截器,验证携带的token是否存于Redis服务器中,确认后调用服务由服务器特定规则排序返回数据用于展示。前端首先存入data段之后可以选择性的加载。
5.3 用户评论
用户在点击一个话题后可以进入话题详情页,并且展示刚才获得的全部话题信息,同时向服务器请求该话题下的直接评论及需要携带话题的ID。后端在收到请求后利用数据库的表连接将评论表和回复详情表进行连接并返回数据。每个评论可以有自己的评论,前端需要向后端发送请求并携带评论的ID。后端在接收到评论的ID后调用方法递归的找到对应的所有回复向前端发送。前端收到后进行展示。在页面底部输入评论内容可以回复话题,或者在评论下点击回复可以在输入框内评论另一条评论。向服务器发送新增评论的请求,服务器在收到请求后向数据库插入评论。
5.4 更换头像

相关文章
|
云安全 存储 运维
阿里云ACE为什么改革?考试要考几次才能通过?
阿里云的认证在业界内一直有很高的含金量,而对于从业者来说,考阿里云认证对自己的事业是有非常大帮助的。
|
前端开发 物联网 异构计算
实时云渲染串流技术详解
云串流即使应用于云旅游、考古、数字孪生、云展厅等领域,通过将3D应用运行于云端,降低用户端配置需求。技术流程包括用户股指令、服务器执行、编码传输及前端播放,实现低延迟的实时云渲染。在弱网环境下,需只能调节画质确保流畅性。3D应用采用云推理,服务器需满足3D应用的硬件要求,尤其是GPU和GPU的性能,而前端主要负责解码播放,一般1080P视频能力即可。自行研发成本高,建议选择成熟商家点量云流。
706 0
实时云渲染串流技术详解
|
人工智能 搜索推荐
AIGC在学生测试评估中的应用
AIGC在学生测试评估中的应用
481 3
AIGC在学生测试评估中的应用
|
机器学习/深度学习 算法 Python
CatBoost中级教程:模型解释与调试
CatBoost中级教程:模型解释与调试【2月更文挑战第10天】
868 0
|
IDE 数据可视化 开发工具
Spyder
Spyder是一个用于数据科学和计算机视觉的Python集成开发环境(IDE)。它支持多个Python版本,并具有强大的交互式界面,可以帮助用户轻松地进行数据可视化、建模和分析。
676 1
|
存储 监控 安全
重构项目的十大注意事项
重构项目的十大注意事项
|
SQL 数据可视化 关系型数据库
dbeaver使用
dbeaver使用
uiu
|
Oracle Java 关系型数据库
JDK的下载与安装
JDK的下载与安装
uiu
760 0
JDK的下载与安装
An工具介绍之3D工具
An工具介绍之3D工具
880 0
An工具介绍之3D工具
阿里企业邮箱多少钱一年?付费版和免费版企业邮箱区别
阿里企业邮箱多少钱一年?付费版和免费版企业邮箱区别,2023阿里云企业邮箱收费标准价格表,免费版企业邮箱0元,标准版企业邮箱原价600元一年、企业邮箱尊享版1400元一年、企业邮箱集团版9500元一年,目前收费版的企业邮箱可以享受9折或8折优惠,阿小云分享阿里云企业邮箱收费价格表、优惠活动及不同版本企业邮箱区别及选择方法
951 0