@TOC
springboot422甘肃旅游服务平台代码--论文pf
绪论
1.1 研究配景
如今各人正处于互联网加的期间,这个期间它就是一个信息内容无比丰富,信息处置处罚与管理变得越加高效的网络化的期间,这个期间让各人的生存不光变得更加地便利化,也让时间变得更加地宝贵化,由于每天的每分钟,每秒钟这些时间都能让人们处置处罚大批量的一样平常变乱,这些场景,是之前的手工模式无法与之相抗衡的。对于景点信息的管理来说,传统的通过纸质文档记载信息的方式已经掉队了,依赖手工管理景点信息,不光淹灭较长的工作时间,在对记载各种信息的文档举行信息查询以及信息查对利用时,也不能及时包管信息的准确性,基于如许的办公低服从情况下,对于景点信息的处置处罚就要提出新的办理方案。由于这个期间的信息不停都在高速发展,要是不抱着发展的观念对待变乱,极有大概被这个市场快速忘记,以致被无情地镌汰掉。以是尽早开辟一款甘肃旅游服务平台举行信息的快速处置处罚,既跟上了期间的发展脚步,也能让自己的核心竞争力有所提拔。
1.2目的和意义
互联网加的期间一方面是加快信息的发展,另一方面也是对传统行业举行筛选,可以或许继承发展的,肯定是那些可以或许充实运用互联网技能举行自身升级改革的行业。那些停步不前的行业只能就此竣事,进而被各人所忘记。这次筹划出来的甘肃旅游服务平台,它不光可以或许让管理职员在信息增长,信息的编辑等变乱处置处罚上,节省很多的时间,也会砍掉一部分的人工资本,节省不须要开支的资金。别的,此体系的利用界面是可视化的界面,管理职员无需付费培训就能尽快上手。甘肃旅游服务平台的开辟意义如下:
1、管理职员再也不消在查询信息上淹灭大量宝贵的时间了,通过信息关键词字段就可以在几秒内获取须要的信息,在各种突发变乱眼前管理职员也不消张皇,可以从容淡定地处置处罚各种干系信息。
2、该体系在每天的24小时期间都是不会克制服务的,只要有信息利用的须要,管理职员都能使用常用的360欣赏器,大概百度欣赏器,大概谷歌欣赏器,2345欣赏器等大众欣赏器都能登录体系,然后操尴尬刁难应的功能。
3、有了这款信息管理类利用软件,全部须要举行处置处罚的数据不消在纸质版本的文档上举行记录,而是基于电脑举行信息录入。
4、景点方面的信息都是通过网站举行表现,着实质是这些信息都生存在网站对应的数据库内里。只要利用员不去恶意删除信息,那么这些信息将会永世生存。
1.3 论文结构安排
编写甘肃旅游服务平台相对应的论文,着实就是对开辟完成的步伐举行再次解读的过程。本论文从七个方面的内容解说了开辟的步伐,详细内容如下:
第一个部分:就是论文的绪论,这个部分就是先容在什么样的配景下开辟的步伐,以及这个步伐开辟出来具有什么意义等内容。
第二个部分:就是先容开辟这个步伐使用了什么技能,使用什么数据库生存步伐的数据信息,步伐开辟的语言是使用的什么语言等内容。
第三个部分:就是先容这个步伐开辟在现实生存的可行性题目,也报告了步伐开辟须要设置什么功能等内容。
第四个部分:就是已经知晓步伐的大抵功能,须要对步伐的功能举行更为严酷的细分,也须要出具相应的功能结构图,同时,也要筹划步伐对应的数据库,包罗数据库内里的数据表的筹划等内容。
第五个部分:就是在体系的编码阶段,须要使用编程语言完成步伐的功能,完成步伐的界面筹划,终极以界面实现的效果图展示筹划结果等内容。
第六个部分:就是步伐已经完成了开辟的条件之下,须要检测步伐的各个模块是否衔接正常,步伐各个功能可否在网络等齐备外部条件正常的情况下运行,这期间要是出现任何错误都须要及时记载并在后期举行修补美满。
第七个部分:就是论文末了的总结部分,形貌遇到的题目,接纳的办理思绪等内容。
2 干系技能
2.1 VUE先容
Vue (读音 /vjuː/,雷同于 view) 是一套用于构建用户界面的渐进式框架。与别的大型框架差别的是,Vue 被筹划为可以自底向上逐层应用。Vue 的核心库只关凝视图层,不光易于上手,还便于与第三方库或既有项目整合。另一方面,当与当代化的工具链以及各种支持类库联合使用时,Vue 也完全可以或许为复杂的单页应用提供驱动。
2.2 Mysql数据库先容
有了步伐功能的利用,也须要对步伐利用的各个功能所产生的数据信息存放在一个固定的堆栈内里,这个所谓的堆栈就是各人最认识的步伐开辟须要使用的数据库了,数据库可以或许发展到至今的容貌,着实也是履历了很多的变革进程的,在最开始由于数据信息处置处罚的须要开始推出最低级的数据管理,这个阶段也是数据库早期的人工管理的阶段,厥后也履历了文件管理的阶段,这个阶段的数据管来由于信息不可以或许举行共享,加上管理的数据对配套的步伐产生了较强的依赖性,在数据信息管理上也存在很多数据的重复记录造成数据冗余等题目。以是为了办理上述一系列文件管理阶段所产生的数据管理的题目,对数据管理方式举行了全方位的升级改造,也就让数据管理进入了一个全新的阶段——数据库体系的阶段。这个阶段也是数据库管理数据的一个全新的相当高级的阶段。
说到数据库,也不得不说数据库的模子,数据库拥有的数据模子有网状,尚有条理,以及关系型这三样数据库模子。网状的结构就是把记载的每条信息都比喻成一个点,点跟点之间也有接洽,终极就形成了一个像网一样的结构,就是所谓的网状数据模子。也有对数据记载使用树状结构的方式举行数据生存,这个就是条理数据模子,关系数据库模子运用在如今市面上常见的数据库当中了,像本体系开辟使用的MySQL数据库,尚有安装过程比力复杂的Sqlserver数据库,也有一些比力小巧的关系型数据库,像Access数据库,FoxPro数据库等数据库。如许的关系型数据库将数据表内里的行尚有罗列行相互关联形成一个二维矩阵的方式来生存步伐所产生的数据信息。
本次之以是选择MySQL数据库来当步伐数据存放的堆栈,则是由于此数据库安装不消耗时,也不须要各种百度信息去办理安装过程中出现的任何题目,而且由于自己的电脑内存比力小,才4个G,为了更好的开辟项目步伐,针对低设置的电脑选择MySQL数据库也是情理之中。图2.3展示了数据列筹划中须要使用的列范例。
图2.3数据列范例图
2.3 JAVA语言先容
在1995年这一年的5月份,著名的Sun Microsystems公司在步伐开辟筹划上面审慎推出一种面向对象开辟的步伐筹划语言——Java,最开始的时间Java是由詹姆斯.高斯林这位巨大的JAVA之父来举行主导,但是在厥后由于各种缘故起因,让甲骨文公司这个针对商业步伐创建了oracle大型数据库的公司收购了Java。Java的平台统共算下来有3个,分别为javaME和javaSE以及javaEE这3个java平台。下面将对其举行分别先容。
1.在电脑桌面步伐的开辟上面须要选择JavaME,这个用得也比力多。
2.企业也会根据工作以及业务须要开辟各种软件,那么就会选用JavcEE这个支持企业版软件的开辟的Java平台,JavcEE主攻运用在企业范畴上面的web应用,JavcEE也在javaSE的根本上得到了好比jsp技能 ,Servlet技能等步伐开辟技能的支持。
3.如此生存中手机的遍及化,也使得手机端如许的移动装备的软件的鼓起,JavaME这个迷你版java平台就能运用于移动端的软件开辟利用。图2.4就是 Java技能原理图。
图2.4 Java技能原理图
3 体系分析
3.1体系可行性分析
须要使用大部分精神开辟的甘肃旅游服务平台为了充实低沉开辟风险,特意在开辟之前举行可行性分析这个验证体系开辟是否可行的步调。本文就会从技能角度,经济角度,尚有用户使用的步伐的运行角度举行综合论述。
3.1.1 技能可行性分析
开辟步伐选择的是面向对象的,功能强大的,简朴易用的Java步伐筹划语言,数据库的开辟工具使用到了Mysql数据库,由于自己之前打仗过一些简朴的步伐开辟方面的筹划作品,以是对Myeclipse工具的使用比力熟练,对于数据库的利用本事也有肯定的积累。别的,步伐开辟须要在自己电脑上安装的软件并不多,在win7利用体系的大情况下,可以或许完全搭建好步伐开辟的利用情况,好比Myeclipse工具,Mysql数据库工具,游览器,以及处置处罚步伐图片的Photoshop工具等都能安装在自己的电脑上。总的说来,开辟这个步伐在技能上是可以实现的。
3.1.2 经济可行性分析
开辟出来的步伐并不是朝着商业步伐的方向举行筹划开辟的,它只是作为一个毕业筹划项目举行开辟,重要用于查验门生在学校所学知识的一个查验,也锻炼门生运用网络,图书等工具举行自学的本领。以是开辟这个步伐软件并不会涉及到经济上面的开销,在开辟软件的选择上也不会额外付费安装软件,在开辟软件的官网上面就可以下载须要的软件,并根据提示的安装步调安装软件到自己的电脑上面。总的说来,开辟这个步伐在经济上也不存在经费付出。
3.1.3 运行可行性分析
由于这个步伐软件从开始开辟到开辟克制都是根据用户的需求举行定制,思量到此步伐软件是面向广大平凡利用用户,鉴于他们的知识文化水平,特意开辟出一个可利用性强的,可以或许很轻易让使用用户上手的,具有可视化利用界面的一个步伐软件。总的说来,这个步伐站在用户运行步伐的角度上分析,是不存在利用难的题目的。用户只要打开步伐就可以免去专人培训举行步伐功能利用。
颠末上面从技能的角度,从经济的角度,从步伐运行的角度这三个角度分析现筹划开辟的步伐,可以得出该步伐软件是可以举行开辟利用的。
3.2体系性能分析
3.2.1 体系安全性
步伐在使用中是不允许其他访问者随意偷取步伐内里的秘密信息,也不允许其他利用者越权利用其他管理用户利用的功能,要真正杜绝这些征象就必须在步伐开辟之前把步伐的安全性给思量进去。
好比如今很多步伐都会把用户注册的功能给思量进去,让用户在注册页面功能区填写自己的个人信息,这些数据信息涵盖了用户本人的姓名,用户对步伐登录设置的暗码,用户常常使用的邮箱,用户的常用接洽方式尚有用户的所住地点等信息,这些信息都是筹划到用户本人的隐私,那么这些信息在传输给步伐背景时,是须要举行管理并生存至对应的数据库文件内里。要是有人恶意偷取步伐的数据信息,也就会让那些注册了此步伐软件的用户的个人秘密信息都会遭到泄漏。这些信息落入其他非法分子手里,他们极有大概根据用户的隐私信息去骚扰用户,并把这些信息用于各种商业用途谋取其他非法的长处。以是数据安全性是一个体系能不能使用的主要尺度。
3.2.2 数据完备性
数据完备性是确保数据信息是否具有可靠性,是否具有参考代价的一个告急因素,数据信息只形貌一部分,大概必有的数据信息反而为空等征象都是代表着这个数据信息不完备,有数据缺陷,这是个很严厉的题目,由于如许的数据信息跟垃圾信息没什么两样。
说到数据完备性,不得不提最常用的步伐表单功能。这些表单重要就是提取广大用户的数据信息的,须要广大用户根据表单上的要求,填写自己的姓名信息,以及自己的接洽方式信息,有些也会有额外的信息填写要求,有必须要填的选项,也有不须要必填的选项。假如广大用户为了掩护自己的隐私,大概不想受到其他人的骚扰,不填写必填项等信息,广大用户在末了提交此表单的时间,通常都是提交不了的。
数据完备性不光仅限于登记的数据要完备,它也须要步伐内里的全部数据信息之间存在关联,而且这种接洽也是要求不能出不对的。
由于数据表之间也会存在肯定的接洽,以是同一个数据也会出如今另一个表格内里,那么这两个表格记载的同一个数据应该是一样的。不可以或许是同样的数据信息在差别表中不一样。
3.2.3体系可扩展性
齐备事物都是不停在发展,步伐员开辟软件也须要带着发展的头脑去举行软件开辟利用,如许的话,开辟出来的步伐在应对管理所需时,也会相对应的举行步伐升级与更新。岂论是功能美满还是数据库升级都能在原来的根本上对原有步伐举行迭代升级。让开辟出来的步伐可以或许走得越来越远。这也是广大用户对步伐软件的使用要求。
3.3体系流程分析
管理员假如要利用体系提供的功能,那么管理员就要在体系的登录界面,填写管理员登录的账号信息,填写相应的暗码信息,管理员须要包管这两者可以或许验证身份的账号以及暗码信息的准确性,如许管理员就可以通过登录界面进入体系背景利用界面。图3.1就是开辟的步伐软件甘肃旅游服务平台它的利用流程图。
图3.1 体系利用流程图
3.3.1体系登录流程
甘肃旅游服务平台的登录流程,针对的脚色就是利用员的利用脚色。在登录界面须要的必填信息就是账号信息,配上登录的暗码信息就能登录甘肃旅游服务平台,须要留意的就是必填的账号信息和登录暗码信息,都须要举行验证,体系会判定账号尚有填写的暗码信息的准确性,只有这两者信息都准确了,就能乐成登录甘肃旅游服务平台了。体系登录流程图如下图。
图3.2 体系登录流程图
3.3.2信息添加流程
用户在添加信息的界面填写的任何数据信息也是须要验证的,体系会判定用户填写信息的格式尚有数据信息是不是正当信息,假如用户填写的信息是正当内容,体系就会在数据库对应的数据表内里添加信息。添加信息流程如下图。
图3.3 添加信息流程图
3.3.3信息删除流程
对于那些已经失效的信息,须要用户及时举行删除,如许有利于腾出空间存放其他信息。删除信息也是先从数据库对应数据表内里删除数据,接着就是更新数据表的信息。如许删除的数据,在用户利用界面就检察不到了。信息删除流程如下图所示。
图3.4 信息删除流程图
3.4体系功能分析
甘肃旅游服务平台具有管理员脚色,用户脚色,这几个利用权限。
甘肃旅游服务平台针对管理员设置的功能有:添加并管理各种范例信息,管理用户账户信息,管理景点信息,管理公告信息等内容。
甘肃旅游服务平台针对用户设置的功能有:检察并修改个人信息,检察景点信息,检察公告信息等内容。
4 体系筹划
4.1体系概要筹划
甘肃旅游服务平台并没有使用C/S结构,而是基于网络欣赏器的方式去访问服务器,进而获取须要的数据信息,这种依赖欣赏器举行数据访问的模式就是如今用得比力广泛的实用于广域网而且没有网速限定要求的小步伐结构,图4.1就是开辟出来的步伐工作原理图。
图4.1 步伐工作的原理图
4.2体系功能结构筹划
甘肃旅游服务平台针对管理员设置的功能有:添加并管理各种范例信息,管理用户账户信息,管理景点信息,管理公告信息等内容。
甘肃旅游服务平台针对用户设置的功能有:检察并修改个人信息,检察景点信息,检察公告信息等内容。
4.3数据库筹划
4.3.1数据库E-R图筹划
步伐筹划是离不开对应数据库的筹划利用的,如许的做法就是淘汰数据对步伐的依赖性,以是数据库的筹划也是须要淹灭大量的一样平常时间来举行筹划的,在筹划中对步伐开辟须要存储的数据信息举行实体分别,先确认实体,然后筹划实体的属性等利用,这种筹划就是数据库筹划内里不能少的必须有的E-R模子筹划。为了低沉步伐筹划的对应的数据库筹划难度,开辟职员也可以使用相应的工具来举行E-R模子筹划,如今市面上筹划E-R模子的工具有PowerDesigner建模工具,Navicat制作工具,尚有微软的Visio绘图工具。为了轻巧起见,本步伐在筹划E-R模子的时间,就选用了微软的Visio这款功能强大,利用便利的绘图工具。
(1)下图是美食实体和其具备的属性。
美食实体属性图
(2)下图是用户实体和其具备的属性。
用户实体属性图
(3)下图是公告信息实体和其具备的属性。
公告信息实体属性图
(4)下图是字典表实体和其具备的属性。
字典表实体属性图
(5)下图是景点实体和其具备的属性。
景点实体属性图
(6)下图是房间收藏实体和其具备的属性。
房间收藏实体属性图
(7)下图是景点收藏实体和其具备的属性。
景点收藏实体属性图
(8)下图是美食收藏实体和其具备的属性。
美食收藏实体属性图
(9)下图是美食评价实体和其具备的属性。
美食评价实体属性图
(10)下图是美食订单实体和其具备的属性。
美食订单实体属性图
(11)下图是商品实体和其具备的属性。
商品实体属性图
(12)下图是景点门票订单实体和其具备的属性。
景点门票订单实体属性图
(13)下图是旅店实体和其具备的属性。
旅店实体属性图
(14)下图是景点评价实体和其具备的属性。
景点评价实体属性图
(15)下图是商家实体和其具备的属性。
商家实体属性图
(16)下图是商品收藏实体和其具备的属性。
商品收藏实体属性图
(17)下图是旅店评价实体和其具备的属性。
旅店评价实体属性图
(18)下图是旅店订单实体和其具备的属性。
旅店订单实体属性图
(19)下图是商品评价实体和其具备的属性。
商品评价实体属性图
(20)下图是商品订单实体和其具备的属性。
商品订单实体属性图
(21)下图是收货地点实体和其具备的属性。
收货地点实体属性图
4.3.2 数据库表结构筹划
本次步伐开辟选用的数据库管理工具是Mysql数据管理工具,使用它存放数据也须要创建步伐对应的数据库文件,并定名刚创建的数据库文件,有了数据库也须要创建各种数据表来充实数据库,在数据表的创建中,不光须要对数据表定名,也须要对数据表的字段举行筹划,包罗每个数据表内里须要设置的字段名称,字段对应的数据范例信息,字段的主键设置这个也是不可缺少的,由于每个数据表内里的主键就是标记着这个数据表跟其他数据表相区分的唯一标记。就相当于生存中的每个人都有姓名,但是上网搜索自己的名字,会发现天下上下有很多人的名字跟自己的名字如出一辙,包罗姓氏以及名字,区分每个人的唯一信息就是每个人的身份证号信息,主键在数据表内里也是起着如许的告急作用。下面就先容本次开辟的步伐甘肃旅游服务平台的数据表结构信息。
表4.1收货地点表
序号列名数据范例阐明允许空1IdIntid否2yonghu_idInteger创建用户是3address_nameString收货人是4address_phoneString电话是5address_dizhiString地点是6isdefault_typesInteger是否默认地点是7insert_timeDate添加时间是8update_timeDate修改时间是9create_timeDate创建时间是 表4.2字典表表
序号列名数据范例阐明允许空1IdIntid否2dic_codeString字段是3dic_nameString字段名是4code_indexInteger编码是5index_nameString编码名字是6super_idInteger父字段id是7beizhuString备注是8create_timeDate创建时间是 表4.3公告信息表
序号列名数据范例阐明允许空1IdIntid否2gonggao_nameString公告名称是3gonggao_photoString公告图片是4gonggao_typesInteger公告范例是5insert_timeDate发布时间是6gonggao_contentString公告详情是7create_timeDate创建时间是 表4.4景点表
序号列名数据范例阐明允许空1IdIntid否2shangjia_idInteger商家是3jingdian_nameString景点名称是4jingdian_uuid_numberString景点编号是5jingdian_photoString景点照片是6jingdian_videoString视频先容是7jingdian_addressString景点位置是8zan_numberInteger赞是9cai_numberInteger踩是10jingdian_typesInteger景点范例是11jingdian_kucun_numberInteger剩余门票数是12jingdian_old_moneyBigDecimal景点原价是13jingdian_new_moneyBigDecimal现价/张是14jingdian_clicknumInteger景点热度是15jingdian_contentString景点先容是16shangxia_typesInteger是否上架是17jingdian_deleteInteger逻辑删除是18insert_timeDate录入时间是19create_timeDate创建时间是 表4.5景点收藏表
序号列名数据范例阐明允许空1IdIntid否2jingdian_idInteger景点是3yonghu_idInteger用户是4jingdian_collection_typesInteger范例是5insert_timeDate收藏时间是6create_timeDate创建时间是 表4.6景点评价表
序号列名数据范例阐明允许空1IdIntid否2jingdian_idInteger景点是3yonghu_idInteger用户是4jingdian_commentback_textString评价内容是5insert_timeDate评价时间是6reply_textString复兴内容是7update_timeDate复兴时间是8create_timeDate创建时间是 表4.7景点门票订单表
序号列名数据范例阐明允许空1IdIntid否2jingdian_order_uuid_numberString订单编号是3jingdian_idInteger景点是4yonghu_idInteger用户是5buy_numberInteger购买张数是6jingdian_order_timeDate预定日期是7jingdian_order_true_priceBigDecimal实付代价是8jingdian_order_typesInteger订单范例是9jingdian_order_payment_typesInteger付出范例是10insert_timeDate订单创建时间是11create_timeDate创建时间是 表4.8旅店表
序号列名数据范例阐明允许空1IdIntid否2shangjia_idInteger商家是3jiudian_nameString房间名称是4jiudian_uuid_numberString房间编号是5jiudian_photoString房间照片是6jiudian_addressString旅店位置是7jiudian_teseString特色是8zan_numberInteger赞是9cai_numberInteger踩是10jiudian_typesInteger房型是11jiudian_kucun_numberInteger剩余房间数是12jiudian_old_moneyBigDecimal房间原价是13jiudian_new_moneyBigDecimal现价/天是14jiudian_clicknumInteger房间热度是15jiudian_contentString房间先容是16shangxia_typesInteger是否上架是17jiudian_deleteInteger逻辑删除是18insert_timeDate录入时间是19create_timeDate创建时间是 表4.9房间收藏表
序号列名数据范例阐明允许空1IdIntid否2jiudian_idInteger房间是3yonghu_idInteger用户是4jiudian_collection_typesInteger范例是5insert_timeDate收藏时间是6create_timeDate创建时间是 表4.10旅店评价表
序号列名数据范例阐明允许空1IdIntid否2jiudian_idInteger房间是3yonghu_idInteger用户是4jiudian_commentback_textString评价内容是5insert_timeDate评价时间是6reply_textString复兴内容是7update_timeDate复兴时间是8create_timeDate创建时间是 表4.11旅店订单表
序号列名数据范例阐明允许空1IdIntid否2jiudian_order_uuid_numberString订单编号是3jiudian_idInteger房间是4yonghu_idInteger用户是5buy_numberInteger预定天数是6jiudian_order_timeDate预定入住日期是7jiudian_order_true_priceBigDecimal实付代价是8jiudian_order_typesInteger订单范例是9jiudian_order_payment_typesInteger付出范例是10insert_timeDate订单创建时间是11create_timeDate创建时间是 表4.12美食表
序号列名数据范例阐明允许空1IdIntid否2shangjia_idInteger商家是3meishi_nameString美食名称是4meishi_uuid_numberString美食编号是5meishi_photoString美食照片是6zan_numberInteger赞是7cai_numberInteger踩是8meishi_typesInteger美食范例是9meishi_kucun_numberInteger美食库存是10meishi_old_moneyBigDecimal美食原价是11meishi_new_moneyBigDecimal现价/份是12meishi_clicknumInteger美食热度是13meishi_contentString美食先容是14shangxia_typesInteger是否上架是15meishi_deleteInteger逻辑删除是16insert_timeDate录入时间是17create_timeDate创建时间是 表4.13美食收藏表
序号列名数据范例阐明允许空1IdIntid否2meishi_idInteger美食是3yonghu_idInteger用户是4meishi_collection_typesInteger范例是5insert_timeDate收藏时间是6create_timeDate创建时间是 表4.14美食评价表
序号列名数据范例阐明允许空1IdIntid否2meishi_idInteger美食是3yonghu_idInteger用户是4meishi_commentback_textString评价内容是5insert_timeDate评价时间是6reply_textString复兴内容是7update_timeDate复兴时间是8create_timeDate创建时间是 表4.15美食订单表
序号列名数据范例阐明允许空1IdIntid否2meishi_order_uuid_numberString订单编号是3address_idInteger收货地点是4meishi_idInteger美食是5yonghu_idInteger用户是6buy_numberInteger购买数目是7meishi_order_true_priceBigDecimal实付代价是8meishi_order_courier_nameString派送人是9meishi_order_courier_numberString接洽方式是10meishi_order_typesInteger订单范例是11meishi_order_payment_typesInteger付出范例是12insert_timeDate订单创建时间是13create_timeDate创建时间是 表4.16商家表
序号列名数据范例阐明允许空1IdIntid否2shangjia_nameString商家名称是3shangjia_phoneString接洽方式是4shangjia_emailString邮箱是5shangjia_photoString业务执照展示是6shangjia_xingji_typesInteger商家名誉范例是7new_moneyBigDecimal现有余额是8shangjia_contentString商家先容是9shangjia_deleteInteger逻辑删除是10jinyong_typesInteger账户状态是11create_timeDate创建时间是 表4.17商品表
序号列名数据范例阐明允许空1IdIntid否2shangjia_idInteger商家是3shangpin_nameString商品名称是4shangpin_uuid_numberString商品编号是5shangpin_photoString商品照片是6zan_numberInteger赞是7cai_numberInteger踩是8shangpin_typesInteger商品范例是9shangpin_kucun_numberInteger商品库存是10shangpin_old_moneyBigDecimal商品原价是11shangpin_new_moneyBigDecimal现价是12shangpin_clicknumInteger商品热度是13shangpin_contentString商品先容是14shangxia_typesInteger是否上架是15shangpin_deleteInteger逻辑删除是16insert_timeDate录入时间是17create_timeDate创建时间是 表4.18商品收藏表
序号列名数据范例阐明允许空1IdIntid否2shangpin_idInteger商品是3yonghu_idInteger用户是4shangpin_collection_typesInteger范例是5insert_timeDate收藏时间是6create_timeDate创建时间是 表4.19商品评价表
序号列名数据范例阐明允许空1IdIntid否2shangpin_idInteger商品是3yonghu_idInteger用户是4shangpin_commentback_textString评价内容是5insert_timeDate评价时间是6reply_textString复兴内容是7update_timeDate复兴时间是8create_timeDate创建时间是 表4.20商品订单表
序号列名数据范例阐明允许空1IdIntid否2shangpin_order_uuid_numberString订单编号是3address_idInteger收货地点是4shangpin_idInteger商品是5yonghu_idInteger用户是6buy_numberInteger购买数目是7shangpin_order_true_priceBigDecimal实付代价是8shangpin_order_courier_nameString快递公司是9shangpin_order_courier_numberString快递单号是10shangpin_order_typesInteger订单范例是11shangpin_order_payment_typesInteger付出范例是12insert_timeDate订单创建时间是13create_timeDate创建时间是 表4.21用户表
序号列名数据范例阐明允许空1IdIntid否2yonghu_uuid_numberString用户编号是3yonghu_nameString用户姓名是4yonghu_phoneString用户手机号是5yonghu_id_numberString用户身份证号是6yonghu_photoString用户头像是7yonghu_emailString用户邮箱是8new_moneyBigDecimal余额是9jinyong_typesInteger账户状态是10create_timeDate创建时间是 表4.22管理员表
序号列名数据范例阐明允许空1IdIntid否2usernameString员工名是3passwordString暗码是4roleString脚色是5addtimeDate新增时间是 5 体系实现
5.1管理员功能先容
5.1.1管理员登录
体系登录功能是步伐必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是暗码,当管理员准确填写并提交这二者数据之后,管理员就可以进入体系背景功能利用区。下图就是管理员登录页面。
图5.1 管理员登录页面
5.1.2 景点管理
项目管理页面提供的功能利用有:检察景点,删除景点利用,新增景点利用,修改景点利用。下图就是景点管理页面。
图5.2 景点管理页面
5.1.3 公告信息管理
公告信息管理页面提供的功能利用有:新增公告,修改公告,删除公告利用。下图就是公告信息管理页面。
图5.3 公告信息管理页面
5.1.4公告范例管理
公告范例管理页面表现全部公告范例,在此页面既可以让管理员添加新的公告信息范例,也能对已有的公告范例信息实行编辑更新,失效的公告范例信息也能让管理员快速删除。下图就是公告范例管理页面。
图5.4 公告范例列表页面
5.1.5 商品管理
如图5.5表现的就是商品管理页面,此页面提供给管理员的功能有:新增商品,修改商品,删除商品。
图5.5商品管理页面
5.1.6 商品范例管理
如图5.6表现的就是商品范例管理页面,此页面提供给管理员的功能有:新增商品范例,修改商品范例,删除商品范例。
图5.6 商品范例管理页面
体系
GonggaoController.java
- package com.controller;
- import java.io.File;
- import java.math.BigDecimal;
- import java.net.URL;
- import java.text.SimpleDateFormat;
- import com.alibaba.fastjson.JSONObject;
- import java.util.*;
- import org.springframework.beans.BeanUtils;
- import javax.servlet.http.HttpServletRequest;
- import org.springframework.web.context.ContextLoader;
- import javax.servlet.ServletContext;
- import com.service.TokenService;
- import com.utils.*;
- import java.lang.reflect.InvocationTargetException;
- import com.service.DictionaryService;
- import org.apache.commons.lang3.StringUtils;
- import com.annotation.IgnoreAuth;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.*;
- import com.baomidou.mybatisplus.mapper.EntityWrapper;
- import com.baomidou.mybatisplus.mapper.Wrapper;
- import com.entity.*;
- import com.entity.view.*;
- import com.service.*;
- import com.utils.PageUtils;
- import com.utils.R;
- import com.alibaba.fastjson.*;
- /**
- * 公告信息
- * 后端接口
- * @author
- * @email
- */
- @RestController
- @Controller
- @RequestMapping("/gonggao")
- public class GonggaoController {
- private static final Logger logger = LoggerFactory.getLogger(GonggaoController.class);
- private static final String TABLE_NAME = "gonggao";
- @Autowired
- private GonggaoService gonggaoService;
- @Autowired
- private TokenService tokenService;
- @Autowired
- private AddressService addressService;//收货地址
- @Autowired
- private DictionaryService dictionaryService;//字典表
- @Autowired
- private JingdianService jingdianService;//景点
- @Autowired
- private JingdianCollectionService jingdianCollectionService;//景点收藏
- @Autowired
- private JingdianCommentbackService jingdianCommentbackService;//景点评价
- @Autowired
- private JingdianOrderService jingdianOrderService;//景点门票订单
- @Autowired
- private JiudianService jiudianService;//酒店
- @Autowired
- private JiudianCollectionService jiudianCollectionService;//房间收藏
- @Autowired
- private JiudianCommentbackService jiudianCommentbackService;//酒店评价
- @Autowired
- private JiudianOrderService jiudianOrderService;//酒店订单
- @Autowired
- private MeishiService meishiService;//美食
- @Autowired
- private MeishiCollectionService meishiCollectionService;//美食收藏
- @Autowired
- private MeishiCommentbackService meishiCommentbackService;//美食评价
- @Autowired
- private MeishiOrderService meishiOrderService;//美食订单
- @Autowired
- private ShangjiaService shangjiaService;//商家
- @Autowired
- private ShangpinService shangpinService;//商品
- @Autowired
- private ShangpinCollectionService shangpinCollectionService;//商品收藏
- @Autowired
- private ShangpinCommentbackService shangpinCommentbackService;//商品评价
- @Autowired
- private ShangpinOrderService shangpinOrderService;//商品订单
- @Autowired
- private YonghuService yonghuService;//用户
- @Autowired
- private UsersService usersService;//管理员
- /**
- * 后端列表
- */
- @RequestMapping("/page")
- public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
- logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
- String role = String.valueOf(request.getSession().getAttribute("role"));
- if(false)
- return R.error(511,"永不会进入");
- else if("用户".equals(role))
- params.put("yonghuId",request.getSession().getAttribute("userId"));
- else if("商家".equals(role))
- params.put("shangjiaId",request.getSession().getAttribute("userId"));
- CommonUtil.checkMap(params);
- PageUtils page = gonggaoService.queryPage(params);
- //字典表数据转换
- List<GonggaoView> list =(List<GonggaoView>)page.getList();
- for(GonggaoView c:list){
- //修改对应字典表字段
- dictionaryService.dictionaryConvert(c, request);
- }
- return R.ok().put("data", page);
- }
- /**
- * 后端详情
- */
- @RequestMapping("/info/{id}")
- public R info(@PathVariable("id") Long id, HttpServletRequest request){
- logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
- GonggaoEntity gonggao = gonggaoService.selectById(id);
- if(gonggao !=null){
- //entity转view
- GonggaoView view = new GonggaoView();
- BeanUtils.copyProperties( gonggao , view );//把实体数据重构到view中
- //修改对应字典表字段
- dictionaryService.dictionaryConvert(view, request);
- return R.ok().put("data", view);
- }else {
- return R.error(511,"查不到数据");
- }
- }
- /**
- * 后端保存
- */
- @RequestMapping("/save")
- public R save(@RequestBody GonggaoEntity gonggao, HttpServletRequest request){
- logger.debug("save方法:,,Controller:{},,gonggao:{}",this.getClass().getName(),gonggao.toString());
- String role = String.valueOf(request.getSession().getAttribute("role"));
- if(false)
- return R.error(511,"永远不会进入");
- Wrapper<GonggaoEntity> queryWrapper = new EntityWrapper<GonggaoEntity>()
- .eq("gonggao_name", gonggao.getGonggaoName())
- .eq("gonggao_types", gonggao.getGonggaoTypes())
- ;
- logger.info("sql语句:"+queryWrapper.getSqlSegment());
- GonggaoEntity gonggaoEntity = gonggaoService.selectOne(queryWrapper);
- if(gonggaoEntity==null){
- gonggao.setInsertTime(new Date());
- gonggao.setCreateTime(new Date());
- gonggaoService.insert(gonggao);
- return R.ok();
- }else {
- return R.error(511,"表中有相同数据");
- }
- }
- /**
- * 后端修改
- */
- @RequestMapping("/update")
- public R update(@RequestBody GonggaoEntity gonggao, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {
- logger.debug("update方法:,,Controller:{},,gonggao:{}",this.getClass().getName(),gonggao.toString());
- GonggaoEntity oldGonggaoEntity = gonggaoService.selectById(gonggao.getId());//查询原先数据
- String role = String.valueOf(request.getSession().getAttribute("role"));
- // if(false)
- // return R.error(511,"永远不会进入");
- if("".equals(gonggao.getGonggaoPhoto()) || "null".equals(gonggao.getGonggaoPhoto())){
- gonggao.setGonggaoPhoto(null);
- }
- if("".equals(gonggao.getGonggaoContent()) || "null".equals(gonggao.getGonggaoContent())){
- gonggao.setGonggaoContent(null);
- }
- gonggaoService.updateById(gonggao);//根据id更新
- return R.ok();
- }
- /**
- * 删除
- */
- @RequestMapping("/delete")
- public R delete(@RequestBody Integer[] ids, HttpServletRequest request){
- logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
- List<GonggaoEntity> oldGonggaoList =gonggaoService.selectBatchIds(Arrays.asList(ids));//要删除的数据
- gonggaoService.deleteBatchIds(Arrays.asList(ids));
- return R.ok();
- }
- /**
- * 批量上传
- */
- @RequestMapping("/batchInsert")
- public R save( String fileName, HttpServletRequest request){
- logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
- Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- //.eq("time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()))
- try {
- List<GonggaoEntity> gonggaoList = new ArrayList<>();//上传的东西
- Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
- Date date = new Date();
- int lastIndexOf = fileName.lastIndexOf(".");
- if(lastIndexOf == -1){
- return R.error(511,"该文件没有后缀");
- }else{
- String suffix = fileName.substring(lastIndexOf);
- if(!".xls".equals(suffix)){
- return R.error(511,"只支持后缀为xls的excel文件");
- }else{
- URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
- File file = new File(resource.getFile());
- if(!file.exists()){
- return R.error(511,"找不到上传文件,请联系管理员");
- }else{
- List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
- dataList.remove(0);//删除第一行,因为第一行是提示
- for(List<String> data:dataList){
- //循环
- GonggaoEntity gonggaoEntity = new GonggaoEntity();
- // gonggaoEntity.setGonggaoName(data.get(0)); //公告名称 要改的
- // gonggaoEntity.setGonggaoPhoto("");//详情和图片
- // gonggaoEntity.setGonggaoTypes(Integer.valueOf(data.get(0))); //公告类型 要改的
- // gonggaoEntity.setInsertTime(date);//时间
- // gonggaoEntity.setGonggaoContent("");//详情和图片
- // gonggaoEntity.setCreateTime(date);//时间
- gonggaoList.add(gonggaoEntity);
- //把要查询是否重复的字段放入map中
- }
- //查询是否重复
- gonggaoService.insertBatch(gonggaoList);
- return R.ok();
- }
- }
- }
- }catch (Exception e){
- e.printStackTrace();
- return R.error(511,"批量插入数据异常,请联系管理员");
- }
- }
- /**
- * 前端列表
- */
- @IgnoreAuth
- @RequestMapping("/list")
- public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
- logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
- CommonUtil.checkMap(params);
- PageUtils page = gonggaoService.queryPage(params);
- //字典表数据转换
- List<GonggaoView> list =(List<GonggaoView>)page.getList();
- for(GonggaoView c:list)
- dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段
- return R.ok().put("data", page);
- }
- /**
- * 前端详情
- */
- @RequestMapping("/detail/{id}")
- public R detail(@PathVariable("id") Integer id, HttpServletRequest request){
- logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
- GonggaoEntity gonggao = gonggaoService.selectById(id);
- if(gonggao !=null){
- //entity转view
- GonggaoView view = new GonggaoView();
- BeanUtils.copyProperties( gonggao , view );//把实体数据重构到view中
- //修改对应字典表字段
- dictionaryService.dictionaryConvert(view, request);
- return R.ok().put("data", view);
- }else {
- return R.error(511,"查不到数据");
- }
- }
- /**
- * 前端保存
- */
- @RequestMapping("/add")
- public R add(@RequestBody GonggaoEntity gonggao, HttpServletRequest request){
- logger.debug("add方法:,,Controller:{},,gonggao:{}",this.getClass().getName(),gonggao.toString());
- Wrapper<GonggaoEntity> queryWrapper = new EntityWrapper<GonggaoEntity>()
- .eq("gonggao_name", gonggao.getGonggaoName())
- .eq("gonggao_types", gonggao.getGonggaoTypes())
- // .notIn("gonggao_types", new Integer[]{102})
- ;
- logger.info("sql语句:"+queryWrapper.getSqlSegment());
- GonggaoEntity gonggaoEntity = gonggaoService.selectOne(queryWrapper);
- if(gonggaoEntity==null){
- gonggao.setInsertTime(new Date());
- gonggao.setCreateTime(new Date());
- gonggaoService.insert(gonggao);
- return R.ok();
- }else {
- return R.error(511,"表中有相同数据");
- }
- }
- }
复制代码 MeishiCommentbackController.java
- package com.controller;
- import java.io.File;
- import java.math.BigDecimal;
- import java.net.URL;
- import java.text.SimpleDateFormat;
- import com.alibaba.fastjson.JSONObject;
- import java.util.*;
- import org.springframework.beans.BeanUtils;
- import javax.servlet.http.HttpServletRequest;
- import org.springframework.web.context.ContextLoader;
- import javax.servlet.ServletContext;
- import com.service.TokenService;
- import com.utils.*;
- import java.lang.reflect.InvocationTargetException;
- import com.service.DictionaryService;
- import org.apache.commons.lang3.StringUtils;
- import com.annotation.IgnoreAuth;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.*;
- import com.baomidou.mybatisplus.mapper.EntityWrapper;
- import com.baomidou.mybatisplus.mapper.Wrapper;
- import com.entity.*;
- import com.entity.view.*;
- import com.service.*;
- import com.utils.PageUtils;
- import com.utils.R;
- import com.alibaba.fastjson.*;
- /**
- * 美食评价
- * 后端接口
- * @author
- * @email
- */
- @RestController
- @Controller
- @RequestMapping("/meishiCommentback")
- public class MeishiCommentbackController {
- private static final Logger logger = LoggerFactory.getLogger(MeishiCommentbackController.class);
- private static final String TABLE_NAME = "meishiCommentback";
- @Autowired
- private MeishiCommentbackService meishiCommentbackService;
- @Autowired
- private TokenService tokenService;
- @Autowired
- private AddressService addressService;//收货地址
- @Autowired
- private DictionaryService dictionaryService;//字典表
- @Autowired
- private GonggaoService gonggaoService;//公告信息
- @Autowired
- private JingdianService jingdianService;//景点
- @Autowired
- private JingdianCollectionService jingdianCollectionService;//景点收藏
- @Autowired
- private JingdianCommentbackService jingdianCommentbackService;//景点评价
- @Autowired
- private JingdianOrderService jingdianOrderService;//景点门票订单
- @Autowired
- private JiudianService jiudianService;//酒店
- @Autowired
- private JiudianCollectionService jiudianCollectionService;//房间收藏
- @Autowired
- private JiudianCommentbackService jiudianCommentbackService;//酒店评价
- @Autowired
- private JiudianOrderService jiudianOrderService;//酒店订单
- @Autowired
- private MeishiService meishiService;//美食
- @Autowired
- private MeishiCollectionService meishiCollectionService;//美食收藏
- @Autowired
- private MeishiOrderService meishiOrderService;//美食订单
- @Autowired
- private ShangjiaService shangjiaService;//商家
- @Autowired
- private ShangpinService shangpinService;//商品
- @Autowired
- private ShangpinCollectionService shangpinCollectionService;//商品收藏
- @Autowired
- private ShangpinCommentbackService shangpinCommentbackService;//商品评价
- @Autowired
- private ShangpinOrderService shangpinOrderService;//商品订单
- @Autowired
- private YonghuService yonghuService;//用户
- @Autowired
- private UsersService usersService;//管理员
- /**
- * 后端列表
- */
- @RequestMapping("/page")
- public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
- logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
- String role = String.valueOf(request.getSession().getAttribute("role"));
- if(false)
- return R.error(511,"永不会进入");
- else if("用户".equals(role))
- params.put("yonghuId",request.getSession().getAttribute("userId"));
- else if("商家".equals(role))
- params.put("shangjiaId",request.getSession().getAttribute("userId"));
- CommonUtil.checkMap(params);
- PageUtils page = meishiCommentbackService.queryPage(params);
- //字典表数据转换
- List<MeishiCommentbackView> list =(List<MeishiCommentbackView>)page.getList();
- for(MeishiCommentbackView c:list){
- //修改对应字典表字段
- dictionaryService.dictionaryConvert(c, request);
- }
- return R.ok().put("data", page);
- }
- /**
- * 后端详情
- */
- @RequestMapping("/info/{id}")
- public R info(@PathVariable("id") Long id, HttpServletRequest request){
- logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
- MeishiCommentbackEntity meishiCommentback = meishiCommentbackService.selectById(id);
- if(meishiCommentback !=null){
- //entity转view
- MeishiCommentbackView view = new MeishiCommentbackView();
- BeanUtils.copyProperties( meishiCommentback , view );//把实体数据重构到view中
- //级联表 美食
- //级联表
- MeishiEntity meishi = meishiService.selectById(meishiCommentback.getMeishiId());
- if(meishi != null){
- BeanUtils.copyProperties( meishi , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "username", "password", "newMoney", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
- view.setMeishiId(meishi.getId());
- }
- //级联表 用户
- //级联表
- YonghuEntity yonghu = yonghuService.selectById(meishiCommentback.getYonghuId());
- if(yonghu != null){
- BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "username", "password", "newMoney", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
- view.setYonghuId(yonghu.getId());
- }
- //修改对应字典表字段
- dictionaryService.dictionaryConvert(view, request);
- return R.ok().put("data", view);
- }else {
- return R.error(511,"查不到数据");
- }
- }
- /**
- * 后端保存
- */
- @RequestMapping("/save")
- public R save(@RequestBody MeishiCommentbackEntity meishiCommentback, HttpServletRequest request){
- logger.debug("save方法:,,Controller:{},,meishiCommentback:{}",this.getClass().getName(),meishiCommentback.toString());
- String role = String.valueOf(request.getSession().getAttribute("role"));
- if(false)
- return R.error(511,"永远不会进入");
- else if("用户".equals(role))
- meishiCommentback.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
- meishiCommentback.setCreateTime(new Date());
- meishiCommentback.setInsertTime(new Date());
- meishiCommentbackService.insert(meishiCommentback);
- return R.ok();
- }
- /**
- * 后端修改
- */
- @RequestMapping("/update")
- public R update(@RequestBody MeishiCommentbackEntity meishiCommentback, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {
- logger.debug("update方法:,,Controller:{},,meishiCommentback:{}",this.getClass().getName(),meishiCommentback.toString());
- MeishiCommentbackEntity oldMeishiCommentbackEntity = meishiCommentbackService.selectById(meishiCommentback.getId());//查询原先数据
- String role = String.valueOf(request.getSession().getAttribute("role"));
- // if(false)
- // return R.error(511,"永远不会进入");
- // else if("用户".equals(role))
- // meishiCommentback.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
- if("".equals(meishiCommentback.getMeishiCommentbackText()) || "null".equals(meishiCommentback.getMeishiCommentbackText())){
- meishiCommentback.setMeishiCommentbackText(null);
- }
- if("".equals(meishiCommentback.getReplyText()) || "null".equals(meishiCommentback.getReplyText())){
- meishiCommentback.setReplyText(null);
- }
- meishiCommentback.setUpdateTime(new Date());
- meishiCommentbackService.updateById(meishiCommentback);//根据id更新
- return R.ok();
- }
- /**
- * 删除
- */
- @RequestMapping("/delete")
- public R delete(@RequestBody Integer[] ids, HttpServletRequest request){
- logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
- List<MeishiCommentbackEntity> oldMeishiCommentbackList =meishiCommentbackService.selectBatchIds(Arrays.asList(ids));//要删除的数据
- meishiCommentbackService.deleteBatchIds(Arrays.asList(ids));
- return R.ok();
- }
- /**
- * 批量上传
- */
- @RequestMapping("/batchInsert")
- public R save( String fileName, HttpServletRequest request){
- logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
- Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- //.eq("time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()))
- try {
- List<MeishiCommentbackEntity> meishiCommentbackList = new ArrayList<>();//上传的东西
- Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
- Date date = new Date();
- int lastIndexOf = fileName.lastIndexOf(".");
- if(lastIndexOf == -1){
- return R.error(511,"该文件没有后缀");
- }else{
- String suffix = fileName.substring(lastIndexOf);
- if(!".xls".equals(suffix)){
- return R.error(511,"只支持后缀为xls的excel文件");
- }else{
- URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
- File file = new File(resource.getFile());
- if(!file.exists()){
- return R.error(511,"找不到上传文件,请联系管理员");
- }else{
- List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
- dataList.remove(0);//删除第一行,因为第一行是提示
- for(List<String> data:dataList){
- //循环
- MeishiCommentbackEntity meishiCommentbackEntity = new MeishiCommentbackEntity();
- // meishiCommentbackEntity.setMeishiId(Integer.valueOf(data.get(0))); //美食 要改的
- // meishiCommentbackEntity.setYonghuId(Integer.valueOf(data.get(0))); //用户 要改的
- // meishiCommentbackEntity.setMeishiCommentbackText(data.get(0)); //评价内容 要改的
- // meishiCommentbackEntity.setInsertTime(date);//时间
- // meishiCommentbackEntity.setReplyText(data.get(0)); //回复内容 要改的
- // meishiCommentbackEntity.setUpdateTime(sdf.parse(data.get(0))); //回复时间 要改的
- // meishiCommentbackEntity.setCreateTime(date);//时间
- meishiCommentbackList.add(meishiCommentbackEntity);
- //把要查询是否重复的字段放入map中
- }
- //查询是否重复
- meishiCommentbackService.insertBatch(meishiCommentbackList);
- return R.ok();
- }
- }
- }
- }catch (Exception e){
- e.printStackTrace();
- return R.error(511,"批量插入数据异常,请联系管理员");
- }
- }
- /**
- * 前端列表
- */
- @IgnoreAuth
- @RequestMapping("/list")
- public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
- logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
- CommonUtil.checkMap(params);
- PageUtils page = meishiCommentbackService.queryPage(params);
- //字典表数据转换
- List<MeishiCommentbackView> list =(List<MeishiCommentbackView>)page.getList();
- for(MeishiCommentbackView c:list)
- dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段
- return R.ok().put("data", page);
- }
- /**
- * 前端详情
- */
- @RequestMapping("/detail/{id}")
- public R detail(@PathVariable("id") Integer id, HttpServletRequest request){
- logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
- MeishiCommentbackEntity meishiCommentback = meishiCommentbackService.selectById(id);
- if(meishiCommentback !=null){
- //entity转view
- MeishiCommentbackView view = new MeishiCommentbackView();
- BeanUtils.copyProperties( meishiCommentback , view );//把实体数据重构到view中
- //级联表
- MeishiEntity meishi = meishiService.selectById(meishiCommentback.getMeishiId());
- if(meishi != null){
- BeanUtils.copyProperties( meishi , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "username", "password", "newMoney", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段
- view.setMeishiId(meishi.getId());
- }
- //级联表
- YonghuEntity yonghu = yonghuService.selectById(meishiCommentback.getYonghuId());
- if(yonghu != null){
- BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "username", "password", "newMoney", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段
- view.setYonghuId(yonghu.getId());
- }
- //修改对应字典表字段
- dictionaryService.dictionaryConvert(view, request);
- return R.ok().put("data", view);
- }else {
- return R.error(511,"查不到数据");
- }
- }
- /**
- * 前端保存
- */
- @RequestMapping("/add")
- public R add(@RequestBody MeishiCommentbackEntity meishiCommentback, HttpServletRequest request){
- logger.debug("add方法:,,Controller:{},,meishiCommentback:{}",this.getClass().getName(),meishiCommentback.toString());
- meishiCommentback.setCreateTime(new Date());
- meishiCommentback.setInsertTime(new Date());
- meishiCommentbackService.insert(meishiCommentback);
- return R.ok();
- }
- }
复制代码 GonggaoServiceImpl.java
- package com.service.impl;
- import com.utils.StringUtil;
- import com.service.DictionaryService;
- import com.utils.ClazzDiff;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.lang.reflect.Field;
- import java.util.*;
- import com.baomidou.mybatisplus.plugins.Page;
- import com.baomidou.mybatisplus.service.impl.ServiceImpl;
- import org.springframework.transaction.annotation.Transactional;
- import com.utils.PageUtils;
- import com.utils.Query;
- import org.springframework.web.context.ContextLoader;
- import javax.servlet.ServletContext;
- import javax.servlet.http.HttpServletRequest;
- import org.springframework.lang.Nullable;
- import org.springframework.util.Assert;
- import com.dao.GonggaoDao;
- import com.entity.GonggaoEntity;
- import com.service.GonggaoService;
- import com.entity.view.GonggaoView;
- /**
- * 公告信息 服务实现类
- */
- @Service("gonggaoService")
- @Transactional
- public class GonggaoServiceImpl extends ServiceImpl<GonggaoDao, GonggaoEntity> implements GonggaoService {
- @Override
- public PageUtils queryPage(Map<String,Object> params) {
- Page<GonggaoView> page =new Query<GonggaoView>(params).getPage();
- page.setRecords(baseMapper.selectListView(page,params));
- return new PageUtils(page);
- }
- }
复制代码 index.js
- import Vue from 'vue'
- import SvgIcon from '@/components/SvgIcon'// svg component
- // register globally
- Vue.component('svg-icon', SvgIcon)
- const req = require.context('./svg/svg', false, /\.svg$/)
- const requireAll = requireContext => requireContext.keys().map(requireContext)
- requireAll(req)
复制代码 声明
本博客实用于广泛的学术和教诲用途,包罗但不限于个人学习、开辟筹划,产物筹划。仅供学习参考,旨在为读者提供深入明确和学术研究的质料。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |