章春梅
摘 要: 針對(duì)目前移動(dòng)端的差旅預(yù)定系統(tǒng)發(fā)展不夠成熟以及開(kāi)發(fā)成本較高的問(wèn)題,借助于微信的普及,利用微信的高級(jí)接口,采用thinkPHP框架并結(jié)合WampServer集成環(huán)境,設(shè)計(jì)開(kāi)發(fā)了基于移動(dòng)平臺(tái)的差旅預(yù)定系統(tǒng)。詳述了微信差旅預(yù)定系統(tǒng)的體系結(jié)構(gòu)、功能模塊和關(guān)鍵技術(shù)。該系統(tǒng)不受平臺(tái)限制,既適合個(gè)人用戶也適合企業(yè)用戶,在時(shí)效性和便捷性上可以滿足客戶需求,改善用戶體驗(yàn)。
關(guān)鍵詞: 微信; 差旅; 預(yù)定; ThinkPHP
中圖分類號(hào):TP301 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):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 引言
差旅管理是指當(dāng)一家企業(yè)的出差費(fèi)用達(dá)到一定規(guī)模時(shí),專業(yè)的差旅管理服務(wù)供應(yīng)商(Travel Management Companies,簡(jiǎn)稱TMC)通過(guò)對(duì)企業(yè)的差旅活動(dòng)進(jìn)行整體考察分析,提供咨詢意見(jiàn),然后共同改進(jìn)流程,并且通過(guò)利用差旅管理服務(wù)供應(yīng)商所擁有的資源使企業(yè)差旅成本最小化,實(shí)現(xiàn)對(duì)差旅成本的控制,并提供差旅全程的服務(wù)[1]。差旅預(yù)定服務(wù)是差旅管理系統(tǒng)的一個(gè)核心功能模塊,而微信(WeChat)的出現(xiàn)和普及,以及它的易擴(kuò)展性,則有利于解決移動(dòng)端差旅管理系統(tǒng)開(kāi)發(fā)的高成本和應(yīng)用推廣問(wèn)題[2]。本文設(shè)計(jì)并實(shí)現(xiàn)一個(gè)微信差旅預(yù)定系統(tǒng),以求便捷、高效地為企業(yè)量身定制,提供包括差旅管理流程控制、機(jī)票預(yù)定、差旅數(shù)據(jù)分析等在內(nèi)的全套差旅管理解決方案。該系統(tǒng)將創(chuàng)新的科技模式和TMC服務(wù)融合,滿足了企業(yè)多樣化差旅管理需求。
1 系統(tǒng)設(shè)計(jì)
1.1 體系結(jié)構(gòu)
如圖1所示,用戶通過(guò)微信客戶端關(guān)注某公眾服務(wù)號(hào)或訂閱號(hào),之后即可獲得相應(yīng)服務(wù),例如用戶通過(guò)語(yǔ)音可提交需求。第三方可通過(guò)后臺(tái)業(yè)務(wù)邏輯及數(shù)據(jù)層讀取、更新和存儲(chǔ)提供信息服務(wù)。微信服務(wù)器可以是一個(gè)微互聯(lián)網(wǎng)生態(tài)圈,眾多第三方可以利用微信公眾平臺(tái)API文檔進(jìn)行二次開(kāi)發(fā),也可調(diào)用微信公眾平臺(tái)九大高級(jí)接口包括有語(yǔ)音識(shí)別接口、客服接口、OAuth2.0 網(wǎng)頁(yè)授權(quán)接口、生成帶參數(shù)的二維碼接口、獲取用戶地理位置接口、獲取用戶基本信息接口、獲取關(guān)注者列表接口、用戶分組接口和上傳/下載多媒體文件接口[3]等,這將極大提高第三方開(kāi)發(fā)效率。
1.2 需求分析
完整的差旅預(yù)定系統(tǒng)應(yīng)該是一個(gè)多終端服務(wù)系統(tǒng)如圖2所示,包括微信端和Web端。微信端接收并處理用戶提出的需求,有三種方式分別是:自助預(yù)訂、語(yǔ)音預(yù)訂、輕松預(yù)訂。其后續(xù)的方案選擇和支付環(huán)節(jié)等還需要登錄Web端進(jìn)行操作。Web端則是對(duì)用戶提供差旅服務(wù)的TMC。TMC與主網(wǎng)站簽訂協(xié)議后,旗下的OP(Order Person)員工即可搶訂單對(duì)用戶提供出行方案等。
圖2 多終端差旅預(yù)定服務(wù)系統(tǒng)
1.3 系統(tǒng)角色
系統(tǒng)角色描述如表1。
普通用戶:即不屬于任何企業(yè)的用戶,不需要出差申請(qǐng)?zhí)柡途o急預(yù)定這兩個(gè)模塊。
企業(yè)員工:需要根據(jù)企業(yè)的出差政策判斷員工是否需要出差申請(qǐng),如果需要,則企業(yè)員工的出差申請(qǐng)?zhí)柋靥?,否則就看企業(yè)是否允許員工緊急預(yù)定。
企業(yè)級(jí)用戶:可以定制不同的出差政策。
TMC服務(wù)商:需與主干網(wǎng)站簽訂差旅管理協(xié)議才可給出行用戶提供服務(wù)。
TMC旗下員工:出行用戶提出出行需求后,通過(guò)搶單的形式給出行用戶提供一對(duì)一的服務(wù)。
1.4 系統(tǒng)功能描述
1.4.1 綁定模塊
功能類型:查詢并保存數(shù)據(jù)。
功能概述:普通Web用戶登錄驗(yàn)證、將微信openId與普通Web用戶綁定。
前提業(yè)務(wù):Web端注冊(cè)登錄。
后繼業(yè)務(wù):解除綁定。
用戶事先在Web端注冊(cè)賬號(hào),再進(jìn)入微信公眾號(hào)——輕松行預(yù)定。點(diǎn)擊界面的按鈕時(shí),系統(tǒng)后臺(tái)會(huì)先獲取openId,再根據(jù)openId查詢并獲取當(dāng)前用戶的注冊(cè)信息。如果當(dāng)前openId沒(méi)有被User表綁定則跳至登錄頁(yè)面重新綁定;如果已綁定則直接跳轉(zhuǎn)至對(duì)應(yīng)按鈕的鏈接[4]。需要說(shuō)明的是,公眾號(hào)平臺(tái)上的鏈接必須用微信客戶端的瀏覽器打開(kāi),登錄的賬號(hào)密碼必須是在Web端注冊(cè),微信平臺(tái)不提供注冊(cè)功能。
1.4.2 自助預(yù)定模塊
功能類型:查詢并保存數(shù)據(jù)。
功能概述:查詢機(jī)票信息、預(yù)定所選機(jī)票,創(chuàng)建訂單。
前提業(yè)務(wù):注冊(cè)登錄。
后繼業(yè)務(wù):付款、取消訂單。
用戶進(jìn)入自助預(yù)定,選擇出發(fā)城市、到達(dá)城市及日期,后臺(tái)根據(jù)用戶提供的數(shù)據(jù)顯示出合適的機(jī)票信息界面,然后用戶再選擇理想的航班,緊接著跳到創(chuàng)建訂單界面。用戶完善個(gè)人資料和乘機(jī)保險(xiǎn)等一系列信息后提交訂單[5],其功能流程圖如圖3所示。
1.4.3 輕松預(yù)定模塊
功能類型:保存數(shù)據(jù)。
功能概述:根據(jù)用戶提出的出行需求,制定出行方案。
前提業(yè)務(wù):注冊(cè)登錄。
后繼業(yè)務(wù):等待OP搶單。
如圖4所示。用戶進(jìn)入輕松預(yù)定時(shí),后臺(tái)會(huì)根據(jù)當(dāng)前用戶信息去查找有無(wú)對(duì)應(yīng)的企業(yè)。如果有則按照企業(yè)所定制的差旅政策在頁(yè)面顯示出差申請(qǐng)?zhí)柡途o急預(yù)定的差別。等用戶提交需求之后,后臺(tái)將出發(fā)城市、到達(dá)城市、出發(fā)日期、返回日期、備注等信息集合成一個(gè)標(biāo)注了的訂單號(hào)存入數(shù)據(jù)庫(kù),再作事務(wù)判斷[6],如果提交成功則短信通知TMC下OP搶單出方案,以及微信提示用戶等待方案,如果提交失敗則提示失敗。需要注意的是,進(jìn)入輕松預(yù)定后,與微信服務(wù)器交互過(guò)程中始終都要帶著用戶的openId,所以后臺(tái)同樣需要獲取用戶的openId,只不過(guò)是從數(shù)據(jù)庫(kù)提取。
1.4.4 語(yǔ)音預(yù)定模塊
功能類型:語(yǔ)音語(yǔ)義識(shí)別。
功能概述:用戶按指定格式說(shuō)出需求,識(shí)別語(yǔ)音并提取關(guān)鍵信息如(出發(fā)地、目的地、出發(fā)日期等),生成訂單。
前提業(yè)務(wù):注冊(cè)登錄。
后繼業(yè)務(wù):等待OP搶單。
用戶進(jìn)入語(yǔ)音預(yù)定,說(shuō)出需求,公眾賬號(hào)識(shí)別語(yǔ)音并提取關(guān)鍵信息生成訂單,用戶等待OP給出方案,用戶選擇合適的方案后完成付款。訂單消息微信和短信的形式發(fā)送給用戶用于確認(rèn)訂單信息,其功能流程圖如圖5所示。
1.5 數(shù)據(jù)庫(kù)設(shè)計(jì)
自助預(yù)訂模塊由航空意外險(xiǎn)數(shù)據(jù)表、航空機(jī)票預(yù)訂訂單表、機(jī)票配送方式表和自助預(yù)訂訂單狀態(tài)表組成。
角色關(guān)系模塊由普通用戶表、公司基本信息表、公司員工表、TMC服務(wù)商基本信息表、輕松預(yù)訂訂單表、輕松預(yù)訂訂單狀態(tài)表、用戶訂單表、TMC與公司關(guān)系表和差旅政策表組成。
訂單表關(guān)系模塊專指輕松預(yù)訂模塊的方案選擇業(yè)務(wù),由TMC服務(wù)商員工信息表和輕松預(yù)訂訂單方案表組成。
2 系統(tǒng)實(shí)現(xiàn)
系統(tǒng)采用thinkPHP[7]框架結(jié)合wampserver集成開(kāi)發(fā)環(huán)境開(kāi)發(fā)。
2.1 用戶綁定模塊
模塊實(shí)現(xiàn)的關(guān)鍵點(diǎn)是登錄數(shù)據(jù)的處理:獲取openId、根據(jù)openId判斷用戶是否綁定、解除綁定。
⑴ 獲取、綁定openId
利用curl函數(shù)調(diào)微信獲取用戶信息的接口, 返回json數(shù)據(jù)包,通過(guò)解析提取openId,根據(jù)openId先查user表是否有用戶綁定。
⑵ 根據(jù)openId判斷用戶是否綁定
如果用戶未綁定openId,則根據(jù)用戶名和密碼更新openId,并查詢?cè)撚脩羰欠袷悄称髽I(yè)員工,有則輸出該企業(yè)名稱;沒(méi)有則為空。最后將用戶的惟一標(biāo)識(shí)id存入session。
⑶ 解除綁定
從sesson中取出當(dāng)前用戶id,根據(jù)id將user表中openId至為空,重新跳轉(zhuǎn)至綁定頁(yè)面。
⑷ 界面設(shè)計(jì)
圖6 賬號(hào)綁定菜單和界面
如圖6所示,用戶需進(jìn)入該公眾賬號(hào)并關(guān)注才能跳轉(zhuǎn)至該界面。其中賬號(hào)和密碼是Web端已注冊(cè)的輕松行用戶,功能是與微信用戶的openId相綁定。如果該用戶有隸屬的企業(yè)和姓名信息則可顯示出來(lái),普通用戶沒(méi)有該信息。用戶解除綁定后彈出窗口,解除之后瀏覽器清空session。
2.2 自助預(yù)定模塊
自助預(yù)訂主界面的功能是讓用戶根據(jù)出發(fā)地和目的地,以及出發(fā)時(shí)間進(jìn)行航班搜索,查詢結(jié)果是指定信息的數(shù)據(jù)流。在搜索結(jié)果中,用戶可以自行選擇所需的航班,填寫訂單并對(duì)訂單進(jìn)行管理。
2.3 輕松預(yù)定模塊
實(shí)現(xiàn)該模塊的關(guān)鍵步驟:
⑴ 根據(jù)企業(yè)差旅政策,選擇性輸出出差申請(qǐng)?zhí)柡途o急預(yù)定。
⑵ 保存用戶提交的數(shù)據(jù),提示用戶,并通知OP搶單??梢约?xì)分為:①添加訂單;②微信消息提示用戶;③給OP發(fā)送短信和郵件提示搶單;④完成事務(wù)。
2.4 語(yǔ)音預(yù)定模塊
⑴ 接口分發(fā)配置
用戶在公眾平臺(tái)主頁(yè)面的任何操作都會(huì)相應(yīng)到后臺(tái),后臺(tái)根據(jù)操作類型做分發(fā)判斷。
⑵ 語(yǔ)音語(yǔ)義分析
通過(guò)POST請(qǐng)求方式,帶指定格式的參數(shù)請(qǐng)求微信指定的語(yǔ)義。
⑶ 將語(yǔ)音語(yǔ)義分析結(jié)果存入數(shù)據(jù)庫(kù)。
用戶可通過(guò)微信的語(yǔ)音功能說(shuō)出個(gè)人行程需求,后臺(tái)篩選出關(guān)鍵字信息,進(jìn)行相應(yīng)處理,主界面如圖7所示。
圖7 語(yǔ)音預(yù)定主界面
2.5 后臺(tái)方案服務(wù)
預(yù)定平臺(tái)下有多家TMC公司,一家TMC公司旗下可以有多個(gè)OP,因此就有搶單這個(gè)概念,用戶接到消息通知后可以選擇方案,或重新讓OP制定方案如圖8,如果有其他額外需求可以通過(guò)在線QQ聯(lián)系。
圖8 用戶選擇方案
3 結(jié)束語(yǔ)
根據(jù)差旅管理的理念和發(fā)展趨勢(shì),基于微信平臺(tái)設(shè)計(jì)了三種差旅預(yù)定方式,分別為自助預(yù)定、輕松行預(yù)定和語(yǔ)音預(yù)定。這三種方式將帶給不同用戶不同的感受。自助預(yù)定方便了企業(yè)訂票業(yè)務(wù)員統(tǒng)一訂機(jī)票(因?yàn)檫@里包括了公司的出差政策和報(bào)銷政策,可以填寫個(gè)人具體的出差時(shí)間、費(fèi)用和知會(huì)人等細(xì)節(jié)),輕松行預(yù)定方便了個(gè)人(因?yàn)檫@里可以說(shuō)出自己的各方面需求,提交需求后還會(huì)有多種方案可選,有短信和郵箱信息推送)。語(yǔ)音預(yù)定,這是在移動(dòng)端微信基礎(chǔ)上實(shí)現(xiàn)的功能模塊,是本文的重點(diǎn)。之所以要開(kāi)發(fā)語(yǔ)音差旅預(yù)訂系統(tǒng)是考慮公司達(dá)到一定規(guī)模后,員工出差越來(lái)越多,公司專業(yè)的訂票員已經(jīng)不能及時(shí)地傳達(dá)票務(wù)信息和員工出行計(jì)劃,這時(shí)通過(guò)該系統(tǒng)可以大大減少員工出差時(shí)間成本和出差信息表達(dá)不到位的情況。此外員工可自行通過(guò)移動(dòng)電子產(chǎn)品隨時(shí)隨地預(yù)訂出行計(jì)劃,無(wú)需通過(guò)公司訂票員。隨著微信的流行,其語(yǔ)音功能也會(huì)受到重視。對(duì)比傳統(tǒng)的預(yù)訂方式,語(yǔ)音預(yù)定大大縮減了預(yù)定的時(shí)間,同時(shí)也擴(kuò)大了預(yù)定的空間和方式。
參考文獻(xiàn)(References):
[1] 過(guò)怡.差旅報(bào)銷系統(tǒng)及其工作流引擎的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算
機(jī)應(yīng)用與軟件,2008,25(11):176-178
[2] 鐘志勇.微信公眾平臺(tái)應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)[M].機(jī)械工業(yè)出版社,
2013.
[3] 易偉.微信公眾平臺(tái)服務(wù)號(hào)開(kāi)發(fā)揭秘九大接口[M].機(jī)械工業(yè)
出版社,2014.
[4] 劉光普.基于RFID-SIM卡移動(dòng)手機(jī)票檢票終端的設(shè)計(jì)與實(shí)
現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2012.29(6):61-63
[5] 覃國(guó)蓉,何濤.REST在異構(gòu)移動(dòng)客戶端接入中的應(yīng)用研究[J].
計(jì)算機(jī)應(yīng)用與軟件,2015,32(4):77-79,144
[6] 張旭紅,劉渭濱.面向移動(dòng)平臺(tái)的新聞資訊系統(tǒng)的設(shè)計(jì)與實(shí)
現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2014.31(1):5-8,42
[7] 高洛峰.細(xì)說(shuō)PHP(第二版)[M].電子工業(yè)出版社,2012.
[8] 閆少軍,李方偉.網(wǎng)絡(luò)訂票的移動(dòng)支付協(xié)議的研究與設(shè)計(jì)[J].
電信工程技術(shù)與標(biāo)準(zhǔn)化,2011.6:85-87
[9] 李剛.瘋狂Ajax講義(第3版)[M].電子工業(yè)出版社,2013.