文/寧功林
(云南新興職業學院,云南昆明 650501)
大學校園點餐管理系統是為校園餐飲實體商戶研發的基于微信小程序的管理系統程序,它具有很高的研究價值和應用價值。本課題研究的主要目的是,解決校園就餐高峰期人員擁堵、傳統人工處理就餐流程效率低下等問題,從而在提高實體商戶工作效率的同時,節省學生的就餐時間。
在全球信息化的大背景下,QQ、微信等通信軟件逐漸取代了短信等傳統通信方式。2018年8月,騰訊公司公布了《微信互聯網生態專題分析報告》(以下簡稱《報告》)。《報告》指出,截止到2018年年底,微信及WeChat合并月活躍賬戶數達到10.4億,微信在2018年3月活躍賬戶數達到6.89億,占到用戶總數據流的34%。驅動信息消費總額度達到2097億元,帶動傳統消費達到3339億元,微信已經成為國內最大的移動互聯網基礎設施平臺之一。由微信小程序帶來的產業鏈市場規模達到2萬億元,日常小程序的活躍用戶數達到4.7億。如此龐大的微信用戶群體,在很大程度上推動了微信小程序的發展。雖然在社會生活中有美團等成熟的外賣系統,但是高校校園還缺乏一套完整的、成熟的點餐系統。校園就餐高峰期人員擁堵、傳統人工處理就餐流程效率低下等問題依然存在。

網站的前廳接待服務不僅包括微信鏈接、購物車展示、微信結賬等,還包括購買者的評論模塊、工作人員的工作模塊以及其他的業務資訊等。買方可以通過微信小程序來完成產品采購、訂單生產。該系統包括訂單管理(取消訂單、完成訂單)、產品管理(編輯產品信息、添加產品、刪除產品)等內容。在完成用戶身份認證之后,系統管理員可以直接了解到這個網頁已經在后臺進行管理,銷售人員也可以對商品的類別、訂單等進行一系列操作。買家在訂購時,后臺可以即時提示。該系統的設計重點包括三個方面:微信買家、微信賣家、其他賣家。教師和學生可通過該系統的微信公眾賬號,點擊購買單,并且在指定的時間段到餐廳購買食品。在商家的手機App里,商家收到訂單后,開始發送快遞,快遞最后由買家簽收。同時,賣方也能在計算機上登錄管理平臺,開展每日促銷活動,設定“秒殺式”優惠,查看每日訂單、銷售統計數據等。在這一過程中,為了保證用戶訪問速度和安全性,程序員可以在服務器中使用Web服務與Nginx反向代理功能、Agent技術,以完成對Nginx的訪問,結束HTTP的要求。在Seckill場景中,程序員可以使用RabbitMQ中間件技術來啟用異步查詢功能并且提高系統的可用性。[1]
按照用戶的需求,系統功能模塊可以劃分為三大類:
(1)買方手機模塊。該模塊是通過用戶的身份驗證來獲得用戶的微信及學校的地理位置的,并為買家提供導航、尋菜等功能服務。購物者從此模塊中選擇食物,安排取餐時間,然后開始在線支付。訂單完成后,服務器會將訂單信息發送到賣家的微信設備中。
(2)企業微信模塊:該模塊是專為賣家設計的。買家在預訂時收到食物后,該模塊可以自動取消訂單。
(3)服務管理站模塊:服務管理站是主要的管理系統,它一般分為以下三個部分。①食品管理、食品上架,食品信息修改等;②訂單顯示、訂單管理,統計數據顯示、統計數據管理等;③企業身份管理,包括企業支付賬戶設置、企業密碼管理、企業權限管理等。
根據微信小程序單頁模式的特點,程序員可以獨立開發各層、各頁面的函數。在網頁的制作過程中,各網頁可以依序排列。部分網頁需要從前一頁中獲得參量。登錄主頁的過程,實際上是檢索和存儲用戶信息的過程。當用戶登錄個人中心頁面時,該系統會讀取本地存儲的信息。首頁會展示票務的相關資訊,并且決定使用者的登錄權限。若是首次登錄,該系統則會將入場券的資料顯示在使用者的名片上;若不是首次登錄,該系統只會進行推廣。商店瀏覽網頁是利用星圖軟件來顯示地點的,并且將最新的商店信息展示出來。用戶可以在距離最近的商店訂購,或者在商店中尋找自己需要購買的商品,然后單擊訂購按鈕,即可在購物清單中找到需要的商品。

不同的店鋪供應的食物種類也不盡相同。因此,商品陳列和購物車中應當顯示有關店鋪的相關資料。當訂單結束時,該系統將會彈出微信的付款界面。左欄是所有菜肴的信息,右欄是相應的子菜單。隨著子菜單上下滾動,左側的菜單也會發生變化。用戶單擊左側菜單,會顯示相應的子菜單。用戶還可以根據自己的喜好添加菜品。當前頁面的所有產品都將在底部激活,即顯示用戶從下拉列表中選擇的所有產品及其對應的編號。如果選擇錯誤,用戶也可以直接刪除該選擇,或者將“購物籃”清空,再重新選擇。完成付款后,該系統將會顯示訂單信息界面,上面會有菜單、訂單金額和菜單編號,這實際上就是一個菜單。顧客可以自己的喜好來決定用餐時間。用餐時間可以分為實時和預定兩種。用戶的“個人主頁”只展示用戶的姓名和昵稱,該網頁的唯一功能就是把手機號與用戶的姓名、昵稱聯系起來。用戶可以授權點擊鏈接手機號與微信賬號。如果沒有指定手機號,用戶可以手動綁定,即輸入手機號獲取驗證碼完成綁定。[2]
傳統的檢索方法采用基于模式識別的方法進行檢索。這種檢索方法容易造成檢索錯誤,并且每個檢索過程中都需要進行一次完整的表格掃描,從而降低了檢索效率和數據庫的運行效率。ApacheSolr是一個可靠的、可擴展的完整文本搜索引擎,它具有分布式查詢、復制、負載平衡、故障轉移、自動恢復、集中配置等功能。ApacheSolr還是一款為經理提供視覺管理接口的搜尋伺服器,該伺服器不僅可以通過HttpGet向使用者發出要求,還可獲取JSON格式或XML格式的資料。該伺服器使用Solr搜索引擎,并且在MySQL中加入了查詢功能。在系統運行時,該伺服器會同時啟動MySQL與SolrServer,并且建立一個引用庫。在更改資料庫時,該伺服器會利用遞增方式導入信息,使資料庫與Solr機件庫同步運行,從而完成搜尋模塊功能。
為吸引學生在食堂用餐,食堂商販會定期推出低價餐,這對該系統的合規性要求較高。為了在這種秒殺場景下保證系統的可用性,筆者設計了以下兩種方案:
(1)靜態頁面。該系統使用RESTFUL接口模型將前端與后端分離。該系統首頁是靜態的,它緩存了Nginx前端和客戶端的瀏覽器,通過異步AJAX請求來獲取動態數據,如食物詳情、訂單詳情、用戶信息等。秒殺場景使用靜態頁面技術,將生成的動態頁面傳遞到客戶端瀏覽器,大大減少了服務器上的負載。靜態頁面對瀏覽器和Nginx客戶端上的緩存也具有重要作用。對于大多數Web應用程序來說,減少與數據庫的交互可以顯著提高系統性能。該系統利用Redis單線程模型來設計預取消庫存功能。筆者將秒殺產品預加載到Redis數據庫中,每進行一次操作,Redis數據庫的存儲庫就會先收縮一次,然后再執行數據庫操作命令。如果Redis倉庫號為0,那么所有秒殺查詢都會與數據庫交互。
(2)異步調度RabbitMQ。為了提高秒殺場景實時系統響應能力,該系統采用RabbitMQ中間件技術來增強異步排序能力。RabbitMQ在交換機模式下的配置形式為直接連接。當用戶秒殺產品時,該系統會將產品的序列號發送到消息隊列中,消息隊列會在幾秒鐘內立即返回。
數據存取層面使用了ORM架構中的JPA技術。JPA所應用的ORM關聯映射模式可以幫助該系統實現數據庫的存取。在某些實施方式中,表格記錄是以POJO模式為基礎的,它通過JPA所提供的界面程序來渲染表格,更新表格中的數據,從而實現表格的添加或移除。[3]
綜上所述,筆者設計的基于微信小程序的大學校園點餐管理系統,能夠有效緩解目前大學餐廳的擁擠情況,為師生提供了良好的就餐體驗。