@TOC
ssm185大学学术交流论坛+vue
第1章 绪论
1.1背景及意义
系统管理也都将通过计算机进行整体智能化操作,对于大学学术交流论坛所牵扯的管理及数据保存都是非常多的,例如人中心、、用户管理、系统公告管理、跳蚤市场管理、申请板主管理、热门帖管理、版主推荐帖管理、主板块管理、留言板管理、我的收藏管理、订单管理等,这给管理者的工作带来了巨大的挑战,面对大量的信息,传统的管理系统,都是通过笔记的方式进行详细信息的统计,后来出现电脑,通过电脑输入软件将纸质的信息统计到电脑上,这种方式比较传统,而且想要统计数据信息比较麻烦,还受时间和空间的影响,所以为此开发了大学学术交流论坛;为用户提供了一个大学学术交流论坛平台,方便管理员查看及维护,并且可以通过需求进行设备信息内容的编辑及维护等;且还能节省用户很多时间,所以开发大学学术交流论坛给管理者带来了很大的方便,同时也方便管理员对用户信息进行处理。
本论文大学学术交流论坛主要牵扯到的程序,数据库与计算机技术等。覆盖知识面大,可以大大的提高系统人员工作效率。
1.2 国内外研究概况
随着国内经济形势的不断发展,中国互联网进入了一个难得的高峰发展时期,这使得中外资本家纷纷转向互联网市场。 然而,许多管理领域的不合理结构,人员不足以及市场管理需求的增加使得更多的人具备了互联网管理的意识。
在当今高度发达的信息中,信息管理改革已成为一种更加广泛和全面的趋势。 “大学学术交流论坛”是基于Mysql数据库,在JSP程序设计的基础上实现的。为确保中国经济的持续发展,信息时代日益更新,服务业仍在蓬勃发展。同时,随着信息社会的快速发展,各种管理系统面临着越来越多的数据需要处理,如何用方便快捷的方式使管理者在广阔的数据海洋里面查询、存储、管理和共享有效的数据信息,对我们的学习,工作和生活具有重要的现实意义。因此,国内外学术界对此进行了深入而广泛的研究,一个新的研究领域——大学学术交流论坛诞生了。
1.3 研究的内容
目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用。在对网络工具的认知程度上,较为传统的office软件等仍是人们使用的主要工具,而相对全面且专业的信息管理软件仍没有得到大多数人的了解或认可。本选题则旨在通过标签分类管理等方式,实现大学学术交流论坛的各种功能,从而达到对大学学术交流论坛的管理。
详细内容介绍,将在以下六章中详细阐述:
第一章、绪论,介绍了研究课题选择的背景及意义、研究现状,简要介绍了本文的章节内容。
第二章、引入技术知识,通过引入关键技术进行开发,向系统中涉及直观表达的技术知识。
第三章、重点分析了系统的分析,从系统强大的供需市场出发,对系统开发的可行性,系统流程以及系统性能和功能进行了探讨。
第四章、介绍了系统的详细设计方案,包括系统结构设计和数据库设计。
第五章、系统设计的实现,通过对系统功能设计的详细说明,论证了系统的结构。
第六章、系统的整体测试,评判系统是否可以上线运行。
Keywords: Student Management System, JAVA, Mysql 22
目 录
第2章 相关技术
2.1 JSP技术介绍
JSP技术本身是一种脚本语言,但它的功能是十分强大的,因为它可以使用所有的JAVA类。当它与JavaBeans 类进行结合时,它可以使显示逻辑和内容分开,这就极大的方便了用户的需求。JavaBeans 可以对JSP技术的程序进行扩展,从而形成新的应用程序,而且JavaBeans的代码可以重复使用,所以就便于对程序进行维护。JavaBean 组件有内部的接口,可以帮助不同的人对系统进行访问。1999年,Sun微系统公司正式推出了JSP技术,这是一种动态技术,是基于整个JAVA体系和JavaServlet提出的,是具有普遍适用性的WEB技术,也是本系统设计的核心技术之一。JSP技术能够极大的提高WEB网页的运行速度。这些内容会与脚本结合,并且由JavaBean和Servlet组件封装。所有的脚本均在服务器端运行,JSP引擎会针对客户端所 提交的申请进行解释,然后生成脚本程序和JSP标识,然后通过HTML/XML页面将结果反馈给浏览器。因此,开发人员亲自设计最终页面的格式和HTML/XML标识时,完全可以使用JSP技术。
所以结合记账系统系统的需求及功能模块的实现,使用JSP技术是最合适的,而且JSP的拓展性比较好,对于系统在后期使用过程中可以不断对系统功能进行拓展,是系统更完成,更方便的满足用户管理。
2.2 JAVA简介
Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(Enterprise JavaBeans)的全面支持,java servlet API,JSP(java server pages),和XML技术。JAVA语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,开发者只需要知道一些概念就能够编写出一些应用程序。Java程序相对较小,其代码能够在小机器上运行。Java是一种计算机编程语言,具有封装、继承和多态性三个主要特性,广泛应用于企业Web应用程序开发和移动应用程序开发。
Java语言和一般编译器以及直译的区别在于,Java首先将源代码转换为字节码,然后将其转换为JVM的可执行文件,JVM可以在各种不同的JVM上运行。因此,实现了它的跨平台特性。虽然这使得Java在早期非常缓慢,但是随着Java的开发,它已经得到了改进。
2.3 SSM框架
当今流行的“SSM组合框架”是Spring + SpringMVC + MyBatis的缩写,受到很多的追捧,“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架,通常更简单的数据源。Spring属于一个轻量级的反转控制框架(IoC),但它也是一个面向表面的容器(AOP)。SpringMVC常常用于控制器的分类工作模式,与模型对象分开,程序对象的作用与自动取款机进行处理。这种解耦治疗使整个系统的个性化变得更加容易。MyBatis是一个良好的可持续性框架,支持普通SQL查询,同时允许对存储过程的高级映射进行数据的优化处理。大型Java Web应用程序的由于开发成本太高,开发后难以维护和开发过程中一些难以解决的问题,而采用“SSM组合框架”,它允许建立业务层次结构,并为这个问题提供良好的解决方案。
2.4 Tomcat服务器
Tomcat属于一种轻型的服务器,所以说在中小企业中并不具有普适性。但是当程序员需要开发或调试JSP 程序时,则通常会将该服务器作为首选。对于一个仅具有计算机基础知识的人来说,计算机系统具有一个好的Apache服务器,可以很好的对HTML 页面进行访问。Tomcat 虽然是Apache的扩展,但是它们都是可以独立运行的,二者是不互相干扰的。当配置正确的时候,Apache服务器为HTML 页面的运行提供技术支持,Tomcat 的任务则是运行Servle和JSP 页面。Tomca也具有一定的HTML页面处理功能。
2.5 MySQL数据库
Mysql的语言是非结构化的,用户可以在数据上进行工作,并且学起来比较容易,功能大,储存量也大,Mysql主要应用于数据的查询、编辑,现在普遍存在的关系数据库有很多,并得到了普遍的应用。使用Mysql数据库在应用编辑中带来了方便,可以对数据进行广泛地查询,Mysql数据库的应用并不需要用户了解其存储的方式,更不用掌握数据存放的方法,Mysql数据库的灵活性较强,功能也较强大,多数情况下,在其他程序中实现某功能需要编写一大堆代码,而在Mysql数据库中只需要一小段代码就可以实现功能,所以,Mysql数据库的语言较简洁。
数据表的建立,可以对数据表中的数据进行调整,数据的重新组合及重新构造,保证数据的安全性。介于数据库的功能强大等特点,本系统的开发主要应用了Mysql进行对数据的管理。
第3章 系统分析
3.1 需求分析
大学学术交流论坛主要是为了提高工作人员的工作效率和更方便快捷的满足用户,更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户的可操作性,遵循开发的系统优化的原则,经过全面的调查和研究。
系统所要实现的功能分析,对于现在网络方便的管理,系统要实现用户可以直接在平台上进行查看自己所有数据信息,根据自己的需求可以进行信息的提交,这样既能节省用户的时间,不用在像传统的方式,需要查询、了解信息都需要去寻找相关负责人了解相关数据信息,耽误时间,由于很多用户的时间的原因,没有办法随时随地进行相应管理,真的很难去满足用户的各种需求。所以大学学术交流论坛的开发不仅仅是能满足用户的需求,还能提高管理员的工作效率,减少原有不必要的工作量。
3.2 系统可行性分析
3.2.1技术可行性:技术背景
系统的开发环境和配置都是可以自行安装的,系统使用JSP开发工具,使用比较成熟的Mysql数据库进行对系统用户和管理员之间相关的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得系统运行更具有稳定性和安全性,从而完成实现系统的开发。
(1)硬件可行性分析
大学学术交流论坛及信息分析的设计对于所使用的计算机没有什么硬性的要求,计算机只要可以正常的使用进行代码的编写及页面设计就可行,主要是对于服务器有些要求,对于平台搭建完成要上传的服务器是有一定的要求的,服务器必须选择安全性比较高的,然后就是在打开系统必须顺畅,不能停顿太长时间;性价比高;安全性高。
(2)软件可行性分析
开发整个系统使用的是云计算,流量的可扩展性和基于流量的智能调整云计算的优点就是流量的可扩展性和基于流量的智能调整,保障系统的安全及数据信息的及时备份。
因此,我们从两个方面进行了可行性研究,可以看出系统的开发没有问题。
3.2.2经济可行性
大学学术交流论坛的开发之前所做的市场调研及其他管理相关的系统,是没有任何费用的,都是通过开发者自己的努力,所有的工作的都是自己亲力亲为,在碰到自己比较难以解决的问题,大多是通过同学和指导老师的帮助进行相关信息的解决,所以对于系统的开发在经济上是完全可行的,没有任何费用支出的。
使用比较成熟的技术,系统是基于JAVA的开发,采用Mysql数据库。所以系统在开发人力、财力要求不高,具有经济可行性。
3.2.3操作可行性:
可操作性主要是对系统设计完成后,用户的使用体验度,通过界面导航菜单可以简单明了地进行查看所需的信息内容。对于系统的操作,不需要专业人员都可以直接进行功能模块的操作管理,所以在系统的可操作性是完全可以的。本系统的操作使用的也是界面窗口进行登录,所以操作人员只要会简单的电脑操作就完全可以的。
3.3 项目设计目标与原则
1、关于大学学术交流论坛的基本要求
(1)功能要求:人中心、、用户管理、系统公告管理、跳蚤市场管理、申请板主管理、热门帖管理、版主推荐帖管理、主板块管理、留言板管理、我的收藏管理、订单管理等功能模块。
(2)性能:在不同操作系统上均能无差错实现在不同类型的用户登入相应界面后能不出差错、方便地进行预期操作。
(3)安全与保密要求:用户都必须通过身份验证才能进入系统,并且用户的权限也需要根据用户的类型进行限定。
(4)环境要求:支持多种平台,可在Windows系列、Vista系统等多种操作系统下使用。
2、开发目标
大学学术交流论坛的主要开发目标如下:
(1)实现管理系统信息关系的系统化、规范化和自动化;
(2)减少维护人员的工作量以及实现用户对信息的控制和管理。
(3)方便查询信息及管理信息等;
(4)通过网络操作,改善处理问题的效率,提高人员利用率;
(5)考虑到用户多样性特点,要求界面简单,操作简便。
3、设计原则
本系统采用JAVA技术,Mysql数据库开发,充分保证了系统稳定性、完整性。
大学学术交流论坛的设计与实现的设计思想如下:
1、操作简便、界面良好:简单明了的页面布局,方便查询相关信息
2、即时可见:对系统信息的处理将立马在对应地点可以查询到,实现了“即时发布、即时见效”的功能。
3、功能的完善性:可以对用户所能用到的各个方面的功能模块的添加、修改、维护操作。
3.4系统流程分析
3.4.1操作流程
管理员想进入系统,首先进入系统登录界面,通过正确的用户名、密码,用户名和密码输入完成后,系统会检查登录信息,信息正确,然后输入相应的功能界面,提示信息错误,登录失败。系统操作流程如图3-1所示。
图3-1操作流程图
3.4.2添加信息流程
添加信息,编号系统使用自动编号模式,没有用户填写,管理员添加信息输入信息,系统将自动确认的信息和数据,验证的成功是有效的信息添加到数据库,信息无效,重新输入信息。添加信息流程如图3-2所示。
图3-2添加信息流程图
3.4.3删除信息流程
管理员选择要删除的信息并单击Delete按钮,系统提示是否删除信息。如果用户想要删除信息,系统将删除信息。系统数据库删除信息。删除信息流程图如图3-3所示。
图3-3删除信息流程图
第4章 系统设计
4.1 系统体系结构
架构设计的目的是反映一个结构和其他元素之间的关系,抽象,通常用于指导大型软件系统。将一个巨大的任务细分为多个小任务的过程是系统架构的总体设计。完成小任务后,整个任务就可以完成了。具体的实现过程是分解系统,分析各部分的功能、接口和逻辑关系。页面是一个一个模块组建而成的,层次结构分明,思想运用的是面向对象,一个实体对应一个数据类型,还要对每个数据类添加一个实施类。
大学学术交流论坛的实现主要包括教用户、版主和管理员三个用户角色,由于系统用户角色不同所使用的功能模块相应不同,管理员根据需求对系统功能模块进行维护管理操作。
这些功能可以充分满足大学学术交流论坛的需求。此系统功能较为全面如下图系统功能结构如图4-1所示。
图4-1系统功能结构图
4.2 开发流程设计
系统流程的分析是通过调查系统所涉及问题的识别、可行性可操作性、系统分析处理能力等具体环节来调节、整理系统的设计方案以确保系统能达到理想的状态。这些操作都要进行一系列的流程测试保证数据库的完整,以把控系统所涉及信息管理的安全、保证信息输入、输出正常转换。然后,通过实际操作完成流程图的绘制工作。
大学学术交流论坛的开发对管理模块和系统使用的数据库进行分析,编写代码、系统测试,如图4-2所示。
图4-2开发系统流程图
4.3 数据库设计原则
学习编程,我们都知道数据库设计是基于需要设计的系统功能,我们需要建立一个数据库关系模型,用于存储数据信息,这样当我们在程序中时,就没有必要为程序页面添加数据,从而提高系统的效率。数据库存储了很多信息,可以说是信息管理系统的核心和基础,数据库还提供了添加、删除、修改和检查,使系统能够快速找到自己想要的信息,而不是在程序代码中找到。数据库中信息表的每个部分根据一定的关系精确地组合,排列和组合成数据表。
通过大学学术交流论坛的功能进行规划分成几个实体信息,实体信息将通过ER图进行说明,本系统的主要实体图如下:
管理员信息实体属性图如图4-3所示。
图4-3管理员信息实体属性图
跳蚤市场信息息实体属性图如图4-4所示。
图4-4跳蚤市场信息实体属性图
热门帖信息实体属性图如图4-5所示。
图4-5热门帖信息实体属性图
4.4 数据表
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。
表4-1:address信息表
列名 | 数据类型 | 长度 | 约束 |
---|---|---|---|
Id | bigint | 20 | PRIMARY KEY |
userid | bigint | 20 | DEFAULT NULL |
address | varchar | 200 | DEFAULT NULL |
name | varchar | 200 | DEFAULT NULL |
phone | varchar | 200 | DEFAULT NULL |
isdefault | varchar | 200 | DEFAULT NULL |
表4-2:bankuaimingcheng信息表
列名 | 数据类型 | 长度 | 约束 |
---|---|---|---|
id | bigint | 20 | PRIMARY KEY |
jiaoshileixbankuaimingchenging | varchar | 200 | DEFAULT NULL |
表4-3:banzhu信息表
列名 | 数据类型 | 长度 | 约束 |
---|---|---|---|
id | bigint | 20 | PRIMARY KEY |
banzhuzhanghao | varchar | 200 | DEFAULT NULL |
banzhuxingming | varchar | 200 | DEFAULT NULL |
mima | varchar | 200 | DEFAULT NULL |
xingbie | varchar | 200 | DEFAULT NULL |
shouji | varchar | 200 | DEFAULT NULL |
youxiang | varchar | 200 | DEFAULT NULL |
touxiang | varchar | 200 | DEFAULT NULL |
表4-4:banzhutuijiantie信息表
列名 | 数据类型 | 长度 | 约束 |
---|---|---|---|
id | bigint | 20 | PRIMARY KEY |
biaoti | varchar | 200 | DEFAULT NULL |
fabushijian | varchar | 200 | DEFAULT NULL |
jiaoshitupian | varchar | 200 | DEFAULT NULL |
xingming | varchar | 200 | DEFAULT NULL |
thumbsupnum | int | 11 | DEFAULT NULL |
crazilynum | int | 11 | DEFAULT NULL |
clicknum | int | 11 | DEFAULT NULL |
表4-5:discussbanzhutuijiantie信息表
列名 | 数据类型 | 长度 | 约束 |
---|---|---|---|
id | bigint | 20 | PRIMARY KEY |
refid | bigint | 200 | DEFAULT NULL |
userid | bigint | 20 | DEFAULT NULL |
nickname | bigint | 20 | DEFAULT NULL |
表4-6:discussrementie信息表
列名 | 数据类型 | 长度 | 约束 |
---|---|---|---|
id | bigint | 20 | PRIMARY KEY |
refid | bigint | 20 | DEFAULT NULL |
userid | bigint | 20 | DEFAULT NULL |
nickname | varchar | 200 | DEFAULT NULL |
表4-7:discusstiaozaoshichang信息表
列名 | 数据类型 | 长度 | 约束 |
---|---|---|---|
id | bigint | 20 | PRIMARY KEY |
refid | bigint | 20 | DEFAULT NULL |
userid | bigint | 20 | DEFAULT NULL |
nickname | varchar | 200 | DEFAULT NULL |
表4-8:discusszhubankuai信息表
列名 | 数据类型 | 长度 | 约束 |
---|---|---|---|
id | bigint | 20 | PRIMARY KEY |
refid | bigint | 20 | DEFAULT NULL |
userid | bigint | 20 | DEFAULT NULL |
nickname | varchar | 200 | DEFAULT NULL |
表4-9:fatiebiaobing信息表
列名 | 数据类型 | 长度 | 约束 |
---|---|---|---|
id | bigint | 20 | PRIMARY KEY |
zhanghao | touxiang | 200 | DEFAULT NULL |
xingming | touxiang | 200 | DEFAULT NULL |
touxiang | touxiang | 200 | DEFAULT NULL |
第5章 系统实现
5.1登录界面
用户后台登录,对于登录窗口是一个系统功能操作的安全门,如果没有这个登录安全门,任何人都可以进入到系统操作平台进行对功能模块的操作,那么系统的数据信息将会出现错乱,不同用户拥有不同的管理权限,所以对于登录窗口是系统实现的重要窗口,用户通过输入自己的用户名和密码,信息填写完成,系统对用户输入的信息进行在线匹配,匹配完成后登录成功,进入到系统操作界面,进行相对应的功能模块的修改维护等操作,如图5.1所示:
图5.1 系统登陆页面设计
5.2前台功能模块
通过网站页面可以查看首页、跳蚤市场、主版块、学术论坛、留言反馈、个人中心、后台管理、购物车等功能模块,进行相对应操作,如图5-2所示。
图5-2 用户主页面
主版块详情:通过列表可以进行获取账号、姓名、内容、点赞数、图片等信息,进行在线查看或在线评论操作,如图5-3所示。
图5-3主版块详情页面
商品信息:通过页面可以进行查看商品名称、价格、商品类型、新旧程度、价格、账号、姓名、点击次数、点赞数量等信息,进行查看、点我收藏、加入购物车或立即购买操作,如图5-4所示。
图5-4商品信息页面
学术论坛:通过页面可以进行在线查看标题、发布时间等信息,进行查看论坛或发布帖子操作,如图5-5所示。
图5-5学术论坛页面
留言反馈:通过页面可以获取留言内容等信息,进行在线提交留言信息操作,如图5-6所示。
图5-6留言反馈界面
个人中心:通过页面可以进行获取个人中心、我的发布、我的订单、我的地址、我的收藏等功能模块,进行相对应操作,个人中心:通过页面可以更新个人信息等信息,进行在线更新个人信息操作等,如图5-7所示。
图5-7个人中心界面
我的发布:通过页面可以进行查看标题、发布时间等信息,进行在线查看修改或删除操作,如图5-8所示。
图5-8我的发布界面
用户通过自己的用户中心,通过我的订单进行在线查看自己的订单信息,也可对已提交的订单进行在线退款等操作,通过订单列表查看自己购买的订单编号、商品、价格、数量、总价、地址、电话、收货人等信息,用户也可通过订单状态进行查看订单是否发货,或者根据订单的信息情况进行选择收货等操作,如图5-9所示。
图5-9我的订单界面
5.3 用户后台功能模块
用户后台通过登录进入到系统操作界面,可以获取个人中心、跳蚤市场管理、申请板主管理、热门帖管理、版主推荐帖管理、主板块管理、留言板管理、我的收藏管理、订单管理等功能模块,进行相对应操作。
个人信息:通过页面可以进行在线输入账号、性别、姓名、手机、身份证、照片等信息,进行修改操作,如图5-10所示。
图5-10个人信息界面图
跳蚤市场管理:通过列表可以获取商品名称、商品类型、图片、新旧程度、价格、账号、姓名、价格、审核回复、审核状态等信息,进行查看详情、新增、查看评论操作,并通过输入商品名称、商品类型进行查询,如图5-11所示。
图5-11跳蚤市场界面图
申请版主管理:通过列表可以获取标题、介绍、申请原因、申请模块、账号、姓名、头像、审核、回复、审核状态等信息,进行在线查看详情、新增、修改或删除,如图5-12所示。
图5-12审核版主管理界面图
热门贴管理:通过列表可以进行查看标题、发布时间、图片、账号、姓名等信息,进行在线查看详情或查看评论操作,如图5-13所示。
图5-13热门贴管理界面图
版主推荐贴管理:通过列表可以进行查看标题、发布时间图片、账号、姓名等信息,进行在线查看详情或查看评论操作,如图5-14所示。
图5-14版主推荐帖管理界面图
主版块管理:通过列表可以进行查看标题、版块名称、发布时间、图片、账号、姓名、头像等信息,进行在线查看详情或查看评论操作,如图5-15所示。
图5-15主版块管理界面图
留言板管理:通过列表可以进行查看用户名、留言内容、回复内容等信息,进行在线查看详情或在线回复操作,如图5-16所示。
图5-16留言板界面图
我的收藏管理:通过列表可以进行查看收藏名称、收藏图片等信息,进行在线查看详情或、新增、查看修改、删除操作,如图5-17所示。
图5-17我的收藏管理界面图
订单管理,管理员可以根据自己的需求进行系统所有的订单信息进行在线查看,管理员可以根据条件进行选择未付款订单、已付款订单、未收货订单、已完成订单等进行条件查看相应的订单数据并进行订单处理,通过订单列表进行查看系统已有的订单编号、商品名称、商品图片、购买数量、价格、折扣价格、总价格、支付类型、状态、地址、电话、收货人等信息,并且根据订单状态进行订单处理操作,对于订单的状态,可以在线对订单信息进行选择发货等操作,如图5-18所示。
图5-18订单管理界面图
5.4管理员功能模块
管理员通过后台通过登录进入到系统操作界面,可以获取个人中心、、用户管理、系统公告管理、跳蚤市场管理、申请板主管理、热门帖管理、版主推荐帖管理、主板块管理、留言板管理、我的收藏管理、订单管理等功能模块,进行相对应操作。
用户管理:通过页面可以进行在线输入账号、性别、姓名、手机、身份证、照片等信息,进行在线查看详情、新增、修改或删除操作,如图5-19所示。
图5-19用户管理界面图
跳蚤市场管理:通过列表可以获取商品名称、商品类型、图片、新旧程度、价格、账号、姓名、价格、审核回复、审核状态等信息,进行查看详情、新增、查看评论、在线审核操作,如图5-20所示。
图5-20跳蚤市场界面图
版主管理:通过列表可以获取版主账号、版主姓名、性别、手机、邮箱、头像等信息,进行查看详情、新增、修改或删除操作,并通过输入版主姓名进行查询,如图5-21所示。
图5-21版主管理界面图
申请版主管理:通过列表可以获取标题、介绍、申请原因、申请模块、账号、姓名、头像、审核、回复、审核状态等信息,进行在线查看详情、新增、修改或删除并进行在线审核操作,如图5-22所示。
图5-22申请版主管理界面图
用户荣誉榜管理:通过列表可以进行查看账号、姓名、头像等信息,进行在线查看详情、新增或查看修改或删除操作,如图5-23所示。
图5-23用户荣誉榜管理界面图
热门贴管理:通过列表可以进行查看标题、发布时间、图片、账号、姓名等信息,进行在线查看详情或、新增、修改或删除。并进行查看评论操作,如图5-24所示。
图5-24热门贴管理界面图
版块名称管理:通过列表可以进行查看版块名称等信息,进行在线查看详情或新增、修改或删除操作,如图5-25所示。
图5-25版块名称管理界面图
5.5版主功能模块
版主通过后台通过登录进入到系统操作界面,可以获取个人中心、跳蚤市场管理、发帖标兵管理、用户荣誉管理、热门帖管理、版主推荐帖管理、主板块管理、我的收藏管理等功能模块,进行相对应操作。
个人信息:通过页面可以进行在线输入账号、性别、姓名、手机、身份证、照片等信息,进行修改操作,如图5-26所示。
图5-27个人信息界面图
跳蚤市场管理:通过列表可以获取商品名称、商品类型、图片、新旧程度、价格、账号、姓名、价格、审核回复、审核状态等信息,进行查看详情、新增、查看评论、在线审核操作,如图5-28所示。
图5-28跳蚤市场界面图
用户荣誉榜管理:通过列表可以获取账号、姓名、头像等信息,进行查看详情、新增、修改操作,并通过输入账号进行查询,如图5-29所示。
图5-29用户荣誉榜管理界面图
版主推荐贴管理:通过列表可以进行查看标题、发布时间、图片、账号、姓名等信息,进行在线查看详情或、新增、修改或删除。并进行查看评论操作,如图5-30所示。
图5-30版主推荐贴管理界面图
主版块管理:通过列表可以进行查看标题、版块名称、发布时间、图片、账号、姓名、头像等信息,进行在线查看详情或查看评论操作,如图5-31所示。
图5-31主版块管理界面图
我的收藏管理:通过列表可以进行查看收藏名称、收藏图片等信息,进行在线查看详情或、新增、查看修改、删除操作,如图5-32所示。
图5-32我的收藏管理界面图
ShenqingbanzhuServiceImpl.java
package com.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.List;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils;
import com.utils.Query;
import com.dao.ShenqingbanzhuDao;
import com.entity.ShenqingbanzhuEntity;
import com.service.ShenqingbanzhuService;
import com.entity.vo.ShenqingbanzhuVO;
import com.entity.view.ShenqingbanzhuView;
@Service("shenqingbanzhuService")
public class ShenqingbanzhuServiceImpl extends ServiceImpl<ShenqingbanzhuDao, ShenqingbanzhuEntity> implements ShenqingbanzhuService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<ShenqingbanzhuEntity> page = this.selectPage(
new Query<ShenqingbanzhuEntity>(params).getPage(),
new EntityWrapper<ShenqingbanzhuEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<ShenqingbanzhuEntity> wrapper) {
Page<ShenqingbanzhuView> page =new Query<ShenqingbanzhuView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public List<ShenqingbanzhuVO> selectListVO(Wrapper<ShenqingbanzhuEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
@Override
public ShenqingbanzhuVO selectVO(Wrapper<ShenqingbanzhuEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<ShenqingbanzhuView> selectListView(Wrapper<ShenqingbanzhuEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public ShenqingbanzhuView selectView(Wrapper<ShenqingbanzhuEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
}
MessagesController.java
package com.controller;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;
import com.entity.MessagesEntity;
import com.entity.view.MessagesView;
import com.service.MessagesService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 留言板
* 后端接口
* @author
* @email
* @date 2021-04-10 13:21:45
*/
@RestController
@RequestMapping("/messages")
public class MessagesController {
@Autowired
private MessagesService messagesService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,MessagesEntity messages,
HttpServletRequest request){
if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
messages.setUserid((Long)request.getSession().getAttribute("userId"));
}
EntityWrapper<MessagesEntity> ew = new EntityWrapper<MessagesEntity>();
PageUtils page = messagesService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, messages), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,MessagesEntity messages, HttpServletRequest request){
if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
messages.setUserid((Long)request.getSession().getAttribute("userId"));
}
EntityWrapper<MessagesEntity> ew = new EntityWrapper<MessagesEntity>();
PageUtils page = messagesService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, messages), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( MessagesEntity messages){
EntityWrapper<MessagesEntity> ew = new EntityWrapper<MessagesEntity>();
ew.allEq(MPUtil.allEQMapPre( messages, "messages"));
return R.ok().put("data", messagesService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(MessagesEntity messages){
EntityWrapper< MessagesEntity> ew = new EntityWrapper< MessagesEntity>();
ew.allEq(MPUtil.allEQMapPre( messages, "messages"));
MessagesView messagesView = messagesService.selectView(ew);
return R.ok("查询留言板成功").put("data", messagesView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
MessagesEntity messages = messagesService.selectById(id);
return R.ok().put("data", messages);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
MessagesEntity messages = messagesService.selectById(id);
return R.ok().put("data", messages);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody MessagesEntity messages, HttpServletRequest request){
messages.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(messages);
messagesService.insert(messages);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody MessagesEntity messages, HttpServletRequest request){
messages.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(messages);
messages.setUserid((Long)request.getSession().getAttribute("userId"));
messagesService.insert(messages);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody MessagesEntity messages, HttpServletRequest request){
//ValidatorUtils.validateEntity(messages);
messagesService.updateById(messages);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
messagesService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<MessagesEntity> wrapper = new EntityWrapper<MessagesEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = messagesService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
DiscussbanzhutuijiantieServiceImpl.java
package com.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.List;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils;
import com.utils.Query;
import com.dao.DiscussbanzhutuijiantieDao;
import com.entity.DiscussbanzhutuijiantieEntity;
import com.service.DiscussbanzhutuijiantieService;
import com.entity.vo.DiscussbanzhutuijiantieVO;
import com.entity.view.DiscussbanzhutuijiantieView;
@Service("discussbanzhutuijiantieService")
public class DiscussbanzhutuijiantieServiceImpl extends ServiceImpl<DiscussbanzhutuijiantieDao, DiscussbanzhutuijiantieEntity> implements DiscussbanzhutuijiantieService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<DiscussbanzhutuijiantieEntity> page = this.selectPage(
new Query<DiscussbanzhutuijiantieEntity>(params).getPage(),
new EntityWrapper<DiscussbanzhutuijiantieEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<DiscussbanzhutuijiantieEntity> wrapper) {
Page<DiscussbanzhutuijiantieView> page =new Query<DiscussbanzhutuijiantieView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public List<DiscussbanzhutuijiantieVO> selectListVO(Wrapper<DiscussbanzhutuijiantieEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
@Override
public DiscussbanzhutuijiantieVO selectVO(Wrapper<DiscussbanzhutuijiantieEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<DiscussbanzhutuijiantieView> selectListView(Wrapper<DiscussbanzhutuijiantieEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public DiscussbanzhutuijiantieView selectView(Wrapper<DiscussbanzhutuijiantieEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
}
声明
本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。