章春梅



摘 要: 針對目前移動端的差旅預定系統發展不夠成熟以及開發成本較高的問題,借助于微信的普及,利用微信的高級接口,采用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.