蒲公英论坛

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

目录
一、 项目概述 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为什么改革?考试要考几次才能通过?
阿里云的认证在业界内一直有很高的含金量,而对于从业者来说,考阿里云认证对自己的事业是有非常大帮助的。
|
机器学习/深度学习 人工智能 自然语言处理
视觉 注意力机制——通道注意力、空间注意力、自注意力
本文介绍注意力机制的概念和基本原理,并站在计算机视觉CV角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。
12872 58
|
移动开发 JavaScript 小程序
uView Cell 单元格
uView Cell 单元格
410 1
|
消息中间件 物联网
MQTT常见问题之mqtt 报 MqttException:客户机未连接如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
JSON Java API
短信服务 Api 介绍|学习笔记
快速学习短信服务 Api 介绍
2871 0
短信服务 Api 介绍|学习笔记
|
10月前
|
存储 Kubernetes 网络协议
还不会 Cert Manager 自动签发证书?一文掌握
本文将介绍如何使用 Cert Manager 实现自动签发证书并与 Rainbond 结合使用。
|
供应链 监控 区块链
确保区块链供应链的透明度和可追溯性,我们可以从以下几个方面进行
**区块链提升供应链透明度与可追溯性:** - 建立不可篡改记录,保证数据真实完整。 - 实现实时监控,加快问题响应,提高效率。 - 追溯产品全程,消费者可验证来源,增强信任。 - 促进信息共享,降低沟通成本,提升协同。 - 防止欺诈串通,确保供应链诚信与透明。 这些措施通过区块链技术的应用,优化供应链管理,降低成本,增强市场信心。
|
机器学习/深度学习 算法 Python
CatBoost中级教程:模型解释与调试
CatBoost中级教程:模型解释与调试【2月更文挑战第10天】
845 0
|
存储 C语言 芯片
CPU概述及CPU的内部结构
CPU概述及CPU的内部结构
661 0
|
开发者
新手应该怎么制作游戏
嗨!大家好,我是小蚂蚁。 制作游戏要从简单做起,尤其是对于新手开发者,一定要从简单做起。如果在啥也不会的时候,一上来就想做个大而复杂的,那结果只能是以失败告终 有目标是好事情,但是前提是目标要合理,登顶珠峰是一个好目标,但是对于一个从未登山的人来讲,很显然这不适合当作第一个目标。
800 0