@TOC
10919ssm宠物论坛设计网站
第1章 绪论
1.1 课题背景及研究意义
1.1.1 课题背景
经过互联网近几年的蓬勃发展,整个现代社会的网上管理系统方式已经慢慢地从本质上发生了变化。上世纪90年代以后,我们国家整体经济水平逐渐提高,人民的生活水平有了极大的进步。互联网行业,乃至与其有关联的传统行业,例如服务行业的蓬勃发展,《电子商务法律法规》等一系列关于网络交易法规的出台,阻碍网上交易的各个难关被一一攻破,电子商务的趋势越来越壮大。
1.1.2 研究意义
社会主义进入新时代,经济实力越来越强。我们也变得越来越忙碌、对生活的要求也变得更加严格,对快速和方便的服务的需求也在逐渐增加。因此,对服务行业的管理要求也越来越严格。为适应时代的发展,各大商家开始广泛地使用电脑来进行管理,并推出在线宠物论坛设计网站,为提高工作人员效率提供了一种新的方式,并且减轻了他们的工作强度,为用户提供更加方便、快捷而高效的服务,实现双赢。
于此同时,实现宠物论坛设计网站的计算机化也是顺应时代潮流的举措,现如今宠物正逐渐增加,引起了用户的青睐,宠物论坛设计网站的管理工作变得越来越困难,在这一客观需要的推动下,建立、完善、发展宠物论坛设计网站,可以为管理员与用户带来极大的方便。
本系统即为方便管理员和用户而制作的网上宠物论坛设计网站,结合了用户的需求,设计出的一个基于Java语言、MySQL数据库的网上宠物论坛设计网站。
1.1.3 研究目的
为了解决好这个宠物论坛设计网站,也更好的能够维护宠物论坛设计网站中出现的问题,同时也能够让人们能够正确的了解本宠物论坛设计网站。所以设计本系统主要根据用户的需求做出分析,让用户更好的在线获取信息等,管理员后台管理系统数据等功能。从这个系统的操作来说,能够有效的进行信息的添加、修改、查询、删除一些宠物论坛设计网站信息,在一定的程序上能够实现了自动化。设计该系统的主要目的是为实现通过网络来减少人力和财力的投入,不断提高工作效率。最终我们希望通过宠物论坛设计网站可以达到以下目的:
提高管理员的管理效率,实现管理上的井井有条。
实现用户通过计算机平台及时获取网站宠物论坛设计网站信息等。
解决传统宠物论坛设计网站存在的弊端。
1.1.4研究内容
在目前所使用的软件开发主要是应用的jsp,宠物论坛设计网站开发来看它具有很大的意义,具体该系统的主要任务是:
(1)对于这个系统网络环境它主要是让用户学会多种需求和业务上的流程以及各个角色的功能问题,同时对每一个业务和技术做出了解。
(2)对于这系统的整个程序应用做出高效的升级、扩展和维护。
(3)掌握系统的整体设计和结构计划,在一定的需求方面上满足用户的需求,确保在各个层次当中各功能的紧密配合后最终的功能实现,同时保证这个程序的独立性和各层次之间的紧密联系。
(4)在整个系统框架的设计我们要进行深入的学习和设计,保证这个系统在使用过程中的灵活性和了扩展性,同时不断提高系统的安全性和满足用户的实际需求。
1.2 开发工具的选用及语言介绍
本次毕业设计是一个基于B/S模式的宠物论坛设计网站,是一个在网络环境下运行的网站,采用Java语言,应用的技术有JSP,Tomcat作为服务器,MySQL作为后台数据库[4]。
1.2.1 语言介绍
Java计算机编程语言本身不同于传统的C++计算机编程语言, 本身非常简单, 能够实现快速学习[5]。作为一门面向对象的语言,其主要特点为:
- 面向对象
其基本单位是对象,对象又含有属性和方法。属性用来说明对象,方法用来操作对象。
- 跨平台性
编写的软件程序可以在任意计算机上运行使用,不会因为软、硬件条件的不同而有限制。
- 多线程
在一个应用程序中能够同时存在两个以上包括两个的线程,这多个线程可以并发运行,节省时间的同时提高了软件性能。
1.2.2 JAVA简介
Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(Enterprise JavaBeans)的全面支持,java servlet API,Java(java server pages),和XML技术。Java是一种计算机编程语言,具有封装、继承和多态性三个主要特性,广泛应用于企业Web应用程序开发和移动应用程序开发。Java语言和一般编译器以及直译的区别在于,Java首先将源代码转换为字节码,然后将其转换为JVM的可执行文件,JVM可以在各种不同的JVM上运行。因此,实现了它的跨平台特性。虽然这使得Java在早期非常缓慢,但是随着Java的开发,它已经得到了改进。
1.2.3 本文的内容
本文主要介绍了宠物论坛设计网站的课题背景,说明了该系统开发的意义,整个系统开发过程中使用的主要技术,分析了该系统开发的可行性,归纳并分析了用户对于该系统开发的主要需求。
1.2.4 MYSQL数据库
网站的开发必须配套相应数据库,数据库具有一定的组织结构,能够存放和管理数据信息,在以前数据库的功能仅仅是数据保存和管理操作,但是时代的变迁和发展,现在的数据库演变成了数据处理的方式,数据库从最开始的简单存放数据表格信息到现在的能够存放成千上万数据的大型数据库,期间还是经历了许多的改革。
本次开发的宠物论坛设计网站使用的数据库是MYSQL数据库,该数据库运行速度快,安全性能也很高,而且对使用的平台没有任何的限制,所以被广泛应运到系统的开发中。MySQL是一个开源和多线程的关系管理数据库系统,MySQL是开放源代码的数据库,具有跨平台性,虽然功能未必强大,导致很多人都了解这个数据库的基本应用,在数据库中,总共建立了10几个表,这里面每个表都是相对应的,都各自有各自的联系,数据库意义重大,如果没有数据库的链接,就没办法运行程序,这显然可以看见数据库与程序的重要性,是紧密相连接的。
1.2.5 B/S结构
B/S(浏览器/服务器)结构是目前主流的网络化的结构模式,它能够把系统核心功能集中在服务器上面,可以帮助系统开发人员简化操作,便于维护和使用。只需要用户在用户端安装360浏览器、谷歌浏览器、QQ浏览器等当前大众浏览器,在电脑里面安装sqlserver、mysql数据库等数据库。安装好的浏览器与服务器端的数据库进行信息数据的交互。很多专门软件能够做到的事情,采用B/S结构模式也能实现,它能够结合Web浏览器技术,ActiveX技术以及多种脚本语言等技术。帮助程序开发者节约了不少开发成本。目前B/S结构成为程序开发主流结构,它最好的地方就是没有地点限制还不用专门安装软件,笔记本或者电脑能够上网就能访问系统。系统使用B/S进行开发在后期系统维护上面就会很省事,不用什么问题都在服务器上面操作,简单的用户端处理就解决部分问题,开发出来的程序跟用户交互性上面也会增强,还可以实时刷新浏览器进行程序局部的数据信息更新。
图1-1 B/S模式三层结构图
1.2.6 JSP技术介绍
JSP技术本身是一种脚本语言,但它的功能是十分强大的,因为它可以使用所有的JAVA类。当它与JavaBeans 类进行结合时,它可以使显示逻辑和内容分开,这就极大的方便了用户的需求。JavaBeans 可以对JSP技术的程序进行扩展,从而形成新的应用程序,而且JavaBeans的代码可以重复使用,所以就便于对程序进行维护。JavaBean 组件有内部的接口,可以帮助不同的人对系统进行访问。1999年,Sun微系统公司正式推出了JSP技术,这是一种动态技术,是基于整个JAVA体系和JavaServlet提出的,是具有普遍适用性的WEB技术,也是本系统设计的核心技术之一。JSP技术能够极大的提高WEB网页的运行速度。这些内容会与脚本结合,并且由JavaBean和Servlet组件封装。所有的脚本均在服务器端运行,JSP引擎会针对客户端所 提交的申请进行解释,然后生成脚本程序和JSP标识,然后通过HTML/XML页面将结果反馈给浏览器。因此,开发人员亲自设计最终页 面的格式和HTML/XML标识时,完全可以使用JSP技术。
所以宠物论坛设计网站的需求及功能模块的实现,使用JSP技术是最合适的,而且JSP的拓展性比较好,对于宠物论坛设计网站在后期使用过程中可以不断对系统功能进行拓展,使系统更完善,更方便的满足用户需求。
第2章 需求分析与可行性分析
2.1 功能需求分析
宠物论坛设计网站主要是为了提高工作人员的工作效率和更方便快捷的满足用户,更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户的可操作性,遵循开发的系统优化的原则,经过全面的调查和研究。
系统所要实现的功能分析,对于现在网络方便的管理,系统要实现用户可以直接在平台上进行查看所有数据信息,根据需求可以进行在线添加,删除或修改宠物论坛设计网站信息,这样既能节省时间,不用再像传统的方式耽误时间,真的很难去满足用户的各种需求。所以宠物论坛设计网站的开发不仅仅是能满足用户的需求,还能提高管理员的工作效率,减少原有不必要的工作量。
2.2 可行性分析
2.2.1技术可行性:技术背景
本企业网站在Windows操作系统中进行开发,并且目前PC机的性能已经可以胜任普通网站的web服务器。系统开发所使用的技术也都是自身所具有的,也是当下广泛应用的技术之一。
系统的开发环境和配置都是可以自行安装的,系统使用Java开发工具,使用比较成熟的Mysql数据库进行对系统前台及后台的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得网站运行更具有稳定性和安全性,从而完成实现网站的开发。
(1)硬件可行性分析
宠物论坛设计网站及信息分析的设计对于所使用的计算机没有什么硬性的要求,计算机只要可以正常的使用进行代码的编写及页面设计就可行,主要是对于服务器有些要求,对于平台搭建完成要上传的服务器是有一定的要求的,服务器必须选择安全性比较高的,然后就是在打开网站必须顺畅,不能停顿太长时间;性价比高;安全性高。
(2)软件可行性分析
开发整个系统使用的是云计算,流量的可扩展性和基于流量的智能调整云计算的优点就是流量的可扩展性和基于流量的智能调整,保障系统的安全及数据信息的及时备份。
因此,我们从两个方面进行了可行性研究,可以看出系统的开发没有问题。
2.2.2经济可行性
在宠物论坛设计网站开发之前所做的市场调研及其他的相关管理系统,都是没有任何费用的,都是通过开发者自己的努力,所有的工作的都是自己亲力亲为,在碰到自己比较难以解决的问题,大多是通过同学和指导老师的帮助进行相关信息的解决,所以对于宠物论坛设计网站的开发在经济上是完全可行的,没有任何费用支出的。
使用比较成熟的技术,系统是基于Java的开发,采用Mysql数据库。所以系统在开发人力、财力要求不高,具有经济可行性。
2.2.3操作可行性:
可操作性主要是对宠物论坛设计网站设计完成后,用户的使用体验度,以及管理员可以通过系统随时管理相关的数据信息,并且对于管理员、用户二个权限角色,都可以简单明了的进入到自己的系统界面,通过界面导航菜单可以简单明了地操作功能模块,方便用户信息的操作需求和管理员管理数据信息,对于系统的操作,不需要专业人员都可以直接进行功能模块的操作管理,所以在系统的可操作性是完全可以的。本系统的操作使用的也是界面窗口进行登录,所以操作人员只要会简单的电脑操作就完全可以的。
2.3 系统性能分析
(1)系统响应效率:页面响应时问应该在3秒以内,最长不能超过4秒,并支持至少10000人同时在线所有系统。
(2)界面简洁清晰:系统界面要求简单明了,容易操作,符合用户操作习惯。
(3)储存性高:因为宠物论坛设计网站中有很多的信息需要存储,因此对于系统的存储量有很大的要求,需要有一个强大的数据库的支持才能确保所有的信息都能安全稳定的进行存储。
(4)易学性:该系统在操作上必须简单好上手,没有很多复杂的操作,只需要简单的进行学习就能操作该系统。
(5)稳定性需求:开发的宠物论坛设计网站要求运行稳定,运行过程中无界面不清楚、字体模糊等现象。
第3章 系统总体设计
3.1 系统的结构划分
本网站可以分为:用户使用的功能、管理员进行管理的功能。
用户使用功能:个人中心、订单管理等。
管理员管理功能:个人中心、用户管理、宠物类别管理、宠物百科管理、饲料购买管理、宠物服务机构管理、饲料种类管理、宠物论坛、我的收藏管理、系统管理、订单管理等。
3.1.1 系统结构图
宠物论坛设计网站的结构图3-1所示:
网
络
管理员
服务器和程序
用户
图3-1 系统结构
登录系统结构图,如图3-2所示:
宠物论坛设计网站登录界面
用户登录
密码正确
管理员界面
用户界面
图3-2 登录结构图
这些功能可以充分满足宠物论坛设计网站的需求。此系统功能较为全面如下图系统功能结构如图3-3所示。
图3-3系统功能结构图
3.2 系统的流程分析
3.2.1操作流程
系统登录流程图,如图所示:
图3-4登录流程图
3.2.2添加信息流程
添加信息流程图,如图所示:
图3-5添加信息流程图
3.2.3删除信息流程
删除信息流程图,如图所示:
图3-6删除信息流程图
3.3. 数据库设计
3.3.1 数据库实体
管理员信息结构图,如图4-1所示:
图4-1 管理员信息实体结构图
宠物百科管理实体属性图,如图4-2所示:
图4-2宠物百科管理实体属性图
宠物服务机构管理实体属性图如图4-3所示。
图4-3宠物服务机构管理实体属性图
宠物论坛实体属性图如图4-4所示。
图4-4宠物论坛实体属性图
饲料购买管理实体属性图如图4-5所示。
图4-5饲料购买管理实体属性图
3.3.2数据表
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。
表4-1 allusers表
|列名|数据类型|长度|约束| | :-: | :-: | - | :-: | |id|int|11|NOT NULL| |username|varchar|50|default NULL| |pwd|varchar|50|
default NULL| |cx|varchar|50|
default NULL|
表4-2 chongwubaike表
|列名|数据类型|长度|约束| | :-: | :-: | - | :-: | |id|int|11|NOT NULL| |addtime|varchar|50|default NULL| |chongwumingcheng|varchar|50|default NULL| |xinggetedian|varchar|50|default NULL| |chongwuleibie|varchar|50|default NULL| |siyangfangshi|varchar|50|default NULL| |chongwujianjie|varchar|50|default NULL| |jiagejine|varchar|50|default NULL| |chongwutupian|varchar|50|default NULL|
表4-3:chongwufuwujigou表
|列名|数据类型|长度|约束| | :-: | - | :-: | :-: | |id|int|11|NOT NULL | |addtime|varchar|50|default NULL| |jigoumingcheng|varchar|50|default NULL| |jigouleibie|varchar|50|default NULL| |jigoujianjie|varchar|50|default NULL| |suozaididian|varchar|50|default NULL| |pingjunxiaofei|varchar|50|default NULL| |jigouzhaopian|varchar|50|default NULL| |jigouxiangqing|varchar|50|default NULL|
表4-4:siliaogoumai表
|列名|数据类型|长度|约束| | :-: | - | :-: | :-: | |id|int|11|NOT NULL | |addtime|varchar|50|default NULL| |siliaomingcheng|varchar|50|default NULL| |shiyongchongwu|varchar|50|default NULL| |siliaozhonglei|varchar|50|default NULL| |pinpaishangjia|varchar|50|default NULL| |siliaozhiliang|varchar|50|default NULL| |siliaopeiliao|varchar|50|default NULL| |siliaotupian|varchar|50|default NULL|
表4-5:yonghu表
列名 | 数据类型 | 长度 | 约束 |
---|---|---|---|
id | int | 11 | NOT NULL |
addtime | varchar | 50 | default NULL |
zhanghao | varchar | 50 | default NULL |
mima | varchar | 50 | default NULL |
xingming | varchar | 50 | default NULL |
xingbie | varchar | 50 | default NULL |
shouji | varchar | 50 | default NULL |
youxiang | varchar | 50 | default NULL |
shenfenzheng | varchar | 50 | default NULL |
touxiang | varchar | 50 | default NULL |
chongwushangciyimiaoriqi | varchar | 50 | default NULL |
chongwuleibie | varchar | 50 | default NULL |
chongwuxingbie | varchar | 50 | default NULL |
第4章 系统实现过程(详细设计)
4.1 运行环境
4.1.1 硬件环境
开发本系统时,本人所使用的电脑带有酷睿i5的cpu,gtx 950m的显卡,4G的运行内存。
4.1.2 软件环境
开发本系统时本人使用的是windows win 10的操作系统,使用了MySQL数据库管理工具,版本为5.0,JDK版本为1.8,开发工具为ECLIPSE ,版本为8.5,web容器使用的为ECLIPSE 自带的tomcat。
4.2 系统实现
4.2.1用户功能模块
订单管理,在订单管理页面可以填写订单编号、商品表名、用户id、商品id、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、状态、地址等详细内容,进行详情、查看,如图4-1所示。
图4-1订单管理界面图
4.2.2管理员功能模块
管理员登录,通过填写用户名、密码进行登录,如图4-2所示。
图4-2管理员登录界面图
管理员登录进入宠物论坛设计网站可以查看个人中心、用户管理、宠物类别管理、宠物百科管理、饲料购买管理、宠物服务机构管理、饲料种类管理、宠物论坛、我的收藏管理、系统管理、订单管理等信息。
用户管理,在用户管理页面中可以通过填写账号、姓名、手机、邮箱、身份证、头像、宠物上次疫苗日期、宠物类别、宠物性别、余额等内容进行详情、修改、删除,如图4-3所示。还可以根据需要对宠物类别管理进行详情,修改或删除等详细操作,如图4-4所示。
图4-3用户管理界面图
图4-4宠物类别管理界面图
宠物百科管理,在宠物百科管理页面中可以查看宠物名称、性格特点、宠物类别、饲养方式、宠物简介、价格金额、宠物图片等信息,并可根据需要对已有宠物百科管理进行修改或删除等操作,如图4-5所示。
图4-5宠物百科管理界面图
饲料购买管理,在饲料购买管理页面中可以查看饲料名称、使用宠物、饲料种类、品牌商家、饲料质量、饲料配料、饲料图片、价格等信息,并可根据需要对已有饲料购买管理进行修改或删除等详细操作,如图4-6所示。
图4-6饲料购买管理界面图
宠物服务机构管理,在宠物服务机构管理页面中可以查看机构名称、机构类别、机构简介、所在地点、平均消费、机构照片、机构详情等内容,并且根据需要对已有宠物服务机构管理进行详情,修改或删除等详细操作,如图4-7所示。
图4-7宠物服务机构管理界面图
宠物论坛管理,在宠物论坛管理页面中可以查看帖子标题、帖子内容、父节点id、用户id、用户名、状态等内容,并且根据需要对已有宠物论坛管理进行详情,修改或删除等详细操作,如图4-8所示。
图4-8宠物论坛管理界面图
订单管理,在订单管理页面中可以查看订单编号、商品表名、用户id、商品id、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、状态、地址等内容,并且根据需要对已有订单管理进行详情,修改或删除等详细操作,如图4-9所示。
图4-9订单管理界面图
4.2.3前台首页功能模块
宠物论坛设计网站,在系统首页可以查看首页、宠物百科、饲料购买、宠物服务机构、论坛信息、新闻资讯、我的、跳转到后台、购物车、客服等内容,如图4-10所示。
图4-10前台首页功能界面图
用户登录、用户注册,在注册页面中可以填写账号、姓名、手机、邮箱、身份证等信息进行注册、登录,如图4-11所示。
图4-11用户注册、用户登录界面图
宠物百科,在宠物百科页面中通过填写宠物名称、性格特点、宠物类别、饲养方式、宠物简介、价格金额、宠物图片等信息进行点我收藏,如图4-12所示。
图4-12宠物百科界面图
饲料购买,在饲料购买页面中可以查看饲料名称、使用宠物、饲料种类、品牌商家、饲料质量、饲料配料、饲料图片、价格等内容,并且根据需要对已有饲料购买进行添加到购物车、立即购买操作,如图4-13所示。
图4-13饲料购买界面图
宠物服务机构,在宠物服务机构页面中可以查看机构名称、机构类别、机构简介、所在地点、平均消费、机构照片、机构详情等内容,并且根据需要对已有宠物服务机构进行点我收藏操作,如图4-14所示。
图4-14宠物服务机构界面图
StoreupServiceImpl.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.StoreupDao;
import com.entity.StoreupEntity;
import com.service.StoreupService;
import com.entity.vo.StoreupVO;
import com.entity.view.StoreupView;
@Service("storeupService")
public class StoreupServiceImpl extends ServiceImpl<StoreupDao, StoreupEntity> implements StoreupService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<StoreupEntity> page = this.selectPage(
new Query<StoreupEntity>(params).getPage(),
new EntityWrapper<StoreupEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<StoreupEntity> wrapper) {
Page<StoreupView> page =new Query<StoreupView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public List<StoreupVO> selectListVO(Wrapper<StoreupEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
@Override
public StoreupVO selectVO(Wrapper<StoreupEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<StoreupView> selectListView(Wrapper<StoreupEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public StoreupView selectView(Wrapper<StoreupEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
}
ChongwufuwujigouServiceImpl.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.ChongwufuwujigouDao;
import com.entity.ChongwufuwujigouEntity;
import com.service.ChongwufuwujigouService;
import com.entity.vo.ChongwufuwujigouVO;
import com.entity.view.ChongwufuwujigouView;
@Service("chongwufuwujigouService")
public class ChongwufuwujigouServiceImpl extends ServiceImpl<ChongwufuwujigouDao, ChongwufuwujigouEntity> implements ChongwufuwujigouService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<ChongwufuwujigouEntity> page = this.selectPage(
new Query<ChongwufuwujigouEntity>(params).getPage(),
new EntityWrapper<ChongwufuwujigouEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<ChongwufuwujigouEntity> wrapper) {
Page<ChongwufuwujigouView> page =new Query<ChongwufuwujigouView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public List<ChongwufuwujigouVO> selectListVO(Wrapper<ChongwufuwujigouEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
@Override
public ChongwufuwujigouVO selectVO(Wrapper<ChongwufuwujigouEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<ChongwufuwujigouView> selectListView(Wrapper<ChongwufuwujigouEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public ChongwufuwujigouView selectView(Wrapper<ChongwufuwujigouEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
}
OrdersServiceImpl.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.OrdersDao;
import com.entity.OrdersEntity;
import com.service.OrdersService;
import com.entity.vo.OrdersVO;
import com.entity.view.OrdersView;
@Service("ordersService")
public class OrdersServiceImpl extends ServiceImpl<OrdersDao, OrdersEntity> implements OrdersService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<OrdersEntity> page = this.selectPage(
new Query<OrdersEntity>(params).getPage(),
new EntityWrapper<OrdersEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<OrdersEntity> wrapper) {
Page<OrdersView> page =new Query<OrdersView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public List<OrdersVO> selectListVO(Wrapper<OrdersEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
@Override
public OrdersVO selectVO(Wrapper<OrdersEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<OrdersView> selectListView(Wrapper<OrdersEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public OrdersView selectView(Wrapper<OrdersEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
}
map.js
/*
Map plugin v0.1 for Highcharts
(c) 2011-2013 Torstein Hønsi
License: www.highcharts.com/license
*/
(function(g){function x(a,b,c){for(var d=4,e=[];d--;)e[d]=Math.round(b.rgba[d]+(a.rgba[d]-b.rgba[d])*(1-c));return"rgba("+e.join(",")+")"}var r=g.Axis,y=g.Chart,s=g.Point,z=g.Pointer,l=g.each,v=g.extend,p=g.merge,n=g.pick,A=g.numberFormat,B=g.getOptions(),k=g.seriesTypes,q=B.plotOptions,t=g.wrap,u=g.Color,w=function(){};B.mapNavigation={buttonOptions:{align:"right",verticalAlign:"bottom",x:0,width:18,height:18,style:{fontSize:"15px",fontWeight:"bold",textAlign:"center"}},buttons:{zoomIn:{onclick:function(){this.mapZoom(0.5)},
text:"+",y:-32},zoomOut:{onclick:function(){this.mapZoom(2)},text:"-",y:0}}};g.splitPath=function(a){var b,a=a.replace(/([A-Za-z])/g," $1 "),a=a.replace(/^\s*/,"").replace(/\s*$/,""),a=a.split(/[ ,]+/);for(b=0;b<a.length;b++)/[a-zA-Z]/.test(a[b])||(a[b]=parseFloat(a[b]));return a};g.maps={};t(r.prototype,"getSeriesExtremes",function(a){var b=this.isXAxis,c,d,e=[];l(this.series,function(a,b){if(a.useMapGeometry)e[b]=a.xData,a.xData=[]});a.call(this);c=n(this.dataMin,Number.MAX_VALUE);d=n(this.dataMax,
Number.MIN_VALUE);l(this.series,function(a,i){if(a.useMapGeometry)c=Math.min(c,a[b?"minX":"minY"]),d=Math.max(d,a[b?"maxX":"maxY"]),a.xData=e[i]});this.dataMin=c;this.dataMax=d});t(r.prototype,"setAxisTranslation",function(a){var b=this.chart,c=b.plotWidth/b.plotHeight,d=this.isXAxis,e=b.xAxis[0];a.call(this);if(b.options.chart.type==="map"&&!d&&e.transA!==void 0)this.transA=e.transA=Math.min(this.transA,e.transA),a=(e.max-e.min)/(this.max-this.min),e=a>c?this:e,c=(e.max-e.min)*e.transA,e.minPixelPadding=
(e.len-c)/2});t(y.prototype,"render",function(a){var b=this,c=b.options.mapNavigation;a.call(b);b.renderMapNavigation();c.zoomOnDoubleClick&&g.addEvent(b.container,"dblclick",function(a){b.pointer.onContainerDblClick(a)});c.zoomOnMouseWheel&&g.addEvent(b.container,document.onmousewheel===void 0?"DOMMouseScroll":"mousewheel",function(a){b.pointer.onContainerMouseWheel(a)})});v(z.prototype,{onContainerDblClick:function(a){var b=this.chart,a=this.normalize(a);b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-
b.plotTop)&&b.mapZoom(0.5,b.xAxis[0].toValue(a.chartX),b.yAxis[0].toValue(a.chartY))},onContainerMouseWheel:function(a){var b=this.chart,c,a=this.normalize(a);c=a.detail||-(a.wheelDelta/120);b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)&&b.mapZoom(c>0?2:0.5,b.xAxis[0].toValue(a.chartX),b.yAxis[0].toValue(a.chartY))}});t(z.prototype,"init",function(a,b,c){a.call(this,b,c);if(c.mapNavigation.enableTouchZoom)this.pinchX=this.pinchHor=this.pinchY=this.pinchVert=!0});v(y.prototype,{renderMapNavigation:function(){var a=
this,b=this.options.mapNavigation,c=b.buttons,d,e,f,i=function(){this.handler.call(a)};if(b.enableButtons)for(d in c)if(c.hasOwnProperty(d))f=p(b.buttonOptions,c[d]),e=a.renderer.button(f.text,0,0,i).attr({width:f.width,height:f.height}).css(f.style).add(),e.handler=f.onclick,e.align(v(f,{width:e.width,height:e.height}),null,"spacingBox")},fitToBox:function(a,b){l([["x","width"],["y","height"]],function(c){var d=c[0],c=c[1];a[d]+a[c]>b[d]+b[c]&&(a[c]>b[c]?(a[c]=b[c],a[d]=b[d]):a[d]=b[d]+b[c]-a[c]);
a[c]>b[c]&&(a[c]=b[c]);a[d]<b[d]&&(a[d]=b[d])});return a},mapZoom:function(a,b,c){if(!this.isMapZooming){var d=this,e=d.xAxis[0],f=e.max-e.min,i=n(b,e.min+f/2),b=f*a,f=d.yAxis[0],h=f.max-f.min,c=n(c,f.min+h/2);a*=h;i-=b/2;h=c-a/2;c=n(d.options.chart.animation,!0);b=d.fitToBox({x:i,y:h,width:b,height:a},{x:e.dataMin,y:f.dataMin,width:e.dataMax-e.dataMin,height:f.dataMax-f.dataMin});e.setExtremes(b.x,b.x+b.width,!1);f.setExtremes(b.y,b.y+b.height,!1);if(e=c?c.duration||500:0)d.isMapZooming=!0,setTimeout(function(){d.isMapZooming=
!1},e);d.redraw()}}});q.map=p(q.scatter,{animation:!1,nullColor:"#F8F8F8",borderColor:"silver",borderWidth:1,marker:null,stickyTracking:!1,dataLabels:{verticalAlign:"middle"},turboThreshold:0,tooltip:{followPointer:!0,pointFormat:"{point.name}: {point.y}<br/>"},states:{normal:{animation:!0}}});r=g.extendClass(s,{applyOptions:function(a,b){var c=s.prototype.applyOptions.call(this,a,b);if(c.path&&typeof c.path==="string")c.path=c.options.path=g.splitPath(c.path);return c},onMouseOver:function(){clearTimeout(this.colorInterval);
s.prototype.onMouseOver.call(this)},onMouseOut:function(){var a=this,b=+new Date,c=u(a.options.color),d=u(a.pointAttr.hover.fill),e=a.series.options.states.normal.animation,f=e&&(e.duration||500);if(f&&c.rgba.length===4&&d.rgba.length===4)delete a.pointAttr[""].fill,clearTimeout(a.colorInterval),a.colorInterval=setInterval(function(){var e=(new Date-b)/f,h=a.graphic;e>1&&(e=1);h&&h.attr("fill",x(d,c,e));e>=1&&clearTimeout(a.colorInterval)},13);s.prototype.onMouseOut.call(a)}});k.map=g.extendClass(k.scatter,
{type:"map",pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",fill:"color"},colorKey:"y",pointClass:r,trackerGroups:["group","markerGroup","dataLabelsGroup"],getSymbol:w,supportsDrilldown:!0,getExtremesFromAll:!0,useMapGeometry:!0,init:function(a){var b=this,c=a.options.legend.valueDecimals,d=[],e,f,i,h,j,o,m;o=a.options.legend.layout==="horizontal";g.Series.prototype.init.apply(this,arguments);j=b.options.colorRange;if(h=b.options.valueRanges)l(h,function(a){f=a.from;i=a.to;e=
"";f===void 0?e="< ":i===void 0&&(e="> ");f!==void 0&&(e+=A(f,c));f!==void 0&&i!==void 0&&(e+=" - ");i!==void 0&&(e+=A(i,c));d.push(g.extend({chart:b.chart,name:e,options:{},drawLegendSymbol:k.area.prototype.drawLegendSymbol,visible:!0,setState:function(){},setVisible:function(){}},a))}),b.legendItems=d;else if(j)f=j.from,i=j.to,h=j.fromLabel,j=j.toLabel,m=o?[0,0,1,0]:[0,1,0,0],o||(o=h,h=j,j=o),o={linearGradient:{x1:m[0],y1:m[1],x2:m[2],y2:m[3]},stops:[[0,f],[1,i]]},d=[{chart:b.chart,options:{},fromLabel:h,
toLabel:j,color:o,drawLegendSymbol:this.drawLegendSymbolGradient,visible:!0,setState:function(){},setVisible:function(){}}],b.legendItems=d},drawLegendSymbol:k.area.prototype.drawLegendSymbol,drawLegendSymbolGradient:function(a,b){var c=a.options.symbolPadding,d=n(a.options.padding,8),e,f,i=this.chart.renderer.fontMetrics(a.options.itemStyle.fontSize).h,h=a.options.layout==="horizontal",j;j=n(a.options.rectangleLength,200);h?(e=-(c/2),f=0):(e=-j+a.baseline-c/2,f=d+i);b.fromText=this.chart.renderer.text(b.fromLabel,
f,e).attr({zIndex:2}).add(b.legendGroup);f=b.fromText.getBBox();b.legendSymbol=this.chart.renderer.rect(h?f.x+f.width+c:f.x-i-c,f.y,h?j:i,h?i:j,2).attr({zIndex:1}).add(b.legendGroup);j=b.legendSymbol.getBBox();b.toText=this.chart.renderer.text(b.toLabel,j.x+j.width+c,h?e:j.y+j.height-c).attr({zIndex:2}).add(b.legendGroup);e=b.toText.getBBox();h?(a.offsetWidth=f.width+j.width+e.width+c*2+d,a.itemY=i+d):(a.offsetWidth=Math.max(f.width,e.width)+c+j.width+d,a.itemY=j.height+d,a.itemX=c)},getBox:function(a){var b=
Number.MIN_VALUE,c=Number.MAX_VALUE,d=Number.MIN_VALUE,e=Number.MAX_VALUE;l(a||this.options.data,function(a){for(var i=a.path,h=i.length,j=!1,g=Number.MIN_VALUE,m=Number.MAX_VALUE,k=Number.MIN_VALUE,l=Number.MAX_VALUE;h--;)typeof i[h]==="number"&&!isNaN(i[h])&&(j?(g=Math.max(g,i[h]),m=Math.min(m,i[h])):(k=Math.max(k,i[h]),l=Math.min(l,i[h])),j=!j);a._maxX=g;a._minX=m;a._maxY=k;a._minY=l;b=Math.max(b,g);c=Math.min(c,m);d=Math.max(d,k);e=Math.min(e,l)});this.minY=e;this.maxY=d;this.minX=c;this.maxX=
b},translatePath:function(a){var b=!1,c=this.xAxis,d=this.yAxis,e,a=[].concat(a);for(e=a.length;e--;)typeof a[e]==="number"&&(a[e]=b?Math.round(c.translate(a[e])):Math.round(d.len-d.translate(a[e])),b=!b);return a},setData:function(){g.Series.prototype.setData.apply(this,arguments);this.getBox()},translate:function(){var a=this,b=Number.MAX_VALUE,c=Number.MIN_VALUE;a.generatePoints();l(a.data,function(d){d.shapeType="path";d.shapeArgs={d:a.translatePath(d.path)};if(typeof d.y==="number")if(d.y>c)c=
d.y;else if(d.y<b)b=d.y});a.translateColors(b,c)},translateColors:function(a,b){var c=this.options,d=c.valueRanges,e=c.colorRange,f=this.colorKey,i,h;e&&(i=u(e.from),h=u(e.to));l(this.data,function(g){var k=g[f],m,l,n;if(d)for(n=d.length;n--;){if(m=d[n],i=m.from,h=m.to,(i===void 0||k>=i)&&(h===void 0||k<=h)){l=m.color;break}}else e&&k!==void 0&&(m=1-(b-k)/(b-a),l=k===null?c.nullColor:x(i,h,m));if(l)g.color=null,g.options.color=l})},drawGraph:w,drawDataLabels:w,drawPoints:function(){var a=this.xAxis,
b=this.yAxis,c=this.colorKey;l(this.data,function(a){a.plotY=1;if(a[c]===null)a[c]=0,a.isNull=!0});k.column.prototype.drawPoints.apply(this);l(this.data,function(d){var e=d.dataLabels,f=a.toPixels(d._minX,!0),g=a.toPixels(d._maxX,!0),h=b.toPixels(d._minY,!0),j=b.toPixels(d._maxY,!0);d.plotX=Math.round(f+(g-f)*n(e&&e.anchorX,0.5));d.plotY=Math.round(h+(j-h)*n(e&&e.anchorY,0.5));d.isNull&&(d[c]=null)});g.Series.prototype.drawDataLabels.call(this)},animateDrilldown:function(a){var b=this.chart.plotBox,
c=this.chart.drilldownLevels[this.chart.drilldownLevels.length-1],d=c.bBox,e=this.chart.options.drilldown.animation;if(!a)a=Math.min(d.width/b.width,d.height/b.height),c.shapeArgs={scaleX:a,scaleY:a,translateX:d.x,translateY:d.y},l(this.points,function(a){a.graphic.attr(c.shapeArgs).animate({scaleX:1,scaleY:1,translateX:0,translateY:0},e)}),delete this.animate},animateDrillupFrom:function(a){k.column.prototype.animateDrillupFrom.call(this,a)},animateDrillupTo:function(a){k.column.prototype.animateDrillupTo.call(this,
a)}});q.mapline=p(q.map,{lineWidth:1,backgroundColor:"none"});k.mapline=g.extendClass(k.map,{type:"mapline",pointAttrToOptions:{stroke:"color","stroke-width":"lineWidth",fill:"backgroundColor"},drawLegendSymbol:k.line.prototype.drawLegendSymbol});q.mappoint=p(q.scatter,{dataLabels:{enabled:!0,format:"{point.name}",color:"black",style:{textShadow:"0 0 5px white"}}});k.mappoint=g.extendClass(k.scatter,{type:"mappoint"});g.Map=function(a,b){var c={endOnTick:!1,gridLineWidth:0,labels:{enabled:!1},lineWidth:0,
minPadding:0,maxPadding:0,startOnTick:!1,tickWidth:0,title:null},d;d=a.series;a.series=null;a=p({chart:{type:"map",panning:"xy"},xAxis:c,yAxis:p(c,{reversed:!0})},a,{chart:{inverted:!1}});a.series=d;return new g.Chart(a,b)}})(Highcharts);
声明
本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。