APP下载

基于微信公众平台的网上订餐系统的设计与实现

2019-06-30宋思华

企业科技与发展 2019年9期
关键词:微信公众平台

宋思华

【摘 要】文章研究基于微信公众平台运行,从微信公众号进入,页面前端采用HTML5、CSS3和JQuery技术,页面后台通过PHP实现,数据库采用MYSQL,通过JSON格式与微信平台进行数据交换。为满足高并发引入REDIS,为实现与订单打印的解耦引入消息队列,保证了高并发、大数据量下的订餐系统的正常运转。该系统为多商户版本,需每个商户独自运营自己的公众号平台。

【关键词】微信公众平台;订餐系统;分布式缓存;云打印

【中图分类号】TP311 【文献标识码】A 【文章编号】1674-0688(2019)09-0096-02

微信自2011年推出至今已拥有超过10亿用户,逐渐成为大众在移动互联网时代的生活方式。背倚庞大的用户基础,微信公众平台的内容产出与消费量已经非常可观,各个企业纷纷在微信平台开设自己的公众号,用于宣传、推广、销售等。本文基于微信公众平台,开发设计可以在电子移动端使用的网上订餐系统,方便商家的餐品推广、销售及客户的购买。

1 系统总体功能设计

1.1 总体设计

该系统最终在互联网环境进行推广,预计接入商户1万家,总用户量为100万。用户通过微信公众号关注商家后,通过自定义菜单入口,使用HTML5页面展示店铺订餐页面。商户通过PC端配置自己的店铺、对公众号进行自定义配置。系统使用PHP语言、MYSQL数据库开发订餐系统,部署在阿里云平台,为商户及公众提供服务。

为保证用户体验,在高并发环境下也能保证用户正常点餐、订餐,系统使用分布式缓存REDIS来存储用户经常访问的数据,减轻对数据库查询的压力。商户要实时获取有哪些用户来订餐,及时备餐并配送,需要配备云打印机实时打印在线订单,系统通过云平台技术,将用户订单存储到消息队列中,并监听各商户的云打印机在线情况,将订单推送到云打印机进行打印。

1.2 功能说明

该系统功能主要分数据层、服务层和表现层。

数据层主要通过MYSQL数据库来存储数据,在数据量较大时,通过分库分表的方式来保存数据。用REDIS来缓存访问率较高的数据,提升系统访问速度,降低数据库服务器I/O压力。

服务层对每个商户及顾客提供统一服务接口,是系统的核心层,主要包括公众号服务、订餐服务、营销服务、缓存服务、配置服务、登录鉴权、支付服务和打印服务等。

表现层分商家PC端和顾客公众号端。

2 关键技术

2.1 JSON格式

JSON是一种数据交换格式,它与XML相比更轻量,是当前各系统开发、系统间进行数据交换的主流数据格式。在本系统与微信公众平台的交互中,所有接口都使用了JSON格式,例如公众号通过API调用设置的菜单,自定义菜单配置样例如下:

2.2 REST

REST是利用HTTP协议对互联网资源进行一致的命名规则定义,使得对数据的增删改查操作与HTTP协议中的post、delete、put、get方法对应起来,满足这种规则的接口则为Restful风格的接口。Restful接口使得各系统间进行接口调用时按照命名约定进行调用,减少沟通成本。本系统中要与微信公众平台进行交互,数据格式统一使用JSON格式,调用方式则统一使用REST接口。例如查询某公众号的当前自定义菜单,则使用指定HTTP请求方式:?GET接口https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=ACCESS_TOKEN。

2.3 缓存

在传统的数据请求中,比如用户查看某店铺现可订餐的菜品,首先发送请求到后台,后台接到请求后,根据请求参数组合SQL查询语句发送到数据库,将数据库返回的数据组装成前台需要的数据并返回给前台,页面再对这些数据进行渲染,最终展示给用户。

在用户量不大的情况下,使用这种方式没有性能上的问题,但在用户量大的情况下,后台会频繁向数据库发送查询请求,最终会达到数据库IO上限,造成查询速度慢,用户得到的响应慢。

为保证高并发请求下用户的体验,在本订餐平台中,对大量短时间内不会频繁变化的数据,例如各餐饮店的产品分类、套餐信息、饭菜信息,为提高系统响应速度,系统会在初次请求这些信息时对这些信息进行缓存,下一次其他用户请求时,平台直接给出缓存的信息,提高用户响应速度。

同时,在本订餐平台中,后台服务进行集群部署,用户同时登录时需要保持用户SESSION,所以这些数据不能记录到服务器SESSION中,而是需要存储到一种中间数据库中。

结合系统特点,本系统采用REDIS存储的NoSQL数据库作为缓存来使用,缓存高频次访问的数据,降低数据库IO,同时满足系统的分布式架构,做SESSION共享。

2.4 支付功能

移动支付是互联网时代的新型支付方式,用户在通过微信公众平台进行订餐后,可选择在线支付或货到付款,本系统支持微信支付。微信支付使用H5支付,是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付。

2.5 消息队列

用户在线订餐后,订单信息需要及时通知商户,本系统方案为将订单信息推送到商户的云打印机,实时出单。云打印机作为一个物联网终端,是连接用户与商户的桥梁,但这个桥梁不是实时在线的,可能处于关机状态,或者因网络原因,云打印机心跳包丢失,系统显示云打印机不在线,从而无法推送消息。如果出现这种情况,系统会发生订单未打印的情况,造成商户的损失。为此,系统采用消息队列方式,对订单信息与打印指令进行解耦。所有产生的订单打印信息先放在消息队列中,而在消息消费者中只显示云打印机在线的消息,从而保证打印机工作的可靠性。

2.6 云打印

云打印是以互联网为基础,以小票打印机作为IOT平台终端构建的订单打印系统。小票打印机以gprs或wlan方式接入互联网平台,并向平台进行注册,注册成功后以一定频率向平台发送心跳数据,平台接到心跳数据则认为打印机在线。如消息队列中有待打印的订单信息,则推送到打印机进行打印。打印机与IOT平台的接口使用RESTAPI,数据交换格式使用JSON。例如:获取订单列表接口,通过post方式请求指定接口地址http://www.xxxx.com/printer/getOrderList,传入TOKEN等权限认证信息后就可以取到商户的订单列表。

3 结语

本文主要介绍了基于微信公众平台订餐系统的总体设计、系统功能和关键技术。系统开发者对商户实现了B2B的运行模式,而商户对客户则是B2C的营销模式。系统主要提供餐品的管理和订餐功能的实现,线下的操作如送餐则由商户自主完成。

通過实际运营,发现系统有如下可改进方面:{1}餐品在配送过程中的定位功能未实现,使得客户不能实时获取餐品位置信息。{2}安全问题。网络中数据的传输未进行加密,可能会有安全隐患。

该系统仍需根据实际运营情况进行用户体验及安全性能方面的修改及功能的完善,为用户提供更快捷、方便、安全的订餐环境。

参 考 文 献

[1]周建功.微信公众号订餐平台系统设计与实现[J].软件导刊,2016(8):74-76.

[2]陈小龙.微信公众平台开发实战与应用案例[M].北京:清华大学出版社,2015.

[3]易伟.微信公众平台服务号开发[M].北京:机械工业出版社,2014.

猜你喜欢

微信公众平台
传统媒体使用微信平台推送的价值选择研究
高校学报微信公众平台发展的SWOT分析
基于微信公众平台的高校综合素质社团建设
基于微信公众平台的阅读推广案例研究
基于微信的大学生微型学习平台的设计与实现
基于微信公众平台的碎片化学习研究
媒体融合背景下出版社微信公众平台发展研究
微信公众平台在高校图书馆信息服务中的应用研究
试析高校应用微信公众平台的问题与策略