文/寧功林
(云南新興職業(yè)學(xué)院,云南昆明 650501)
大學(xué)校園點(diǎn)餐管理系統(tǒng)是為校園餐飲實(shí)體商戶研發(fā)的基于微信小程序的管理系統(tǒng)程序,它具有很高的研究?jī)r(jià)值和應(yīng)用價(jià)值。本課題研究的主要目的是,解決校園就餐高峰期人員擁堵、傳統(tǒng)人工處理就餐流程效率低下等問(wèn)題,從而在提高實(shí)體商戶工作效率的同時(shí),節(jié)省學(xué)生的就餐時(shí)間。
在全球信息化的大背景下,QQ、微信等通信軟件逐漸取代了短信等傳統(tǒng)通信方式。2018年8月,騰訊公司公布了《微信互聯(lián)網(wǎng)生態(tài)專題分析報(bào)告》(以下簡(jiǎn)稱《報(bào)告》)。《報(bào)告》指出,截止到2018年年底,微信及WeChat合并月活躍賬戶數(shù)達(dá)到10.4億,微信在2018年3月活躍賬戶數(shù)達(dá)到6.89億,占到用戶總數(shù)據(jù)流的34%。驅(qū)動(dòng)信息消費(fèi)總額度達(dá)到2097億元,帶動(dòng)傳統(tǒng)消費(fèi)達(dá)到3339億元,微信已經(jīng)成為國(guó)內(nèi)最大的移動(dòng)互聯(lián)網(wǎng)基礎(chǔ)設(shè)施平臺(tái)之一。由微信小程序帶來(lái)的產(chǎn)業(yè)鏈?zhǔn)袌?chǎng)規(guī)模達(dá)到2萬(wàn)億元,日常小程序的活躍用戶數(shù)達(dá)到4.7億。如此龐大的微信用戶群體,在很大程度上推動(dòng)了微信小程序的發(fā)展。雖然在社會(huì)生活中有美團(tuán)等成熟的外賣系統(tǒng),但是高校校園還缺乏一套完整的、成熟的點(diǎn)餐系統(tǒng)。校園就餐高峰期人員擁堵、傳統(tǒng)人工處理就餐流程效率低下等問(wèn)題依然存在。
網(wǎng)站的前廳接待服務(wù)不僅包括微信鏈接、購(gòu)物車展示、微信結(jié)賬等,還包括購(gòu)買者的評(píng)論模塊、工作人員的工作模塊以及其他的業(yè)務(wù)資訊等。買方可以通過(guò)微信小程序來(lái)完成產(chǎn)品采購(gòu)、訂單生產(chǎn)。該系統(tǒng)包括訂單管理(取消訂單、完成訂單)、產(chǎn)品管理(編輯產(chǎn)品信息、添加產(chǎn)品、刪除產(chǎn)品)等內(nèi)容。在完成用戶身份認(rèn)證之后,系統(tǒng)管理員可以直接了解到這個(gè)網(wǎng)頁(yè)已經(jīng)在后臺(tái)進(jìn)行管理,銷售人員也可以對(duì)商品的類別、訂單等進(jìn)行一系列操作。買家在訂購(gòu)時(shí),后臺(tái)可以即時(shí)提示。該系統(tǒng)的設(shè)計(jì)重點(diǎn)包括三個(gè)方面:微信買家、微信賣家、其他賣家。教師和學(xué)生可通過(guò)該系統(tǒng)的微信公眾賬號(hào),點(diǎn)擊購(gòu)買單,并且在指定的時(shí)間段到餐廳購(gòu)買食品。在商家的手機(jī)App里,商家收到訂單后,開(kāi)始發(fā)送快遞,快遞最后由買家簽收。同時(shí),賣方也能在計(jì)算機(jī)上登錄管理平臺(tái),開(kāi)展每日促銷活動(dòng),設(shè)定“秒殺式”優(yōu)惠,查看每日訂單、銷售統(tǒng)計(jì)數(shù)據(jù)等。在這一過(guò)程中,為了保證用戶訪問(wèn)速度和安全性,程序員可以在服務(wù)器中使用Web服務(wù)與Nginx反向代理功能、Agent技術(shù),以完成對(duì)Nginx的訪問(wèn),結(jié)束HTTP的要求。在Seckill場(chǎng)景中,程序員可以使用RabbitMQ中間件技術(shù)來(lái)啟用異步查詢功能并且提高系統(tǒng)的可用性。[1]
按照用戶的需求,系統(tǒng)功能模塊可以劃分為三大類:
(1)買方手機(jī)模塊。該模塊是通過(guò)用戶的身份驗(yàn)證來(lái)獲得用戶的微信及學(xué)校的地理位置的,并為買家提供導(dǎo)航、尋菜等功能服務(wù)。購(gòu)物者從此模塊中選擇食物,安排取餐時(shí)間,然后開(kāi)始在線支付。訂單完成后,服務(wù)器會(huì)將訂單信息發(fā)送到賣家的微信設(shè)備中。
(2)企業(yè)微信模塊:該模塊是專為賣家設(shè)計(jì)的。買家在預(yù)訂時(shí)收到食物后,該模塊可以自動(dòng)取消訂單。
(3)服務(wù)管理站模塊:服務(wù)管理站是主要的管理系統(tǒng),它一般分為以下三個(gè)部分。①食品管理、食品上架,食品信息修改等;②訂單顯示、訂單管理,統(tǒng)計(jì)數(shù)據(jù)顯示、統(tǒng)計(jì)數(shù)據(jù)管理等;③企業(yè)身份管理,包括企業(yè)支付賬戶設(shè)置、企業(yè)密碼管理、企業(yè)權(quán)限管理等。
根據(jù)微信小程序單頁(yè)模式的特點(diǎn),程序員可以獨(dú)立開(kāi)發(fā)各層、各頁(yè)面的函數(shù)。在網(wǎng)頁(yè)的制作過(guò)程中,各網(wǎng)頁(yè)可以依序排列。部分網(wǎng)頁(yè)需要從前一頁(yè)中獲得參量。登錄主頁(yè)的過(guò)程,實(shí)際上是檢索和存儲(chǔ)用戶信息的過(guò)程。當(dāng)用戶登錄個(gè)人中心頁(yè)面時(shí),該系統(tǒng)會(huì)讀取本地存儲(chǔ)的信息。首頁(yè)會(huì)展示票務(wù)的相關(guān)資訊,并且決定使用者的登錄權(quán)限。若是首次登錄,該系統(tǒng)則會(huì)將入場(chǎng)券的資料顯示在使用者的名片上;若不是首次登錄,該系統(tǒng)只會(huì)進(jìn)行推廣。商店瀏覽網(wǎng)頁(yè)是利用星圖軟件來(lái)顯示地點(diǎn)的,并且將最新的商店信息展示出來(lái)。用戶可以在距離最近的商店訂購(gòu),或者在商店中尋找自己需要購(gòu)買的商品,然后單擊訂購(gòu)按鈕,即可在購(gòu)物清單中找到需要的商品。
不同的店鋪供應(yīng)的食物種類也不盡相同。因此,商品陳列和購(gòu)物車中應(yīng)當(dāng)顯示有關(guān)店鋪的相關(guān)資料。當(dāng)訂單結(jié)束時(shí),該系統(tǒng)將會(huì)彈出微信的付款界面。左欄是所有菜肴的信息,右欄是相應(yīng)的子菜單。隨著子菜單上下滾動(dòng),左側(cè)的菜單也會(huì)發(fā)生變化。用戶單擊左側(cè)菜單,會(huì)顯示相應(yīng)的子菜單。用戶還可以根據(jù)自己的喜好添加菜品。當(dāng)前頁(yè)面的所有產(chǎn)品都將在底部激活,即顯示用戶從下拉列表中選擇的所有產(chǎn)品及其對(duì)應(yīng)的編號(hào)。如果選擇錯(cuò)誤,用戶也可以直接刪除該選擇,或者將“購(gòu)物籃”清空,再重新選擇。完成付款后,該系統(tǒng)將會(huì)顯示訂單信息界面,上面會(huì)有菜單、訂單金額和菜單編號(hào),這實(shí)際上就是一個(gè)菜單。顧客可以自己的喜好來(lái)決定用餐時(shí)間。用餐時(shí)間可以分為實(shí)時(shí)和預(yù)定兩種。用戶的“個(gè)人主頁(yè)”只展示用戶的姓名和昵稱,該網(wǎng)頁(yè)的唯一功能就是把手機(jī)號(hào)與用戶的姓名、昵稱聯(lián)系起來(lái)。用戶可以授權(quán)點(diǎn)擊鏈接手機(jī)號(hào)與微信賬號(hào)。如果沒(méi)有指定手機(jī)號(hào),用戶可以手動(dòng)綁定,即輸入手機(jī)號(hào)獲取驗(yàn)證碼完成綁定。[2]
傳統(tǒng)的檢索方法采用基于模式識(shí)別的方法進(jìn)行檢索。這種檢索方法容易造成檢索錯(cuò)誤,并且每個(gè)檢索過(guò)程中都需要進(jìn)行一次完整的表格掃描,從而降低了檢索效率和數(shù)據(jù)庫(kù)的運(yùn)行效率。ApacheSolr是一個(gè)可靠的、可擴(kuò)展的完整文本搜索引擎,它具有分布式查詢、復(fù)制、負(fù)載平衡、故障轉(zhuǎn)移、自動(dòng)恢復(fù)、集中配置等功能。ApacheSolr還是一款為經(jīng)理提供視覺(jué)管理接口的搜尋伺服器,該伺服器不僅可以通過(guò)HttpGet向使用者發(fā)出要求,還可獲取JSON格式或XML格式的資料。該伺服器使用Solr搜索引擎,并且在MySQL中加入了查詢功能。在系統(tǒng)運(yùn)行時(shí),該伺服器會(huì)同時(shí)啟動(dòng)MySQL與SolrServer,并且建立一個(gè)引用庫(kù)。在更改資料庫(kù)時(shí),該伺服器會(huì)利用遞增方式導(dǎo)入信息,使資料庫(kù)與Solr機(jī)件庫(kù)同步運(yùn)行,從而完成搜尋模塊功能。
為吸引學(xué)生在食堂用餐,食堂商販會(huì)定期推出低價(jià)餐,這對(duì)該系統(tǒng)的合規(guī)性要求較高。為了在這種秒殺場(chǎng)景下保證系統(tǒng)的可用性,筆者設(shè)計(jì)了以下兩種方案:
(1)靜態(tài)頁(yè)面。該系統(tǒng)使用RESTFUL接口模型將前端與后端分離。該系統(tǒng)首頁(yè)是靜態(tài)的,它緩存了Nginx前端和客戶端的瀏覽器,通過(guò)異步AJAX請(qǐng)求來(lái)獲取動(dòng)態(tài)數(shù)據(jù),如食物詳情、訂單詳情、用戶信息等。秒殺場(chǎng)景使用靜態(tài)頁(yè)面技術(shù),將生成的動(dòng)態(tài)頁(yè)面?zhèn)鬟f到客戶端瀏覽器,大大減少了服務(wù)器上的負(fù)載。靜態(tài)頁(yè)面對(duì)瀏覽器和Nginx客戶端上的緩存也具有重要作用。對(duì)于大多數(shù)Web應(yīng)用程序來(lái)說(shuō),減少與數(shù)據(jù)庫(kù)的交互可以顯著提高系統(tǒng)性能。該系統(tǒng)利用Redis單線程模型來(lái)設(shè)計(jì)預(yù)取消庫(kù)存功能。筆者將秒殺產(chǎn)品預(yù)加載到Redis數(shù)據(jù)庫(kù)中,每進(jìn)行一次操作,Redis數(shù)據(jù)庫(kù)的存儲(chǔ)庫(kù)就會(huì)先收縮一次,然后再執(zhí)行數(shù)據(jù)庫(kù)操作命令。如果Redis倉(cāng)庫(kù)號(hào)為0,那么所有秒殺查詢都會(huì)與數(shù)據(jù)庫(kù)交互。
(2)異步調(diào)度RabbitMQ。為了提高秒殺場(chǎng)景實(shí)時(shí)系統(tǒng)響應(yīng)能力,該系統(tǒng)采用RabbitMQ中間件技術(shù)來(lái)增強(qiáng)異步排序能力。RabbitMQ在交換機(jī)模式下的配置形式為直接連接。當(dāng)用戶秒殺產(chǎn)品時(shí),該系統(tǒng)會(huì)將產(chǎn)品的序列號(hào)發(fā)送到消息隊(duì)列中,消息隊(duì)列會(huì)在幾秒鐘內(nèi)立即返回。
數(shù)據(jù)存取層面使用了ORM架構(gòu)中的JPA技術(shù)。JPA所應(yīng)用的ORM關(guān)聯(lián)映射模式可以幫助該系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的存取。在某些實(shí)施方式中,表格記錄是以POJO模式為基礎(chǔ)的,它通過(guò)JPA所提供的界面程序來(lái)渲染表格,更新表格中的數(shù)據(jù),從而實(shí)現(xiàn)表格的添加或移除。[3]
綜上所述,筆者設(shè)計(jì)的基于微信小程序的大學(xué)校園點(diǎn)餐管理系統(tǒng),能夠有效緩解目前大學(xué)餐廳的擁擠情況,為師生提供了良好的就餐體驗(yàn)。