如何使用ssm实现理发店会员管理系统的设计和实现+vue

本文主要是介绍如何使用ssm实现理发店会员管理系统的设计和实现+vue,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

@TOC

ssm089理发店会员管理系统的设计和实现+vue

绪论

1.1 选题背景

网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。计算机软件可以针对不同行业的营业特点以及管理需求,设置不同的功能,可以符合各个行业的实际运营要求,其快速便捷的信息处理模式已经可以让信息的管理者从繁琐的工作中得到解脱,还可以实现数据的易维护和安全性。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此信息化管理模式也是当今的管理趋势。对于理发店会员信息,如果仍使用旧办法进行,将会影响其在行业中的竞争力,也很容易被时代淘汰,所以理发店会员信息的管理计算机化,系统化是必要的。设计开发理发店会员管理系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于理发店会员信息的维护和检索也不需要花费很多时间,非常的便利。

1.2 选题意义

理发店会员管理系统在实际运用中,对管理员的综合素质的提升也有帮助。因为理发店会员管理系统在减轻了理发店会员信息管理人员的工作量的同时,还可以让他们把节省出来的时间用来充实自己,提升个人能力,这样才可以充分发挥理发店会员管理系统提供的服务,让理发店会员管理系统显示数据信息的同时,也可以快速完成数据处理,提升服务水平。而且理发店会员管理系统开发需要投入的成本较低,但是后期运用中,会产生大量效益,尤其是理发店会员管理系统在进行高负荷运转时,还可以保证数据处理的质量与数据安全,通过对处理工作的流程的优化,可以节省传统模式需要投入的人力和资金,从而降低信息管理的成本。另外,理发店会员管理系统在让理发店会员信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升理发店会员管理系统提供的数据的可靠性,让系统数据的错误率降至最低。

1.3 研究内容

按照设计开发一个系统的常用流程来描述系统,可以把系统分成分析阶段,设计阶段,实现阶段,测试阶段。所以在编写系统的说明文档时,根据系统所处的阶段来描述系统的内容。

绪论:这是对选题的背景,意义等内容做出介绍。

系统开发技术:这是对系统即将使用的技术,包括使用的工具,编程的语言等做出介绍。

系统分析:这是对系统做出分析,包括投资前期必备的可行性分析,包括对用户调研获取的需求,包括系统运行具备的性能等内容做出介绍。

系统设计:这是对系统进行设计,包括运用绘图工具设计的系统功能结构,包括设计的在数据库中要创建的数据表的存储结构等内容做出介绍。

系统实现:这是对系统进行编码实现。包括实现的系统各个模块的运行效果等内容做出介绍。

系统测试:这是对编制的系统进行测试。包括功能的测试等内容做出介绍。

2 系统开发技术

这部分内容主要介绍本系统使用的技术,包括使用的工具,编程的语言等内容。

2.1 Java语言

Java语言自公元1995年至今,已经超过25年了,依然在软件开发上面有很大的市场占有率。当年Sun公司发明Java就是为了发展一门跨平台的高级编程语言,让程序开发人员专注于程序开发过程,不需要关注服务器是属于哪个平台,因为跨平台的特性让语言发展的很迅速。Java的发展,吸收了C++这些语言的优点,因为新生事物一般就是解决老旧事物一些痛点的,虽然Java也有很多缺点,但是起码也算是一种发展方向。学习Java不需要太多的指针这些理念,也不用学习太过复杂的数据结构理论,比如什么堆栈这些概念,除非某些特殊行业对这些要求相当严谨之外,一般用Java开发程序是不用考虑各种各样的数据结构的。因为Java属于一种强类型语言,已经对各种数据定义了各种相应的类型。Java对数据类型定义分为两大种,一种是基本类型,含有8个基本属性,另一个是包装类。基本类和包装类从根本的定义上,都有很明显的区分,计算机运行也会有很明显的差别,如果用错了会编译错误还会影响运行效果的,Java的各种优点只需要按部就班的学习使用即可。

2.2 SSM框架

本课题开发的应用程序主要采用的框架技术是SSM,是Java语言的一种框架集合的简称,目前在Java语言方面,主要有两大分支,一个是主攻Java语言,学习了Java基础之后,会有很多Java进阶框架进行学习,主要是针对应用程序后台进行开发设计,另一方面是转行去学习安卓语言,主要是做安卓的前端设计方面,虽然也是Java语言,但是主要去学习安卓平台的各种架构和框架了。但是不管前端应用如何,SSM框架主要是针对服务端方面进行开发的一个主流框架集合。针对于传统的SSH框架的臃肿,配置繁琐,不管是开发还是二次开发都会造成时间上大量的浪费,并且学习上面也不能有效衔接,需要去适应框架的各种设计,而框架设计比较死板,容易出错。SSM框架是当前最流行的,告别了繁琐的配置,让配置更加灵活,让数据操作更加方便,选择SSM框架进行开发感觉是很合适的。

2.3 MYSQL数据库

关系型数据库设计,对于数据库字段类型的设计以及字段长度的设计,都无时无刻的影响着后续程序开发后大量数据操作的运行效率。关系型数据库对不同的字段类型都有解释,本着课题所需的应用程序开发,寻找最适合的关系型数据库,基本上都有考虑。关系型数据库发展至今也有几十年了,优胜劣汰导致到现在还依然存在的关系型数据库其实并不多,基本上也都能满足应用程序的功能所需,所以要从其他方面来进行考虑数据库的选择。从安装维护上面考虑,SQL Server数据库有好几个G的安装包,并且安装过程中会安装很多不需要的功能,非常占用资源。Oracle数据库不比SQL Server安装包小,并且安装也会出现很多问题,对于课题所需来讲,没必要这么麻烦,并且安装还需要各种激活,只有MySQL数据库完全适合,几十兆大小的安装包,运行起来压力不大,毕竟开发电脑上还有很多其他有用的东西,而且完全免费,所以选择了MySQL数据库作为首选数据库。

3 系统分析

这部分内容虽然在开发流程中处于最开始的环节,但是它对接下来的设计和实现起着重要的作用,因为系统分析结果的好坏,将直接影响后面环节的开展。

3.1可行性研究

影响系统开发的因素有很多,比如开发成本高就不适合开展,或者是开发时间超过了预期,也不适合开展等等。所以,在正式作出开发决策前,研究系统可行性问题,从经济,时间,操作等角度论证系统是否可以开展。

3.1.1经济可行性

理发店会员管理系统可以简化工作流程,提供信息处理功能,并可以长期保存数据,在后期的数据查询与编辑中耗时少,提升信息管理效率,其带来的收益比较可观。对于本系统开发,无论是开发需要使用的计算机,还是开发工具等投入的成本很低,计算机是机房的电脑,开发工具是从网上下载安装的,并没有收取费用。

3.1.2时间可行性

理发店会员管理系统是作为本人毕设项目的一个作品,学院也充分预留了制作时间,并且在每个时间段,都安排了相应的任务,所以根据这个时间安排开展工作,是可以对本系统进行设计完成的。

3.1.3操作可行性

随着电脑的普及,已经有很多人可以独立操作电脑了。而本系统就是在配置了运行环境的电脑上运行,其功能简单,省去了很多繁琐的操作逻辑,使用者通过页面导航可以直接进入功能操作区,所以稍微懂点电脑的人,都可以轻松完成系统的使用。

综上所述,本系统可以开展接下来的工作了。

3.2系统性能分析

为了降低本系统在实际使用中的出错率,就需要分析系统具备的性能。常见的可以评估系统的性能的指标有安全性,易用性,健壮性等。

3.2.1系统易用性

系统提供的信息和服务都有特定的用户群,所以,一个容易操作的系统相比一个不方便使用的系统来讲,用户还是更加青睐于使用方便的系统。所以系统具备易用性就显得非常重要。

3.2.2系统健壮性

系统在与用户进行交互过程中,面对用户的误操作行为,系统应该有相应的处理这种问题的反馈机制,而不是进入系统崩溃状态。系统中设置了很多的功能,在应对系统中某个功能出现异常情况时,系统的其它功能还是可以让用户使用。这就是系统健壮性的体现。

3.2.3系统安全性

保存在系统里面的数据,都是比较重要的系统资源,一旦这些资源泄露,不仅会有财产损失,还会丧失很多客户。所以,系统里面的数据要随时都处于安全的环境中,因此就需要采取措施保证数据安全,比如设置登录功能,使用安全验证技术引导条件用户进入指定页面,而让非条件用户停留在登录页面,不能访问系统。

3.3 系统流程分析

软件开发设计的思想始终贯穿本系统,其开发流程见下图。前期需要进行功能分析,功能设计,还有对系统后台支持数据库的设计,利用编码技术对设计的系统进行实现,然后检测和完善。

图3.1系统开发流程图

访问者之所以可以访问理发店会员管理系统,主要是其数据库有该访问者的记录信息,这个记录是通过注册进行写入的数据。注册流程见下图。每当访问者进行理发店会员管理系统注册时,其登记的每条记录都会在系统后台进行逐个判断。这个判断规则是提前设置的。一旦该访问者的登记信息在数据库中保存,即代表该访问者成为理发店会员管理系统中的一份子。

图3.2 注册流程图

访问者操作系统,前提是需要验证身份,而登录功能的设置就是把本系统的用户引导进入后台操作区,把不是本系统的用户拒之门外。其流程见下图。

图3.3 登录流程图

3.4系统功能分析

在明确系统的用途,以及系统的目标用户群后,可以对本系统的功能进行设置,可以获取调研用户对功能的要求,也可以对市场上同类系统进行分析和总结,得出本系统的功能。

理发店会员管理系统设置了管理员权限,其用例图见下图。管理员登录进入本人后台之后,管理美发,商铺,优惠活动,用户分享信息,审核用户预约的美发信息。

图3.4 管理员用例图

理发店会员管理系统设置了用户权限,其用例图见下图。用户预约美发,查看并评论商铺,优惠活动以及用户分享信息。

图3.5 用户用例图

4 系统设计

当前,系统的类型有很多,从系统呈现的内容来看,系统的类型有社交类,有商业类,有政府类,有新闻类等。那么,在众多系统类型中,先明确将要设计的系统的类型才是系统设计的首要工作,然后在此基础上明确系统的用户群,功能等,针对这些信息设计出具有独特体验和视觉的系统。如此才能让系统比较具有特色,也能够在众多相似系统中给用户留下深刻印象。

4.1系统目标

本系统在功能制定上,严格参照用户的要求,但是在设计本系统时,也要满足易操作,使用便利的设计要求。由此,设计出一个规范化并且符合用户需求的系统,一定要达到下述系统目标。

第一个系统目标:用户与系统之间的操作方式是基于人机对话,可视化界面的设计除了美观性之外,也具备友好性。可视化界面提供的各类信息符合准确性,可靠性的要求,并能够方便用户灵活查看。

第二个系统目标:用户与系统交互产生的数据,要严格规范的保存在数据库里,无论是后期管理人员查找与管理,都要确保数据安全。

第三个系统目标:实现用户需求的功能。根据对用户的调查得出的功能需求,完成理发店会员管理系统的设计与实现。

第四个系统目标:在必要环节,对用户登记的数据进行检查,包括数据长度,以及数据输入类型等的检查,发现错误及时反馈,引导用户规范登记数据。常见的有密码修改,注册登录,用户资料填写等环节的数据核验。

第五个系统目标:设计开发本系统,需要尽最大努力,在系统具备易操作的特点外,也要求系统于后期使用中,维护方便,让系统具备易维护的特点。

第六个系统目标:本系统在交付用户使用时,可以达到运行稳定的目标,另外,系统具备安全性,也符合可靠性的条件,用户可以放心使用。

4.2功能结构设计

前面所做的功能分析,只是本系统的一个大概功能,这部分需要在此基础上进行各个模块的详细设计。

设计的管理员的详细功能见下图,管理员登录进入本人后台之后,管理美发,商铺,优惠活动,用户分享信息,审核用户预约的美发信息。

图4.1 管理员功能结构图

设计的用户的详细功能见下图,用户预约美发,查看并评论商铺,优惠活动以及用户分享信息。

图4.2 用户功能结构图

4.3数据库设计

相比非关系型数据库来说,目前市场上使用率比较高,并且易于维护的数据库,当数关系型数据库了。这个数据库主要是基于关系模型的方式来对数据信息进行组织。也就是常见的二维表模型。可以说二维表和二维表之间的相互联系就构成了关系型数据库。

4.3.1数据库E-R图

为了更好地保存理发店会员管理系统产生的数据,就需要在数据库的设计阶段对E-R模型进行建立,以及完成数据库中的表结构的创建。之所以要单独完成数据库的设计,主要有以下几点原因:

第一点:防止代码冗余;

第二点:防止占用过多内存;

第三点:提升数据库的整体性能,方便程序开发以及数据更新;

第四点:保证数据的完整性;

本部分内容主要在于建立本系统的E-R模型,需要先收集数据,然后根据数据库实现的思路,对用户的需求进行分析,这期间需要对实体,属性,还有关系进行标识,为绘制E-R模型做好充足准备。同时,在作图中,也要注意作图规范,注意每个符号的正确使用。

(1)设计的商铺实体,其具备的属性见下图。

图4.4 商铺实体属性图

(2)设计的美发实体,其具备的属性见下图。

图4.5 美发实体属性图

(3)设计的用户实体,其具备的属性见下图。

图4.6 用户实体属性图

(4)设计的留言实体,其具备的属性见下图。

图4.7 留言实体属性图

(5)设计的各实体间关系见下图。

图4.8 实体间关系E-R图

4.3.2 数据库表结构

为了设计出结构合理,性能优良的数据库,在设计数据库时,需要遵循三大范式:

第一范式:确保数据表当中的每列所代表的字段值都不能再进行分解了;

第二范式:在满足第一范式基础上,让数据表中每列与主键相关;

第三范式:在满足第二范式基础上,确保每列数据直接与主键相关,不是间接相关。

从上面的表述中可以看出,这三大范式,在等级上还是有区分的,最低等级的就数第一范式,最高等级的就是第三范式,趋于两者中间的是第二范式。总之,数据库设计按照这三大范式进行,可以简化设计过程,并且还会减少数据冗余,对于数据检索效率的提升也很有帮助。

表4.1 美发评论信息表

字段类型默认注释
id (主键)bigint(20)主键
addtimetimestampCURRENT_TIMESTAMP创建时间
refidbigint(20)关联表id
useridbigint(20)用户id
nicknamevarchar(200)NULL用户名
contentlongtext评论内容
replylongtextNULL回复内容

表4.2 商铺评论信息表

字段类型默认注释
id (主键)bigint(20)主键
addtimetimestampCURRENT_TIMESTAMP创建时间
refidbigint(20)关联表id
useridbigint(20)用户id
nicknamevarchar(200)NULL用户名
contentlongtext评论内容
replylongtextNULL回复内容

表4.3 用户分享评论信息表

字段类型默认注释
id (主键)bigint(20)主键
addtimetimestampCURRENT_TIMESTAMP创建时间
refidbigint(20)关联表id
useridbigint(20)用户id
nicknamevarchar(200)NULL用户名
contentlongtext评论内容
replylongtextNULL回复内容

表4.4 优惠活动评论信息表

字段类型默认注释
id (主键)bigint(20)主键
addtimetimestampCURRENT_TIMESTAMP创建时间
refidbigint(20)关联表id
useridbigint(20)用户id
nicknamevarchar(200)NULL用户名
contentlongtext评论内容
replylongtextNULL回复内容

表4.5 美发信息表

字段类型默认注释
id (主键)bigint(20)主键
addtimetimestampCURRENT_TIMESTAMP创建时间
mingchengvarchar(200)NULL名称
xiangmuleixingvarchar(200)NULL项目类型
hulixiaoguolongtextNULL护理效果
jiageint(11)NULL价格
xiangqinglongtextNULL详情
tupianvarchar(200)NULL图片
thumbsupnumint(11)0
crazilynumint(11)0

表4.6 留言板信息表

字段类型默认注释
id (主键)bigint(20)主键
addtimetimestampCURRENT_TIMESTAMP创建时间
useridbigint(20)留言人id
usernamevarchar(200)NULL用户名
contentlongtext留言内容
replylongtextNULL回复内容

表4.7 美发资讯信息表

字段类型默认注释
id (主键)bigint(20)主键
addtimetimestampCURRENT_TIMESTAMP创建时间
titlevarchar(200)标题
introductionlongtextNULL简介
picturevarchar(200)图片
contentlongtext内容

表4.8 商铺信息表

字段类型默认注释
id (主键)bigint(20)主键
addtimetimestampCURRENT_TIMESTAMP创建时间
shangpumingchengvarchar(200)商铺名称
shangpudizhivarchar(200)NULL商铺地址
jingyingfanweivarchar(200)NULL经营范围
lianxirenvarchar(200)NULL联系人
lianxidianhuavarchar(200)联系电话
shangpujieshaolongtextNULL商铺介绍
tupianvarchar(200)NULL图片
thumbsupnumint(11)0
crazilynumint(11)0

表4.9 收藏信息表

字段类型默认注释
id (主键)bigint(20)主键
addtimetimestampCURRENT_TIMESTAMP创建时间
useridbigint(20)用户id
refidbigint(20)NULL收藏id
tablenamevarchar(200)NULL表名
namevarchar(200)收藏名称
picturevarchar(200)收藏图片

表4.10 管理员信息表

字段类型默认注释
id (主键)bigint(20)主键
usernamevarchar(100)用户名
passwordvarchar(100)密码
rolevarchar(100)管理员角色
addtimetimestampCURRENT_TIMESTAMP新增时间

表4.11 用户信息表

字段类型默认注释
id (主键)bigint(20)主键
addtimetimestampCURRENT_TIMESTAMP创建时间
zhanghaovarchar(200)账号
mimavarchar(200)密码
xingmingvarchar(200)姓名
xingbievarchar(200)NULL性别
shoujivarchar(200)NULL手机
youxiangvarchar(200)NULL邮箱
shenfenzhengvarchar(200)NULL身份证
tupianvarchar(200)NULL图片

表4.12 用户分享信息表

字段类型默认注释
id (主键)bigint(20)主键
addtimetimestampCURRENT_TIMESTAMP创建时间
zhanghaovarchar(200)NULL账号
mimavarchar(200)NULL密码
mingchengvarchar(200)NULL名称
xiangmuleixingvarchar(200)NULL项目类型
hulixiaoguolongtextNULL护理效果
jiageint(11)NULL价格
xiangqinglongtextNULL详情
tupianvarchar(200)NULL图片
thumbsupnumint(11)0
crazilynumint(11)0
clicktimedatetimeNULL最近点击时间
clicknumint(11)0点击次数

表4.13 用户预约信息表

字段类型默认注释
id (主键)bigint(20)主键
addtimetimestampCURRENT_TIMESTAMP创建时间
mingchengvarchar(200)NULL名称
xiangmuleixingvarchar(200)NULL项目类型
jiageint(11)NULL价格
yuyueshijiandateNULL预约时间
zhanghaovarchar(200)NULL账号
mimavarchar(200)NULL密码
sfshvarchar(200)是否审核
shhflongtextNULL审核回复
ispayvarchar(200)未支付是否支付

表4.14 优惠活动信息表

字段类型默认注释
id (主键)bigint(20)主键
addtimetimestampCURRENT_TIMESTAMP创建时间
huodongzhutivarchar(200)NULL活动主题
huodongmudevarchar(200)NULL活动目的
youhuixiangmulongtextNULL优惠项目
kaishishijiandateNULL开始时间
jieshushijiandateNULL结束时间
xiangqinglongtextNULL详情
fengmianvarchar(200)NULL封面
thumbsupnumint(11)0
crazilynumint(11)0

5 系统实现

在此部分内容中,主要通过系统功能的运行效果图展示前面设计的最终结果。系统实现对编制人员的技术能力有较高要求,因为需要他们使用编程的方式去实现系统设计的方案。

5.1 管理员功能实现

5.1.1 美发信息管理

管理员权限中的美发信息管理,其运行效果见下图。管理员查看美发相关评论,修改美发信息,查询美发信息。

图5.1 美发信息管理页面

5.1.2 用户预约管理

管理员权限中的用户预约管理,其运行效果见下图。管理员需要审核用户预约的美发,查看用户是否完成支付。

图5.2 用户预约管理页面

5.1.3 用户分享管理

管理员权限中的用户分享管理,其运行效果见下图。管理员查看用户分享的信息,查询,修改用户的分享信息。

图5.3 用户分享管理页面

5.1.4 优惠活动管理

管理员权限中的优惠活动管理,其运行效果见下图。管理员修改优惠活动信息,查看用户评论优惠活动的信息,删除指定的优惠活动信息。

图5.4 优惠活动管理页面

5.2 用户功能实现

5.2.1 商铺信息

用户权限中的商铺信息,其运行效果见下图。用户查看商铺介绍,评论商铺。

图5.5 商铺信息页面

5.2.2 美发信息

用户权限中的美发信息,其运行效果见下图。用户收藏美发信息,评论美发信息,预约美发。

图5.6 美发信息页面

5.2.3 用户分享

用户权限中的用户分享,其运行效果见下图。用户查看别人发布的分享信息,可以收藏分享信息,评论分享信息。

图5.7 用户分享页面

5.2.4 优惠活动

用户权限中的优惠活动,其运行效果见下图。用户查看优惠活动详细信息,评论优惠活动。

图5.8 优惠活动页面

系统

DiscussyonghufenxiangServiceImpl.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.DiscussyonghufenxiangDao;
import com.entity.DiscussyonghufenxiangEntity;
import com.service.DiscussyonghufenxiangService;
import com.entity.vo.DiscussyonghufenxiangVO;
import com.entity.view.DiscussyonghufenxiangView;@Service("discussyonghufenxiangService")
public class DiscussyonghufenxiangServiceImpl extends ServiceImpl<DiscussyonghufenxiangDao, DiscussyonghufenxiangEntity> implements DiscussyonghufenxiangService {@Overridepublic PageUtils queryPage(Map<String, Object> params) {Page<DiscussyonghufenxiangEntity> page = this.selectPage(new Query<DiscussyonghufenxiangEntity>(params).getPage(),new EntityWrapper<DiscussyonghufenxiangEntity>());return new PageUtils(page);}@Overridepublic PageUtils queryPage(Map<String, Object> params, Wrapper<DiscussyonghufenxiangEntity> wrapper) {Page<DiscussyonghufenxiangView> page =new Query<DiscussyonghufenxiangView>(params).getPage();page.setRecords(baseMapper.selectListView(page,wrapper));PageUtils pageUtil = new PageUtils(page);return pageUtil;}@Overridepublic List<DiscussyonghufenxiangVO> selectListVO(Wrapper<DiscussyonghufenxiangEntity> wrapper) {return baseMapper.selectListVO(wrapper);}@Overridepublic DiscussyonghufenxiangVO selectVO(Wrapper<DiscussyonghufenxiangEntity> wrapper) {return baseMapper.selectVO(wrapper);}@Overridepublic List<DiscussyonghufenxiangView> selectListView(Wrapper<DiscussyonghufenxiangEntity> wrapper) {return baseMapper.selectListView(wrapper);}@Overridepublic DiscussyonghufenxiangView selectView(Wrapper<DiscussyonghufenxiangEntity> 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-03-26 22:27:10*/
@RestController
@RequestMapping("/messages")
public class MessagesController {@Autowiredprivate 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);}}
YonghuyuyueServiceImpl.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.YonghuyuyueDao;
import com.entity.YonghuyuyueEntity;
import com.service.YonghuyuyueService;
import com.entity.vo.YonghuyuyueVO;
import com.entity.view.YonghuyuyueView;@Service("yonghuyuyueService")
public class YonghuyuyueServiceImpl extends ServiceImpl<YonghuyuyueDao, YonghuyuyueEntity> implements YonghuyuyueService {@Overridepublic PageUtils queryPage(Map<String, Object> params) {Page<YonghuyuyueEntity> page = this.selectPage(new Query<YonghuyuyueEntity>(params).getPage(),new EntityWrapper<YonghuyuyueEntity>());return new PageUtils(page);}@Overridepublic PageUtils queryPage(Map<String, Object> params, Wrapper<YonghuyuyueEntity> wrapper) {Page<YonghuyuyueView> page =new Query<YonghuyuyueView>(params).getPage();page.setRecords(baseMapper.selectListView(page,wrapper));PageUtils pageUtil = new PageUtils(page);return pageUtil;}@Overridepublic List<YonghuyuyueVO> selectListVO(Wrapper<YonghuyuyueEntity> wrapper) {return baseMapper.selectListVO(wrapper);}@Overridepublic YonghuyuyueVO selectVO(Wrapper<YonghuyuyueEntity> wrapper) {return baseMapper.selectVO(wrapper);}@Overridepublic List<YonghuyuyueView> selectListView(Wrapper<YonghuyuyueEntity> wrapper) {return baseMapper.selectListView(wrapper);}@Overridepublic YonghuyuyueView selectView(Wrapper<YonghuyuyueEntity> wrapper) {return baseMapper.selectView(wrapper);}}

声明

本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。

这篇关于如何使用ssm实现理发店会员管理系统的设计和实现+vue的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104993

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu