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