@TOC
springboot0780校园疫情防控系统
第1章 绪论
1.1背景及意义
随着社会的快速发展,计算机的影响是全面且深入的。学校管理水平的不断提高,日常生活中学生对校园疫情防控方面的要求也在不断提高,学生的人数更是不断增加,使得校园疫情防控系统的开发成为必需而且紧迫的事情。校园疫情防控系统主要是借助计算机,通过对校园疫情防控系统所需的信息管理,增加学生的选择,同时也方便对广大学生信息的及时查询、修改以及对学生信息的及时了解。校园疫情防控系统对学生带来了更多的便利,该系统通过和数据库管理系统软件协作来满足学生的需求。计算机技术在现代管理中的应用,使计算机成为人们应用现代技术的重要工具。能够有效的解决获取信息便捷化、全面化的问题,提高效率。
1.2 国内外研究概况
######### (1)国内研究现状 ######### 回顾国内疫情的发展,从湖北武汉到现在河北石家庄,就是一个典型的案例,疫情是可防可控的。我们主要做到如果非必要不出市。同时,加强交通管控,长途道路客运车辆暂停运营。因保障疫情防控、城市运行、生产生活、防疫物资运输等原因必须进出市域的车辆,凭有效通行证件进出。对所有社区和居民小区实行封闭管理,除特殊需要外一律只进不出。对中高风险地区内的村庄、社区全部采取封控措施。另外,围绕保障群众日常生活必需品供应,做好货源调配工作,加强市场监管,严查哄抬价格等违法行为,确保供货充足、供应及时、价格平稳,以上模式以社区健康服务平台内容为主,集中在线上或线下进行宣传,线上模式的就是以网络和短信息方试进行宣传,线下模式:各省、市、镇、村都要做做用汽车、摩托进行喇叭贴喧传标语,所以开发一套校园疫情防控系统是非常有必要的。 (2)国外研究现状
在国外以美国为例,美国新冠疫情现第每天以数十万的新增量,数日以数千人的死忙,从2010年至2021以官方宣布确诊有2千多万。日平均增长率仅为7.6%。美国全国都处于水深火热中,
国外都以自由为主,导致新冠的无法控制,反观我国,在国家防疫做到每家每户都认识新冠可怕,新冠病毒是一种传播性很强的传染病毒,总之,国外新冠病毒的防控模式和宣传对国内也是敲了一个响钟。现在,新冠病毒已经逐渐在国外成为一种新趋势,与传统的传染病毒相比,传染病毒更加可怕,但是这同时也隐藏着制度不完善的威胁,从技术角度来说,网站只是一个信息发布平台,局限性非常明显,而且比较严重,只有充分搜罗、宣传信息,紧随需求积累经验,抓住市场脉动,才能控制新冠病毒。 #########
1.3 研究的内容
目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用。在对网络工具的认知程度上,较为传统的office软件等仍是人们使用的主要工具,而相对全面且专业的校园疫情防控系统的信息管理软件仍没有得到大多数人的了解或认可。本选题则旨在通过标签分类管理等方式,实现管理员功能:首页、个人中心、核酸检测管理、体温状态管理、学生管理、学生状态管理、休假申请管理、出入登记管理、疫情知识管理、论坛管理、系统管理。
学生权限;首页、个人中心、学生状态管理、休假申请管理、出入登记管理;
前台首页:首页、出入登记、疫情知识、论坛信息、疫情公告、个人中心、后台管理、客服。
第2章 相关技术
2.1 JAVA简介
Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(Enterprise JavaBeans)的全面支持,java servlet API,java(java server pages),和XML技术。多进步。例如,当我在微软Word中写这篇文章时,我还打开了一个MP3播放器来播放音乐。偶尔,我也会编辑Word,让我的机器执行打印作业,我也喜欢通过IE。对我来说,这些操作是同时执行的,我不需要等待一首歌来完成我的论文编辑。似乎他们都在我的机器上同时为我工作。事实是,对于一个CPU,它只能在某个时间点执行一个程序。CPU在这些程序之间不断地“跳跃”。那么为什么我们看不到任何破坏呢?这是因为,与我们的感情相比,它的速度太快了。因此,尽管我们看到一些同步操作,实际上对于计算机来说,它只能在某个时间点执行一个程序,除非您的计算机是多CPU的。
Java是一种计算机编程语言,具有封装、继承和多态性三个主要特性,广泛应用于企业Web应用程序开发和移动应用程序开发。
Java语言和一般编译器以及直译的区别在于,Java首先将源代码转换为字节码,然后将其转换为JVM的可执行文件,JVM可以在各种不同的JVM上运行。因此,实现了它的跨平台特性。虽然这使得Java在早期非常缓慢,但是随着Java的开发,它已经得到了改进。
2.2 MyEclipse开发环境
MyEclipse支持广泛、兼容性高并且功能强大,是一个Eclipse 插件集合,普遍适应于JAVA和J2EE的系统开发,支持 JDBC,Hibernate,AJAX,Struts,Java Servlet,Spring,EJB3等市面上存在的几乎所有数据库链接工具和主流Eclipse产品 开发工具。
MyEclipse在业内是所熟知的开发工具,该平台在开发的过程中运用的就是该工具。MyEclipse又被称之为企业级的工作平台,它是以Eclipse IDE为基础的。MyEclipse可以帮助我们进行数据库的研发和J2EE的使用,除此之外,还可以提高系统的运营能力,这突出表现在服务器的整合过程中。MyEclipse的功能相当完备,能够为J2EE的集成提供必要的环境支持,从而完成编码、测试、调试及发布等功能。它可以支持java,HTML,SQL,Javascript,Struts, CSS等。
2.3 Tomcat服务器
Tomcat属于一种轻型的服务器,所以说在中小企业中并不具有普适性。但是当程序员需要开发或调试java 程序时,则通常会将该服务器作为首选。对于一个仅具有计算机基础知识的人来说,计算机系统具有一个好的Apache服务器,可以很好的对HTML 页面进行访问。Tomcat 虽然是Apache的扩展,但是它们都是可以独立运行的,二者是不互相干扰的。当配置正确的时候,Apache服务器为HTML 页面的运行提供技术支持,Tomcat 的任务则是运行Servle和java 页面。Tomca也具有一定的HTML页面处理功能。
2.4 MySQL数据库
Mysql的语言是非结构化的,学生可以在数据上进行工作。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。并且因为Mysql的语言和结构比较简单,但是功能和存储信息量很强大,所以得到了普遍的应用。
Mysql数据库在编程过程中的作用是很广泛的,为学生进行数据查询带来了方便。Mysql数据库的应用因其灵活性强,功能强大,所以在实现某功能时只需要一小段代码,而不像其他程序需要编写大段代码。总体来说,Mysql数据库的语言相对要简洁很多。
数据流程分析主要就是数据存储的储藏室,它是在计算机上进行的,而不是现实中的储藏室。数据的存放是按固定格式,而不是无序的,其定义就是:长期有固定格式,可以共享的存储在计算机存储器上。数据库管理主要是数据存储、修改和增加以及数据表的建立。为了保证系统数据的正常运行,一些有能力的处理者可以进行管理而不需要专业的人来处理。数据表的建立,可以对数据表中的数据进行调整,数据的重新组合及重新构造,保证数据的安全性。介于数据库的功能强大等特点,本系统的开发主要应用了Mysql进行对数据的管理。
2.5 Spring Boot框架
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。
第3章 系统分析
3.1 需求分析
校园疫情防控系统主要是为了提高学校工作人员的工作效率和更方便快捷的满足学生,更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑学生的可操作性,遵循开发的系统优化的原则,经过全面的调查和研究。
系统所要实现的功能分析,对于现在网络方便的管理,系统要实现学生可以直接在平台上进行查看所有数据信息,根据需求可以进行在线添加,删除或修改校园疫情防控系统信息,这样既能节省时间,不用再像传统的方式耽误时间,真的很难去满足学生的各种需求。所以校园疫情防控系统的开发不仅能满足学生的需求,还能减少原有不必要的工作量,大大提高了管理员的工作效率。
3.2 系统可行性分析
3.2.1技术可行性:技术背景
本企业网站在Windows操作系统中进行开发,并且目前PC机的性能已经可以胜任普通网站的web服务器。系统开发所使用的技术也都是自身所具有的,也是当下广泛应用的技术之一。
系统的开发环境和配置都是可以自行安装的,系统使用java开发工具,使用比较成熟的Mysql数据库进行对系统前台及后台的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得网站运行更具有稳定性和安全性,从而完成实现网站的开发。
(1)硬件可行性分析
校园疫情防控系统及信息分析的设计对于所使用的计算机没有什么硬性的要求,计算机只要可以正常的使用进行代码的编写及页面设计就可行,主要是对于服务器有些要求,对于平台搭建完成要上传的服务器是有一定的要求的,服务器必须选择安全性比较高的,然后就是在打开网站必须顺畅,不能停顿太长时间;性价比高;安全性高。
(2)软件可行性分析
开发整个系统使用的是云计算,流量的可扩展性和基于流量的智能调整云计算的优点就是流量的可扩展性和基于流量的智能调整,保障系统的安全和数据信息的及时备份。
因此,我们从两个方面进行了可行性研究,可以看出系统的开发没有问题。
3.2.2经济可行性
在校园疫情防控系统开发之前所做的市场调研及其他相关的管理系统,都是没有任何费用的,都是通过开发者自己的努力,所有工作都是自己亲力亲为,在碰到自己比较难以解决的问题,大多是通过同学和指导老师的帮助进行相关信息的解决,所以对于校园疫情防控系统的开发在经济上是完全可行的,没有任何费用支出的。
使用比较成熟的技术,系统是基于java的开发,采用Mysql数据库。所以系统在开发人力、财力要求不高,具有经济可行性。
3.2.3操作可行性:
可操作性主要是对校园疫情防控系统设计完成后,学生的使用体验度,以及管理员可以通过系统随时管理相关的数据信息,并且对于管理员、学生二个用户角色,都可以简单明了的进入到自己的系统界面,通过界面导航菜单可以简单明了地操作功能模块,方便学生信息的操作需求和景点信息管理数据信息,对于系统的操作,不需要专业人员都可以直接进行功能模块的操作管理,所以在系统的可操作性是完全可以的。本系统的操作过程使用的也是界面窗口进行登录,所以操作人员只要会简单的电脑操作就完全可以的。
3.3 项目设计目标与原则
1、关于校园疫情防控系统的基本要求
(1)管理员功能要求:可以管理个人中心、核酸检测管理、体温状态管理、学生管理、学生状态管理、休假申请管理、出入登记管理、疫情知识管理、论坛管理、系统管理等功能模块。
(2)学生功能模块:个人中心、学生状态管理、休假申请管理、出入登记管理。
(3)性能:在不同操作系统上均能无差错实现在不同类型的学生登入相应界面后能不出差错、方便地进行预期操作。
(4)安全与保密要求:学生都必须通过管理员审核才能进入系统。
(5)环境要求:支持Windows系列、Vista系统等多种操作系统使用。
2、开发目标
校园疫情防控系统的主要开发目标如下:
(1)实现管理系统信息关系的系统化、规范化和自动化;
(2)减少维护人员的工作量以及实现学生对信息的控制和管理;
(3)方便查询信息及管理信息等;
(4)通过网络操作,提高改善处理问题和操作人员工作的效率;
(5)考虑到学生多样性特点,要求界面和操作简便易懂。
3、设计原则
本校园疫情防控系统采用java技术,Mysql数据库开发,充分保证了系统稳定性、完整性。
校园疫情防控系统的设计与实现的设计思想如下:
- 操作简单方便、系统界面安全良、简单明了的页面布局、方便查询校园疫情防控系统相关信息。
2、即时可见:对校园疫情防控系统信息的处理将立马在对应地点可以查询到,从而实现“即时发布、即时见效”的系统功能。
3.4系统流程分析
3.4.1操作流程
系统登录流程图,如图所示:
图3-1登录流程图
3.4.2添加信息流程
添加信息流程图,如图所示:
图3-2添加信息流程图
3.4.3删除信息流程
删除信息流程图,如图所示:
图3-3删除信息流程图
第4章 系统设计
4.1 系统体系结构
校园疫情防控系统的结构图4-1所示:
网
络
服务器和程序
学生
管理员
图4-1 系统结构
登录系统结构图,如图4-2所示:
校园疫情防控系统
用户登录
密码正确
管理员界面
学生界面
图4-2 登录结构图
校园疫情防控系统结构图,如图4-3所示。
图4-3 校园疫情防控系统结构图
4.2开发流程设计
系统流程的分析是通过调查系统所涉及问题的识别、可行性、可操作性、系统分析处理能力等具体环节来调节、整理系统的设计方案以确保系统能达到理想的状态。这些操作都要从注册、登录处着眼进行一系列的流程测试保证数据库的完整,从而把控系统所涉及信息管理的安全、保证信息输入、输出正常转换。然后,通过实际操作完成流程图的绘制工作。
校园疫情防控系统的开发对管理模块和系统使用的数据库进行分析,编写代码,系统测试,如图4-4所示。
图4-4开发系统流程图
4.3 数据库设计原则
学习编程,我们都知道数据库设计是基于需要设计的系统功能,我们需要建立一个数据库关系模型,用于存储数据信息,这样当我们在程序中时,就没有必要为程序页面添加数据,从而提高系统的效率。数据库存储了很多信息,可以说是信息管理系统的核心和基础,数据库还为系统提供了添加、删除、修改和检查等操作模块,使系统能够快速找到自己想要的信息,而不是在程序代码中找到。数据库中信息表的每个部分根据一定的关系精确地组合,排列和组合成数据表。
通过校园疫情防控系统的功能进行规划分成几个实体信息,实体信息将通过ER图进行说明,本系统的主要实体图如下:
管理员信息属性图如图4-5所示。
图4-5 管理员信息实体属性图
学生信息:学号、密码、学生姓名、性别、头像、专业、班级、住址省份、市级、县级、手机、邮箱实体属性图如图4-6所示。
图4-6学生信息属性图
出入登记信息:登记标题、登陆类型、登记时间、备注、学号、学生姓名、性别、头像、实时体温、手机、班级、专业、审核回复、审核状态、审核实体属性图如图4-7所示。
图4-7出入登记信息属性图
疫情知识:标题名称、分类、图片、视频、发布日期、操作实体属性图如图4-8所示。
图4-8疫情知识实体属性图
4.4 数据表
数据库表是数据库重要的组成部分,其实数据库只是一个框架,数据库表才是数据库的本质,本系统数据库表如下:
allusers表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
---|---|---|---|---|---|---|
1 | id | Int | 4 | 10 | ||
2 | username | 150 | 255 | |||
3 | pwd | 150 | 255 | |||
4 | cx | 150 | 255 | |||
5 | addtime | DateTime | 8 | 19 |
churudengji表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
---|---|---|---|---|---|---|
1 | id | Int | 4 | 10 | ||
2 | addtime | 150 | 255 | |||
3 | dengjibiaoti | 150 | 255 | |||
4 | dengjileixing | DateTime | 8 | 255 | ||
5 | dengjineirong | 150 | 255 | |||
6 | dengjishijian | DateTime | 8 | 255 | ||
7 | beizhu | 150 | 255 | |||
8 | xuehao | DateTime | 8 | 255 | ||
9 | xueshengxingming | 150 | 255 | |||
10 | xingbie | DateTime | 8 | 255 | ||
11 | touxiang | 150 | 255 | |||
12 | shishitiwen | DateTime | 8 | 255 | ||
13 | shouji | |||||
14 | banji | DateTime | 8 | 255 | ||
15 | zhuanye | |||||
16 | sfsh | DateTime | 150 | 255 | ||
17 | shhf |
xiujiashenqing表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
---|---|---|---|---|---|---|
1 | id | Int | 4 | 10 | ||
2 | addtime | 150 | 255 | |||
3 | shenqingbianhao | 150 | 255 | |||
4 | shenqingbiaoti | DateTime | 8 | 255 | ||
5 | shenqingneirong | 150 | 255 | |||
6 | xiujiatianshu | DateTime | 8 | 255 | ||
7 | xingchengchengshi | 150 | 255 | |||
8 | tujingchengshi | DateTime | 8 | 255 | ||
9 | shenqingriqi | 150 | 255 | |||
10 | beizhu | DateTime | 8 | 255 | ||
11 | xuehao | 150 | 255 | |||
12 | xueshengxingming | DateTime | 8 | 255 | ||
13 | touxiang | DateTime | 8 | 255 | ||
14 | zhuanye | 150 | ||||
15 | banji | DateTime | 8 | 255 | ||
16 | shouji | 150 | ||||
17 | sfsh | DateTime | 8 | 255 | ||
18 | shhf | 150 |
xuesheng表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
---|---|---|---|---|---|---|
1 | id | Int | 4 | 10 | ||
2 | addtime | 150 | 255 | |||
4 | xuehao | 150 | 255 | |||
5 | mima | 150 | 255 | |||
6 | xueshengxingming | DateTime | 8 | |||
7 | xingbie | 8 | ||||
8 | touxiang | DateTime | 8 | 255 | ||
9 | zhuanye | |||||
10 | banji | DateTime | 8 | 255 | ||
11 | zhuzhishengfen | |||||
12 | shiji | DateTime | 8 | 255 | ||
13 | xianqu | DateTime | 8 | 255 | ||
14 | shouji | DateTime | 8 | 255 | ||
15 | youxiang | DateTime | 8 | 255 |
xueshengzhuangtai表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
---|---|---|---|---|---|---|
1 | id | Int | 4 | 10 | ||
2 | addtime | 150 | 255 | |||
4 | xuehao | 150 | 255 | |||
5 | xueshengxingming | 150 | 255 | |||
6 | xingbie | DateTime | 8 | |||
7 | touxiang | DateTime | ||||
8 | shouji | |||||
9 | shentizhuangtai | DateTime | 8 | |||
10 | hesuanjiance | DateTime | 8 | |||
11 | hesuanzhuangtai | DateTime | 8 | 255 | ||
12 | tiwen | DateTime | 8 | 255 | ||
13 | tiwenzhuangtai | DateTime | 8 | 255 | ||
14 | gengxinriqi | DateTime | 8 | 255 | ||
15 | dengjineirong | DateTime | 8 | 255 | ||
16 | sfsh | DateTime | 8 | 255 | ||
17 | shhf | DateTime | 8 | 255 |
第5章 系统详细设计
5.1管理员功能模块
校园疫情防控系统,在管理员登录系统的首页可以通过填写账号/密码、选择角色进行登录操作等信息,如图5-1所示。
图5-1管理员登录首页界面图
管理员首页,管理员进入校园疫情防控系统查看个人中心、核酸检测管理、体温状态管理、学生管理、学生状态管理、休假申请管理、出入登记管理、疫情知识管理、论坛管理、系统管理操作,如图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.2学生前后台功能模块
学生注册/登陆,通过填写学号、密码、学生姓名、性别、头像、专业、班级、住址省份、市级、县级、手机、邮箱等信息,输入完成后选择注册即可进入校园疫情防控系统,通过学号密码登陆如图5-9所示。
图5-9学生注册/登陆界面图
学生前台首页浏览,通过内容列表可以获取网站首页、出入登记、疫情知识、论坛信息、疫情公告、个人中心、后台管理、客服等信息操作内容,如图5-10所示。
图5-10学生前台浏览管理界面图
个人中心,通过内容列表可以获取学号、密码、学生姓名、性别、头像、专业、班级、住址省份、市级、县级、手机、邮箱等信息可进行增、删、改或查看等操作,如图5-11所示。
图5-11个人中心界面图
论坛信息,通过论坛信息内容列表可以查看、发布帖子等操作,如图5-12所示。
图5-12论坛信息界面图
个人信息,学生对个人信息进行填写学号、密码、学生姓名、性别、头像、专业、班级、住址省份、市级、县级、手机、邮箱并进行添加以及查看个人信息等操作。效果如下图所示5-13所示
图5-13个人信息界面图
学生状态管理,在学生状态管理页面可以通过填写学号、密码、学生姓名、性别、头像、手机、身体状态、核酸检测等内容并进行添加以及查看。效果如下图所示5-14所示
。
图5-14学生状态管理界面图
休假申请管理,在休假申请管理页面可以通过填写申请编号、申请标题、休假天数、行程城市、途径城市、申请日期等内容并进行添加以及查看。效果如下图所示5-15所示
。
图5-15休假申请管理界面图
NewsServiceImpl.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.NewsDao;
import com.entity.NewsEntity;
import com.service.NewsService;
import com.entity.vo.NewsVO;
import com.entity.view.NewsView;
@Service("newsService")
public class NewsServiceImpl extends ServiceImpl<NewsDao, NewsEntity> implements NewsService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<NewsEntity> page = this.selectPage(
new Query<NewsEntity>(params).getPage(),
new EntityWrapper<NewsEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<NewsEntity> wrapper) {
Page<NewsView> page =new Query<NewsView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public List<NewsVO> selectListVO(Wrapper<NewsEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
@Override
public NewsVO selectVO(Wrapper<NewsEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<NewsView> selectListView(Wrapper<NewsEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public NewsView selectView(Wrapper<NewsEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
}
UserServiceImpl.java
package com.service.impl;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.dao.UserDao;
import com.entity.UserEntity;
import com.service.UserService;
import com.utils.PageUtils;
import com.utils.Query;
/**
* 系统用户
* @author yangliyuan
* @date 2019年10月10日 上午9:17:59
*/
@Service("userService")
public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements UserService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<UserEntity> page = this.selectPage(
new Query<UserEntity>(params).getPage(),
new EntityWrapper<UserEntity>()
);
return new PageUtils(page);
}
@Override
public List<UserEntity> selectListView(Wrapper<UserEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public PageUtils queryPage(Map<String, Object> params,
Wrapper<UserEntity> wrapper) {
Page<UserEntity> page =new Query<UserEntity>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
}
XueshengzhuangtaiController.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.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.XueshengzhuangtaiEntity;
import com.entity.view.XueshengzhuangtaiView;
import com.service.XueshengzhuangtaiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 学生状态
* 后端接口
* @author
* @email
* @date 2021-01-10 10:02:51
*/
@RestController
@RequestMapping("/xueshengzhuangtai")
public class XueshengzhuangtaiController {
@Autowired
private XueshengzhuangtaiService xueshengzhuangtaiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,XueshengzhuangtaiEntity xueshengzhuangtai, HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("xuesheng")) {
xueshengzhuangtai.setXuehao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<XueshengzhuangtaiEntity> ew = new EntityWrapper<XueshengzhuangtaiEntity>();
PageUtils page = xueshengzhuangtaiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xueshengzhuangtai), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,XueshengzhuangtaiEntity xueshengzhuangtai, HttpServletRequest request){
EntityWrapper<XueshengzhuangtaiEntity> ew = new EntityWrapper<XueshengzhuangtaiEntity>();
PageUtils page = xueshengzhuangtaiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xueshengzhuangtai), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( XueshengzhuangtaiEntity xueshengzhuangtai){
EntityWrapper<XueshengzhuangtaiEntity> ew = new EntityWrapper<XueshengzhuangtaiEntity>();
ew.allEq(MPUtil.allEQMapPre( xueshengzhuangtai, "xueshengzhuangtai"));
return R.ok().put("data", xueshengzhuangtaiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(XueshengzhuangtaiEntity xueshengzhuangtai){
EntityWrapper< XueshengzhuangtaiEntity> ew = new EntityWrapper< XueshengzhuangtaiEntity>();
ew.allEq(MPUtil.allEQMapPre( xueshengzhuangtai, "xueshengzhuangtai"));
XueshengzhuangtaiView xueshengzhuangtaiView = xueshengzhuangtaiService.selectView(ew);
return R.ok("查询学生状态成功").put("data", xueshengzhuangtaiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
XueshengzhuangtaiEntity xueshengzhuangtai = xueshengzhuangtaiService.selectById(id);
return R.ok().put("data", xueshengzhuangtai);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") String id){
XueshengzhuangtaiEntity xueshengzhuangtai = xueshengzhuangtaiService.selectById(id);
return R.ok().put("data", xueshengzhuangtai);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody XueshengzhuangtaiEntity xueshengzhuangtai, HttpServletRequest request){
xueshengzhuangtai.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(xueshengzhuangtai);
xueshengzhuangtaiService.insert(xueshengzhuangtai);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody XueshengzhuangtaiEntity xueshengzhuangtai, HttpServletRequest request){
xueshengzhuangtai.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(xueshengzhuangtai);
xueshengzhuangtaiService.insert(xueshengzhuangtai);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody XueshengzhuangtaiEntity xueshengzhuangtai, HttpServletRequest request){
//ValidatorUtils.validateEntity(xueshengzhuangtai);
xueshengzhuangtaiService.updateById(xueshengzhuangtai);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
xueshengzhuangtaiService.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<XueshengzhuangtaiEntity> wrapper = new EntityWrapper<XueshengzhuangtaiEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("xuesheng")) {
wrapper.eq("xuehao", (String)request.getSession().getAttribute("username"));
}
int count = xueshengzhuangtaiService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
vue.config.js
// var webpack = require('webpack');
const path = require('path')
function resolve(dir) {
return path.join(__dirname, dir)
}
function publicPath(){
if (process.env.NODE_ENV == 'production') {
return "././";
} else {
return "/";
}
}
// vue.config.js
module.exports = {
// publicPath:"././",
publicPath: publicPath(),
// 国际化配置 使用其它语言,默认情况下中文语言包依旧是被引入的
configureWebpack: {
// plugins: [
// new webpack.NormalModuleReplacementPlugin(/element-ui[\/\\]lib[\/\\]locale[\/\\]lang[\/\\]zh-CN/, 'element-ui/lib/locale/lang/en')
// ]
resolve: {
alias: {
'@': resolve('src')
}
}
},
lintOnSave: false,
devServer: {
host: "0.0.0.0", //指定使用一个 host。默认是 localhost,这里默认值即可
port: 8081, //指定端口
hot: true, // 开启热更新
https: false, // 是否开启https模式
proxy: { // 请求代理服务器
'/springboot81644': { //带上api前缀的
target: 'http://localhost:8080/springboot81644/', //代理目标地址
changeOrigin: true,
secure: false,
pathRewrite: { // 在发出请求后将/api替换为''空值,这样不影响接口请求
'^/springboot81644': ''
}
}
}
},
chainWebpack(config) {
config.module
.rule('svg')
.exclude.add(resolve('src/icons'))
.end()
config.module
.rule('icons')
.test(/\.svg$/)
.include.add(resolve('src/icons'))
.end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
.options({
symbolId: 'icon-[name]'
})
.end()
}
}