智慧学生校舍系统

@TOC

springboot631智慧学生校舍系统--论文

绪论

对于当今社会的人们来说,智慧学生校舍系统是必不可少的,随着经济和技术的不断发展,计算机已经深入到各个领域。智慧学生校舍系统将人们的时间需求与计算机技术结合起来,架起一座桥梁,使智慧学生校舍系统管理更加方便快捷。智慧学生校舍系统主要为人们提供系统化、个性化、专业化的服务,以提高人们的愉悦感。

1.1 研究背景

网络发展的越来越迅速,它深刻的影响着每一个人生活的各个方面。每一种新型事务的兴起都是为了使人们的生活更加方便。智慧学生校舍系统是一种低成本、更加高效的电子商务方式,它已慢慢的成为一种全新的管理模式。人们不再满足于在互联网上浏览、发布信息和人与人之间的聊天,而是希望互联网能为人们的生活带来更多便利。伴随着网络的崛起,智慧学生校舍系统管理开始变得越来越普遍。

1.1.1国内研究现状

在现实生活中,根据传统做法,有些人选择通过电话或短信进行交流。这种方法比较单一,在有些方面效率不高,需要大量人力和财力,已经接近淘汰。另一种方法是使用系统,但有些系统对计算机和用户的要求很高,使用起来非常复杂,无法快速锁定他们满意的信息。用户也将束手无策。目前,市场上很少有类似的系统能够真正满足用户的需求,帮助用户完成各项事务。

1.1.2国外研究现状

在当今社会,由于国外经济的高度发达,对于服务于人们生活的智慧学生校舍系统,国外花费了大量的人力、物力和财力来开发这类系统。所以,国外的这种系统较为发达。另一个重要原因是,国外更开放,更容易接受新事物,对他们享受的服务更挑剔,因此,智慧学生校舍系统一开始可以被更多的人接受,更多的人提出更多的要求,使智慧学生校舍系统更加完善。经过多年的发展,该系统具有很高的艺术性,非常规范和完整。

1.2研究的目的和意义

1.2.1研究目的

互联网发展的越来越快了,在当下社会节点,人们也开始越来越喜爱智慧学生校舍系统管理。通过互联网可以对学生、公共物品等方式全面加强宣传,极大地满足智慧学生校舍系统在现代管理中的要求。如果想实现简单快捷方便的智慧学生校舍系统管理,即时生效,无需重新打印。这时仅仅需要在背景中单击鼠标,它将立刻更新点击处一整行的所有内容。智慧学生校舍系统使用了B/S模式,并且不需要安装第六方插件,能实现更加准确的提供智慧学生校舍系统信息。现社会无论各行各业都应尽量摒弃传递错误信息,尤其是口头传输信息。而网络却并不会像电话那样一次只能传输一次,效率低下还接连不断,每当处于高峰时段,用网络来处理信息也就会更加的容易。我们甚至可以通过宣传让更多的潜在用户知道。不需要发送传单来节省宣传和人力成本。智慧学生校舍系统管理的方式得到了更好的改进。从而提高了整体业务量。

这样做的目的是节省时间,提高工作效率,享受当今社会最便捷、最周到的服务。

1.2.2 研究意义

线上管理智慧学生校舍系统提供了良好的发展空间,随着人们生活质量的提高,人们对服务质量的要求越来越严格。人们希望拥有更好的智慧学生校舍管理体验。而且,智慧学生校舍管理服务有着使用常规电话交流比不了的便捷高效简单等优势。智慧学生校舍系统就是为广大劳动人民提供这样一个方便的系统,以满足学生的需求。

1.3 论文的内容和结构

本文一共把内容主要分为六个大部分,采用传统面向对象的方法进行划分并描述和分析每个部分的需求:

第一章是前言部分,该部分主要是拓展了方案的背景,对此系统的意义做了思考,对价值做了评估。

第二章是概述系统的相关技术,详情的介绍了系统所使用的相关语言和开发结构。

第六章是对系统的需求进行分析,对可行性需求,功能需求和流程等做相关分析。

第四章主要对程序的功能做分析,并描述了数据库等相关内容的设计。

第五章主要是将智慧学生校舍系统划分成后台管理界面和前台页面,以及各部分相关功能页面。

第六章主要是进行系统功能测试。

2系统相关技术概述

2.1 Java技术简介

Java技术是一种非常经典的用来搭建信息网站系统的编程技术,它广泛的被应用于众多互联网企业的后端开发项目,它在JDK中运行,以封装、继承和多态的形式存在,层次清晰,可以和MVC的六层模型相配合。JAVA编程语言的体系结构具有一定的中立性, 可以较好的适用于各类系统、站点、系统等[1]。java具有高效性,可移植性强等特点。

它被技术人员广泛的应用于建设网站、数据库操作等领域。Java编程语言在网站开发领域和电子经商等领域具有相当的地位。开发人员可以使用不同的框架进行编译,从而达到预期的效果。同时,Java语言是高度安全的,该功能主要得益于它的存储模型

2.2 SpringBoot框架

Spring Boot是由Pivotal的开发团队在2013年开发的一个免费、轻量级、开源的系统框架。SpringBoot的主要设计思想是约定大于配置,因此SpringBoot在设计时几乎达到零配置。SpringBoot集成了业界的开源框架。

SpringBoot是一个非常强大的后台框架,因为SpringBoot的开发基本上不需要写配置文件,所以利用SpringBoot来构建网站的后台环境,在SpringBoot的YML配置文件中写项目启动端口,项目就可以启动了。项目的Java和静态文件由SpringBoot管理。

2.3 MySQL数据库技术简介

MySQL是一种轻量级、高效率的数据库。它有各种字段、主键、外键等特性。大多数个人或者企业在进行软件开发时必需用到的数据库。因为其极强的可移植性而广泛应用于众多系统服务中。MySQL使用的SQL语言是访问数据库最常用的标准化语言[4]。

2.4 B/S结构

浏览器/服务器(B/S)是一种比它的前身更简单的体系结构。它使用Web服务器来完成数据的传输和通信。只要把浏览器作为客户端下载下来,你就可以简化你的工作,所以你不必担心安装软件的问题。

3系统需求分析

3.1需求分析概述

智慧学生校舍系统主要是为了提高用户的工作效率,满足用户对更方便、更快、更好地存储所有信息和数据检索功能的要求。通过对多个智慧学生校舍的合理分析,确定了智慧学生校舍系统的各个模块。考虑到用户的可操作性,经过深入调查研究,遵循系统优化和开发的原则。

为了实现当前网络的分析功能和便利性,智慧学生校舍系统使管理员、学生、教师、宿管、外来人员和维修人员能够在系统上直接查看他们需要的数据信息,不仅可以节省管理时间,还可以改变传统的管理模式。如果用户想要交换信息,他们需要满足双方交换信息的需要。由于时间有限,很难亲自会面和沟通,因此很难满足用户的需求。因此,迫切需要开发一个智慧学生校舍系统,以满足用户的需求,提高用户的使用率。智慧学生校舍系统必须更快、更有效地向用户或潜在用户提供信息。为智慧学生校舍系统建立更好的沟通系统,提高用户信息交流系统的服务效率。该系统可以满足大多数用户提出的问题,用户可以根据自己的需要获得相应的服务,为智慧学生校舍系统提供了一条快捷的途径。

3.2可行性分析

智慧学生校舍系统研发出来可以为广大人民群众解决智慧学生校舍系统管理的问题,大大降低人民时间成本,不需要将无谓的时间浪费在道路上,并且智慧学生校舍系统管理可以更大化的将信息展露在人们的眼前供其选择。它是一款多用户使用的系统,比较符合业务逻辑,是通过互联网解决复杂和单调问题的典型案例。

3.2.1技术可行性

技术可行性是分析系统都需要用到哪些技术知识,语法是否规范标准,代码量多大,是否具有可移植性,在 MVC 在这种设计模式下能够真正的实现数据层和表示层的分离[6],以及前端页面是否可以做到美观实用,是否吸引眼球。网站是否足够稳定,后端管理页面是否足够方便管理,数据库的构建是否可以符合系统要求,是否需要搭建集群等等。

3.2.2经济可行性

通过结合以上对系统的技术和可行性分析来判断对系统经济状况的预算是否大于系统开发资金的比例。因此,通过分析系统的业务模式和开发者模式,不会浪费大量资金,系统的使用价值大于资本价值[7]。

3.2.3运营可行性

可操作性是指将系统开发所涉及到的所有功能全都实现,代码收尾工作完成后对用户消费水平,系统的业务能力是否与用户消费水平所对等,是否可以满足大部分消费者的需求,页面是否美观,能否让用户满意,代码显示是否为轻量级,操作和功能是否简单便捷,是否同时适用。系统能否同时应用于windows、linux等操作系统,这取决于系统的可移植性。JAVA 编程语言的适应性非常强,基本上能够较好的适应目前市场环境中所流行的各个系统[8]。也就是说JAVA的可移植性很强,那么系统的价值越高,可行性也就越强。

3.2.4法律可行性

智慧学生校舍系统是面向大众开源化和不收取任何费用的。它的主要目的是帮助人们解决智慧学生校舍问题。完全符合法律可行性要求,系统内部权限划分不会导致内部用户泄露系统机密。对于用户信息,系统有保护措施,用户密码在数据库中加密,并有严格的自我控制和商品价格解释。

3.3系统功能需求分析

本次的毕业设计主要就是设计并开发一个智慧学生校舍系统。使用数据库mysql。系统主要包括个人中心、学生管理、教师管理、宿管管理、外来人员管理、维修人员管理、学生信息管理、学生签到管理、学生物品管理、口令码管理、学生进出宿舍管理、教师进出宿舍管理、申请信息管理、导员确认管理、宿舍物品管理、公告物品管理、预约使用管理、取消预约管理、水电信息管理、宿舍卫生管理、晚归未归登记管理、失物招领管理、寻物启事管理、违纪登记管理、环境信息管理、通知公告管理、学生报修管理、报修接单管理、报修订单管理、学生评价管理、排行榜管理、交流论坛、留言板管理、系统管理等功能;本管理系统的用例图根据角色权限进行分类,主要可分为管理员用例、学生用例、教师用例、宿管用例、外来人员用例和维修人员用例。

(1)管理员用例图

管理员用例图依据管理员的权限需求以及对系统的管理需求进行分析,主要包括了个人中心、学生管理、教师管理、宿管管理、外来人员管理、维修人员管理、学生信息管理、学生签到管理、学生物品管理、口令码管理、学生进出宿舍管理、教师进出宿舍管理、申请信息管理、导员确认管理、宿舍物品管理、公告物品管理、预约使用管理、取消预约管理、水电信息管理、宿舍卫生管理、晚归未归登记管理、失物招领管理、寻物启事管理、违纪登记管理、环境信息管理、通知公告管理、学生报修管理、报修接单管理、报修订单管理、学生评价管理、排行榜管理、交流论坛、留言板管理、系统管理等,管理员用例图如下所示:

图3-1 管理员用例图

(2)宿管用例图

宿管用例图根据宿管的需求进行分析,包括个人中心、学生管理、外来人员管理、维修人员管理、学生信息管理、学生签到管理、学生物品管理、口令码管理、学生进出宿舍管理、教师进出宿舍管理、申请信息管理、导员确认管理、宿舍物品管理、公告物品管理、预约使用管理、取消预约管理、水电信息管理、宿舍卫生管理、晚归未归登记管理、失物招领管理、寻物启事管理、违纪登记管理、环境信息管理、通知公告管理、学生报修管理、报修接单管理、报修订单管理、学生评价管理、排行榜管理等。宿管用例图如下所示:

图3-2宿管用例图

(3)学生用例图

学生用例图根据学生的需求进行分析,包括首页、公告物品、宿舍卫生、失物招领、寻物启事、通知公告、排行榜、交流论坛、留言板、后台管理、个人中心等。学生用例图如下所示:

图3-3学生用例图

(4)教师用例图

教师用例图根据教师的需求进行分析,包括首页、个人中心、学生管理、学生信息管理、教师进出宿舍管理、导员确认管理等。教师用例图如下所示:

图3-4教师用例图

(5)外来人员用例图

外来人员用例图根据外来人员的需求进行首页、个人中心、申请信息管理、导员确认管理等。外来人员用例图如下所示:

图3-5外来人员用例图

(6)维修人员用例图

维修人员用例图根据维修人员的需求进行分析,包括首页、个人中心、学生报修管理、报修接单管理、报修订单管理、学生评价管理等。维修人员用例图如下所示:

图3-6维修人员用例图

3.4系统其他需求分析

3.4.1性能要求

在开发了一个功能较为良好系统之后,首要考虑的就是它的性能要求,比如当用户使用它进行点击或提交功能时,它会产生多久的延迟,系统响应速度快不快,如果短时间同时有较多用户访问网站是否会产生系统崩溃,是否采用高并发接口,另外,存储功能进行中的代码量是否满足算法和数据结构,以及是否占用较大内存等:

(1)系统应具备快速的反映时间,对于并发特征得到解决[10]。

(2)系统对用户密码是否进行了加密并进行大量安全处理。

(3)系统代码量是否简洁,不会占用计算机太多内存。

3.4.2安全要求

对于安全要求要进行可靠性分析,可靠性分析有利于可实现安全性、可靠 性设计与系统功能设计在数据源上的统一[11]。就本系统的安全性能而言,数据的账户和密码需要以明文形式显示,并严格加密。更改密码、修改个人数据、添加信息需要相应权限。

3.4.3作业环境要求

(1)系统:Windows系统足够,兼容性强

(2)Web服务器:内置tomcat,无需安装、运行和使用

(3)数据库服务器:MySQL 5.5及以上,图形界面为SQLYG

(4)浏览器:谷歌或Firefox开发者浏览器

(5)JDK1.8及以上,内置插件maven等。

3.5系统流程分析

(1)个人信息流程图

用户在成功进入系统以后,可以获得姓名,性别,年龄等个人信息。获得个人信息的流程见图3-7所示。

图3-7个人信息流程图流程图

用户进行登录操作的流程图如图3-8。

图3-8登录界面流程图

用户进行注册操作的流程图如图3-9。

图3-9用户注册流程图

3.6本章概述

本章主要介绍智慧学生校舍系统的使用案例和系统的相关可行性要求。我已经从技术、经济、法律和运营四个方面确认了该系统可以在线运行

4 系统设计

4.1系统结构图

智慧学生校舍系统分为六个部分,即管理员管理、学生管理、教师管理、宿管管理、外来人员管理和维修人员管理。该系统是根据用户的实际需求开发的,贴近生活。从管理员处获得的指定账号和密码可用于进入系统和使用相关的系统应用程序。管理员拥有最大的权限,其次是学生、教师、宿管、外来人员和维修人员。管理员一般负责整个系统的运行维护和总体协调。

系统结构如图4-1所示。

图4-1系统结构图

4.2数据库设计

所有的网站设计但凡有数据都离不开数据库,数据库是所有项目想实现如数据获取,数据传输等功能的基石。只有合理化的数据库设计才能满足商业化的要求,数据库的主键外键连接方式特别的重要,尽量避免多对多的复杂性,字段名合理规范,且通俗易懂等,字段应根据业务进行设定,不允许操作多字段而对系统产生占用多余的内存[12]。

4.2.1数据库设计原则

设计原则自然就是要符合范式的要求,多表之间的关系要合理,理应符合系统的实际情况。

4.2.2数据库的概念设计

概念设计是将整体分为在地面上表达出来的单个个体。E-R图形象的连接了实体模型和概念模型。因此,E-R图需要根据数据库表和表字段进行合理设计,表达的概念知识点用图形描述,可以直观地让相应人员清楚,并分解整个E-R图[13]。我们通常表达不清晰没有概念的东西。但是通过E-R之间的联系,E-R模型法是对这种模糊概念的事务最简单、最常用的设计方法。

(1) 交流论坛实体属性图如下图4-2所示。

图4-2交流论坛实体属性图

(2) 通知公告实体属性图如下图4-3所示。

图4-3通知公告实体属性图

(3) 校园信息实体属性图如下图4-4所示。

图4-4校园信息实体属性图

(4) 晚归未归登记实体属性图如下图4-5所示。

图4-5晚归未归登记实体属性图

(5) 环境信息实体属性图如下图4-6所示。

图4-6环境信息实体属性图

4.2.3数据库表设计

数据库表的设计通常是根据业务逻辑设置的。数据库模型在数据库中设计,并根据模型创建数据库表[14]。

表4-1:学生进出宿舍

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
xuehaovarchar200学号
xingmingvarchar200姓名
sushehaovarchar200宿舍号
chuangweihaovarchar200床位号
leixingvarchar200类型
koulingmafloat口令码
dengjishijiandatetime登记时间
beizhuvarchar200备注
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名

表4-2:用户表

字段名称类型长度字段说明主键默认值
idbigint主键主键
usernamevarchar100用户名
passwordvarchar100密码
rolevarchar100角色管理员
addtimetimestamp新增时间CURRENT_TIMESTAMP

表4-3:交流论坛

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
titlevarchar200帖子标题
contentlongtext4294967295帖子内容
parentidbigint父节点id
useridbigint用户id
usernamevarchar200用户名
avatarurllongtext4294967295头像
isdonevarchar200状态

表4-4:取消预约

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
yuyuebianhaovarchar200预约编号
wupinmingchengvarchar200物品名称
quxiaoshijiandatetime取消时间
quxiaoyuanyinlongtext4294967295取消原因
xuehaovarchar200学号
xingmingvarchar200姓名
shoujivarchar200手机
chuangweihaovarchar200床位号
sushehaovarchar200宿舍号
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名
sfshvarchar200是否审核待审核
shhflongtext4294967295审核回复

表4-5:学生报修

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
baoxiubianhaovarchar200报修编号
baoxiumingchengvarchar200报修名称
zhuangtaivarchar200状态
wentijianshulongtext4294967295问题简述
baoxiuriqidate报修日期
xuehaovarchar200学号
xingmingvarchar200姓名
shoujivarchar200手机
sushehaovarchar200宿舍号
chuangweihaovarchar200床位号
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名
sfshvarchar200是否审核待审核
shhflongtext4294967295审核回复

表4-6:通知公告

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
biaotivarchar200标题
jianjielongtext4294967295简介
fengmianlongtext4294967295封面
fabushijiandatetime发布时间
neironglongtext4294967295内容
faburenvarchar200发布人
clicktimedatetime最近点击时间
clicknumint点击次数0
useridbigint用户id

表4-7:导员确认

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
zhanghaovarchar200账号
xingmingvarchar200姓名
shoujivarchar200手机
jinlaishijiandatetime进来时间
tingliushijianvarchar200停留时间
shenqingshijiandatetime申请时间
shenqingyuanyinlongtext4294967295申请原因
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名
jiaoshizhanghaovarchar200教师账号
jiaoshixingmingvarchar200教师姓名
sfshvarchar200是否审核待审核
shhflongtext4294967295审核回复

表4-8:排行榜

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
biaotivarchar200标题
diyimingvarchar200第一名
diermingvarchar200第二名
disanmingvarchar200第三名
disimingvarchar200第四名
diwumingvarchar200第五名
diliumingvarchar200第六名
diqimingvarchar200第七名
dibamingvarchar200第八名
dijiumingvarchar200第九名
dishimingvarchar200第十名
fengmianlongtext4294967295封面
useridbigint用户id

表4-9:配置文件

字段名称类型长度字段说明主键默认值
idbigint主键主键
namevarchar100配置参数名称
valuevarchar100配置参数值

表4-10:token表

字段名称类型长度字段说明主键默认值
idbigint主键主键
useridbigint用户id
usernamevarchar100用户名
tablenamevarchar100表名
rolevarchar100角色
tokenvarchar200密码
addtimetimestamp新增时间CURRENT_TIMESTAMP
expiratedtimetimestamp过期时间CURRENT_TIMESTAMP

表4-11:校园信息

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
titlevarchar200标题
introductionlongtext4294967295简介
picturelongtext4294967295图片
contentlongtext4294967295内容

表4-12:留言板

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
useridbigint留言人id
usernamevarchar200用户名
avatarurllongtext4294967295头像
contentlongtext4294967295留言内容
cpicturelongtext4294967295留言图片
replylongtext4294967295回复内容
rpicturelongtext4294967295回复图片

表4-13:关于我们

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
titlevarchar200标题
subtitlevarchar200副标题
contentlongtext4294967295内容
picture1longtext4294967295图片1
picture2longtext4294967295图片2
picture3longtext4294967295图片3

表4-14:报修接单

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
baoxiubianhaovarchar200报修编号
baoxiumingchengvarchar200报修名称
wentijianshulongtext4294967295问题简述
anpaishijiandatetime安排时间
xuehaovarchar200学号
xingmingvarchar200姓名
shoujivarchar200手机
sushehaovarchar200宿舍号
weixiuzhanghaovarchar200维修账号
weixiuxingmingvarchar200维修姓名
lianxidianhuavarchar200联系电话
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名
sfshvarchar200是否审核待审核
shhflongtext4294967295审核回复

表4-15:预约使用

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
yuyuebianhaovarchar200预约编号
wupinmingchengvarchar200物品名称
yuyueshijiandatetime预约时间
shiyongyuanyinlongtext4294967295使用原因
xuehaovarchar200学号
xingmingvarchar200姓名
shoujivarchar200手机
chuangweihaovarchar200床位号
sushehaovarchar200宿舍号
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名
sfshvarchar200是否审核待审核
shhflongtext4294967295审核回复

表4-16:违纪登记

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
dengjibianhaovarchar200登记编号
xuehaovarchar200学号
xingmingvarchar200姓名
sushehaovarchar200宿舍号
chuangweihaovarchar200床位号
weijineirongvarchar200违纪内容
weijiyuanyinlongtext4294967295违纪原因
dengjishijiandatetime登记时间
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名

表4-17:口令码

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
biaotivarchar200标题
koulingmavarchar200口令码
neironglongtext4294967295内容
tongzhishijiandatetime通知时间
xuehaovarchar200学号
xingmingvarchar200姓名
sushehaovarchar200宿舍号
chuangweihaovarchar200床位号
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名

表4-18:宿舍物品

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
wupinmingchengvarchar200物品名称
wupinleibievarchar200物品类别
wupinsuoshuvarchar200物品所属
suochuweizhivarchar200所处位置
wupinshuliangint物品数量
dangqianzhuangtaivarchar200当前状态
shiyongzhuangtaivarchar200使用状态
dangqianshiyongrenvarchar200当前使用人
shiyongrensushehaovarchar200使用人宿舍号
loudonghaovarchar200楼栋号
dengjiriqidate登记日期
wupinjianjielongtext4294967295物品简介
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名

表4-19:报修订单

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
baoxiubianhaovarchar200报修编号
baoxiumingchengvarchar200报修名称
chulijianshulongtext4294967295处理简述
chulizhuangtaivarchar200处理状态
chulishijiandatetime处理时间
xuehaovarchar200学号
xingmingvarchar200姓名
shoujivarchar200手机
sushehaovarchar200宿舍号
weixiuzhanghaovarchar200维修账号
weixiuxingmingvarchar200维修姓名
lianxidianhuavarchar200联系电话
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名
sfshvarchar200是否审核待审核
shhflongtext4294967295审核回复

表4-20:寻物启事

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
biaotivarchar200标题
wupinmingchengvarchar200物品名称
wupintupianlongtext4294967295物品图片
diushididianvarchar200丢失地点
diushishijiandatetime丢失时间
xiangximiaoshulongtext4294967295详细描述
fabushijiandatetime发布时间
xuehaovarchar200学号
xingmingvarchar200姓名
shoujivarchar200手机
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名
sfshvarchar200是否审核待审核
shhflongtext4294967295审核回复
clicktimedatetime最近点击时间
clicknumint点击次数0

表4-21:晚归未归登记

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
dengjibianhaovarchar200登记编号
xuehaovarchar200学号
xingmingvarchar200姓名
sushehaovarchar200宿舍号
chuangweihaovarchar200床位号
leixingvarchar200类型
dengjiriqidatetime登记日期
beizhulongtext4294967295备注
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名

表4-22:教师进出宿舍

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
jiaoshizhanghaovarchar200教师账号
jiaoshixingmingvarchar200教师姓名
sushehaovarchar200宿舍号
chuangweihaovarchar200床位号
leixingvarchar200类型
dengjishijiandatetime登记时间
beizhuvarchar200备注
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名

表4-23:宿舍卫生

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
sushehaovarchar200宿舍号
weishengqingkuangvarchar200卫生情况
pingfenfloat评分
fengmianlongtext4294967295封面
dengjiriqidate登记日期
xiangqinglongtext4294967295详情
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名
clicktimedatetime最近点击时间
clicknumint点击次数0

表4-24:环境信息

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
loudonghaovarchar200楼栋号
loudaovarchar200楼道
sushehaovarchar200宿舍号
shidufloat湿度
wendufloat温度
dengjiriqidate登记日期
xiangqinglongtext4294967295详情
useridbigint用户id

表4-25:收藏表

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
useridbigint用户id
refidbigint商品id
tablenamevarchar200表名
namevarchar200名称
picturelongtext4294967295图片
typevarchar200类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注)1
inteltypevarchar200推荐类型
remarkvarchar200备注

表4-26:学生请假

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
xuehaovarchar200学号
xingmingvarchar200姓名
leixingvarchar200类型
kaishishijiandatetime开始时间
qingjiatianshuvarchar200请假天数
qingjiayuanyinlongtext4294967295请假原因
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名
sfshvarchar200是否审核待审核
shhflongtext4294967295审核回复

表4-27:公共物品

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
wupinmingchengvarchar200物品名称
wupinfenleivarchar200物品分类
tupianlongtext4294967295图片
guigevarchar200规格
zhuangtaivarchar200状态
dengjiriqidate登记日期
shiyongshuominglongtext4294967295使用说明
wupinxiangqinglongtext4294967295物品详情
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名
clicktimedatetime最近点击时间
clicknumint点击次数0

表4-28:水电信息

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
xuehaovarchar200学号
xingmingvarchar200姓名
sushehaovarchar200宿舍号
chuangweihaovarchar200床位号
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名
leixingvarchar200类型
dushufloat度数
dengjishijiandatetime登记时间
tixingneironglongtext4294967295提醒内容

表4-29:更换宿舍

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
xuehaovarchar200学号
xingmingvarchar200姓名
yuansushehaovarchar200原宿舍号
xinsushehaovarchar200新宿舍号
genghuanriqidate更换日期
genghuanyuanyinlongtext4294967295更换原因
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名

表4-30:失物招领

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
biaotivarchar200标题
wupinmingchengvarchar200物品名称
wupintupianlongtext4294967295物品图片
shidedizhivarchar200拾得地址
shideshijiandatetime拾得时间
renlingdizhivarchar200认领地址
fabushijiandatetime发布时间
wupinmiaoshulongtext4294967295物品描述
xuehaovarchar200学号
xingmingvarchar200姓名
shoujivarchar200手机
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名
sfshvarchar200是否审核待审核
shhflongtext4294967295审核回复
clicktimedatetime最近点击时间
clicknumint点击次数0

表4-31:学生评价

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
pingjiabianhaovarchar200评价编号
weixiuzhanghaovarchar200维修账号
weixiuxingmingvarchar200维修姓名
fuwupingjiavarchar200服务评价
manyichengduvarchar200满意程度
pingjiashijiandatetime评价时间
pingyulongtext4294967295评语
xuehaovarchar200学号
xingmingvarchar200姓名
shoujivarchar200手机
sushehaovarchar200宿舍号
chuangweihaovarchar200床位号
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名

表4-32:更换申请

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
shenqingbianhaovarchar200申请编号
yuansushehaovarchar200原宿舍号
xinsushehaovarchar200新宿舍号
genghuanyuanyinlongtext4294967295更换原因
shenqingshijiandatetime申请时间
xuehaovarchar200学号
xingmingvarchar200姓名
shoujivarchar200手机
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名
sfshvarchar200是否审核待审核
shhflongtext4294967295审核回复

表4-33:申请信息

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
zhanghaovarchar200账号
xingmingvarchar200姓名
shoujivarchar200手机
jinlaishijiandatetime进来时间
tingliushijianvarchar200停留时间
shenqingshijiandatetime申请时间
shenqingyuanyinlongtext4294967295申请原因
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名
sfshvarchar200是否审核待审核
shhflongtext4294967295审核回复

表4-34:学生

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
xuehaovarchar200学号
mimavarchar200密码
xingmingvarchar200姓名
nianlingint年龄
xingbievarchar200性别
shoujivarchar200手机
sushehaovarchar200宿舍号
chuangweihaovarchar200床位号
touxianglongtext4294967295头像
jiaoshizhanghaovarchar200教师账号
jiaoshixingmingvarchar200教师姓名
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名

表4-35:维修人员

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
weixiuzhanghaovarchar200维修账号
mimavarchar200密码
weixiuxingmingvarchar200维修姓名
nianlingint年龄
xingbievarchar200性别
lianxidianhuavarchar200联系电话
touxianglongtext4294967295头像

表4-36:学生信息

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
xuehaovarchar200学号
xingmingvarchar200姓名
nianlingvarchar200年龄
xingbievarchar200性别
shoujivarchar200手机
sushehaovarchar200宿舍号
chuangweihaovarchar200床位号
jiaoshizhanghaovarchar200教师账号
jiaoshixingmingvarchar200教师姓名
shangcilikaisusheshijiandatetime上次离开宿舍时间
shangcifanhuisusheshijiandatetime上次返回宿舍时间
beizhuvarchar200备注
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名

表4-37:教师

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
jiaoshizhanghaovarchar200教师账号
mimavarchar200密码
jiaoshixingmingvarchar200教师姓名
nianlingint年龄
xingbievarchar200性别
lianxidianhuavarchar200联系电话
sushehaovarchar200宿舍号
chuangweihaovarchar200床位号
dangqianzhiweivarchar200当前职位
zhuanyemingchengvarchar200专业名称
touxianglongtext4294967295头像

表4-38:外来人员

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
zhanghaovarchar200账号
mimavarchar200密码
xingmingvarchar200姓名
nianlingint年龄
xingbievarchar200性别
shoujivarchar200手机
touxianglongtext4294967295头像

表4-39:宿管

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
suguanzhanghaovarchar200宿管账号
mimavarchar200密码
suguanxingmingvarchar200宿管姓名
nianlingint年龄
xingbievarchar200性别
lianxidianhuavarchar200联系电话
loudonghaovarchar200楼栋号
suguanzhijivarchar200宿管职级
touxianglongtext4294967295头像

表4-40:学生物品

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
wupinmingchengvarchar200物品名称
wupinleixingvarchar200物品类型
guigevarchar200规格
shuliangint数量
dengjiriqidate登记日期
xiangqinglongtext4294967295详情
xuehaovarchar200学号
xingmingvarchar200姓名
sushehaovarchar200宿舍号
chuangweihaovarchar200床位号
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名

表4-41:学生签到

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
xuehaovarchar200学号
xingmingvarchar200姓名
sushehaovarchar200宿舍号
chuangweihaovarchar200床位号
qiandaoshijiandatetime签到时间
beizhuvarchar200备注
jiaoshizhanghaovarchar200教师账号
jiaoshixingmingvarchar200教师姓名
suguanzhanghaovarchar200宿管账号
suguanxingmingvarchar200宿管姓名
longitudefloat经度
latitudefloat纬度
fulladdressvarchar200地址

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.2后台模块实现

后台用户登录,在登录页面选择需要登录的角色,在正确输入用户名和密码后,进入操作系统进行操作;如图5-7所示。

图5-7 后台登录界面

5.2.1管理员模块实现

管理员进入主页面,主要功能包括对个人中心、学生管理、教师管理、宿管管理、外来人员管理、维修人员管理、学生信息管理、学生签到管理、学生物品管理、口令码管理、学生进出宿舍管理、教师进出宿舍管理、申请信息管理、导员确认管理、宿舍物品管理、公告物品管理、预约使用管理、取消预约管理、水电信息管理、宿舍卫生管理、晚归未归登记管理、失物招领管理、寻物启事管理、违纪登记管理、环境信息管理、通知公告管理、学生报修管理、报修接单管理、报修订单管理、学生评价管理、排行榜管理、交流论坛、留言板管理、系统管理等进行操作。管理员主界面如图5-8所示:

图5-8 管理员主界面

管理员点击教师管理。在教师页面输入教师姓名、性别、当前职位和专业名称可以查询、新增或删除教师列表,并根据需要对教师详情信息进行查看详情、修改或删除操作。如图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留言板管理界面

管理员点击系统管理。在系统简介页面输入标题进行查询系统简介列表,并根据需要对系统简介详情信息进行查看详情或修改等操作;还可以对轮播图管理进行操作。如图5-16所示:

图5-16系统管理界面

5.2.2宿管模块实现

宿管进入主页面,主要功能包括对个人中心、学生管理、外来人员管理、维修人员管理、学生信息管理、学生签到管理、学生物品管理、口令码管理、学生进出宿舍管理、教师进出宿舍管理、申请信息管理、导员确认管理、宿舍物品管理、公告物品管理、预约使用管理、取消预约管理、水电信息管理、宿舍卫生管理、晚归未归登记管理、失物招领管理、寻物启事管理、违纪登记管理、环境信息管理、通知公告管理、学生报修管理、报修接单管理、报修订单管理、学生评价管理、排行榜管理等功能进行操作。宿管主界面如图5-17所示:

图5-17 宿管主界面

宿管点击学生管理。在学生页面输入学号、姓名、宿舍号和床位号可以查询、新增或删除学生列表,并根据需要对学生详情信息进行查看详情、修改或删除操作。如图5-18所示:

图5-18学生管理界面

宿管点击口令码管理。在口令码页面输入标题、姓名和宿管姓名可以查询、新增或删除口令码列表,并根据需要对口令码详情信息进行查看详情、修改或删除操作。如图5-19所示:

图5-19口令码管理界面

宿管点击宿舍物品管理。在宿舍物品页面输入物品名称、当前状态、使用状态和当前使用人可以查询、新增或删除宿舍物品列表,并根据需要对宿舍物品详情信息进行查看详情、修改或删除操作。如图5-20所示:

图5-20宿舍物品管理界面

5.2.3学生模块实现

学生进入主页面,主要功能包括对个人中心、学生信息管理、学生签到管理、学生物品管理、口令码管理、学生进出宿舍管理、预约使用管理、取消预约管理、水电信息管理、晚归未归登记管理、失物招领管理、寻物启事管理、违纪登记管理、学生报修管理、报修接单管理、报修订单管理、学生评价管理等功能进行操作。学生主界面如图5-21所示:

图5-21学生主界面

学生点击学生进出宿舍管理。在学生进出宿舍页面输入学号、姓名、宿舍号和床位号可以查询、新增或删除学生进出宿舍列表,并根据需要对学生进出宿舍详情信息进行查看详情、修改或删除操作。如图5-22所示:

图5-22学生进出宿舍管理界面

学生点击失物招领管理。在失物招领页面输入物品名称、拾得地址、姓名和是否通过可以查询、新增或删除失物招领列表,并根据需要对失物招领详情信息进行查看详情、修改或删除操作。如图5-23所示:

图5-23失物招领管理界面

5.2.4教师模块实现

教师进入主页面,主要功能包括对人中心、学生管理、学生信息管理、教师进出宿舍管理、导员确认管理等功能进行操作。教师主界面如图5-24所示:

图5-24教师主界面

教师点击教师进出宿舍管理。在教师进出宿舍页面输入教师姓名、宿舍号、床位号和类型可以查询、新增或删除教师进出宿舍列表,并根据需要对教师进出宿舍详情信息进行查看详情、修改或删除操作。如图5-25所示:

图5-25教师进出宿舍管理界面

5.2.5外来人员模块实现

外来人员进入主页面,主要功能包括对个人中心、申请信息管理、导员确认管理等功能进行操作。外来人员主界面如图5-26所示:

图5-26外来人员主界面

外来人员点击申请信息管理。在申请信息页面输入姓名和是否通过可以查询、新增或删除申请信息列表,并根据需要对申请信息详情信息进行查看详情、修改或删除操作。如图5-27所示:

图5-27申请信息管理界面

5.2.6维修人员模块实现

维修人员进入主页面,主要功能包括对个人中心、学生报修管理、报修接单管理、报修订单管理、学生评价管理等功能进行操作。维修人员主界面如图5-28所示:

图5-28维修人员主界面

维修人员点击学生报修管理。在学生报修页面输入状态、姓名、宿舍号、床位号和是否通过可以查询学生报修列表,并根据需要对学生报修详情信息进行查看详情或报修接单操作。如图5-29所示:

图5-29学生报修管理界面

YuyueshiyongServiceImpl.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.YuyueshiyongDao;
import com.entity.YuyueshiyongEntity;
import com.service.YuyueshiyongService;
import com.entity.vo.YuyueshiyongVO;
import com.entity.view.YuyueshiyongView;

@Service("yuyueshiyongService")
public class YuyueshiyongServiceImpl extends ServiceImpl<YuyueshiyongDao, YuyueshiyongEntity> implements YuyueshiyongService {
	
	
    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<YuyueshiyongEntity> page = this.selectPage(
                new Query<YuyueshiyongEntity>(params).getPage(),
                new EntityWrapper<YuyueshiyongEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<YuyueshiyongEntity> wrapper) {
		  Page<YuyueshiyongView> page =new Query<YuyueshiyongView>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
 	}
    
    @Override
	public List<YuyueshiyongVO> selectListVO(Wrapper<YuyueshiyongEntity> wrapper) {
 		return baseMapper.selectListVO(wrapper);
	}
	
	@Override
	public YuyueshiyongVO selectVO(Wrapper<YuyueshiyongEntity> wrapper) {
 		return baseMapper.selectVO(wrapper);
	}
	
	@Override
	public List<YuyueshiyongView> selectListView(Wrapper<YuyueshiyongEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

	@Override
	public YuyueshiyongView selectView(Wrapper<YuyueshiyongEntity> wrapper) {
		return baseMapper.selectView(wrapper);
	}


}

DaoyuanquerenController.java
package com.controller;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.text.ParseException;
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.transaction.annotation.Transactional;
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.DaoyuanquerenEntity;
import com.entity.view.DaoyuanquerenView;

import com.service.DaoyuanquerenService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;

/**
 * 导员确认
 * 后端接口
 * @author 
 * @email 
 * @date 2023-06-08 12:49:58
 */
@RestController
@RequestMapping("/daoyuanqueren")
public class DaoyuanquerenController {
    @Autowired
    private DaoyuanquerenService daoyuanquerenService;


    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,DaoyuanquerenEntity daoyuanqueren,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("wailairenyuan")) {
			daoyuanqueren.setZhanghao((String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("suguan")) {
			daoyuanqueren.setSuguanzhanghao((String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("jiaoshi")) {
			daoyuanqueren.setJiaoshizhanghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<DaoyuanquerenEntity> ew = new EntityWrapper<DaoyuanquerenEntity>();

		PageUtils page = daoyuanquerenService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, daoyuanqueren), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,DaoyuanquerenEntity daoyuanqueren, 
		HttpServletRequest request){
        EntityWrapper<DaoyuanquerenEntity> ew = new EntityWrapper<DaoyuanquerenEntity>();

		PageUtils page = daoyuanquerenService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, daoyuanqueren), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( DaoyuanquerenEntity daoyuanqueren){
       	EntityWrapper<DaoyuanquerenEntity> ew = new EntityWrapper<DaoyuanquerenEntity>();
      	ew.allEq(MPUtil.allEQMapPre( daoyuanqueren, "daoyuanqueren")); 
        return R.ok().put("data", daoyuanquerenService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(DaoyuanquerenEntity daoyuanqueren){
        EntityWrapper< DaoyuanquerenEntity> ew = new EntityWrapper< DaoyuanquerenEntity>();
 		ew.allEq(MPUtil.allEQMapPre( daoyuanqueren, "daoyuanqueren")); 
		DaoyuanquerenView daoyuanquerenView =  daoyuanquerenService.selectView(ew);
		return R.ok("查询导员确认成功").put("data", daoyuanquerenView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        DaoyuanquerenEntity daoyuanqueren = daoyuanquerenService.selectById(id);
        return R.ok().put("data", daoyuanqueren);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        DaoyuanquerenEntity daoyuanqueren = daoyuanquerenService.selectById(id);
        return R.ok().put("data", daoyuanqueren);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody DaoyuanquerenEntity daoyuanqueren, HttpServletRequest request){
    	daoyuanqueren.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(daoyuanqueren);
        daoyuanquerenService.insert(daoyuanqueren);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody DaoyuanquerenEntity daoyuanqueren, HttpServletRequest request){
    	daoyuanqueren.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(daoyuanqueren);
        daoyuanquerenService.insert(daoyuanqueren);
        return R.ok();
    }



    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody DaoyuanquerenEntity daoyuanqueren, HttpServletRequest request){
        //ValidatorUtils.validateEntity(daoyuanqueren);
        daoyuanquerenService.updateById(daoyuanqueren);//全部更新
        return R.ok();
    }

    /**
     * 审核
     */
    @RequestMapping("/shBatch")
    @Transactional
    public R update(@RequestBody Long[] ids, @RequestParam String sfsh, @RequestParam String shhf){
        List<DaoyuanquerenEntity> list = new ArrayList<DaoyuanquerenEntity>();
        for(Long id : ids) {
            DaoyuanquerenEntity daoyuanqueren = daoyuanquerenService.selectById(id);
            daoyuanqueren.setSfsh(sfsh);
            daoyuanqueren.setShhf(shhf);
            list.add(daoyuanqueren);
        }
        daoyuanquerenService.updateBatchById(list);
        return R.ok();
    }


    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        daoyuanquerenService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
	









}

KoulingmaController.java
package com.controller;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.text.ParseException;
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.transaction.annotation.Transactional;
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.KoulingmaEntity;
import com.entity.view.KoulingmaView;

import com.service.KoulingmaService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;

/**
 * 口令码
 * 后端接口
 * @author 
 * @email 
 * @date 2023-06-08 12:49:58
 */
@RestController
@RequestMapping("/koulingma")
public class KoulingmaController {
    @Autowired
    private KoulingmaService koulingmaService;


    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,KoulingmaEntity koulingma,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("xuesheng")) {
			koulingma.setXuehao((String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("suguan")) {
			koulingma.setSuguanzhanghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<KoulingmaEntity> ew = new EntityWrapper<KoulingmaEntity>();

		PageUtils page = koulingmaService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, koulingma), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,KoulingmaEntity koulingma, 
		HttpServletRequest request){
        EntityWrapper<KoulingmaEntity> ew = new EntityWrapper<KoulingmaEntity>();

		PageUtils page = koulingmaService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, koulingma), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( KoulingmaEntity koulingma){
       	EntityWrapper<KoulingmaEntity> ew = new EntityWrapper<KoulingmaEntity>();
      	ew.allEq(MPUtil.allEQMapPre( koulingma, "koulingma")); 
        return R.ok().put("data", koulingmaService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(KoulingmaEntity koulingma){
        EntityWrapper< KoulingmaEntity> ew = new EntityWrapper< KoulingmaEntity>();
 		ew.allEq(MPUtil.allEQMapPre( koulingma, "koulingma")); 
		KoulingmaView koulingmaView =  koulingmaService.selectView(ew);
		return R.ok("查询口令码成功").put("data", koulingmaView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        KoulingmaEntity koulingma = koulingmaService.selectById(id);
        return R.ok().put("data", koulingma);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        KoulingmaEntity koulingma = koulingmaService.selectById(id);
        return R.ok().put("data", koulingma);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody KoulingmaEntity koulingma, HttpServletRequest request){
    	koulingma.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(koulingma);
        koulingmaService.insert(koulingma);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
	@IgnoreAuth
    @RequestMapping("/add")
    public R add(@RequestBody KoulingmaEntity koulingma, HttpServletRequest request){
    	koulingma.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(koulingma);
        koulingmaService.insert(koulingma);
        return R.ok();
    }



    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody KoulingmaEntity koulingma, HttpServletRequest request){
        //ValidatorUtils.validateEntity(koulingma);
        koulingmaService.updateById(koulingma);//全部更新
        return R.ok();
    }



    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        koulingmaService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
	









}

canvas-bg-4.js
export default function canvasBg() {
    var num = 200;
    var w = window.innerWidth;
    var h = window.innerHeight;
    var max = 100;
    var _x = 0;
    var _y = 0;
    var _z = 150;
    var dtr = function(d) {
        return d * Math.PI / 180;
    };
    var canvas = document.getElementById("canvas");

    var rnd = function() {
        return Math.sin(Math.floor(Math.random() * 360) * Math.PI / 180);
    };
    var dist = function(p1, p2, p3) {
        return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2) + Math.pow(p2.z - p1.z, 2));
    };

    var cam = {
        obj: {
            x: _x,
            y: _y,
            z: _z
        },
        dest: {
            x: 0,
            y: 0,
            z: 1
        },
        dist: {
            x: 0,
            y: 0,
            z: 200
        },
        ang: {
            cplane: 0,
            splane: 0,
            ctheta: 0,
            stheta: 0
        },
        zoom: 1,
        disp: {
            x: w / 2,
            y: h / 2,
            z: 0
        },
        upd: function() {
            cam.dist.x = cam.dest.x - cam.obj.x;
            cam.dist.y = cam.dest.y - cam.obj.y;
            cam.dist.z = cam.dest.z - cam.obj.z;
            cam.ang.cplane = -cam.dist.z / Math.sqrt(cam.dist.x * cam.dist.x + cam.dist.z * cam.dist.z);
            cam.ang.splane = cam.dist.x / Math.sqrt(cam.dist.x * cam.dist.x + cam.dist.z * cam.dist.z);
            cam.ang.ctheta = Math.sqrt(cam.dist.x * cam.dist.x + cam.dist.z * cam.dist.z) / Math.sqrt(cam.dist.x *
                cam.dist.x + cam.dist.y * cam.dist.y + cam.dist.z * cam.dist.z);
            cam.ang.stheta = -cam.dist.y / Math.sqrt(cam.dist.x * cam.dist.x + cam.dist.y * cam.dist.y + cam.dist
                .z * cam.dist.z);
        }
    };

    var trans = {
        parts: {
            sz: function(p, sz) {
                return {
                    x: p.x * sz.x,
                    y: p.y * sz.y,
                    z: p.z * sz.z
                };
            },
            rot: {
                x: function(p, rot) {
                    return {
                        x: p.x,
                        y: p.y * Math.cos(dtr(rot.x)) - p.z * Math.sin(dtr(rot.x)),
                        z: p.y * Math.sin(dtr(rot.x)) + p.z * Math.cos(dtr(rot.x))
                    };
                },
                y: function(p, rot) {
                    return {
                        x: p.x * Math.cos(dtr(rot.y)) + p.z * Math.sin(dtr(rot.y)),
                        y: p.y,
                        z: -p.x * Math.sin(dtr(rot.y)) + p.z * Math.cos(dtr(rot.y))
                    };
                },
                z: function(p, rot) {
                    return {
                        x: p.x * Math.cos(dtr(rot.z)) - p.y * Math.sin(dtr(rot.z)),
                        y: p.x * Math.sin(dtr(rot.z)) + p.y * Math.cos(dtr(rot.z)),
                        z: p.z
                    };
                }
            },
            pos: function(p, pos) {
                return {
                    x: p.x + pos.x,
                    y: p.y + pos.y,
                    z: p.z + pos.z
                };
            }
        },
        pov: {
            plane: function(p) {
                return {
                    x: p.x * cam.ang.cplane + p.z * cam.ang.splane,
                    y: p.y,
                    z: p.x * -cam.ang.splane + p.z * cam.ang.cplane
                };
            },
            theta: function(p) {
                return {
                    x: p.x,
                    y: p.y * cam.ang.ctheta - p.z * cam.ang.stheta,
                    z: p.y * cam.ang.stheta + p.z * cam.ang.ctheta
                };
            },
            set: function(p) {
                return {
                    x: p.x - cam.obj.x,
                    y: p.y - cam.obj.y,
                    z: p.z - cam.obj.z
                };
            }
        },
        persp: function(p) {
            return {
                x: p.x * cam.dist.z / p.z * cam.zoom,
                y: p.y * cam.dist.z / p.z * cam.zoom,
                z: p.z * cam.zoom,
                p: cam.dist.z / p.z
            };
        },
        disp: function(p, disp) {
            return {
                x: p.x + disp.x,
                y: -p.y + disp.y,
                z: p.z + disp.z,
                p: p.p
            };
        },
        steps: function(_obj_, sz, rot, pos, disp) {
            var _args = trans.parts.sz(_obj_, sz);
            _args = trans.parts.rot.x(_args, rot);
            _args = trans.parts.rot.y(_args, rot);
            _args = trans.parts.rot.z(_args, rot);
            _args = trans.parts.pos(_args, pos);
            _args = trans.pov.plane(_args);
            _args = trans.pov.theta(_args);
            _args = trans.pov.set(_args);
            _args = trans.persp(_args);
            _args = trans.disp(_args, disp);
            return _args;
        }
    };

    var threeD = function(param) {
        this.transIn = {};
        this.transOut = {};
        this.transIn.vtx = (param.vtx);
        this.transIn.sz = (param.sz);
        this.transIn.rot = (param.rot);
        this.transIn.pos = (param.pos);
    };

    threeD.prototype.vupd = function() {
        this.transOut = trans.steps(

            this.transIn.vtx,
            this.transIn.sz,
            this.transIn.rot,
            this.transIn.pos,
            cam.disp
        );
    };

    var Build = function() {
        this.vel = 0.04;
        this.lim = 360;
        this.diff = 200;
        this.initPos = 100;
        this.toX = _x;
        this.toY = _y;
        this.canvas = canvas;
        this.go();
    };

    Build.prototype.go = function() {
        this.canvas.width = window.innerWidth;
        this.canvas.height = window.innerHeight;
        this.$ = this.canvas.getContext("2d");
        this.$.globalCompositeOperation = 'source-over';
        this.varr = [];
        this.dist = [];
        this.calc = [];

        for (var i = 0, len = num; i < len; i++) {
            this.add();
        }

        this.rotObj = {
            x: 0,
            y: 0,
            z: 0
        };
        this.objSz = {
            x: w / 5,
            y: h / 5,
            z: w / 5
        };
    };

    Build.prototype.add = function() {
        this.varr.push(new threeD({
            vtx: {
                x: rnd(),
                y: rnd(),
                z: rnd()
            },
            sz: {
                x: 0,
                y: 0,
                z: 0
            },
            rot: {
                x: 20,
                y: -20,
                z: 0
            },
            pos: {
                x: this.diff * Math.sin(360 * Math.random() * Math.PI / 180),
                y: this.diff * Math.sin(360 * Math.random() * Math.PI / 180),
                z: this.diff * Math.sin(360 * Math.random() * Math.PI / 180)
            }
        }));
        this.calc.push({
            x: 360 * Math.random(),
            y: 360 * Math.random(),
            z: 360 * Math.random()
        });
    };

    Build.prototype.upd = function() {
        cam.obj.x += (this.toX - cam.obj.x) * 0.05;
        cam.obj.y += (this.toY - cam.obj.y) * 0.05;
    };

    Build.prototype.draw = function() {
        this.$.clearRect(0, 0, this.canvas.width, this.canvas.height);
        cam.upd();
        this.rotObj.x += 0.1;
        this.rotObj.y += 0.1;
        this.rotObj.z += 0.1;

        for (var i = 0; i < this.varr.length; i++) {
            for (var val in this.calc[i]) {
                if (this.calc[i].hasOwnProperty(val)) {
                    this.calc[i][val] += this.vel;
                    if (this.calc[i][val] > this.lim) this.calc[i][val] = 0;
                }
            }

            this.varr[i].transIn.pos = {
                x: this.diff * Math.cos(this.calc[i].x * Math.PI / 180),
                y: this.diff * Math.sin(this.calc[i].y * Math.PI / 180),
                z: this.diff * Math.sin(this.calc[i].z * Math.PI / 180)
            };
            this.varr[i].transIn.rot = this.rotObj;
            this.varr[i].transIn.sz = this.objSz;
            this.varr[i].vupd();
            if (this.varr[i].transOut.p < 0) continue;
            var g = this.$.createRadialGradient(this.varr[i].transOut.x, this.varr[i].transOut.y, this.varr[i]
                .transOut.p, this.varr[i].transOut.x, this.varr[i].transOut.y, this.varr[i].transOut.p * 2);
            this.$.globalCompositeOperation = 'lighter';
            g.addColorStop(0, 'hsla(255, 255%, 255%, 1)');
            g.addColorStop(.6, 'hsla(' + (i + 2) + ',85%, 40%,1)');
            g.addColorStop(1, 'hsla(' + (i) + ',85%, 40%,.5)');
            // console.log(this.varr[i].transOut.x, this.varr[i].transOut.y, this.varr[i].transOut.p * 2, 0, Math.PI * 2, false)
            this.$.fillStyle = g;
            this.$.beginPath();
            this.$.arc(this.varr[i].transOut.x, this.varr[i].transOut.y, this.varr[i].transOut.p * 2, 0, Math
                .PI * 2, false);
            this.$.fill();
            this.$.closePath();
        }
    };
    Build.prototype.anim = function() {
        window.requestAnimationFrame = (function() {
            return window.requestAnimationFrame ||
                function(callback, element) {
                    window.setTimeout(callback, 1000 / 60);
                };
        })();
        var anim = function() {
            this.upd();
            this.draw();
            window.requestAnimationFrame(anim);
        }.bind(this);
        window.requestAnimationFrame(anim);
    };

    Build.prototype.run = function() {
        this.anim();

        window.addEventListener('mousemove', function(e) {
            this.toX = (e.clientX - this.canvas.width / 2) * -0.8;
            this.toY = (e.clientY - this.canvas.height / 2) * 0.8;
        }.bind(this));
        window.addEventListener('touchmove', function(e) {
            e.preventDefault();
            this.toX = (e.touches[0].clientX - this.canvas.width / 2) * -0.8;
            this.toY = (e.touches[0].clientY - this.canvas.height / 2) * 0.8;
        }.bind(this));
        window.addEventListener('mousedown', function(e) {
            for (var i = 0; i < 100; i++) {
                this.add();
            }
        }.bind(this));
        window.addEventListener('touchstart', function(e) {
            e.preventDefault();
            for (var i = 0; i < 100; i++) {
                this.add();
            }
        }.bind(this));
    };

    var app = new Build();
    app.run();

    window.addEventListener('resize', function() {
        // canvas.width = w = window.innerWidth;
        // canvas.height = h = window.innerHeight;
        var app = new Build();
        app.run();
    });
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值