55.基于springboot+vue的汽车租赁管理系统
目录
1.系统的受众说明
2.系统相关技术概述
2.1 Java技术简介
2.2 SpringBoot框架
2.3 MySQL数据库技术简介
2.4 B/S结构
3.系统需求分析
3.1需求分析概述
3.2可行性分析
3.2.1技术可行性
3.2.2经济可行性
3.2.3运营可行性
3.2.4法律可行性
3.3系统用例分析
3.3.1 管理员用例图
3.3.2 用户用例图
3.3.3 普通管理员用例图
3.4系统其他需求分析
3.4.1性能要求
3.4.2安全要求
3.4.3作业环境要求
3.5系统流程分析
3.6本章概述
4.系统设计
4.1系统结构图
4.2数据库设计
4.2.1数据库设计原则
4.2.2数据库的概念设计
4.2.3数据库表设计
5.系统的实现
5.1系统功能实现
5.2后台模块实现
5.2.1管理员模块实现
5.2.2用户模块实现
5.2.3普通管理员模块实现
1.系统的受众说明
1 在校学习的学生,可用于日常学习使用或是毕业设计使用
2 毕业一到两年的开发人员,用于锻炼自己的独立功能模块设计能力,增强代码编写能力。
3 亦可以部署为商化项目使用。
4 需要完整资料及源码,请在文末获取联系方式领取。
2.系统相关技术概述
2.1 Java技术简介
面向对象编程是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系统用例分析
3.3.1 管理员用例图
汽车租赁管理系统的最大权限用户是管理员,通过管理员菜单中的个人中心、用户管理、普通管理员管理、汽车类别管理、汽车信息管理、租车订单管理、取消订单管理、还车信息管理、汽车资讯管理、汽车论坛、留言板管理、系统管理等选项来对系统后台信息进行管理。管理员用例如图3-1所示。
图3-1管理员用例图
3.3.2 用户用例图
用户进入系统可以对个人中心、租车订单管理、取消订单管理、还车信息管理进行管理。用户用例如图3-2所示。
图3-2用户用例图
3.3.3 普通管理员用例图
普通管理员进入系统可以对个人中心、汽车信息管理、租车订单管理、取消订单管理、还车信息管理、汽车资讯管理进行管理。普通管理员用例如图3-3所示。
图3-3普通管理员用例图
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-4所示。
图3-4个人信息流程图流程图
商家进行登录操作的流程图如图3-5。
图3-5登录界面流程图
商家进行注册操作的流程图如图3-6。
图3-6 用户注册流程图
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]。
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
subtitle | varchar | 200 | 副标题 | ||
content | longtext | 4294967295 | 内容 | ||
picture1 | longtext | 4294967295 | 图片1 | ||
picture2 | longtext | 4294967295 | 图片2 | ||
picture3 | longtext | 4294967295 | 图片3 |
表4-2:取消订单
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
dingdanbianhao | varchar | 200 | 订单编号 | ||
chepaihao | varchar | 200 | 车牌号 | ||
cheliangpinpai | varchar | 200 | 车辆品牌 | ||
qicheleibie | varchar | 200 | 汽车类别 | ||
jiage | float | 价格 | |||
zuqi | int | 租期 | |||
zongjia | float | 总价 | |||
quxiaoriqi | date | 取消日期 | |||
quxiaoyuanyin | longtext | 4294967295 | 取消原因 | ||
zhanghao | varchar | 200 | 账号 | ||
xingming | varchar | 200 | 姓名 | ||
shouji | varchar | 200 | 手机 | ||
shenfenzheng | varchar | 200 | 身份证 | ||
guanlizhanghao | varchar | 200 | 管理账号 | ||
guanlixingming | varchar | 200 | 管理姓名 | ||
crossuserid | bigint | 跨表用户id | |||
crossrefid | bigint | 跨表主键id | |||
sfsh | varchar | 200 | 是否审核 | 待审核 | |
shhf | longtext | 4294967295 | 审核回复 | ||
ispay | varchar | 200 | 是否支付 | 未支付 |
表4-3:汽车资讯
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
biaoti | varchar | 200 | 标题 | ||
jianjie | longtext | 4294967295 | 简介 | ||
fabushijian | date | 发布时间 | |||
neirong | longtext | 4294967295 | 内容 | ||
faburen | varchar | 200 | 发布人 | ||
fengmian | longtext | 4294967295 | 封面 | ||
clicktime | datetime | 最近点击时间 | |||
clicknum | int | 点击次数 | 0 | ||
userid | bigint | 用户id |
表4-4:汽车信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
chepaihao | varchar | 200 | 车牌号 | ||
cheliangxinghao | varchar | 200 | 车辆型号 | ||
qicheleibie | varchar | 200 | 汽车类别 | ||
cheliangpinpai | varchar | 200 | 车辆品牌 | ||
jiage | float | 价格 | |||
yanse | varchar | 200 | 颜色 | ||
zhuangtai | varchar | 200 | 状态 | ||
huandangfangshi | varchar | 200 | 换挡方式 | ||
cheliangzhaopian | longtext | 4294967295 | 车辆照片 | ||
zuoweishu | int | 座位数 | |||
qichepailiang | varchar | 200 | 汽车排量 | ||
qichejiage | float | 汽车价格 | |||
chuchangnianfen | varchar | 200 | 出厂年份 | ||
dengjiriqi | date | 登记日期 | |||
qichejianjie | longtext | 4294967295 | 汽车简介 | ||
guanlizhanghao | varchar | 200 | 管理账号 | ||
guanlixingming | varchar | 200 | 管理姓名 | ||
clicktime | datetime | 最近点击时间 | |||
clicknum | int | 点击次数 | 0 |
表4-5:汽车类别
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
qicheleibie | varchar | 200 | 汽车类别 |
表4-6:普通管理员
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
guanlizhanghao | varchar | 200 | 管理账号 | ||
mima | varchar | 200 | 密码 | ||
guanlixingming | varchar | 200 | 管理姓名 | ||
xingbie | varchar | 200 | 性别 | ||
nianling | varchar | 200 | 年龄 | ||
lianxidianhua | varchar | 200 | 联系电话 | ||
touxiang | longtext | 4294967295 | 头像 |
表4-7:公告信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
introduction | longtext | 4294967295 | 简介 | ||
picture | longtext | 4294967295 | 图片 | ||
content | longtext | 4294967295 | 内容 |
表4-8:留言板
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 留言人id | |||
username | varchar | 200 | 用户名 | ||
avatarurl | longtext | 4294967295 | 头像 | ||
content | longtext | 4294967295 | 留言内容 | ||
cpicture | longtext | 4294967295 | 留言图片 | ||
reply | longtext | 4294967295 | 回复内容 | ||
rpicture | longtext | 4294967295 | 回复图片 |
表4-9:还车信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
dingdanbianhao | varchar | 200 | 订单编号 | ||
chepaihao | varchar | 200 | 车牌号 | ||
cheliangpinpai | varchar | 200 | 车辆品牌 | ||
qicheleibie | varchar | 200 | 汽车类别 | ||
haicheriqi | date | 还车日期 | |||
haichebeizhu | longtext | 4294967295 | 还车备注 | ||
zhanghao | varchar | 200 | 账号 | ||
xingming | varchar | 200 | 姓名 | ||
shouji | varchar | 200 | 手机 | ||
shenfenzheng | varchar | 200 | 身份证 | ||
guanlizhanghao | varchar | 200 | 管理账号 | ||
guanlixingming | varchar | 200 | 管理姓名 | ||
crossuserid | bigint | 跨表用户id | |||
crossrefid | bigint | 跨表主键id | |||
sfsh | varchar | 200 | 是否审核 | 待审核 | |
shhf | longtext | 4294967295 | 审核回复 |
表4-10:租车订单
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
dingdanbianhao | varchar | 200 | 订单编号 | ||
chepaihao | varchar | 200 | 车牌号 | ||
cheliangpinpai | varchar | 200 | 车辆品牌 | ||
qicheleibie | varchar | 200 | 汽车类别 | ||
jiage | float | 价格 | |||
zuqi | int | 租期 | |||
zongjia | float | 总价 | |||
chuzuriqi | date | 出租日期 | |||
beizhu | longtext | 4294967295 | 备注 | ||
zhanghao | varchar | 200 | 账号 | ||
xingming | varchar | 200 | 姓名 | ||
shouji | varchar | 200 | 手机 | ||
shenfenzheng | varchar | 200 | 身份证 | ||
guanlizhanghao | varchar | 200 | 管理账号 | ||
guanlixingming | varchar | 200 | 管理姓名 | ||
sfsh | varchar | 200 | 是否审核 | 待审核 | |
shhf | longtext | 4294967295 | 审核回复 | ||
ispay | varchar | 200 | 是否支付 | 未支付 |
表4-11:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
userid | bigint | 用户id | |||
username | varchar | 100 | 用户名 | ||
tablename | varchar | 100 | 表名 | ||
role | varchar | 100 | 角色 | ||
token | varchar | 200 | 密码 | ||
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP | ||
expiratedtime | timestamp | 过期时间 | CURRENT_TIMESTAMP |
表4-12:汽车论坛
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 帖子标题 | ||
content | longtext | 4294967295 | 帖子内容 | ||
parentid | bigint | 父节点id | |||
userid | bigint | 用户id | |||
username | varchar | 200 | 用户名 | ||
avatarurl | longtext | 4294967295 | 头像 | ||
isdone | varchar | 200 | 状态 |
表4-13:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
表4-14:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
表4-15:收藏表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
refid | bigint | 商品id | |||
tablename | varchar | 200 | 表名 | ||
name | varchar | 200 | 名称 | ||
picture | longtext | 4294967295 | 图片 | ||
type | varchar | 200 | 类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注) | 1 | |
inteltype | varchar | 200 | 推荐类型 | ||
remark | varchar | 200 | 备注 |
表4-16:用户
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
zhanghao | varchar | 200 | 账号 | ||
mima | varchar | 200 | 密码 | ||
xingming | varchar | 200 | 姓名 | ||
nianling | int | 年龄 | |||
xingbie | varchar | 200 | 性别 | ||
shenfenzheng | varchar | 200 | 身份证 | ||
shouji | varchar | 200 | 手机 | ||
touxiang | longtext | 4294967295 | 头像 |
5.系统的实现
5.1系统功能实现
当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到汽车租赁管理系统的导航条,通过导航条导航进入各功能展示页面进行操作。系统首页界面如图5-1所示:
图5-1 系统首页界面
用户注册:在系统首页点击右上角的登录/注册按钮,进入登录注册界面,单击注册进行用户注册操作,用户注册界面如图5-2所示:
用户注册界面
登录界面
图5-2
/**
* 登录
*/
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("zhanghao", username));
if(u==null || !u.getMima().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(u.getId(), username,"yonghu", "用户" );
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@RequestMapping("/register")
public R register(@RequestBody YonghuEntity yonghu){
//ValidatorUtils.validateEntity(yonghu);
YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("zhanghao", yonghu.getZhanghao()));
if(u!=null) {
return R.error("注册用户已存在");
}
Long uId = new Date().getTime();
yonghu.setId(uId);
yonghuService.insert(yonghu);
return R.ok();
}
汽车信息:在汽车信息页面的输入栏中输入车牌号、选择汽车类别、车辆品牌和选择状态进行查询,可以查看到汽车信息,并进行租赁汽车或收藏等操作,页面如图5-3所示:
图5-3汽车信息详情页面
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
QichexinxiEntity qichexinxi = qichexinxiService.selectById(id);
qichexinxi.setClicknum(qichexinxi.getClicknum()+1);
qichexinxi.setClicktime(new Date());
qichexinxiService.updateById(qichexinxi);
return R.ok().put("data", qichexinxi);
}
个人中心:在个人中心页面可以更新个人详细信息,并在我的发布和我的收藏页面对信息进行详细操作;如图5-4所示:
图5-4 个人中心界面
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
YonghuEntity yonghu = yonghuService.selectById(id);
return R.ok().put("data", yonghu);
}
5.2后台模块实现
后台登录,在登录页面选择登录角色,再正确输入用户名和密码后,进入操作系统进行操作;如图5-5所示。
图5-5 后台登录界面
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
5.2.1管理员模块实现
管理员进入主页面,主要功能包括对系统首页、个人中心、用户管理、普通管理员管理、汽车类别管理、汽车信息管理、租车订单管理、取消订单管理、还车信息管理、汽车资讯管理、汽车论坛、留言板管理、系统管理等进行操作。管理员主界面如图5-6所示:
图5-6 管理员主界面
管理员点击用户管理。进入用户页面输入账号和姓名可以查询,新增或删除用户列表,并根据需要对用户信息进行查看详情,修改或删除操作。如图5-7所示:
图5-7用户管理界面
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,YonghuEntity yonghu,
HttpServletRequest request){
EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
PageUtils page = yonghuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yonghu), params), params));
return R.ok().put("data", page);
}
管理员点击普通管理员管理。进入普通管理员页面输入管理账号和管理姓名可以查询,新增或删除普通管理员列表,并根据需要对普通管理员信息进行查看详情,修改或删除操作。如图5-8所示:
图5-8普通管理员管理界面
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UsersEntity user){
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
管理员点击汽车信息管理。进入汽车信息页面输入车牌号、选择汽车类别、车辆品牌和选择状态可以查询或删除汽车信息列表,并根据需要对汽车信息进行查看详情、修改或删除操作。如图5-9所示:
图5-9汽车信息管理界面
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,QichexinxiEntity qichexinxi,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("putongguanliyuan")) {
qichexinxi.setGuanlizhanghao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<QichexinxiEntity> ew = new EntityWrapper<QichexinxiEntity>();
PageUtils page = qichexinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, qichexinxi), params), params));
return R.ok().put("data", page);
}
管理员点击取消订单管理。进入取消订单页面输入车牌号、车辆品牌、汽车类别、姓名和选择是否通过可以查询或删除取消订单列表,并根据需要对取消订单信息进行查看详情或删除操作。如图5-10所示:
图5-10取消订单管理界面
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,QuxiaodingdanEntity quxiaodingdan,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
quxiaodingdan.setZhanghao((String)request.getSession().getAttribute("username"));
}
if(tableName.equals("putongguanliyuan")) {
quxiaodingdan.setGuanlizhanghao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<QuxiaodingdanEntity> ew = new EntityWrapper<QuxiaodingdanEntity>();
PageUtils page = quxiaodingdanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, quxiaodingdan), params), params));
return R.ok().put("data", page);
}
管理员点击还车信息管理。进入还车信息页面输入车牌号、车辆品牌、汽车类别、姓名和选择是否通过可以查询或删除还车信息列表,并根据需要对还车信息进行查看详情或删除操作。如图5-11所示:
图5-11还车信息管理界面
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,HaichexinxiEntity haichexinxi,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
haichexinxi.setZhanghao((String)request.getSession().getAttribute("username"));
}
if(tableName.equals("putongguanliyuan")) {
haichexinxi.setGuanlizhanghao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<HaichexinxiEntity> ew = new EntityWrapper<HaichexinxiEntity>();
PageUtils page = haichexinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, haichexinxi), params), params));
return R.ok().put("data", page);
}
管理员点击留言板管理。进入留言板管理页面输入用户名可以查询或删除留言板列表,并根据需要对留言板进行查看详情,修改,回复或删除操作。如图5-12所示:
图5-12留言板管理界面
/**
* 后端列表
*/
@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);
}
管理员点击汽车资讯管理。进入汽车资讯页面输入标题、简介和发布人进行查询,新增或删除汽车资讯列表。并根据需要对汽车资讯进行查看详情,修改或删除等操作。如图5-13所示:
图5-13汽车资讯管理界面
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,QichezixunEntity qichezixun,
HttpServletRequest request){
if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
qichezixun.setUserid((Long)request.getSession().getAttribute("userId"));
}
EntityWrapper<QichezixunEntity> ew = new EntityWrapper<QichezixunEntity>();
PageUtils page = qichezixunService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, qichezixun), params), params));
return R.ok().put("data", page);
}
管理员点击系统管理,进入关于我们页面输入标题可以查询关于我们列表,并根据需要对关于我们进行查看详情或修改操作;还可以对轮播图管理,系统简介和公告信息进行详细操作。如图5-14所示:
图5-14系统管理界面
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ConfigEntity config){
EntityWrapper<ConfigEntity> ew = new EntityWrapper<ConfigEntity>();
PageUtils page = configService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, config), params), params));
return R.ok().put("data", page);
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
ConfigEntity config = configService.selectById(id);
return R.ok().put("data", config);
}
/**
* 详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") String id){
ConfigEntity config = configService.selectById(id);
return R.ok().put("data", config);
}
5.2.2用户模块实现
用户进入主页面,主要功能包括对系统首页、个人中心、租车订单管理、取消订单管理、还车信息管理等进行操作。用户主界面如图5-15所示:
图5-15 用户主界面
用户点击租车订单管理。进入租车订单页面输入车牌号、车辆品牌、汽车类别、姓名和选择是否通过可以查询或删除租车订单列表,并根据需要对租车订单进行查看详情,归还汽车,取消订单或删除操作。如图5-16所示:
图5-16租车订单管理界面
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,QuxiaodingdanEntity quxiaodingdan,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
quxiaodingdan.setZhanghao((String)request.getSession().getAttribute("username"));
}
if(tableName.equals("putongguanliyuan")) {
quxiaodingdan.setGuanlizhanghao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<QuxiaodingdanEntity> ew = new EntityWrapper<QuxiaodingdanEntity>();
PageUtils page = quxiaodingdanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, quxiaodingdan), params), params));
return R.ok().put("data", page);
}
5.2.3普通管理员模块实现
普通管理员进入主页面,主要功能包括对系统首页、个人中心、汽车信息管理、租车订单管理、取消订单管理、还车信息管理、汽车资讯管理等进行操作。普通管理员主界面如图5-17所示:
图5-17普通管理员主界面