基于微信公众平台的食堂订餐系统研究
2017-12-28姬翔
姬 翔
(国家新闻出版广电总局二九三台,河南 郑州 451162)
基于微信公众平台的食堂订餐系统研究
姬 翔
(国家新闻出版广电总局二九三台,河南 郑州 451162)
目前大多数单位在实施订餐制度时还采用订餐牌等老方法,由于无法远程订餐,使得订餐效率极低。为解决该问题,文章通过提出解决思路,选取合理的技术方案,编写符合需求的软件逻辑,一步步实现了基于微信公众平台的食堂订餐系统。
微信公众平台开发;远程订餐;PHP;MYSQL
1 订餐问题概述
随着生活工作节奏的加快,单位食堂逐渐成为职工工作餐的主要解决途径。但由于存在职工请假休息等情况,食堂就餐人员不易固定,为避免浪费、厉行节约,多数单位普遍采取提前订餐制度,通过在食堂设置订餐牌来解决订餐问题。但在实际操作过程中发现,该种订餐形式必须由职工亲自去食堂更改订餐信息,不仅浪费职工大量时间,也不利于厨师对用餐人数进行统计,为有效解决这一问题,本文作者开发了基于微信公众平台的食堂订餐系统。
2 设计思路
目前食堂订餐存在几个不方便因素,首先,订餐牌一般设立于食堂内,职工在更改订餐需求时需要奔赴食堂才能操作,很是不便,若是因出差等原因不在单位内则更为麻烦;其次,厨师在控制饭量多少时需要知道用餐总人数,而订餐牌只能提供用餐人员列表,还需人工进行统计总数;再次,由于厨师加工餐食一般需要一个半小时,所以订餐操作一般应该在饭前一个半小时之前进行,但由于订餐牌不具备限时订餐功能,若订餐操作过晚就可能造成餐食不够或过剩。
理想的订餐工具应该是可以24小时随身携带,所以手机是一个理想的操作平台,编写一款具有远程通信功能的手机APP便可满足需求,但手机APP具有几个致命缺点,一是兼容性差,目前手机操作系统类型及版本多种多样,一款APP要实现跨平台得进行多次移植,工作量极大;二是食堂订餐操作需要进行传输及处理的内容极为简单,仅仅是用户姓名和订餐内容,若专门编写APP来完成此类操作属于“杀鸡用牛刀”,不仅费时费力而且APP也显得过于臃肿。
通过对多种技术方案进行比较,发现基于微信公众平台的交互式APP最适合此类业务。该APP基于微信聊天界面,通过手机微信就能发送订餐消息,订餐系统后台服务器接收到订餐消息时便可修改用户订餐状态。基于微信公众平台的交互式APP除满足订餐的基本功能外还具有跨平台以及轻量、稳定等优点。
3 系统设计
3.1 基于微信公众平台的交互式APP开发原理
以本订餐系统的架构为例,公众平台服务器在整个系统中起到连接用户终端与订餐系统服务器的媒介作用。用户发起的订餐请求会首先发往微信公众平台服务器,服务器对文本进行XM L格式封装后发往开发者部署的订餐系统服务器。服务器对信息进行处理后回复XM L格式的结果信息给微信公众平台服务器,平台对XM L格式内容进行核验和解析后回复文本信息给用户终端,从而达到智能交互的目的。需要注意的是开发者回复的XML参数信息必须符合公众平台要求的格式,否则公众平台将忽略掉该条消息,导致用户无法收到回复信息。
微信公众平台与开发者的服务器在通信前,开发者需在公众平台后台管理页面配置接口信息,配置内容包括填写开发者服务器地址(URL),Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL,本例中即为订餐系统服务脚本地址。Token可由开发者可以任意填写,用作生成签名,验证通信安全性,防止第三方请求恶意访问。EncodingAESKey由开发者手动填写或随机生成,用作对消息体进行加解密的密钥,防止信息在传输环节被窃取。整个交互的主要逻辑运行在开发者服务器上,所以整个订餐系统的逻辑部分开发主要针对开发者服务器部分,本文也将主要介绍该部分的设计与实现。
3.2 订餐服务脚本的设计架构
订餐服务器上运行有PHP脚本以及M YSQL数据库,PHP脚本负责与公众平台的通信以及具体的业务逻辑,MYSQL数据库负责用户订餐数据的存储。所有订餐服务脚本(以下简称为脚本)均由PHP语言编写。脚本主要分为几个功能部分,具体是:XML格式消息处理部分,信息处理部分,业务处理部分,以及数据库部分。下面将详细介绍各部分的具体功能与实现。
3.2.1 XML格式消息处理
XM L格式消息的处理主要分为XM L格式的解析与组装,由于平台发送来的消息为XM L格式,不能像数组类型的数据格式那样直接根据Key访问Value,所以需要通过PHP的自带函数xm l_parse_into_struct()将数据转为数据格式。同时,在脚本处理完数据返回平台时也需要将数组数据组装为XM L格式,这里通过Xm lConstruct()函数实现。
3.2.2 信息处理部分
XM L格式解析后用户的消息将会转为数组传递给信息处理部分,用户在微信客户端操作订餐系统通过发送文本信息实现,所以订餐系统需要通过用户发送的文本内容判断用户的目的。由于每个用户个人习惯不尽相同,不同用户表达同一意思发送的文本具有差异性,但机器本身无法理解人类语言,所以需要约定不同文本内容所表示的操作请求。用户在发送信息时只有在文本内容与系统内置文本对应时订餐系统才会执行具体的操作,若用户发送内置文本之外的信息,信息处理脚本将会无法识别用户指令,回复用户该指令非法。若信息为系统内置文本之一,信息处理脚本通过识别文本内容,并发起请求到对应的业务处理脚本。
3.2.3 业务处理部分
业务处理部分根据不同请求分为3部分:订餐业务,查询业务,实名绑定业务,3部分由不同的处理脚本负责。
(1)订餐脚本负责处理用户预定和取消午饭、晚饭的操作。根据需求,预订和取消操作需要在当次用餐时间的1.5小时之前完成,例如午饭开饭时间为中午12点,则用户需在10点30分之前完成预定和取消操作,若操作在10点30分到12点之间,系统将提示该时段禁止操作,而且在12点之后,用户即可对第二天的午饭预定情况进行更改。本系统中单独编写了时间核验函数,负责在更改订餐状态前判断订餐操作是否在合法时间段。对于合法时间段内的操作,订餐脚本将更改用户在数据库中的数据信息。
数据库设计为5个字段,分别为id,w xid,name,ZW,W F。其中id用来记录数据序号并标识的数据唯一性,为数据表的主键,拥有自增属性;w xid记录了公众平台定义的用户身份识别码,每一个身份识别码都对应了一个唯一的微信用户;name字段用来记录用户的真实姓名,为统计订餐人员名单提供数据支撑;ZW,WF两个字段分别表示用户午饭、晚饭的预定情况,该字段为BOOLEAN数据类型,只有0,1两个状态,其中1表示用户预定,0表示用户未预定。当信息处理脚本收到用户更改订餐状态的文本内容时,将操作内容传递给订餐脚本,订餐脚本先调用时间核验函数检查订餐时间是否合法,若合法该脚本根据文本内容修改对应用户名下的ZW或WF字段内容,完成数据修改。
(2)订餐信息查询脚本提供了对当前订餐人员名单及人数的查询服务,主要供厨师统计订餐人数和用户核验自己订餐状态使用。信息处理脚本在收到用户查询订餐信息的文本内容时,调用查询信息脚本,脚本从数据库中分别查找ZW、WF字段为1的name值,将结果分别录入午饭、晚饭两个数组,通过统计数组长度得出订餐总人数数据。随后脚本将人员名单及总人数数据传递给XM L格式组装函数,将组装好的XM L数据返回给公众号平台,完成数据查询操作。
(3)出于对用户个人信息的保护,微信公众平台在向开发者发送的消息内容时,用户的身份特征使用身份识别码表示,身份识别码由一组长度为28的字符串组成,wxid内容就是典型的身份识别码(第二到七行为笔者测试数据)。由于在统计订餐人员信息时需要用户的真实姓名,所以开发了用户实名绑定脚本处理该流程,通过该脚本,未绑定的用户可以通过编辑发送“绑定+个人姓名”的方式实现实名绑定。具体流程如下:信息处理脚本在收到以“绑定”开头的文本内容时,将文本信息传递给实名绑定脚本,该脚本先将“+”以后的文本内容截取出来,然后将此文本内容填入该用户w xid对应的name栏,完成实名用户绑定。
3.2.4 数据库部分
本系统数据库采用了与PHP兼容性良好的MYSQL数据库,数据库部分除负责订餐数据的存储外还为各业务脚本提供增、删、改、查服务,各脚本每次操作都会收到数据库发出的操作反馈,反馈内容主要为操作是否成功,对于未成功的操作,各脚本在收到反馈后也会通知用户错误信息,保证每次用户操作都有真实反馈。
4 使用效果
该系统实现了通过手机等移动端设备远程修改订餐状态的功能,不仅简单方便而且轻量、稳定、低成本,在不占用手机空间的同时实现了跨平台的效果。系统同时还具备其他优秀特性,如订餐时间段的设置让用户主动在餐前1.5小时前订餐,杜绝了临时订餐的情况;用餐人数自动统计功能免去了人工计数的低效率方法;数据库状态信息定时备份功能也使得食堂管理人员统计历史用餐信息变得非常简便。
5 结语
基于微信公众平台的食堂订餐系统的部署,大大简化了职工日常订餐流程,同时,该系统不仅规范了订餐制度,订餐数据统计功能也为食堂管理工作提供了有力的技术支撑。在下一步的完善工作中,系统将会作出升级调整:(1)将系统迁移至云端服务器,使用第三方平台提供的云服务将彻底解决服务器硬件崩溃等问题,而且由于本系统需要的宽带流量极少,使用云服务也能使每天运维费用降低到一元钱以内,大大节省了系统运行成本。(2)对微信公众平台界面进行按钮化升级,使用户通过点击按钮便可完成订餐操作,简化操作步骤。
[1]httpclient概念.[EB/OL].(2016-08-26)[2017-05-09].百度百科.http://baike.baidu.com/view/2476238.htm.
[2]钟志勇.微信公众平台应用开发实战[M].北京:机械工业出版社,2013.
[3]WELLING L,THOMSON L.PHP和MySQL Web开发[M].北京:机械工业出版社,2005.
Study on the dining room ordering system based on the WeChat public platform
Ji Xiang
(293 Station of State Adm inistration of Press and Publication, Radio, Film and Television of the People’s Republic of China, Zhengzhou 451162, China)
At present, most of the units still adopt old ordering method like reservation card while implementing the reservation system. The reservation efficiency is extremely low because the remote reservation is unavailable. To solve this problem, this paper has implemented the dining room ordering system based on the WeChat public platform through putting forward the solutions, selecting reasonable technical proposal and w riting down software logic meeting its requirements.
WeChat public platform development; remote order meal; PHP; MYSQL
姬翔(1988— ),男,陕西延安,本科,助理工程师;研究方向:软件开发。