微信差旅预定系统的设计与实现
2015-04-29章春梅
章春梅
摘 要: 针对目前移动端的差旅预定系统发展不够成熟以及开发成本较高的问题,借助于微信的普及,利用微信的高级接口,采用thinkPHP框架并结合WampServer集成环境,设计开发了基于移动平台的差旅预定系统。详述了微信差旅预定系统的体系结构、功能模块和关键技术。该系统不受平台限制,既适合个人用户也适合企业用户,在时效性和便捷性上可以满足客户需求,改善用户体验。
关键词: 微信; 差旅; 预定; ThinkPHP
中图分类号:TP301 文献标志码:A 文章编号:1006-8228(2015)12-60-05
Design and implementation of travel reservation system based on WeChat
Zhang Chunmei
(School of Computer and Software, NanJing College of Information and Technology, Nanjing, Jiangsu 210000, China)
Abstract: Considering the immaturity and high costs of travel reservation system development on the mobile platform, using the advanced interface to WeChat, the thinkPHP framework and the WampServer integrated environment, a new travel reservation system on the mobile platform is developed. The paper describes the architecture, function modules and key technologies of the system in detail. The system is not restricted by the platform; suitable both for individual users and business users, on the timeliness and convenience can meet user's needs, improve the user experience.
Key words: WeChat; travel; reservation; ThinkPHP
0 引言
差旅管理是指当一家企业的出差费用达到一定规模时,专业的差旅管理服务供应商(Travel Management Companies,简称TMC)通过对企业的差旅活动进行整体考察分析,提供咨询意见,然后共同改进流程,并且通过利用差旅管理服务供应商所拥有的资源使企业差旅成本最小化,实现对差旅成本的控制,并提供差旅全程的服务[1]。差旅预定服务是差旅管理系统的一个核心功能模块,而微信(WeChat)的出现和普及,以及它的易扩展性,则有利于解决移动端差旅管理系统开发的高成本和应用推广问题[2]。本文设计并实现一个微信差旅预定系统,以求便捷、高效地为企业量身定制,提供包括差旅管理流程控制、机票预定、差旅数据分析等在内的全套差旅管理解决方案。该系统将创新的科技模式和TMC服务融合,满足了企业多样化差旅管理需求。
1 系统设计
1.1 体系结构
如图1所示,用户通过微信客户端关注某公众服务号或订阅号,之后即可获得相应服务,例如用户通过语音可提交需求。第三方可通过后台业务逻辑及数据层读取、更新和存储提供信息服务。微信服务器可以是一个微互联网生态圈,众多第三方可以利用微信公众平台API文档进行二次开发,也可调用微信公众平台九大高级接口包括有语音识别接口、客服接口、OAuth2.0 网页授权接口、生成带参数的二维码接口、获取用户地理位置接口、获取用户基本信息接口、获取关注者列表接口、用户分组接口和上传/下载多媒体文件接口[3]等,这将极大提高第三方开发效率。
1.2 需求分析
完整的差旅预定系统应该是一个多终端服务系统如图2所示,包括微信端和Web端。微信端接收并处理用户提出的需求,有三种方式分别是:自助预订、语音预订、轻松预订。其后续的方案选择和支付环节等还需要登录Web端进行操作。Web端则是对用户提供差旅服务的TMC。TMC与主网站签订协议后,旗下的OP(Order Person)员工即可抢订单对用户提供出行方案等。
图2 多终端差旅预定服务系统
1.3 系统角色
系统角色描述如表1。
普通用户:即不属于任何企业的用户,不需要出差申请号和紧急预定这两个模块。
企业员工:需要根据企业的出差政策判断员工是否需要出差申请,如果需要,则企业员工的出差申请号必填,否则就看企业是否允许员工紧急预定。
企业级用户:可以定制不同的出差政策。
TMC服务商:需与主干网站签订差旅管理协议才可给出行用户提供服务。
TMC旗下员工:出行用户提出出行需求后,通过抢单的形式给出行用户提供一对一的服务。
1.4 系统功能描述
1.4.1 绑定模块
功能类型:查询并保存数据。
功能概述:普通Web用户登录验证、将微信openId与普通Web用户绑定。
前提业务:Web端注册登录。
后继业务:解除绑定。
用户事先在Web端注册账号,再进入微信公众号——轻松行预定。点击界面的按钮时,系统后台会先获取openId,再根据openId查询并获取当前用户的注册信息。如果当前openId没有被User表绑定则跳至登录页面重新绑定;如果已绑定则直接跳转至对应按钮的链接[4]。需要说明的是,公众号平台上的链接必须用微信客户端的浏览器打开,登录的账号密码必须是在Web端注册,微信平台不提供注册功能。
1.4.2 自助预定模块
功能类型:查询并保存数据。
功能概述:查询机票信息、预定所选机票,创建订单。
前提业务:注册登录。
后继业务:付款、取消订单。
用户进入自助预定,选择出发城市、到达城市及日期,后台根据用户提供的数据显示出合适的机票信息界面,然后用户再选择理想的航班,紧接着跳到创建订单界面。用户完善个人资料和乘机保险等一系列信息后提交订单[5],其功能流程图如图3所示。
1.4.3 轻松预定模块
功能类型:保存数据。
功能概述:根据用户提出的出行需求,制定出行方案。
前提业务:注册登录。
后继业务:等待OP抢单。
如图4所示。用户进入轻松预定时,后台会根据当前用户信息去查找有无对应的企业。如果有则按照企业所定制的差旅政策在页面显示出差申请号和紧急预定的差别。等用户提交需求之后,后台将出发城市、到达城市、出发日期、返回日期、备注等信息集合成一个标注了的订单号存入数据库,再作事务判断[6],如果提交成功则短信通知TMC下OP抢单出方案,以及微信提示用户等待方案,如果提交失败则提示失败。需要注意的是,进入轻松预定后,与微信服务器交互过程中始终都要带着用户的openId,所以后台同样需要获取用户的openId,只不过是从数据库提取。
1.4.4 语音预定模块
功能类型:语音语义识别。
功能概述:用户按指定格式说出需求,识别语音并提取关键信息如(出发地、目的地、出发日期等),生成订单。
前提业务:注册登录。
后继业务:等待OP抢单。
用户进入语音预定,说出需求,公众账号识别语音并提取关键信息生成订单,用户等待OP给出方案,用户选择合适的方案后完成付款。订单消息微信和短信的形式发送给用户用于确认订单信息,其功能流程图如图5所示。
1.5 数据库设计
自助预订模块由航空意外险数据表、航空机票预订订单表、机票配送方式表和自助预订订单状态表组成。
角色关系模块由普通用户表、公司基本信息表、公司员工表、TMC服务商基本信息表、轻松预订订单表、轻松预订订单状态表、用户订单表、TMC与公司关系表和差旅政策表组成。
订单表关系模块专指轻松预订模块的方案选择业务,由TMC服务商员工信息表和轻松预订订单方案表组成。
2 系统实现
系统采用thinkPHP[7]框架结合wampserver集成开发环境开发。
2.1 用户绑定模块
模块实现的关键点是登录数据的处理:获取openId、根据openId判断用户是否绑定、解除绑定。
⑴ 获取、绑定openId
利用curl函数调微信获取用户信息的接口, 返回json数据包,通过解析提取openId,根据openId先查user表是否有用户绑定。
⑵ 根据openId判断用户是否绑定
如果用户未绑定openId,则根据用户名和密码更新openId,并查询该用户是否是某企业员工,有则输出该企业名称;没有则为空。最后将用户的惟一标识id存入session。
⑶ 解除绑定
从sesson中取出当前用户id,根据id将user表中openId至为空,重新跳转至绑定页面。
⑷ 界面设计
图6 账号绑定菜单和界面
如图6所示,用户需进入该公众账号并关注才能跳转至该界面。其中账号和密码是Web端已注册的轻松行用户,功能是与微信用户的openId相绑定。如果该用户有隶属的企业和姓名信息则可显示出来,普通用户没有该信息。用户解除绑定后弹出窗口,解除之后浏览器清空session。
2.2 自助预定模块
自助预订主界面的功能是让用户根据出发地和目的地,以及出发时间进行航班搜索,查询结果是指定信息的數据流。在搜索结果中,用户可以自行选择所需的航班,填写订单并对订单进行管理。
2.3 轻松预定模块
实现该模块的关键步骤:
⑴ 根据企业差旅政策,选择性输出出差申请号和紧急预定。
⑵ 保存用户提交的数据,提示用户,并通知OP抢单。可以细分为:①添加订单;②微信消息提示用户;③给OP发送短信和邮件提示抢单;④完成事务。
2.4 语音预定模块
⑴ 接口分发配置
用户在公众平台主页面的任何操作都会相应到后台,后台根据操作类型做分发判断。
⑵ 语音语义分析
通过POST请求方式,带指定格式的参数请求微信指定的语义。
⑶ 将语音语义分析结果存入数据库。
用户可通过微信的语音功能说出个人行程需求,后台筛选出关键字信息,进行相应处理,主界面如图7所示。
图7 语音预定主界面
2.5 后台方案服务
预定平台下有多家TMC公司,一家TMC公司旗下可以有多个OP,因此就有抢单这个概念,用户接到消息通知后可以选择方案,或重新让OP制定方案如图8,如果有其他额外需求可以通过在线QQ联系。
图8 用户选择方案
3 结束语
根据差旅管理的理念和发展趋势,基于微信平台设计了三种差旅预定方式,分别为自助预定、轻松行预定和语音预定。这三种方式将带给不同用户不同的感受。自助预定方便了企业订票业务员统一订机票(因为这里包括了公司的出差政策和报销政策,可以填写个人具体的出差时间、费用和知会人等细节),轻松行预定方便了个人(因为这里可以说出自己的各方面需求,提交需求后还会有多种方案可选,有短信和邮箱信息推送)。语音预定,这是在移动端微信基础上实现的功能模块,是本文的重点。之所以要开发语音差旅预订系统是考虑公司达到一定规模后,员工出差越来越多,公司专业的订票员已经不能及时地传达票务信息和员工出行计划,这时通过该系统可以大大减少员工出差时间成本和出差信息表达不到位的情况。此外员工可自行通过移动电子产品随时随地预订出行计划,无需通过公司订票员。随着微信的流行,其语音功能也会受到重视。对比传统的预订方式,语音预定大大缩减了预定的时间,同时也扩大了预定的空间和方式。
参考文献(References):
[1] 过怡.差旅报销系统及其工作流引擎的设计与实现[J].计算
机应用与软件,2008,25(11):176-178
[2] 钟志勇.微信公众平台应用开发实战[M].机械工业出版社,
2013.
[3] 易伟.微信公众平台服务号开发揭秘九大接口[M].機械工业
出版社,2014.
[4] 刘光普.基于RFID-SIM卡移动手机票检票终端的设计与实
现[J].计算机应用与软件,2012.29(6):61-63
[5] 覃国蓉,何涛.REST在异构移动客户端接入中的应用研究[J].
计算机应用与软件,2015,32(4):77-79,144
[6] 张旭红,刘渭滨.面向移动平台的新闻资讯系统的设计与实
现[J].计算机应用与软件,2014.31(1):5-8,42
[7] 高洛峰.细说PHP(第二版)[M].电子工业出版社,2012.
[8] 闫少军,李方伟.网络订票的移动支付协议的研究与设计[J].
电信工程技术与标准化,2011.6:85-87
[9] 李刚.疯狂Ajax讲义(第3版)[M].电子工业出版社,2013.