基于微信公众号的外卖点餐系统Word格式文档下载.docx
《基于微信公众号的外卖点餐系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于微信公众号的外卖点餐系统Word格式文档下载.docx(36页珍藏版)》请在冰豆网上搜索。
WeChatofficialaccountOrderingsystemSpringBootMySQLRedis
第一章绪论
1.1项目开发背景
自4G时代以来,互联网的发展之迅速,人们有目共睹,随着手机等移动智能终端的改革升级以及网络的快速发展,国人们的生活习惯也发生了巨大的变化。
衣食住行,此为人民生活之根基,作为跟我们生活息息相关的行业,餐饮行业也随着社会的进步、科技的发展迎来了巨大的变革。
“今天吃什么?
食堂?
”“食堂?
算了吧,还是叫外卖吧。
”——外卖,人们生活习惯的改变使其成为了现代人生活的一部分,也是一种方便,多元选择的方式。
其本身有着巨大的市场需求,但是目前外卖点餐系统五花八门,群雄割据,地方寡头难免有点不胜其烦。
一些本地商铺完全可以利用平台引流,例如时下火爆的微信小程序、公众号等,微信用户的覆盖程度可能大大的超过了我们的想象,只要引流到位,通过开发基于微信公众号的外卖点餐系统,用户可以方便快捷的通过公众号入口进入程序,浏览选择需要的商品,下单购买。
对于顾客来说,不必去下载其他外卖APP,从而减少了不必要的时间浪费以及多余的步骤。
智能手机等移动智能终端的普及在国内已经非常发达。
网络方便、智能手机的普及、微信所拥有的庞大用户群、外卖市场的强大统治力等诸多优势使基于微信公众号的外卖点餐系统的设计与实现显得十分正确,这样人们就可以通过微信外卖点餐下单了。
1.2项目开发目的
社会的进步以及科技的发展,无比发达的互联网加上国内社交巨头微信平台的支持,方便简单的点餐系统成为热门是可以预见的。
顺应潮流,迎合用户需求,并且使用SpringBoot技术栈进行系统开发,买家点餐购买,卖家管理商品、处理订单,旨在让线上订餐系统服务直观、高效、便捷。
1.3项目开发意义
开发微信公众号点餐系统有着许许多多的优点,例如:
可接受程度大,平台支持,易于操作和低成本。
这些优点可以极大的提高外卖点餐系统的使用效率和吸引大量用户。
1.4国内研究现状和发展趋势
近年来,餐饮业的经营管理模式在不断发展和创新,信息花的管理能带来真正业务上的提升,能够解决不少运营商的问题。
近几年移动应用的火热,手机成了现代人离不开的工具,加上微信这个庞大的生态体系,结合单独开发APP的成本与用户引流方面的难题,微信公众号点餐就是一个无比适合的平台。
虽说中国餐饮业现在恰逢最好的时代,但也处在竞争最激烈的时代:
一方面,年交易额已突破万亿大关(单位:
人民币),以每年一成的增长速度在10年内门店数量激增达十倍;
90后俨然成为市场消费的主力军,绝大多数人选择在外就餐,并愿意为之付出相应的金额,前景可观;
而在另一方面,过于分散的行业,虽然竞争激烈,但从业者们队微信点餐功能认知甚少使得行业数字化程度过于低下,从而失去了多样化的智慧点餐尝试能力。
尽管如此,在行业内也不乏有先见之明的佼佼者,有些在两三年内开上千家连锁,缔造行业神话,坐拥千万忠实会员,有些则找到了垂直发展餐饮场景的道路。
令商家们头疼的问题:
精简前端人力,会员的沉淀等,二者的痛点在于:
人力和租金占了开店成本的大头,但削减人力却又会导致服务质量的降低皆可由微信点餐plus公众号解决,可做到削减前端人力,提高顾客点餐自主性。
本项目以微信公众号作为引流工具,加上目前流行的springboot框架开发的点餐系统,以直观、高效、便捷的优点进行研究开发。
1.5项目设计思路
本系统采用时下流行的SpringBoot作为技术栈进行系统开发,IDE选用IntelliJIDEA,以MySQL、Redis作为数据库,用Nginx代理。
买家端主要功能有:
商品展示,购物车,下单支付,取消订单,订单详情;
卖家端主要功能有:
商品管理,商品类目管理,订单管理。
第二章综述及相关技术分析
2.1微信和微信公众号简介
微信(WeChat)是由腾讯集团在2011年推出的一个移动智能终端APP,属于免费即时通讯旗下业务。
微信主要功能类似腾讯QQ,同样支持用少量网络流量发送语音信息、文件、图片和视频,并且它是跨操作系统、通信运营商的,却又不像腾讯QQ那样臃肿繁杂。
还可使用其他的内置社交服务插件来共享内筒资料,甚至确切位置。
这些插件包括但不限于"
朋友圈"
、"
微信公众平台"
,在这之中有一衍生服务(主要用于一对多媒体活动行为)——微信公众平台(通常简称公众号)。
它支持使用公众账号来进行自媒体活动,普遍用于各类商家在其基础上进行二次开发来展示自家官网,以及商家提供的各类衍生服务功能组件,近年来在线上线下的互动营销中微信公众号营销已可称得上是独占鳌头。
微信公众平台的特性:
1.信息推广活动成本低廉:
轻松对接任何系统,支持富媒体交互(包括但不限于图片、音视频),随时随地交互,
只需一个步骤——登录微信,系统即可获取确切的时间、位置,可做到比较高的信息传达率。
2.前端后端比重分明:
微信公众平台的产品问世时即要面对庞大的用户群体(亿级用户),因而用户直接能体验交互的前端,以及保证体验的后端,公众号使二者比重分明
3.用户干扰低:
a)公众号的可信力高,用户接受度较高(类比微博大V);
b)不会产生巨量的爆炸性信息,信息传播方式的环境较为私密;
c)自由度高,用户选择功能自主,功能设置细致;
4.简单的加入方式:
加入免费,按照相关步骤进行申请即可
5.生活服务相关产品的沃土:
a)政府机关、机构、团体、电子商务、兴趣分享等;
b)OnlineToOffline;
2.2SpringBoot简介
要说SpringBoot,首先要从Spring框架说起。
框架(framework)通常指的是一个半成品,可以在框架的基础上进行加工,实现自己想要的功能或效果,对于编程而言,框架则是对基础代码进行封装,对外提供一系列相应的API供开发者调用,其目的是为了让开发者更简便的使用它进行业务代码开发。
Spring框架就是其中之一,它为Java语言服务,是开源的J2EE应用程序框架。
主要核心特性有容器、控制反转(IOC)和AOP,这些特性旨在方便维护和测试项目,可利用核心特性——控制反转,以及其实现方式依赖注入来实现管理对象的生命周期容器化;
而面向切面编程(AOP)则可用于声明式的事务管理,从而达到整合各种市面上常用的持久化管理数据访问的目的,还有众多优秀的Web框架提供,以上各种均为开发者提供了诸多开发上的问题的解决方案。
这些还不足以了解SpringBoot,接下来还得谈谈Spring更常见的一些特性和优点。
Spring框架通过容器管理对象的生命周期,方式为扫描XML文件亦或是特定的Java注解,用来配置对象,底层原理是利用了Java的反射机制,做到对对象的统一配置和管理,开发人员则可通过DI(DependencyInjection)或依赖查找来获得对象。
另一大特性是面向切面编程框架,AOP框架从整体出发更关注的是模块之间的重叠部分,并对其进行模块化,Spring的AOP框架可在运行时配置的,主要基于代理模式,但无法跟AspectJ框架比拟,仅提供基本的AOP特性,但Spring框架的可集成性很强,可通过配置集成多种事务模板(事务框架还集成了消息传递和缓存等功能),通过与AspectJ框架的集成,也足以应付基本需求。
通过AOP技术,Spring实现了事务管理、远程访问等功能。
事务管理给了Java平台一种抽象机制,可以让本地同全局以及嵌套事务与保存点一同工作,甚至于能让其能够在Java平台的任何环境下工作。
谈到Spring事务管理,还有一个与之相关的则是Spring的DataAccess框架,它不仅对主流的JDBC、JDO、MyBatis、Hibernate数据框架等提供了支持,还可进行更灵活的抽象数据访问。
为开发者解决了程序中使用数据库时的常见问题。
基本上Spring框架的特性都在上文阐述了,接下来谈谈SpringBoot。
2014年,一种基于Spring的全新框架,SpringBoot的第一个版本问世。
Pivotal团队设计其的目的是为了解决原生Spring配置越来越多,越来越臃肿的问题,在Spring的基础上去繁取简,不再需要重复定义样板化的配置,使用了更特定的方式配置。
简单方便,使得SpringBoot以称得上是极快的速度占领了快速应用开发领域(rapidapplicationdevelopment)。
表2.1SpringBoot的优势
可快速的构建项目
无配置集成主流开发框架
减少开发,测试时间和努力
提供运行时的应用监控
使用JavaConfig有助于避免使用XML
避免大量的Maven导入和各种版本冲突
项目无需依赖外部Servlet容器即可独立运行
提高了开发、部署效率
综上,使用SpringBoot技术快速构建开发系统是目前Wed开发人员的主流选择亦是我的最佳选择。
2.3MySQL简介
数据库(Database)系统,一般分为关系型数据库、非关系型(NoSQL)数据库。
主流数据库有MySQL、SQLServer、Oracle、Redis等,这里谈到的MySQL数据库属于关系型(Relationaldatabase),而下文提到的Redis则是非关系型数据库。
MySQLAB公司开发的MySQL目前属于Oracle旗下。
它是小型数据库服务器,以多用户多线程的"
C/S"
模式实现。
越来越多的企业因为其功能的不断完善、性能的提高,更重要的是开源免费的优势,投入其宽阔的怀抱,放弃使用收费的Oracle。
"
跨平台"
似乎是很多软件或系统都将其作为一个宣传点的,恰巧MySQL也是这么个系统,Windows、MacOS、Linux等均可使用它,加上它的使用方便快捷,SQL命令也普遍为大众熟悉,再加上与钱有关的一个优势,开源免费,运营成本低,使得使用MySQL作为首选数据库的公司日益增多。
刚诞生的MySQL功能简单,甚至只能进行一些非常简单的结构化数据访问操作,而后经过多年的改良、修复,目前它已拥有商用数据库管理系统需要的大部分功能。
好的软件,好的系统都懂得去繁取简,它在满足SQL92的大多数标准的同时,又摒弃了其中一些较少为人使用的标准。
从相关的测试套件的测试报告中,我们可以得到的信息是,在事务支持方面,MySQL自身的存储引擎不可用,但四个事务隔离级别(Transactionisolationlevel)可通过存储引擎InnoDB这个第三方来实现。
虽然每个引擎都有其不同的实现过程,甚至有的数据库还不足以实现全部级别的事务隔离,但是MySQL数据库还是不能跟其他收费商用数据库并驾齐驱的。
这一点在可编程实现上比较突出,最新版本的MySQL虽然也开始提供一些简单的(例如过程、函数、触发器)可编程支持,但跟其他"
财大气粗"
的数据库相比,还是小巫见大巫了。
功能有限,总体存在不足,MySQL只能说在专业方面差强人意。
话是这么说,但在总体上还是瑕不掩瑜的,正如没有什么软件是绝对完美的一样,也不会有任何数据库敢声称自己是最完美的数据库系统。
它提供的功能以及服务既然足以应付我们的一般业务需求,且有着自己的优势,我们又何必过于苛刻的追求其他不怎么常用的功能呢。
每个产品都有自己的目标受众,数据库系统也不例外,选择MySQL足矣。
2.4Java语言简介
Java——相信大部分人都不会陌生,你可能在智能手机之前的功能机上见过这么个像一杯咖啡图案,那即是Java语言编写的一些应用软件。
Sun公司的詹姆斯·
高斯林等人于1991年构想设计了一门语言,该门语言即为Java。
从技术的设计到原始编译器和虚拟机,均由Sun研究院院士高斯林参与,故后人一般公认其为"
Java之父"
。
Java还有个轶事,据说当初命名时是想根据Gosling家门口的橡树而取名OAK的,但因发现其已被注册使用,后确定为现在的名字,并于1995年正式发布。
Java语言诞生前,程序开发者们"
苦C语言久矣"
,因为既要学习指针的知识,又要学习如何管理内存,所以后来在设计Java的时候,初衷就是有着那么一点奔着改良C语言的方向去的,语法类似,不用管指针、内存,了解Java的人都知道这么一句话"
Writeonce,Runanywhere"
(编写一次,处处运行),具备真正的可移植性;
而且还是类型安全、面向对象的,并且还得有其他比如拥有高质量类库等的优势。
当然还得谈谈现在已经不是什么太大亮点的亮点了——跨平台,跟上文提到的差不多,该语言编写的程序亦可跨系统平台,能在任意设备上运行。
Java也称得上是非常有雄心壮志的,它想占据3大领域,其中之一也包含网页。
在它刚诞生的年代,1995年到处充斥着简单而粗糙并缺乏互动性的网页,Java察觉到了这一点,并在浏览器中设计了一个小插件,也就是后来的图形界面(Applet),并放上了Java的运行环境。
让它适应了Internet环境和企业网络,这也使得后来Java在Internet环境中具有强大的影响力并且是最受欢迎的语言之一。
另一方面苦于在消费电子产品中遇到的瓶颈时,设计团队的成员发现创建的代码中也出现了嵌入式控制器常遇的可移植性问题,最后Java的重点则转向了互联网。
Java语言与目前常用的C++相比简洁很多,有较高的安全性,取其精华去其繁杂。
越来越多的开发人员选择了它,他们基于该语言开发了海量的平台,系统以及工具,例如:
Ant、Maven、Jekins、Tomcat、Spring、Eclipse等等,后来2006年,Hadoop的问世,更让Java在大数据领域有了一席之地。
相比Ruby,python等语言,Java更适合开发复杂的服务器端程序,目前选择Java作为web程序开发语言仍是大部分程序员的首选,凭借着其强大的功能、相关支持以及顽强的生命力,选择Java无疑是很正确的。
2.5Redis简介
与上文提到的MySQL不同,Redis则是非关系数据库。
NoSQL比较被大家接受的一种说法是"
NotOnlySQL"
,也就是不仅仅是SQL,区别于SQL,有易拓展的优势。
虽说NoSQL仅仅是一种概念,但也有如下表所列的共同观点
表2.2NoSQL常见观点
不使用关系模型
在集群上运行良好
主要是开源的
适合构建21世纪Web应用
非模式化
多种范式的持久化机制也是受NoSQL影响的结果之一。
Redis全称RemoteDictionaryServer翻译过来就是远程字典服务器,它是一种高性能键值对数据库系统,包含String,list,Map,sets和sortedsets等类型,支持分布式,并支持持久化,又因为它的数据是运行在内存上的所以它还是速度很快的"
数据结构服务器"
是一款开源免费的C语言编写的数据库,广泛应用于缓存方面。
由于它支持分布式,所以更适合现在的业务环境,支持分布式缓存,各个实例共用一份具有缓存一致性额缓存。
除了这里提到的一点皮毛,目前的Redis已经非常强大,各种平台各种系统中都有它的身影,所以本系统也使用其作为缓存数据库。
2.6本章小结
本章主要介绍了微信、微信公众号、SpringBoot技术的优势还有为什么选择使用Java语言,也对所用到的两种数据库系统MySQL和Redis进行了简单的阐述,以及通过分析系统功能以及市场形势和环境,对比了其他的数据库后作出的选择。
第三章系统需求分析
3.1可行性分析
随着互联网的发展,外卖点餐占餐饮行业的市场份额不断提高以及移动智能终端越来越普及和我国的网络条件也不断提升从3G、4G到现在的5G,中国早已进入高速上网时代,这些种种迹象都展示开发微信点餐系统是可行的。
微信点餐系统是使用Java语言、SpringBoot技术栈、MySQL、Redis作为数据库。
从技术上来说可以达到该项目的绝大多数功能需求。
本项目是基于微信公众平台,有平台的支持,减少了系统开发的成本,不需要额外的花费,所以在经济上也是可行的。
3.2总体需求分析
本系统是C/S的,买家端入口可从微信公众号进入,因而没有特别的硬件制约,只要能运行微信基本都可以进入系统,不会受到类似独立APP的诸多问题。
卖家端也仅仅是从浏览器进入后台管理系统,所以在开发功能需求上考虑便捷性就比较重要了。
除此之外,布局设计需要合理简洁,从而做到操作清晰简洁,易上手。
综上,我对本系统可能用到的功能或目标制成了下表
表3.1系统需求表
简洁合理的布局,看上去要清晰,系统交互方式要合理,提供一个优质的系统界面
系统需要稳定,在程序的运行过程中要做到保证数据的安全性和稳定性,必要时做好备份并保持数据库的同步
系统的安全性,使用该系统的用户数据应该得到应有的保障,避免泄露或丢失
3.3系统功能需求分析
本系统需要实现一个基于微信公众号的外卖点餐系统,它分为两个用户:
买家和卖家。
卖家端可以在网站后台进行商品添加、删除、修改、上下架等基本操作;
买家端可以通过微信端登录系统平台进行点餐下单操作。
具体功能描述如下:
卖家:
①商品管理:
上下架、修改商品
②商品类目管理:
添加修改商品类目
③订单管理:
完结、取消订单
买家:
①商品展示:
查看商品列表详情
②购物车:
查看已选购的商品
③下单支付
④取消订单
⑤订单详情:
用户可查看详细的订单信息
3.3.1系统功能结构图
根据功能需求分析,得到本系统功能如下图所示:
图3.1系统结构功能图
3.4本章小结
现在这个时代是万物互联的时代,高度发达的信息社会中,智能终端已经无所不在,各个行业都渗入了互联网技术,手机已经成为人们不可或缺的物品,几乎人人都在使用手机。
此微信外卖点餐系统,功能由Java代码实现。
只需稍微阅读说明后,系统的维护人员就可以清楚地了解系统的功能。
需求分析跟产品质量和用户体验挂钩,开发的基本条件也是基于需求分析来说的,因此它的重要性不言而喻,一个完整、准确、清晰且具体的需求分析可以决定整个项目的成败存亡。
换句话说,一个好的系统离不开好的需求分析。
所以需求分析的手段至关重要。
第四章系统的设计与实现
4.1系统功能模块的设计与实现
4.1.1登录功能的设计与实现
(1)本系统并不提供注册功能,在本系统的登录模块中分为买家端登录和卖家端登录,买家端是移动端的微信登录,卖家端则是PC端的网页登录,二者都是微信登录,区别在于买家端通过微信公众号入口登录是调用了微信API做到了网页授权静默登录;
卖家端则在网页使用扫码登录。
买家端登录:
因为是静默授权登录所以没有登录界面展示
卖家端登录界面如下图:
图4.1卖家端登录页面
图4.2卖家登录代码
4.1.2点餐功能模块的设计与实现
买家用户进入系统后,可以看到商家上架的商品信息,浏览商品相关信息,点击商品旁边的+号按钮加入结算清单,选择完成后点击支付跳转填写相关信息后即可下单。
思路:
下单时购物车商品价格进行相关运算,前端将表单信息传入后端,之后进行入库操作
图4.3商家首页
图4.4买家订单代码
4.1.3下单信息功能模块的设计与实现
此页面为买家用户功能,下单结算前填写必要的信息方可完成下单。
界面如下图:
图4.5下单信息页面
4.1.4取消订单功能模块的设计与实现
此页面为买家用户功能,买家下单一定时间内,订单状态可以改变,即此时可以取消订单,设计思路:
给每个新下单的订单一个默认的订单状态,只要处于这个状态的订单都可进行取消订单的操作。
界面