版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于SpringBoot的编程技术论坛系统设计摘要:本课题设计主要是针对于编程人员能找到渠道来浏览技术文章,引申出一套基于SpringBoot的论坛系统,对用户的发布、用户的后台管理,管理员的后台管控进行管理。编本系统设计主要分为5大版块。开头介绍项目的背景和研究内容。其次,在需求分析中,对系统的总体进行分析,选择用例图的形式来进行图形化的描述。第三部分为系统设计,给出了系统的总体架构,并抽离成各个子模块以类图和流程图的形式进行展开说明。第四部分是系统的具体实现,从而打造出一个专门查询编程方面文章的论坛。最后,将全文进行总结并提出后续管理。总的来说,论文整体上采用MVC结构模型,把论坛数据模型、论坛业务逻辑和论坛数据显示进行了很好的拆分。本项目的设计与实现,能提高相关编程技术的聚焦度,有助于编程人员快速检索出针对性的编程技术帖子,浏览相关技术文章,分享自己的编程经验,互相学习交流,提高个人水平。关键字:论坛;MVC;SpringBoot目录TOC\o"1-3"\h\u298921绪论 1295931.1项目背景 193941.2研究的内容 167341.3论文结构 1106802项目需求分析 2189272.1业务分析 2246632.1.1业务描述 2206462.1.2业务人员分析 3206462.1.3业务活动图 3233222.2论坛系统功能需求分析 319902.2.1用户前台用例分析 4171712.2.2个人信息管理用例分析 6156332.2.3收藏管理用例分析 783842.2.4发布管理用例分析 9289142.2.5用户管理用例分析 1121732.2.6分类管理用例分析 12325812.2.7文章管理用例分析 15241002.2.8消息管理用例分析 16178083系统设计 17230743.1系统总体架构设计 17304933.2系统功能模块设计 1878173.2.1系统功能模块 18168613.3软件系统数据库设计 2833363.3.1概念模型设计 28235323.3.2逻辑模型设计 32252533.3.3物理结构设计 3351534项目具体实现 3661144.1项目总体结构 36185414.2项目代码目录结构 36138474.3注册登录模块具体实现 3759334.4用户前台模块具体实现 38158374.5用户信息模块具体实现 40213474.6收藏管理模块具体实现 42327014.7发布管理模块具体实现 43222354.7消息管理模块具体实现 4451665总结与展望 4620129参考文献 461绪论1.1项目背景在IT行业的人员,通常有一个共识:开发程序中需要不断的学习才能去适应技术的更迭,有时在开发时会遇到一些千奇百怪的问题,排查解决这些问题会消耗大量的时间。所以为了能快速解决这些问题,同时方便各自交流学习,编程人员通常会逛论坛来查找自己想要的文章。这些论坛方便大家聊天与讨论,但由于许多用户各自的专业或者爱好不同,因此帖子五花八门,可能推荐给你的是音乐、篮球之类的文章,搜索自己所需问题对应的帖子很少甚至没有,而相对令人信服的帖子更是少之又少。所以如果能有更多关于各自行业且方便快速查找问题的答案和学习的网站是非常有必要的。本项目正是基于以上背景而进行设计与实现的。该论坛能提高相关编程技术的聚焦度,有助于编程人员快速检索出针对性的编程技术帖子,浏览相关技术文章,分享自己的编程经验人,互相学习交流,提高个人水平。1.2研究的内容本系统为编程技术论坛系统,其内容主要包括如下:1、 设计:该项目主要采用SpringBoot+MyBatisPlus+MySQL+Redis来实现。使用Maven来构建后台项目,Git作为项目管理工具,通过这些来实现一个提供给用户来检索编程技术相关文章的一个平台。2、项目具体内容(1)登录模块:在登录前,所有的使用者和管理员必须先进行登录验证,然后将数据库中的数据进行比对,确认通过后,就会进入相应的页面。若比较不正确,建议使用者重新输入相应信息。(2)主页模块:显示帖子的标签分类和一些基本信息,例如文章标题、发布时间、评论数、发布人基本信息等等。以及针对帖子的热度排行榜相关信息,使用者也可在此浏览查找一些对自己感兴趣的帖子,和对较高关注度帖子的快速查询。(3)详情模块:显示帖子具体的相关介绍和热度,具体由三部分组成,发帖人信息,文章内容以及对帖子的评论,用户可以在此查看自己想要了解的一些具体信息,发表自己的见解亦或者是产生的疑惑。(4)用户模块:可以修改个人的基本信息,查看自己以及他人的信息和具体的帖子数据,以及查看自己收藏过的帖子和对帖子的留言情况。(5)通知模块:用户可以在此查看通知的消息。当有其他用户发送给你信息的时候,可以显示他人的留言信息(6)管理模块:只有系统管理员才拥有访问该模块的权限。具体功能有:分类标签的管理,对用户的管理,对文章信息的管理。管理员可以对此来进行操作。1.3论文结构论文各章节内容简介以及联系绪论,介绍编程技术论坛的研究背景,阐述项目研究目的以及主要工作。项目需求分析,对项目进行详细的研究和分析,阐述具体相关功能和实现的状况。系统设计,通过系统的总体架构图、各个模块设计进行展开说明,以及系统中的实体类关系和数据库表的设计和分析。项目具体实现,介绍系统的具体实现细节、相关代码、和功能展示图。总结与展望。2项目需求分析2.1业务分析2.1.1业务描述随着IT的日新月异,IT人员应该运用更合理的方式去处理在学习或开发过程中遇到的问题。在之前,编程人员解决专业难题通常有以下几种情况:首先是翻阅相关的专业书籍,但是在这快节奏的时代,书籍更多是用来在学习知识的情况下去查阅。然后是通过百度来去搜索,但是由于查出来的东西太多且杂乱,很难快速定位并找到与之相匹配的解决办法。再者就可以通过请教他人的方式去处理,但是一般他人的工作也都比较繁忙,并且问的次数多了也不太好。所以,开发本系统的出发点是解决以上可能产生的问题。编程技术论坛系统主要分使用者端和管理员端,用户端的前台可以展示相关帖子,在浏览的同时进行交互,用户后台主要有个人信息管理、收藏管理、发布管理、消息管理,管理员后台主要是使用者管理、类目管理、文章管理。2.1.2业务人员分析(1)普通用户:普通用户可以在前台进行浏览帖子,并可以分类或者查询文章名的形式进行检索,可以留下对当前这篇文章的看法,同时可以收藏感兴趣的帖子,管理好自己的发布情况等等。(2)管理员:管理员负责管理用户,维护好类目,并进行对文章的管理。2.1.3业务活动图图2-1业务活动图2.2论坛系统功能需求分析系统的需求分析是系统的整个生命周期的一个先导,是在系统的设计与开发的前期调研阶段[1]。本编程技术论坛系统主要的模块分为用户前台和用户与管理员后台。用户前台主要负责对帖子的展示,评论以及收藏等等,用户后台主要有个人信息、收藏管理、发布管理以及消息管理。管理员后台有图表、对用户的管理、分类管理以及对文章进行操作。图2-2论坛系统总体用例图2.2.1用户前台用例分析下面给出了编程技术论坛系统的用户前台模块用例图,主要是负责对帖子进行相关的展示,以及可对喜好的分类进行检索,与文章进行交互等等。图2-3用户前台模块用例图用户前台模块主要功能如下:用户可以登录之后在首页浏览帖子,同时可以查询或者选择对应的分类来挑选自己感兴趣的内容。用户进入详情后首先可以查询帖子的排行榜,可以浏览当前热度较高的帖子;详情里介绍了帖子的详细内容,同时可以查询发帖人的相应信息用户可以对帖子进行收藏或取消收藏的操作,从而来保存自己感兴趣的内容用户可以对帖子进行评论,可以留下自己对当前文章的看法以及回应。表2-1用户前台模块首页用例表用例编号Module_No_001用例名首页展示参与者用户前置条件暂无基本操作流用户按照帖子标题进行搜索;用户按照分类进行筛选。后置条件用户完成操作,数据库表不发生任何变更,界面上展示相应的文章列表表2-2用户前台模块详情用例表用例编号Module_No_002用例名帖子详情参与者用户前置条件普通用户登录基本操作流1、用户可以查询当前热度较高的帖子;2、用户查询文章的详细信息;3、用户可以查询文章作者的基本信息。4、用户可以查询该文章下的评论信息,同时可以进行相应交互5、用户可以收藏或取消收藏当前文章后置条件针对1、2、3,用户完成操作,数据库表不发生任何变更,界面展示相应信息。针对4、5,数据库表发生增加一条或删减一条记录,用来保存评论信息和收藏或取消收藏对应的文章2.2.2个人信息管理用例分析下面给出了编程技术论坛系统的个人信息管理模块用例图,主要进行的是对个人信息的管理,设置个人的基础信息。图2-4个人信息管理模块用例图个人信息管理模块主要功能如下:用户可以在此设置自己的个人信息用户可以设置头像表2-3个人信息管理模块设置个人信息用例表用例编号User_Info_No_001用例名设置个人信息参与者用户前置条件普通用户登录基本操作流用户设置好个人信息,点击提交后置条件用户完成操作,数据库用户表进行对应的变更,同时界面展示出更改后的个人信息表2-4个人信息管理模块设置头像用例表用例编号User_Info_No_002用例名设置头像参与者用户前置条件用户登录基本操作流用户选择图片上传,点击提交后置条件用户完成操作,将图片上传到阿里云oss存储,数据库用户表更改保存的头像链接2.2.3收藏管理用例分析下面给出了编程技术论坛系统的收藏管理模块用例图,主要进行的是对个人收藏的文章进行管理,方便快速检索自己感兴趣的文章。图2-5收藏管理模块用例图收藏管理模块主要功能如下:用户可以查询自己收藏的文章用户不想收藏了可以取消收藏表2-5收藏管理模块文章收藏用例表用例编号Collection_No_001用例名文章收藏参与者用户前置条件普通用户登录基本操作流用户查询个人收藏的文章后置条件用户完成操作,数据库表不发生任何变更,界面上展示相应的收藏的文章信息表2-6收藏管理模块取消收藏用例表用例编号Collection_No_002用例名取消收藏参与者用户前置条件普通用户登录基本操作流用户选择不再感兴趣的文章进行取消收藏后置条件操作员完成操作,数据库收藏表信息发生改变,删除对应记录2.2.4发布管理用例分析下面给出了编程技术论坛系统的发布管理模块用例图,主要进行的是对发布信息的管理,来查询自己的发布情况。图2-6发布管理模块用例图发布管理模块主要功能如下:用户可以查询发帖的基本信息用户可以编辑文章的信息用户可以删除自己的文章。用户可以查询个人发言状况。表2-7发布管理模块查询文章和发言用例表用例编号Speak_001用例名查询文章和发言参与者用户前置条件普通用户登录基本操作流用户点击发布管理查询出个人发帖的信息以及个人的发言状况。后置条件用户完成操作,数据库表字段不发生任何变更,界面展示查询到的对应的基本信息。表2-8发布管理模编辑帖子用例表用例编号Speak_002用例名编辑帖子参与者用户前置条件普通用户登录基本操作流1.用户选中某篇帖子来编辑文章的信息。后置条件用户完成操作,数据库文章表更新一条数据,界面展示更新的文章信息信息。表2-9发布管理模块删除文章用例表用例编号Speak_003用例名删除文章参与者用户前置条件普通用户登录基本操作流用户选中某篇帖子来删除文章信息。后置条件操作员完成操作,数据库文章表减少一条数据。2.2.5用户管理用例分析下面给出了编程技术论坛系统的使用者模块用例图,主要进行的是对系统的用户进行管理,更好的维护和检索用户信息。图2-7用户管理模块用例图用户管理模块主要功能如下:管理员可以查询用户列表管理员可以编辑用户信息管理员可以封禁用户表2-10用户管理模块文章查询用户用例表用例编号User_001用例名查询用户参与者管理员前置条件管理员登录基本操作流管理员查询用户列表后置条件管理员完成操作,数据库表不发生任何变更,界面上展示相应的收藏的文章信息表2-11用户管理模块文章编辑用户用例表用例编号User_002用例名编辑用户参与者管理员前置条件管理员登录基本操作流管理员更新某个用户的信息后置条件管理员完成操作,数据库用户表更新一条记录,界面上展示相应的更新后的值。表2-12用户管理模块文章封禁用户用例表用例编号User_003用例名封禁用户参与者管理员前置条件管理员登录基本操作流管理员封禁某个用户后置条件管理员完成操作,数据库用户表更新一条记录,界面上展示相应的更新后的值,同时该用户将无法登录系统。2.2.6分类管理用例分析下面给出了编程技术论坛系统的分类管理模块用例图,主要进行的是对文章的分类的类目进行管理。图2-8分类管理模块用例图分类管理模块主要功能如下:管理员可以新增文章的分类管理员可以修改文章的分类管理员可以查询文章的分类管理员可以删除文章的分类表2-13分类管理模块新增分类用例表用例编号Category_001用例名新增分类参与者管理员前置条件管理员登录基本操作流管理员可以新增分类后置条件管理员完成操作,数据库分类表新增一条记录,界面上展示出新增后的分类。表2-14分类管理模块修改分类用例表用例编号Category_002用例名修改分类参与者管理员前置条件管理员登录基本操作流管理员可以修改分类后置条件管理员完成操作,数据库分类表修改一条记录,界面上展示出修改后的分类。表2-15分类管理模块删除分类用例表用例编号Category_003用例名删除分类参与者管理员前置条件管理员登录基本操作流管理员可以删除分类后置条件管理员完成操作,数据库分类表删除一条记录,界面上展示删除后的值表2-16分类管理模块查询分类用例表用例编号Category_004用例名查询分类参与者管理员前置条件管理员登录基本操作流管理员可以查询分类后置条件管理员完成操作,数据库分类表不做任何操作,界面上展示出相应的分类列表信息。2.2.7文章管理用例分析下面给出了编程技术论坛系统的文章管理模块用例图,主要进行的是对平台特征的分类的类目进行管理。图2-19文章管理模块用例图文章管理模块主要功能如下:管理员可以查询文章列表管理员可以删除文章信息表2-17文章管理模块查询文章用例表用例编号article_001用例名查询文章参与者管理员前置条件管理员登录基本操作流管理员查询文章列表后置条件管理员完成操作,数据库表不发生任何变更,界面上展示相应的查询的文章信息表2-18文章管理模块删除文章用例表用例编号article_002用例名删除文章参与者管理员前置条件管理员登录基本操作流管理员选中某篇文章进行删除后置条件管理员完成操作,数据库文章表减少一条记录,界面上展示相应的查询的文章信息2.2.9消息管理用例分析下面给出了编程技术论坛系统的消息管理模块用例图,主要进行的是对与用户收到的消息进行管理图2-10消息管理模块用例图消息管理模块主要功能如下:管理员可以查询发布的文章收到的评论信息管理员可以查询发布的评论的收到的回复信息表2-19文章管理模块查询消息用例表用例编号Message_001用例名查询消息参与者用户前置条件用户登录基本操作流用户查询消息信息列表后置条件用户完成操作,数据库表不发生任何变更,界面上展示相应的查询的消息信息3系统设计3.1系统总体架构设计前端:使用layui前端框架,采用基于layui的界面设计,使用freeamker模板引擎来呈现后端返回数据。前端与后端的数据交互使用ajax发送异步请求。后端:将Springboot用作后台开发框架,MybaitsPlus框架用于数据持久层,并以xml方式和调用封装好的方法的形式对Mysql数据库进行了基础的增删和修改。MySQL是一种小型的关系数据库管理系统,与其它数据库相比,MySQL具有以下特点:快速、快捷、易用、性能稳定、兼容性好、在中小型网站上得到了广泛应用[2]。使用redis对某些数据进行缓存。Redis数据库是key-value的存储系统.它的数据类型有字符串、列表、集等,可以用了做很多操作。同时,在内存中运行,具有很高的效率[3]。总体:采用B/S的架构。相对于C/S模式,B/S架构的所有功能都是在服务器上完成的,可以大大降低系统的开发和后期的维护工作。并且,在B/S架构下,系统兼容性更强,开发起来也更方便[4]。在总体设计中,从系统结构、功能、总体原则等几个方面进行了分析和设计[5]。部署系统:windows10开发工具:IDEA。IntelliJIDEA是java编程语言开发的集成环境。由于其强大的代码提示助手以及对各种版本工具、代码分析、J2EE等的整合,使得其被认为是最好的JAVA开发工具[6]。JDK版本:jdk1.8.0_131MySql版本:5.5。MySQL数据库系统是目前非常受欢迎和广泛使用的一款关系型数据库管理系统[7]。layui版本:2.5.7图3-1系统总体架构图3.2系统功能模块设计3.2.1系统功能模块对于模块的设计,一般分成两个阶段:结构设计阶段和过程设计阶段。结构设计来大致确定有什么模块组成,和各个模块的关系。过程设计决定各模块处理过程[8]。对系统功能进行分析,主要分为以下几大模块:用户前台模块、个人信息模块、收藏管理模块、发布管理模块、图表模块、用户管理模块、分类管理模块、文章管理模块等等。用户前台模块设计用户前台管理用户前台管理主要实现了对用户登录后进行文章的展示,同时筛选出感兴趣的分类,以及与文章做交互等等。图3-2用户前台类图用户前台管理流程分析如下:用户进入首页,在数据库查询文章信息。在数据库查询文章对应的分类信息。在数据库查询文章对应的作者信息。在数据库中查询文章对应的评论信息。用户可以对文章进行评论。结束。图3-3用户前台流程图用户信息模块设计用户信息模块主要分为用户信息和管理员对用户信息的管理两个部分。针对于用户个人是可以设置个人信息来定义基本内容。针对于管理员是用来管理所有用户的信息。图3-4用户管理类图用户信息流程分析如下:如图3-4所示,在用户管理的缩略图中,用户在用户的信息管理接口中设定了自己的基本信息和自己的头像信息,因此,参数的设定是由使用者的信息实体类别决定的;管理员利用用户管理接口来维护平台的用户信息,并对违规的用户进行禁止,因此,它依靠的是用户信息实体类。图3-5用户管理流程图收藏管理模块设计下面给出了编程技术论坛系统的收藏管理模块的类图,主要进行的是对个人收藏的文章进行管理,方便快速检索自己感兴趣的文章,不再感兴趣即可取消收藏图3-6收藏管理类图收藏管理流程分析如下:如图3-6所示,收藏管理缩略类图中,用户通过收藏管理界面进行查询个人的收藏文章的列表,参数设置包括取消收藏的设置,所以参数设置依赖收藏信息实体类;用户通过收藏管理界面进行快速找到自己感兴趣的文章,查询文章的详细信息。图3-7收藏管理流程图文章与发布管理模块设计文章管理模块主要进行的是针对用户和管理员来进行不同的管理。用户对发布信息的管理,来查询自己的发布情况。管理员则是对所有用户发布的文章进行管理。图3-8文章与发布管理类图文章管理流程分析如下:如图3-8所示,文章管理缩略类图中,用户通过文章与发布管理界面进行查询个人的发布的文章的列表,以及个人的发言情况。参数设置包括编辑与删除个人文章的设置,所以参数设置依赖文章信息实体类;管理员则对所有用户的所有帖子进行相对应的管理。图3-9文章与发布管理流程图分类管理模块设计下面给出了编程技术论坛系统的分类管理模块的类图,主要进行的是图3-10分类管理类图分类管理流程分析如下:如图3-10所示,分类管理缩略类图中,管理员通过分类管理界面进行平台属性的类目进行管理,参数设置包括增加分类、修改分类、删除的设置,所以参数设置依赖分类信息实体类。图3-11分类管理流程图注册登录模块设计该模块用于进入系统的来保存相关信息的前提,需要在此模块进行注册,有账号的可以直接登录,校验完成后则可以使用系统。图3-12注册登录类图系统登录注册流程设计,流程图如下:用户帐号密码注册,注册成功后即可登陆;登录若校验信息不正确,会提示相关信息,登录成功后进入管理系统。图3-13用户登录注册流程图消息管理模块设计消息模块在本系统中是用户来查询交互的消息的一个渠道,主要是查用户评论文章的信息,与他人回复的信息。图3-14消息类图消息流程设计,流程图如下:用户进入消息页面,查询出消息列表。图3-15消息流程图3.3软件系统数据库设计3.3.1概念模型设计概念模式是对问题领域中的对象进行抽象的描述,ER图是一种由实体和它们的关系组成的图形,便于观察和描述各种实体的关系。良好的数据库架构,不但使我们能够清楚地了解数据间的逻辑关系,而且在存取数据库时也能保持其完整性和连贯性[9]。图3-16总的实体关系图用户前台实体设计用户前台功能涉及大部分实体。有用户信息、类目信息、帖子信息和评论信息;图3-17用户信息实体图3-18评论信息实体图3-19文章信息实体图3-20分类信息实体用户信息实体设计用户信息功能涉及到的实体是用户实体。该小节实体图请参照图3-17用户实体收藏管理模块实体设计收藏管理功能涉及到的实体是用户实体、文章实体、分类实体、收藏实体。图3-21收藏信息实体其他实体设计的实体图请参照图3-17用户实体、图3-18分类实体、图3-19文章实体。文章与发布管理模块实体设计文章与发布管理功能涉及到的实体是用户实体、文章实体、分类实体。同样的实体设计的实体图请参照图3-15用户实体、图3-20分类实体、图3-17文章实体。分类管理模块实体设计分类管理功能涉及到的实体是分类实体。同样的实体设计的实体图请参照图3-20分类实体。注册登陆模块实体设计注册登陆功能涉及到的实体是用户实体。实体设计的实体图请参照图3-17用户实体。消息管理实体设计消息管理功能涉及到的实体是用户实体、文章实体、消息实体。图3-22消息信息实体其他实体设计的实体图请参照图3-17用户实体、图3-19文章实体。3.3.2逻辑模型设计数据库逻辑设计的主要工作是把一个概念结构转化为一个具体DBMS支持的数据模型。关系数据库的逻辑设计就是一套关系模式,它的功能是在软件的分析和设计中为用户提供数据的描述[10]。根据编程技术论坛系统概念模型可以转换为如下逻辑模型:用户信息(用户ID,用户名,密码,手机号码,邮箱,头像,性别,创建时间,用户类型,状态);文章信息(文章ID,用户ID,文章封面,标题,评论数量,访问量,详细内容,分类ID,创建时间);分类信息(分类ID,分类名称,创建时间);评论信息(评论ID,内容,评论的用户ID,评论的文章ID,评论时间);消息信息(消息ID,发送消息的用户ID,接收消息的用户ID,消息类型,关联的帖子ID,关联的评论ID,创建时间);收藏信息(收藏ID,用户ID,文章ID,文章的用户ID,创建时间);点赞信息(点赞ID,用户ID,评论ID,创建时间);3.3.3物理结构设计(1)用户信息保存用户和管理员的基本信息。表3-1用户信息表字段名字段描述字段类型字段长度不为null缺省值主键/外键id用户IDbigint32Y主键username用户名varchar128Ypassword密码varchar128Yemail邮箱varchar64Ytelephone手机号varchar32Nsex性别varchar3Yavatar头像varchar128Nstatus状态varchar3Ylasted登陆时间datetimeNcreated创建时间datetimeNmodified修改时间datetimeNtype类型tinyint3N用户ID是表3-1操作员信息表的主键,这是在这个表里来定位某一行的特征,具有唯一性,每张表都需要有个主键。分类信息给平台定义熟悉来设置复合平台特征的分类的类目。表3-2分类信息表字段名字段描述字段类型字段长度不为null缺省值主键/外键id分类IDbigint32Y主键name分类名称varchar128Ycreated创建时间datetimeNmodified修改时间datetimeN分类ID是表3-2分类信息表的主键,这是在这个表里来定位某一行的特征,具有唯一性,每张表都需要有个主键。收藏信息用户收藏的文章列表,保存这种状态表3-3收藏信息表字段名字段描述字段类型字段长度不为null缺省值主键/外键id收藏IDbigint32Y主键user_id用户IDbigint20Ypost_id文章IDbigint20Ycreated创建时间datetimeNmodified修改时间datetimeN收藏ID是表3-3收藏信息表的主键,这是在这个表里来定位某一行的特征,具有唯一性,每张表都需要有个主键。消息信息保存用户收到的信息。表3-4消息信息表字段名字段描述字段类型字段长度不为null缺省值主键/外键id收藏IDbigint32Y主键from_user_id发送消息的用户IDbigint20Nto_user_id接收消息的用户IDbigint20Npost_id文章IDbigint20Ncomment_id评论IDbigint20Ntype类型tinyint20content内容text128Ncreated创建时间datetimeNmodified修改时间datetimeN消息ID是表3-4消息信息表的主键,这是在这个表里来定位某一行的特征,具有唯一性,每张表都需要有个主键。评论信息保存用户的评论信息。表3-5评论信息表字段名字段描述字段类型字段长度不为null缺省值主键/外键id评论IDbigint32Y主键content内容text2000Npost_id文章IDbigint20Nuser_id用户IDbigint20Nlove_users同意人数int30Ncreated创建时间datetimeNmodified修改时间datetimeN评论ID是表3-5评论信息表的主键,这是在这个表里来定位某一行的特征,具有唯一性,每张表都需要有个主键。文章信息保存是文章的信息表3-6文章信息表字段名字段描述字段类型字段长度不为null缺省值主键/外键id评论IDbigint32Y主键content内容text2000Ntitle标题varchar128Ncategory_id分类IDbigint32Yuser_id用户IDbigint20Nlook_count访问量int11Ncomment_count评论数量int11Npost_image文章封面varchar128Ncreated创建时间datetimeNcreatedmodified修改时间datetimeNmodified文章ID是表3-6文章信息表的主键,这是在这个表里来定位某一行的特征,具有唯一性,每张表都需要有个主键。4项目具体实现4.1项目总体结构在进行系统开发时,要充分利用先进的软件技术,以保证整个系统的长期发展[11]。本编程技术论坛系统课题项目按体系划分,分为前端layui,使用模板引擎Freemarker和后端springboot、MybatisPlus、redis等等。4.2项目代码目录结构图4-1代码结构图4.3注册登录模块具体实现登陆界面效果图操作人员使用帐号口令登录,按用户帐号和管理员帐号进行登录,使用MD5对帐号进行加密,并与库里内的口令进行比对,确认口令符合即可登录[12]。用户登录成功后即可浏览文章,与之做交互,以及管理自己的信息,管理员负责查看数据以及管理好系统的基本部分。图4-2系统登录界面效果图 注册功能后端代码:int
count
=
this.count(new
QueryWrapper<User>()
.eq("email",
user.getEmail())
.or()
.eq("username",
user.getUsername())
);
if(count
>
0)
return
Result.fail("用户名或邮箱已被占用");
User
result
=
new
User();
result.setUsername(user.getUsername());
result.setPassword(SecureUtil.md5(user.getPassword()));
result.setEmail(user.getEmail());
result.setAvatar(Constant.DEFAULT_IMAGE);
result.setStatus("0");
result.setCreated(new
Date());
result.setSex(Constant.DEFAULT_SEX);
userMapper.insert(result);
return
Result.success();
登陆功能后端代码:("登录人邮箱{},登录人密码{}",email,password);
if(StrUtil.isEmpty(email)
||
StrUtil.isBlank(password))
{
return
Result.fail("邮箱或密码不能为空");
}
Result
result
=
userService.login(email,password);
User
data
=
(User)
result.getData();
String
msg
=
result.getMsg();
if(!msg.equals("操作成功")){
return
Result.fail(msg);
}
/*
如果是admin用户
*/
if(Constant.ADMIN_TYPE.equals(data.getType())){
return
Result.success().action("/admin/goAdmin");
}
return
result.action("/index");
@Override
public
Result
login(String
email,
String
password)
{
User
user
=
this.getOne(new
QueryWrapper<User>().eq("email",
email));
if(user
==
null)
{
return
Result.fail("邮箱不存在");
}
if(!user.getPassword().equals(SecureUtil.md5(password))){
return
Result.fail("密码错误");
}
if("1".equals(user.getStatus())){
return
Result.fail("该账号已被封禁");
}
user.setLasted(new
Date());
this.updateById(user);
HttpSession
session
=
req.getSession();
session.setAttribute("user",
user);
return
Result.success(user);
}
4.4用户前台模块具体实现界面效果图主要用于用户浏览文章,并与文章做交互。图4-3首页管理界面图图4-4详情界面图逻辑代码:SELECT
p.*,
u.id
AS
authorId,
u.username
AS
authorName,
u.avatar
AS
authorAvatar,
c.id
AS
categoryId,
AS
categoryName
FROM
article
p
LEFT
JOIN
user
u
ON
p.user_id
=
u.id
LEFT
JOIN
category
c
ON
p.category_id
=
c.id
${ew.customSqlSegment}
查询与文章相关的信息System.err.println("进入详情~~~");
PostVo
vo
=
postService.selectOnePost(id);
postService.putLookCount(vo);
/*
1分页
2文章id
3用户id
4按时间排序
*/
IPage<CommentVo>
results
=
commentService.paing(getPage(),
id,null,"created");
Long
authorId
=
vo.getAuthorId();
User
user
=
userMapper.selectById(authorId);
req.setAttribute("authorInfo",user);
/*
这个是传【详情页】的上部分信息,通过文章id来
*/
req.setAttribute("post",vo);
req.setAttribute("currentCategoryId",
vo.getCategoryId());
/*
这个传【评论】的信息,为什么还用pageData,因为做分页
*/
req.setAttribute("pageData",results);
return
"/post/detail";
4.5用户信息模块具体实现用户可以在本界面查看并维护自己的信息界面效果图:图4-5个人信息管理界面图后台逻辑部分代码:if(StringUtils.isBlank(user.getAvatar())){
/*默认头
*/
user.setAvatar(Constant.DEFAULT_IMAGE);
}
if(StringUtils.isBlank(user.getTelephone())){
user.setTelephone(null);
}
if(StringUtils.isBlank(user.getStatus())){
user.setStatus("0");
}
/*
这个是新增
*/
if(user.getId()
==
null){
User
checkUserName
=
userMapper.selectOne(new
LambdaQueryWrapper<User>()
.eq(User::getUsername,
user.getUsername()));
if(checkUserName
!=
null){
return
Result.fail("用户名不可以重复");
}
User
checkEmail
=
userMapper.selectOne(new
LambdaQueryWrapper<User>()
.eq(User::getEmail,
user.getEmail()));
if(checkEmail
!=
null){
return
Result.fail("邮箱不可以重复");
}
user.setPassword(SecureUtil.md5(user.getPassword()));
userMapper.insert(user);
}else
{
int
count
=
userService.count(new
QueryWrapper<User>()
.eq("username",
user.getUsername())
.ne("id",
user.getId()));
if(count
>
0)
{
return
Result.fail("该昵称已被占用");
}
int
count2
=
userService.count(new
QueryWrapper<User>()
.eq("email",
user.getEmail())
.ne("id",
user.getId()));
if(count2
>
0)
{
return
Result.fail("该邮箱已被占用");
}
userService.updateById(user);
}
HttpSession
session
=
req.getSession();
session.setAttribute("user",user);
return
Result.success().action("/userControl/set");
4.6收藏管理模块具体实现收藏管理模块主要是查询自己收藏过的文章,进而快速查到自己感兴趣的文章而阅读。界面效果图:图4-6收藏管理界面图后台逻辑部分代码:这是查询收藏列表的代码;("页码{},页数{}",page,limit);
HttpSession
sessionUser
=
req.getSession();
Page
pages
=
new
Page(page,limit);
User
user
=
(User)
sessionUser.getAttribute("user");
List<CollectionArticle>
CollectionArticles
=
collectionMapper.selectList(
new
LambdaQueryWrapper<CollectionArticle>()
.eq(CollectionArticle::getUserId,
user.getId()));
if(CollectionUtils.isEmpty(CollectionArticles)){
return
Result.success(null,0);
}
IPage<Post>
result
=
postService.page(pages,
new
QueryWrapper<Post>()
.in("id",CollectionArticles.stream().
map(CollectionArticle::getPostId).collect(Collectors.toList()))
);
List<Post>
collect
=
result.getRecords().stream().peek(e
->
{
e.setCategoryNameInfo(categoryMapper.selectById(e.getCategoryId()).getName());
e.setUserName(userMapper.selectById(e.getUserId()).getUsername());
e.setCollectCreated(collectionMapper.selectList(
new
LambdaQueryWrapper<CollectionArticle>()
.eq(CollectionArticle::getPostId,e.getId())).get(0).getCreated());
}).collect(Collectors.toList());
result.setRecords(collect);
return
Result.success(collect,
Math.toIntExact(result.getTotal()));
4.7发布管理模块具体实现用户可查询到个人的发布文章的情况及个人的发言状况。界面效果图:图4-7发布管理界面图后台逻辑部分代码:User
user
=
userService.getById(id);
List<Post>
posts
=
postService.list(new
QueryWrapper<Post>()
.eq("user_id",
id)
.orderByDesc("created")
);
List<CommentsAndPostVo>
comments
=
commentService.selectCommentsInfo(user.getId());
req.setAttribute("comments",comments);
req.setAttribute("user1",
user);
req.setAttribute("posts",
posts);
return
"/userControl/userH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海旅游高等专科学校《电子商务概论》2025-2026学年期末试卷
- 曲革菌菌病预防措施培训指南
- 2026年成人高考人力资源管理(本科)仿真单套试卷
- 如何构建网络图书管理模式
- COPD 患者输氧的适宜选择
- 《根据规律进行预测》教案-2025-2026学年苏科版(新教材)小学信息技术四年级下册
- 2025-2026学年人教版七年级信息技术上册基础操作测试卷(含答案)
- 圆锥圆柱的题目及答案
- phf建筑施工方案(3篇)
- 光电玻璃施工方案(3篇)
- 三年级下册语文期末复习教案参阅五篇
- 初中体育-篮球绕杆运球教学课件设计
- 五星级酒店客房配置设计要求
- 2023年江西环境工程职业学院高职单招(数学)试题库含答案解析
- GB/T 1420-2015海绵钯
- 《物理(下册)》教学课件-第六章-光现象及其应用
- 焊接技能综合实训-模块六课件
- 苯氨基与硝基化合物中毒
- 下睑内翻、倒睫患者的护理课件
- 联苯二氯苄生产工艺及产排污分析
- SPG-12SF6负荷开关说明书
评论
0/150
提交评论