張蕊 歐陽資銘 李文杰 彭玄 陳曉玲
湖南文理學(xué)院芙蓉學(xué)院,湖南常德 415000
學(xué)校是人員密集的場所,用餐時間一般是固定的時間段,因此,常常不可避免會出現(xiàn)需要排隊很久的情況,采用預(yù)約點餐的方式能有效減少排隊時間?,F(xiàn)如今,雖然有諸多外賣平臺,點餐很方便,但是不僅需要配送費用,而且不能普遍適用于學(xué)生群體[1]。因此,開發(fā)一款能有效解決排隊問題,不需要配送費用且能夠廣泛適用于學(xué)生群體的校園食堂預(yù)約點餐小程序是切實可行的。
小程序有商家端和學(xué)生端。商家通過商家端可以設(shè)置菜品供學(xué)生選擇,顯示學(xué)生支付后的預(yù)約取餐時間以及該學(xué)生的專屬取餐號和確認(rèn)待取消的訂單。學(xué)生端學(xué)生可以通過選擇菜品選擇預(yù)約時間且支付后使用生成的取餐碼在預(yù)約的取餐時間去取餐,為了更好地便利學(xué)生,增加了取消訂單和幫忙代取功能。系統(tǒng)總體設(shè)計結(jié)構(gòu)流程圖如圖1所示。
小程序認(rèn)證頁面如圖2所示。通過該頁面輸入賬號和密碼進(jìn)行身份認(rèn)證,輸入的賬號為工號或?qū)W號,輸入的密碼為初始密碼。
商家首頁頁面如圖3所示。此頁面包括菜譜設(shè)置、預(yù)約訂單、取消通知3個功能組件。菜譜設(shè)置組件可以進(jìn)行菜品信息的設(shè)置,預(yù)約訂單組件顯示預(yù)約的訂單,取消通知顯示需要同意取消的訂單。
學(xué)生(用戶)首頁頁面如圖4所示。此頁面包括預(yù)約、支付、取消、代取4個功能組件。預(yù)約組件可以選擇預(yù)約的菜品,支付組件可以對已預(yù)約的菜品付款,取消組件用于對需要取消的訂單進(jìn)行取消申請,代取組件用于對需要代取的訂單發(fā)起申請。
打開微信小程序進(jìn)行身份認(rèn)證,判斷是商家還是學(xué)生,認(rèn)證為商家可進(jìn)入商家首頁,認(rèn)證為學(xué)生則可進(jìn)入學(xué)生首頁。商家首頁的具體功能包括菜品信息上傳、訂單信息的獲取和被取消訂單的確認(rèn)。學(xué)生首頁的具體功能包括獲取菜品信息、預(yù)約取餐時間、支付后獲得取餐碼、取消訂單、代取功能。程序流程圖如圖5所示。
完成交易過程代碼如下:
if (studentA choose=menu[i])//學(xué)生A預(yù)約并支付了一種菜品
云開發(fā)模式是簡化的傳統(tǒng)開發(fā)模式,可以直接通過函數(shù)調(diào)用服務(wù)器完成各種操作,擁有高開發(fā)效率和低運維成本,是未來小程序開發(fā)的發(fā)展趨勢。小程序的3大基礎(chǔ)能力為:云數(shù)據(jù)庫、云函數(shù)和云儲存[2]。
云開發(fā)的初始化:
在微信開發(fā)者工具填入APPID使用云開發(fā)模式建立項目,進(jìn)入項目開通云開發(fā)并設(shè)置環(huán)境名稱會自動生成一個環(huán)境ID,然后在項目文件的app.js中寫入以下代碼完成對環(huán)境資源的初始化:wx.cloud.init({env: '環(huán)境ID',traceUser: true,})[3]。
在微信開發(fā)者工具的云控制臺添加數(shù)據(jù)庫的集合對數(shù)據(jù)進(jìn)行管理。需要創(chuàng)建的集合有商家信息集合用于儲存商家的姓名與工號,學(xué)生信息集合用于存儲學(xué)生的姓名與學(xué)號,菜品信息的集合用于存儲菜品的名稱與價格。
實現(xiàn)對信息的錄入:
將商家與學(xué)生的姓名和編號信息存儲在云數(shù)據(jù)庫中,身份認(rèn)證是通過輸入特定的賬戶號和密碼與云數(shù)據(jù)庫中存儲的數(shù)據(jù)進(jìn)行對比認(rèn)證,從而判斷是學(xué)生還是商家[4]。認(rèn)證成功后將進(jìn)入特定的首頁,即商家首頁或?qū)W生首頁。
取餐碼是由學(xué)生下單并且支付時間的時分秒的數(shù)字組成的一串?dāng)?shù)據(jù),時間組成的取餐碼在每一天都是獨一無二的且具有識別性[5]。獲取取餐碼的2個關(guān)鍵操作首先是獲取取餐碼信息,利用獲取時間的時分秒函數(shù)將獲取的時分秒數(shù)字組成一個數(shù)據(jù)串,然后將得到的數(shù)據(jù)串使用增加數(shù)據(jù)庫信息函數(shù)添加到云數(shù)據(jù)庫中,在用戶支付訂單后將從云數(shù)據(jù)庫中得到該數(shù)據(jù)串作為取餐碼。
學(xué)生下單并支付后,將在商家端的預(yù)約訂單中顯示下單時間、預(yù)約菜品、取餐時間和取餐碼信息,與此同時,在學(xué)生端的預(yù)約中同步顯示下單時間、預(yù)約菜品、取餐時間和取餐碼信息。學(xué)生點選擇預(yù)約時間和菜品下單并支付后,產(chǎn)生一個訂單交易成功的事件,使用訂單交易成功的事件處理函數(shù),將在商家端的預(yù)約訂單頁面和學(xué)生端的預(yù)約頁面同步顯示訂單信息。
在學(xué)生端的取消與轉(zhuǎn)讓頁面中有待取餐的訂單,學(xué)生可以點擊取消訂單按鈕,點擊后將向商家端發(fā)送取消訂單請求并在商家端“取消通知”頁面中顯示,商家點擊同意取消按鈕后訂單取消完成。學(xué)生點擊取消按鈕時將產(chǎn)生一個獲取待取餐的訂單的事件,調(diào)用獲取待取餐訂單的事件處理函數(shù),訂單取消請求將在商家端“取消通知”頁面中顯示。點擊同意取消按鈕時產(chǎn)生一個同意取消訂單的事件,調(diào)用同意取消訂單的事件處理函數(shù)修改訂單狀態(tài),將修改后的訂單信息存儲到云端數(shù)據(jù)庫,將修改后的訂單信息同時在商家端“取消通知”頁面和學(xué)生端“取消”頁面顯示。
學(xué)生A輸入學(xué)生B的姓名,查找學(xué)生B并發(fā)送代取請求,學(xué)生B接收消息并同意幫忙代取后,學(xué)生B將獲取學(xué)生A的取餐碼,學(xué)生B使用該取餐碼完成幫助同學(xué)A的代取服務(wù)。學(xué)生的姓名信息提前存儲在云數(shù)據(jù)庫中,當(dāng)學(xué)生A輸入學(xué)生B的姓名并點擊發(fā)送代取請求時,將產(chǎn)生一個找人代取的事件,調(diào)用找人代取事件處理函數(shù),學(xué)生B將在學(xué)生端代取頁面顯示學(xué)生A的訂單信息。學(xué)生B點擊確認(rèn)幫忙代取按鈕時,將產(chǎn)生一個同意幫忙代取的事件,調(diào)用同意幫忙的事件處理函數(shù),學(xué)生A將在代取頁面接收到學(xué)生B已確認(rèn)代取的信息,與此同時,學(xué)生B將獲取學(xué)生A的取餐碼以及相關(guān)訂單信息。
本文對應(yīng)用云開發(fā)技術(shù)開發(fā)預(yù)約點餐微信小程序中的功能實現(xiàn)邏輯與關(guān)鍵問題解決方法進(jìn)行了闡述,校園食堂微信點餐小程序能有效解決用餐排隊時間長的問題,為食堂員工與學(xué)生提供極大的便利。預(yù)約點餐加代取的經(jīng)濟模式相較于傳統(tǒng)外賣軟件有更好的實用性。不足之處在于僅限學(xué)校這種聚集性較強的環(huán)境。