便捷點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
便捷點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
便捷點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
便捷點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
便捷點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

引言背景及意義伴隨生活水平的提高,廣大中國(guó)同胞不再滿足于基本的生活必需品,而是追求更好、更優(yōu)、更快的生活方式。因國(guó)人口基數(shù)巨大故飲食業(yè)市場(chǎng)也是巨大的。隨著互聯(lián)網(wǎng)的普及和智能手機(jī)的發(fā)展,越來(lái)越多的人開(kāi)始接受電子商務(wù)作為一種方便快捷的交易方式。傳統(tǒng)餐飲行業(yè)的營(yíng)銷形式相對(duì)簡(jiǎn)單,多以實(shí)體餐廳為銷售平臺(tái)。現(xiàn)在網(wǎng)絡(luò)技術(shù)的出現(xiàn)為餐飲業(yè)創(chuàng)造了一個(gè)新的銷售平臺(tái)--網(wǎng)上訂餐系統(tǒng)。與傳統(tǒng)實(shí)體餐廳銷售平臺(tái)相比,網(wǎng)上訂餐系統(tǒng)具有很多優(yōu)點(diǎn),如快餐信息的搜索和瀏覽,方便的訂餐等,支付寶、淘寶、微信等都為網(wǎng)上訂餐系統(tǒng)提供了更加優(yōu)化的條件。然而去往實(shí)體店就餐的也不在少數(shù),其中大多數(shù)還是保持著傳統(tǒng)的點(diǎn)餐方式,通過(guò)提供互聯(lián)網(wǎng)點(diǎn)餐的方式,優(yōu)化點(diǎn)餐流程并幫助主要份額在線下點(diǎn)餐的餐館數(shù)字化。盡管線下就餐受到美團(tuán)和餓了么的沖擊,但仍然有很大的市場(chǎng)需求,所以“便捷點(diǎn)餐系統(tǒng)”應(yīng)運(yùn)而生。國(guó)內(nèi)外研究現(xiàn)狀國(guó)內(nèi)研究現(xiàn)狀近年來(lái),隨著中國(guó)市場(chǎng)經(jīng)濟(jì)的快速發(fā)展,中國(guó)家庭的人均可支配收入越來(lái)越高,人們的消費(fèi)方式正在從把大部分收入用于食品消費(fèi)向更加多樣化的消費(fèi)需求轉(zhuǎn)變。我國(guó)IT實(shí)力走在世界前沿已經(jīng)帶動(dòng)了許多相關(guān)產(chǎn)業(yè)的發(fā)展,形成了新的消費(fèi)形式。尤其是最近十年來(lái),互聯(lián)網(wǎng)的急速發(fā)展,形成了餐飲行業(yè)與互聯(lián)網(wǎng)融合造就的更智能、更方便的外賣市場(chǎng),為消費(fèi)者提供了更便宜、更便捷、更快速的就餐途徑。吃喝是人們保持身體機(jī)能的基礎(chǔ),餐飲行業(yè)的發(fā)展是為中國(guó)公民提供一種更健康與便捷的生活方式。餐飲企業(yè)要做強(qiáng),需要追求現(xiàn)代化、產(chǎn)業(yè)化、品牌化的方向發(fā)展。我們需要遵從最基本的秩序服務(wù)實(shí)現(xiàn)信息化管理,提供更健康,更優(yōu)質(zhì),更便捷、更人性化的服務(wù),提高效率,并建立了“一切為了客戶”的服務(wù)理念在現(xiàn)代,必須與互聯(lián)網(wǎng)相結(jié)合,網(wǎng)上訂餐系統(tǒng)的誕生與發(fā)展。與傳統(tǒng)的點(diǎn)餐相比,網(wǎng)上訂餐不僅可以了解商家的信息,看到豐富的菜品,還可以最大化減少等待時(shí)間。當(dāng)下,中國(guó)主流的互聯(lián)網(wǎng)外賣平臺(tái)以美團(tuán)外賣、餓了么外賣作為主要代表的平臺(tái);隨著新生活方式的改變,傳統(tǒng)店鋪數(shù)量龐大,成為中國(guó)經(jīng)濟(jì)發(fā)展和消費(fèi)結(jié)構(gòu)的重要組成部分。年輕人無(wú)疑是這股潮流的引導(dǎo)者,他們?cè)谝欢ǔ潭壬蠋?dòng)了行業(yè)的發(fā)展,如果能夠引導(dǎo)他們的消費(fèi)能力,這個(gè)行業(yè)將會(huì)有巨大的發(fā)展空間。但是,要想在這樣一個(gè)特殊的消費(fèi)群體中占據(jù)穩(wěn)定而大的市場(chǎng)份額,就必須全面了解他們的消費(fèi)行為和消費(fèi)偏好,抓住痛點(diǎn)對(duì)癥下藥。國(guó)外研究現(xiàn)狀在國(guó)外,由于此類軟件起步早和相關(guān)技術(shù)的發(fā)展。國(guó)外的點(diǎn)餐系統(tǒng)軟件功能全,數(shù)量大,但大多數(shù)是基于安卓系統(tǒng)的餐廳點(diǎn)餐系統(tǒng)[5](WahabMHA,KadirHA,AhmadN.2008)。安卓系統(tǒng)的最大特點(diǎn)在于開(kāi)源,任何人都可以在此他人的基礎(chǔ)上進(jìn)行操作、完善,自主地開(kāi)發(fā)應(yīng)用程序,開(kāi)放的平臺(tái)允許任何廠商加入到安卓中來(lái)。論文網(wǎng)軟件有比較人性化的推薦功能,它能根據(jù)以前的點(diǎn)菜記錄為顧客推薦菜品。但失于校園點(diǎn)餐系統(tǒng)的研究還是較少,在食堂方面主要研究食物浪費(fèi)情況、后勤保障工作等。研究目的與內(nèi)容隨著越來(lái)越年輕的消費(fèi)群體的崛起,更便捷、更新鮮的消費(fèi)觀念正在形成。消費(fèi)者更加追求高效的消費(fèi)模式,更加快速的就餐,這對(duì)餐飲業(yè)提出了更高的要求。對(duì)于人們已經(jīng)形成了高效的時(shí)間概念的情況下,基于手機(jī)訂餐系統(tǒng)的開(kāi)發(fā)對(duì)于附和消費(fèi)者的消費(fèi)觀念具有深遠(yuǎn)意義。盡管外賣很受歡迎,但仍有大量的人在線下就餐。然而,由于學(xué)習(xí)和工作同時(shí)進(jìn)行,高峰時(shí)段很可能會(huì)出現(xiàn)交通擁堵、排隊(duì)等候時(shí)間過(guò)長(zhǎng)以及缺乏用餐座位等問(wèn)題。因?yàn)楣ぷ鲏毫r(shí)間本身是不夠的,高效利用時(shí)間就是最主要的切入點(diǎn)。美好的世界需要我們花更多的時(shí)間去發(fā)現(xiàn),花大量的時(shí)間去排隊(duì)等待就餐是對(duì)寶貴時(shí)間的浪費(fèi)。初步的調(diào)查報(bào)告顯示,網(wǎng)絡(luò)餐廳前景廣闊,大多數(shù)學(xué)生持支持意見(jiàn)。因此,結(jié)合目前的智能手機(jī)和餐廳開(kāi)發(fā)一個(gè)方便的訂餐小程序,為顧客提供網(wǎng)絡(luò)點(diǎn)餐,省去排隊(duì)等餐的麻煩,實(shí)現(xiàn)就餐場(chǎng)所的多樣化,優(yōu)化人們的時(shí)間安排,并為人們和員工帶來(lái)更便捷的服務(wù)??尚行苑治瞿壳笆謾C(jī)已經(jīng)成為不可或缺的設(shè)備,其重要性以不用說(shuō)明,手機(jī)無(wú)線網(wǎng)絡(luò)不斷升級(jí),4G網(wǎng)絡(luò)的出現(xiàn)更是加快了在線消費(fèi)的步伐。而大部分人手機(jī)中都會(huì)安裝微信。微信是由騰訊公司開(kāi)發(fā)的IM(即時(shí)聊天)APP,經(jīng)過(guò)多年的發(fā)展微信微信早已成為手機(jī)必備APP,人們的生活也離不開(kāi)它了,在微信的普遍性與便捷性下,提供的廣大的平臺(tái),本項(xiàng)目的移動(dòng)端平臺(tái)選擇的就是微信提供的一種新形態(tài)的移動(dòng)端載體—小程序,不需要下載安裝即可使用的應(yīng)用,實(shí)現(xiàn)了應(yīng)用“觸手可及”的夢(mèng)想,用戶掃一掃或者搜一下即可打開(kāi)應(yīng)用,同時(shí)具有出色的使用體驗(yàn),也體現(xiàn)了“用完即走”的理念,用戶不用關(guān)心是否安裝太多應(yīng)用的問(wèn)題,高效便捷的獲取客流量,對(duì)于小程序擁有者來(lái)說(shuō),相較于原生APP,推廣更容易更簡(jiǎn)單,更省成本。微信小程序意味著有多少人使用微信,就有多少人會(huì)使用小程序,共享9億+微信現(xiàn)成活躍用戶。相比軟件App,小程序擁有穩(wěn)定的流量入口和便捷無(wú)需安裝的特性,獲客引流更高效便捷。微信為小程序開(kāi)放了搜索功能,只需正式注冊(cè)了小程序,在搜索欄里就可以找到你的小程序;小程序二維碼,微信提供了一種線下實(shí)體的入口,這種方法可以通過(guò)一張碼識(shí)一個(gè)小程序,作為一種線下的入口,二維碼內(nèi)可以攜帶一些其他內(nèi)容,這些內(nèi)容可以由開(kāi)發(fā)者制定。該系統(tǒng)就是利用了小程序的便捷性與一些特性實(shí)現(xiàn)開(kāi)發(fā)。

2系統(tǒng)開(kāi)發(fā)相關(guān)技術(shù)2.1開(kāi)發(fā)環(huán)境操作系統(tǒng):Windows11專業(yè)版數(shù)據(jù)庫(kù):Mysql8.0.1開(kāi)發(fā)工具:IntelliJIDEA2021.1電腦配置:處理器(CPU)英特爾酷睿i7-11210U2.50GHz~4.4GHz,內(nèi)存:16GB,硬盤(pán)空間:1TB。本系統(tǒng)IDEA2021.1.2做為主要開(kāi)發(fā)工具,后端主要設(shè)計(jì)語(yǔ)言采用Java,數(shù)據(jù)庫(kù)存儲(chǔ)方面采用的是Mysql,系統(tǒng)緩存采用非結(jié)構(gòu)化數(shù)據(jù)庫(kù)Redis,顯示端采用Vue-cli3、Uni-app對(duì)數(shù)據(jù)進(jìn)行可視化操作及管理。采用的是當(dāng)前流行且主流技術(shù),擁有完善的社區(qū)服務(wù)。2.2相關(guān)技術(shù)2.2.1Java概述Java語(yǔ)言是一種優(yōu)秀的編程語(yǔ)言。它最大的優(yōu)點(diǎn)就是與平臺(tái)無(wú)關(guān),在Windows9x、WindowsNT、Solaris、Linux、MacOS以及其它平臺(tái)上,都可以使用相同的代碼。“一次編寫(xiě),到處運(yùn)行”的特點(diǎn),使其在互聯(lián)網(wǎng)上廣泛采用。由于Java語(yǔ)言的設(shè)計(jì)者們十分熟悉C++語(yǔ)言,所以在設(shè)計(jì)時(shí)很好地借鑒了C++語(yǔ)言。可以說(shuō),Java語(yǔ)言是一種比C++語(yǔ)言“還面向?qū)ο蟆钡囊环N編程語(yǔ)言。Java語(yǔ)言的語(yǔ)法結(jié)構(gòu)與C++語(yǔ)言的語(yǔ)法結(jié)構(gòu)十分相似,這使得C++程序員學(xué)習(xí)Java語(yǔ)言更加容易。當(dāng)然,如果僅僅是對(duì)C++改頭換面,那么就不會(huì)有今天的Java熱了。Java語(yǔ)言提供的一些有用的新特性,使得使用Java語(yǔ)言比C++語(yǔ)言更容易寫(xiě)出“無(wú)錯(cuò)代碼”。并且在做為服務(wù)器語(yǔ)言出身其以被廣泛運(yùn)用,其社區(qū)活躍,對(duì)各種功能都有優(yōu)秀的解決方案。2.2.2IDEA簡(jiǎn)介IDEA全稱IntelliJIDEA,是java編程語(yǔ)言開(kāi)發(fā)的集成環(huán)境。IntelliJ在業(yè)界被公認(rèn)為最好的java開(kāi)發(fā)工具,尤其在智能代碼助手、代碼自動(dòng)提示、重構(gòu)、J2EE支持、各類版本工具(git、svn等)、JUnit、CVS整合、代碼分析、創(chuàng)新的GUI設(shè)計(jì)等方面的功能可以說(shuō)是超常的。強(qiáng)大的整合能力:比如Git、Maven、Spring等支持。便捷提示功能的快速、精準(zhǔn)、提示功能的范圍比較廣、好用的快捷鍵和代碼模板、精準(zhǔn)搜索,這些都是與Eclipse相比的優(yōu)點(diǎn)。2.2.3Mysql簡(jiǎn)介Oracle公司旗下項(xiàng)目,默認(rèn)支持可重復(fù)讀,非常使用在業(yè)務(wù)場(chǎng)景有事務(wù)要求的情況下使用,在多年的維護(hù)并作為主流數(shù)據(jù)庫(kù)被大量公司使用下,保持的最高的市場(chǎng)使用率,其穩(wěn)定性早就經(jīng)受住了證實(shí)。MySQL優(yōu)點(diǎn):成本——MySQL開(kāi)放源代碼,一般都可以免費(fèi)使用(甚至可以免費(fèi)修改)。性能——MySQL執(zhí)行非??臁?尚刨嚒承┓浅V匾吐曂芨叩墓尽⒄军c(diǎn)使用MySQL,這些公司和站點(diǎn)都用MySQL來(lái)處理自己的重要數(shù)據(jù)。簡(jiǎn)單——MySQL很容易安裝和使用。在以上優(yōu)點(diǎn)加持下,Mysql還是個(gè)開(kāi)源免費(fèi)使用的項(xiàng)目,其社區(qū)活躍,并經(jīng)受住了大范圍的使用考驗(yàn),其穩(wěn)定性與穩(wěn)定性毋庸置疑,是當(dāng)下中小型項(xiàng)目關(guān)系型數(shù)據(jù)庫(kù)的最優(yōu)選擇。2.2.4.Redis簡(jiǎn)介Redis是當(dāng)前互聯(lián)網(wǎng)世界最為流行的NoSQL(NotOnlySQL)數(shù)據(jù)庫(kù)。NoSQL在互聯(lián)網(wǎng)系統(tǒng)中的作用很大,因?yàn)樗梢栽诤艽蟪潭壬咸岣呋ヂ?lián)網(wǎng)系統(tǒng)的性能。Redis具備一定持久層的功能,也可以作為一種緩存工具。對(duì)于NoSQL數(shù)據(jù)庫(kù)而言,作為持久層,它存儲(chǔ)的數(shù)據(jù)是半結(jié)構(gòu)化的,這就意味著計(jì)算機(jī)在讀入內(nèi)存中有更少的規(guī)則,讀入速度更快。對(duì)于那些結(jié)構(gòu)化、多范式規(guī)則的數(shù)據(jù)庫(kù)系統(tǒng)而言,它更具性能優(yōu)勢(shì)。作為緩存,它可以支持大數(shù)據(jù)存入內(nèi)存中,只要命中率高,它就能快速響應(yīng),因?yàn)樵趦?nèi)存中的數(shù)據(jù)讀/寫(xiě)比數(shù)據(jù)庫(kù)讀/寫(xiě)磁盤(pán)的速度快幾十到上百倍。2.2.5.Uni-App一次開(kāi)發(fā)多端部署的流行框架,可實(shí)現(xiàn)小程序、Andorid、IOS的打包服務(wù),現(xiàn)被大量公司使用,并作為前端主要框架,同時(shí)也是擁有優(yōu)秀的性能。其優(yōu)點(diǎn)多端開(kāi)發(fā):一套代碼可以生成ios、安卓、微信小程序、支付寶小程序等,學(xué)習(xí)成本低,UniApp封裝的組件與微信小程序相似,并且基于vue.js,上手快。結(jié)合HBuilder開(kāi)發(fā)速度快。

3系統(tǒng)需求分析3.1系統(tǒng)角色功能分析從本系統(tǒng)的具體業(yè)務(wù)流程分析看,便捷點(diǎn)餐系統(tǒng)應(yīng)含有不同角色并且含有角色的不同職能。具體可分為以下分別分為:顧客、店員劃分圖如下3-1所示:圖3-1系統(tǒng)角色劃分3.1.1顧客顧客在系統(tǒng)中處于消費(fèi)者的地位,也是系統(tǒng)數(shù)據(jù)的主要產(chǎn)生者,主要操作的處于小程序端。顧客所具有的主要職能概括:訂單操作、瀏覽菜單、歷史訂單的查找。具體內(nèi)容如表3-1所示:表31顧客角色功能描述表功能描述信息功能介紹瀏覽菜單菜品分類信息,菜品信息進(jìn)行基本信息瀏覽訂單操作選擇菜品、多人共享訂單、提交訂單、訂單支付進(jìn)行訂單的相關(guān)操作歷史訂單查看歷史訂單與正在進(jìn)行中的訂單對(duì)個(gè)人訂單進(jìn)行瀏覽3.1.2商家商家在該系統(tǒng)中處于重要的系統(tǒng)管理的監(jiān)控的角色,提供了繁多的系統(tǒng)功能。其中功能主要包括:訂單管理、菜單管理、餐桌管理、會(huì)員管理、打印機(jī)管理、數(shù)據(jù)統(tǒng)計(jì)預(yù)覽。具體描述如表3-2所示:表32商家角色功能描述表功能描述信息功能介紹餐桌管理餐桌的管理、餐桌二維碼管理與導(dǎo)出進(jìn)行餐桌的管理功能菜單管理菜單的分類、菜品添加、菜品下架進(jìn)行菜單的管理功能訂單管理追加菜品、結(jié)算訂單、取消訂單、訂單查詢進(jìn)行訂單的管理功能會(huì)員管理查看會(huì)員信息查看會(huì)員在平臺(tái)的相關(guān)信息打印機(jī)管理新增、刪除、編輯打印機(jī)對(duì)打印機(jī)的管理功能數(shù)據(jù)統(tǒng)計(jì)預(yù)覽訂單統(tǒng)計(jì)數(shù)據(jù)預(yù)覽、菜品統(tǒng)計(jì)數(shù)據(jù)預(yù)覽對(duì)客戶在平臺(tái)產(chǎn)生的數(shù)據(jù)統(tǒng)計(jì)

3.2系統(tǒng)功能需求分析便捷點(diǎn)餐系統(tǒng)用例如下圖所示:圖3-2顧客用例圖菜單瀏覽:分類顯示菜品信息,包括菜品描述圖片與價(jià)格等購(gòu)物車管理:提供對(duì)菜品的選擇、追加、刪除、金額統(tǒng)計(jì)與菜品數(shù)量調(diào)整多人點(diǎn)餐:實(shí)時(shí)同步同一桌的客戶購(gòu)物車信息訂單管理:顧客的訂單管理主要是訂單支付,并顯示預(yù)計(jì)上菜時(shí)間。顯示以往點(diǎn)餐記錄功能。

圖3-3商家用例圖流水統(tǒng)計(jì):日統(tǒng)計(jì)、月統(tǒng)計(jì)、導(dǎo)出報(bào)表、菜品消耗統(tǒng)計(jì)。餐桌管理:對(duì)每個(gè)餐桌的管理,其頁(yè)面提供最重要的生成餐桌對(duì)應(yīng)二維碼功能,該二維碼同一時(shí)間識(shí)別相同的訂單。菜單分組管理:店鋪的菜系不一定相同,對(duì)菜品有個(gè)具體的分類。菜品管理:對(duì)添加的菜品設(shè)置圖片分類、菜品名、價(jià)格、上下架。會(huì)員管理:導(dǎo)入系統(tǒng)的用戶即是會(huì)員,記錄用戶的微信號(hào)與頭像等等用戶信息,并通過(guò)微信提供的接口推送給會(huì)員特定消息。訂單管理:店員訂單管理提供餐館產(chǎn)生的訂單詳細(xì)條件的篩選查詢數(shù)據(jù),結(jié)算訂單與訂單菜品直接管理。打印機(jī)管理:通過(guò)購(gòu)買其它公司開(kāi)放平臺(tái)的設(shè)備,調(diào)用設(shè)備API進(jìn)行打印小票數(shù)據(jù)功能,店員可以對(duì)其進(jìn)行綁定、解綁與編輯打印內(nèi)容操作。

根據(jù)系統(tǒng)需求的分析,得到如圖3-4所示系統(tǒng)功能結(jié)構(gòu)圖:圖3-4系統(tǒng)功能結(jié)構(gòu)圖

3.3系統(tǒng)業(yè)務(wù)流程分析欲使系統(tǒng)開(kāi)發(fā)人員能夠簡(jiǎn)單明了的曉得系統(tǒng)的業(yè)務(wù)流程以及系統(tǒng)的業(yè)務(wù)邏輯,所以需要對(duì)本系統(tǒng)的業(yè)務(wù)流程進(jìn)行詳細(xì)分析與闡述。因此采用流程圖的表示方式進(jìn)行業(yè)務(wù)流程分析。以下是對(duì)便捷點(diǎn)餐系統(tǒng)的主要業(yè)務(wù)流程的分析。系統(tǒng)流程圖基于微信小程序的二維碼點(diǎn)餐系統(tǒng)使用微信客戶端提供的各種基礎(chǔ)功能,對(duì)上層提供JavaScriptAPI外,還采用了SpringBoot框架實(shí)現(xiàn)微服務(wù),建造獨(dú)立的微服務(wù)功能單元,實(shí)現(xiàn)對(duì)不同的模塊進(jìn)行不同的管理操作顧客可以掃描二維碼訪問(wèn)菜品列表、添加菜品至購(gòu)物車、查看購(gòu)物車、下單、加單、查看自己的訂單信息、取消訂單,結(jié)賬等餐館可以對(duì)菜品進(jìn)行管理,可以給菜品分類,還可以管理訂單、查詢訂單、取消訂單等流程如圖3-5所示:圖3-5業(yè)務(wù)流程圖

(2)顧客登入流程小程序登入不同于傳統(tǒng)登入,用戶基礎(chǔ)信息可以通過(guò)授權(quán)的方式獲取用戶的微信賬號(hào)基礎(chǔ)信息,避免重復(fù)填寫(xiě)用戶信息的麻煩,其主要流程調(diào)用微信的自定義協(xié)議彈出授權(quán)用戶信息框,通過(guò)授權(quán)直接獲取到用戶的基礎(chǔ)信息,流程如圖3-6所示:圖3-6客戶登入流程圖

(3)訂單詳細(xì)流程圖訂單的流程是整個(gè)系統(tǒng)中最重要的流程,在系統(tǒng)一個(gè)訂單的完整流程圖,其包括了系統(tǒng)在線下訂單產(chǎn)生時(shí)具體會(huì)產(chǎn)生的每個(gè)步驟的流程,其中包括客戶、系統(tǒng)、后廚、服務(wù)人員。訂單流程如圖3-7所示:圖3-7訂單流程圖

4系統(tǒng)設(shè)計(jì)通過(guò)對(duì)便捷訂餐系統(tǒng)業(yè)務(wù)的詳細(xì)需求分析后,在需求分析的基礎(chǔ)上,對(duì)系統(tǒng)的總體設(shè)計(jì)邏輯進(jìn)行了總結(jié),并對(duì)本系統(tǒng)的主要模塊和功能設(shè)計(jì)相關(guān)工作進(jìn)行了仔細(xì)的分解分析。下文將重點(diǎn)介紹數(shù)據(jù)庫(kù)及各個(gè)功能模塊的設(shè)計(jì)和界面設(shè)計(jì)。4.1總體設(shè)計(jì)思想使用E-R模型對(duì)數(shù)據(jù)進(jìn)行解釋,分析數(shù)據(jù)之間的關(guān)系,從而設(shè)計(jì)出能夠標(biāo)識(shí)用戶需求和處理需求的系統(tǒng)概念模型。概念設(shè)計(jì)的目標(biāo)是提供系統(tǒng)領(lǐng)域應(yīng)用程序的詳細(xì)表示,同時(shí)支持用戶在系統(tǒng)應(yīng)用程序的多樣性下,使系統(tǒng)不僅可以轉(zhuǎn)換為信息邏輯模型,而且易于理解。信統(tǒng)的概念模型面向于真實(shí)世界的信息數(shù)據(jù)模型,與具體的系統(tǒng)實(shí)現(xiàn)是無(wú)關(guān)的。主要是能夠讓用戶直接參與到系統(tǒng)的設(shè)計(jì),使得系統(tǒng)的設(shè)計(jì)與用戶更加貼切,更加直觀。4.2系統(tǒng)功能模塊設(shè)計(jì)4.2.1菜品模塊設(shè)計(jì)菜品管理模塊提供電子菜單功能,餐館通過(guò)該模塊對(duì)菜品進(jìn)行管理本模塊主要功能包括菜品類別管理:添加菜品信息、更改菜品信息、刪除菜品、菜品分類、設(shè)置菜品序號(hào)以及查找菜品,所涉及到數(shù)據(jù)交互的表有:菜品主表、菜品分類表(1)菜品分類管理:為便利顧客根據(jù)類別去選擇菜品,菜品分類模塊使得餐館能對(duì)的菜品進(jìn)行分類管理,可添加、修改和刪除某一類別菜品分類,可以對(duì)已經(jīng)上架的菜品進(jìn)行分類,并設(shè)分組的顯示排序。(2)添加菜品:餐館可以向菜單列表里添加新的菜品,設(shè)置菜品基本信息,這些基本信息包括菜品名、菜品價(jià)格和菜品圖片,同時(shí)設(shè)置菜品的顯示序號(hào),另外設(shè)置該菜品的售罄狀態(tài)與下架狀態(tài)。(3)更改菜品信息:更改菜品基本信息,更換菜品圖片,對(duì)菜品的價(jià)格進(jìn)行調(diào)整,對(duì)限量進(jìn)行調(diào)整當(dāng)菜品當(dāng)天售罄時(shí),菜品狀態(tài)即為已售罄狀態(tài),也可以直接下架菜品與動(dòng)態(tài)調(diào)整菜品的顯示序號(hào)。(4)刪除菜品:對(duì)不再提供的菜品刪除操作,菜品即被下架在客戶端不再顯示.(5)查找菜品:對(duì)菜品列表中已經(jīng)存在的菜品,可以執(zhí)行查詢操作,利用菜品名關(guān)鍵字進(jìn)行查詢,查找已添加至系統(tǒng)中的菜品并查看其菜品相應(yīng)詳細(xì)信息4.2.2訂單模塊設(shè)計(jì) 餐館可以已產(chǎn)生的訂單進(jìn)行管理,包括查詢訂單詳情、修改訂單基礎(chǔ)信息、刪除未訂單,所涉及到數(shù)據(jù)交互的表有:訂單菜品表、訂單流水表。(1)查詢訂單:根據(jù)訂單狀態(tài)、時(shí)間和支付方式等進(jìn)行搜索,查找訂單記錄,點(diǎn)開(kāi)查詢到訂單后,可以看到訂單的詳細(xì)信息包括訂單菜品,可以根據(jù)桌號(hào)進(jìn)行查詢,也可以通過(guò)掃描不同桌號(hào)對(duì)應(yīng)的二維碼進(jìn)行查詢餐館通過(guò)查詢訂單可以看到登入者自己的關(guān)聯(lián)訂單的。(2)修改訂單:只向餐館提供有限的修改操作,如菜品、結(jié)算方式和實(shí)際支付金額等等(3)刪改訂單:對(duì)已失效或未提交的訂單可以刪除,該操作屬于邏輯刪除。4.2.3餐桌管理設(shè)計(jì)餐桌管理模塊設(shè)置成功后會(huì)根據(jù)相應(yīng)信息生成每個(gè)桌臺(tái)對(duì)應(yīng)的二維碼,包括二維碼對(duì)應(yīng)管里、添加餐桌、查找已添加餐桌數(shù)據(jù)與導(dǎo)出餐桌二維碼。上述功能所涉及到數(shù)據(jù)交互的表有:餐桌主表。(1)添加餐桌:添加操作將自動(dòng)生成餐桌二維碼,該碼中攜帶著具體的餐桌唯一識(shí)別碼,通過(guò)微信掃碼即可識(shí)別餐館與具體的餐桌,改設(shè)計(jì)方便客戶便捷點(diǎn)餐與減少工作人員的工作量,如果該餐桌沒(méi)有訂單真正進(jìn)行,間自動(dòng)生成訂單,如果有訂單真正進(jìn)行中將提示時(shí)候并入訂單點(diǎn)餐,從而實(shí)現(xiàn)多人并行點(diǎn)餐,該功能以方便餐館接納客人并減少服務(wù)員的工作量。(2)查詢餐桌:可根據(jù)餐桌名關(guān)鍵字與餐桌編號(hào)查詢餐桌詳細(xì)信息(3)導(dǎo)出餐桌二維碼:該功能主要方便商家快速獲取每個(gè)餐桌的二維碼,以壓縮包的形式將餐館的餐桌二維碼一次性提供出來(lái)。4.2.4選菜下單管理設(shè)計(jì)顧客通過(guò)掃描二維碼識(shí)別具體餐館的具體餐桌后,進(jìn)入點(diǎn)餐小程序?yàn)g覽菜品列表,然后對(duì)菜品進(jìn)行選擇后下單,列表中的菜品按菜品分類進(jìn)行展示,顧客可先選擇類別,然后對(duì)選擇對(duì)應(yīng)類別列表中的菜品選中后的菜品被加入購(gòu)物車,也可將其從購(gòu)物車中移出。在購(gòu)物車中可以對(duì)已選菜品進(jìn)行刪除和數(shù)量修改操作顧客選好菜品后,即可創(chuàng)建訂單,系統(tǒng)將用戶提交的訂單發(fā)送到后臺(tái),所涉及到數(shù)據(jù)交互的表有:訂單購(gòu)物車表、購(gòu)物車菜品表。(1)創(chuàng)建訂單:顧客在選菜操作完成后,選擇用餐人數(shù),此時(shí)可以看到總的已選菜品和桌號(hào),還可以在備注欄里添加相關(guān)備注,然后創(chuàng)建訂單.(2)查詢訂單:顧客可以查詢到自己的訂單詳情,可以看到自2訂單的所有信息,包括用餐人數(shù)、已點(diǎn)菜品、已上菜品后廚是開(kāi)始配菜等訂單章臺(tái)信息(3)取消訂單:當(dāng)訂單狀態(tài)顯示后廚還未開(kāi)始配菜時(shí),顧客可以取消自己的訂單。4.2.5統(tǒng)計(jì)模塊設(shè)計(jì)該模塊主要統(tǒng)計(jì)用戶在系統(tǒng)中產(chǎn)生的數(shù)據(jù)如交易金額、交易筆數(shù)、最近火爆菜品的統(tǒng)計(jì),通過(guò)定時(shí)器定期的去統(tǒng)計(jì)該數(shù)據(jù),所涉及到數(shù)據(jù)交互的表有:商家菜品排行統(tǒng)計(jì)表、商家交易統(tǒng)計(jì)-天表、商家交易統(tǒng)計(jì)-月表。(1)商家菜品排行統(tǒng)計(jì)表:每日1點(diǎn)統(tǒng)計(jì)前一天的訂單菜品表數(shù)據(jù)。(2)商家交易統(tǒng)計(jì)-天表:每日1點(diǎn)30分統(tǒng)計(jì)前一天的訂單表數(shù)據(jù)。(3)商家交易統(tǒng)計(jì)-月表:每月1號(hào)4點(diǎn)統(tǒng)計(jì)上個(gè)月商家交易數(shù)據(jù)。

4.3系統(tǒng)概念設(shè)計(jì)圖概念設(shè)計(jì)的本質(zhì)就是從上而下對(duì)系統(tǒng)的整體結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)在數(shù)據(jù)分析基礎(chǔ)之上再分析與設(shè)計(jì)。首先從管理員的視角對(duì)操作界面進(jìn)行設(shè)計(jì)與實(shí)現(xiàn),其次集成操作界面,最后再分析與整合,而后得到最后的成果。在概念設(shè)計(jì)時(shí),采用最為廣泛的E-R(實(shí)體-聯(lián)系)模型進(jìn)行設(shè)計(jì)與開(kāi)發(fā)。E-R(實(shí)體-聯(lián)系)模型法的組成元素:屬性、實(shí)體、聯(lián)系,使用E-R模型進(jìn)行設(shè)計(jì)時(shí),可以運(yùn)用E-R圖表示更加清晰立體,E-R圖是對(duì)系統(tǒng)相關(guān)角色工作環(huán)境當(dāng)中相聯(lián)系的事物標(biāo)注提示,對(duì)實(shí)體特性的標(biāo)注就稱為屬性。設(shè)計(jì)概念的初衷就是能夠更加淺顯更加有條理性地對(duì)倉(cāng)庫(kù)管理系統(tǒng)進(jìn)行組織信息要求的數(shù)據(jù)庫(kù)概念以及結(jié)構(gòu)進(jìn)行闡明,這即概念模式結(jié)構(gòu)如圖4-3-1所示。圖4-3-1系統(tǒng)實(shí)體關(guān)系圖4.4系統(tǒng)邏輯結(jié)構(gòu)設(shè)計(jì)邏輯結(jié)構(gòu)設(shè)計(jì)即將在概念設(shè)計(jì)時(shí)分析后作出的E-R模型圖轉(zhuǎn)變成與指定的數(shù)據(jù)庫(kù)可兼容的數(shù)據(jù)模型之邏輯結(jié)構(gòu)。在結(jié)構(gòu)概念設(shè)計(jì)的基礎(chǔ)之上對(duì)詳細(xì)轉(zhuǎn)換規(guī)則的加以運(yùn)用,得到下列實(shí)體:商家表(商家編碼,名稱,簡(jiǎn)稱,聯(lián)系人,品牌圖片,營(yíng)業(yè)時(shí)間,地址,餐館類型)菜品表(菜品編號(hào),菜品名,菜系,價(jià)格,照片,類別,菜品分組編號(hào),商家編號(hào))菜品分組表(菜品分組編號(hào),分組名,商家編號(hào))餐桌表(餐桌編號(hào),桌名,二維碼,限坐人數(shù),商家編號(hào))訂單表(訂單編號(hào),總價(jià),用戶編號(hào))訂單菜品表(訂單菜品編號(hào),訂單編號(hào),菜品編號(hào),菜品數(shù)量,顧客編號(hào))顧客表(顧客編號(hào),昵稱,性別,頭像,手機(jī)號(hào))打印機(jī)表(打印機(jī)編號(hào),類型,廠家,TN碼)4.5系統(tǒng)數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)在為了提供便于系統(tǒng)數(shù)據(jù)交互功能,本便捷點(diǎn)餐系統(tǒng)使用Mysql8.12為數(shù)據(jù)庫(kù)用于數(shù)據(jù)持久化存儲(chǔ)。以下是數(shù)據(jù)庫(kù)中各表的詳細(xì)信息,具體物理設(shè)計(jì)圖如下圖4-5-1。圖4-5-1物理設(shè)計(jì)圖(1)顧客信息表:顧客信息表的作用是保存顧客信息,并提供相關(guān)數(shù)據(jù)的查詢。由商家對(duì)員工的相應(yīng)的信息執(zhí)行查看操作進(jìn)行數(shù)據(jù)交互。表41顧客信息表(t_a_customer)序號(hào)列名數(shù)據(jù)類型長(zhǎng)度主鍵允許空說(shuō)明1customer_idint11是否編號(hào)2open_idvarchar160否微信唯一標(biāo)識(shí)3phonevarchar20否手機(jī)號(hào)4customer_picvarchar240否頭像5customer_namevarchar50否用戶名稱6is_deltinyint4是是否刪除7is_subscribetinyint4是是否關(guān)注8first_member_idint11是首次進(jìn)入關(guān)注的memberId9c_timeint12是創(chuàng)建時(shí)間(2)商家信息表:商家信息表的主要作用是存儲(chǔ)商家信息,由系統(tǒng)管理員進(jìn)行數(shù)據(jù)操作,其他角色只提供查詢的數(shù)據(jù)交互行為。表42商家信息表(t_a_member)序號(hào)列名數(shù)據(jù)類型長(zhǎng)度主鍵允許空說(shuō)明1member_idint11是否商家編號(hào)2member_namevarchar250否商家名3contact_namevarchar50否負(fù)責(zé)人4phonevarchar20否電話5typevarchar20否商家類型6latvarchar20否緯度7lngvarchar20否經(jīng)度8province_namevarchar100否省級(jí)名稱9city_namevarchar100否市級(jí)名稱10county_namevarchar100否區(qū)縣名稱11town_namevarchar100否鄉(xiāng)鎮(zhèn)名稱12addrvarchar250否詳細(xì)地址13door_head_picvarchat250否門頭照?qǐng)D片14brand_picvarchat250否品牌圖片15remarkvarchat250是備注16statetinyint4否商家狀態(tài)17create_timeint11否創(chuàng)建時(shí)間(3)餐桌信息表的作用是商家店鋪餐桌的信息表,對(duì)商品的相關(guān)基本信息包括重要字段餐桌二維碼執(zhí)行添加或者刪除相關(guān)的操作均會(huì)對(duì)餐桌信息表進(jìn)行數(shù)據(jù)交互。表43餐桌信息表(t_e_place)序號(hào)列名數(shù)據(jù)類型長(zhǎng)度主鍵允許空說(shuō)明1place_idint11是否編號(hào)2member_idint11否商家編號(hào)3place_namevarchar240否餐桌名稱4qr_code_picvarchar240否二維碼路徑5min_numtinyint4否最少可坐人數(shù)6max_numtinyint4否最多可坐人數(shù)7is_deltinyint4否是否刪除8u_timeint11否修改時(shí)間9c_timeint11否創(chuàng)建時(shí)間(4)菜品信息表:菜品信息表是每家餐館獨(dú)自管理的,為商家提供數(shù)據(jù)添加菜品,修改菜品,上下架菜品,菜品分類等操作,操作均會(huì)對(duì)進(jìn)貨信息表進(jìn)行數(shù)據(jù)交互。序號(hào)列名數(shù)據(jù)類型長(zhǎng)度主鍵允許空說(shuō)明1dishes_idint11是否編號(hào)2member_idint11否商家編號(hào)3groupint11否分組4numbertinyint4否排序號(hào)5dishes_namevarchar160否菜品名稱6dishes_picvarchar240否圖片7pricevarchar16否價(jià)格8is_outtinyint4否是否售罄9statustinyint4否是否上架10u_timeint11否修改時(shí)間11c_timeint11否創(chuàng)建時(shí)間表44菜品信息表(t_e_place)(5)菜品分組表:分類菜品的管理表,是客戶端顯示的主要單位,為商家提供分類菜品的管理功能交互,同時(shí)也可以設(shè)置組別的顯示序號(hào)。表45菜品分組表(t_e_group)序號(hào)列名數(shù)據(jù)類型長(zhǎng)度主鍵允許空說(shuō)明1group_idint11是否菜品分組編號(hào)2member_idint11否商戶ID3numberint11否排序號(hào)4group_namevarchar40否分組名稱5statustinyint4否是否上架6is_deltinyint4否是否刪除7remarkvarchar240否備注8c_timeInt11否創(chuàng)建時(shí)間9u_timeInt11否修改時(shí)間(6)訂單信息表:訂單表的作用是記錄用戶的點(diǎn)餐詳細(xì)信息,其操作包括訂單的結(jié)算、追加訂單菜品、訂單的詳情查看與取消訂單等操作。由餐店對(duì)其進(jìn)行操作,操作均會(huì)對(duì)訂單信息表進(jìn)行數(shù)據(jù)交互。表46訂單信息表(t_g_order)序號(hào)列名數(shù)據(jù)類型長(zhǎng)度標(biāo)識(shí)主鍵允許空說(shuō)明1order_idvarchar50是是否編號(hào)2member_idint11否商家編號(hào)3open_idvarchar50否用戶wx唯一標(biāo)識(shí)4place_idint11否餐桌編號(hào)5total_moneyvarchar16否價(jià)格合計(jì)6pay_moneyint16否支付金額7pay_typetinyint4否支付方式8pay_statustinyint4否支付狀態(tài)9pay_timeint11否支付時(shí)間10pay_open_idvarchar50否支付open_id11remarkvarchar240否備注信息12meal_personint4否就餐人數(shù)13pay_remarkvarchar2000否支付備注14settle_modetinyint4否結(jié)算方式15u_timeint11否更新時(shí)間16c_timeint11否創(chuàng)建時(shí)間(7)訂單菜品信息表:該表作為一張關(guān)聯(lián)表主要記錄訂單的菜品信息,客戶與商家的追加訂單操作均會(huì)對(duì)退貨信息表進(jìn)行數(shù)據(jù)交互。表47訂單菜品信息表(t_g_dishes_order)序號(hào)列名數(shù)據(jù)類型長(zhǎng)度主鍵允許空說(shuō)明1dishes_order_idint11是否編號(hào)2order_idint11否訂單編號(hào)3dishes_idvarchar50否菜品編號(hào)4dishes_numint11否數(shù)量5customer_idint11否用戶編號(hào)6customer_picvarchar2000否頭像信息7u_timeint11否更新時(shí)間8c_timeint11否創(chuàng)建時(shí)間(8)打印機(jī)信息表:打印機(jī)信息表作用是存儲(chǔ)餐館綁定的打印機(jī)信息,提供對(duì)打印機(jī)綁定解綁等操作,操作均會(huì)對(duì)庫(kù)存信息表進(jìn)行數(shù)據(jù)交互。表48打印機(jī)信息表(t_a_printer)序號(hào)列名數(shù)據(jù)類型長(zhǎng)度主鍵允許空說(shuō)明1printer_idint11是否編號(hào)2member_idint11否商家編號(hào)3machine_codenvarchar50否打印機(jī)終端號(hào)4machine_signvarchar50否打印機(jī)密鑰5printer_namevarchar50否打印機(jī)名稱6is_deltinyint4否是否刪除7is_stoptinyint4否是否停用8is_print_small_tickettinyint4否是否打印小票9is_print_table_ordertinyint4否是否打印押桌單10u_dateint11否更新時(shí)間11c_dateint11否綁定時(shí)間(9)交易統(tǒng)計(jì)表:該表數(shù)據(jù)來(lái)源于系統(tǒng)定時(shí)統(tǒng)計(jì),數(shù)據(jù)主要在管理端顯示,只提供基礎(chǔ)的查詢功能x,y軸分別是時(shí)間與對(duì)應(yīng)的統(tǒng)計(jì)字段數(shù)值。表49交易統(tǒng)計(jì)表(t_s_trade)序號(hào)列名數(shù)據(jù)類型長(zhǎng)度主鍵允許空說(shuō)明1trade_idint11是否交易統(tǒng)計(jì)編號(hào)2member_idint11否商家編號(hào)3trade_moneyvarchar16否交易金額4trade_numInt11否交易筆數(shù)5trade_peopleint11否交易人數(shù)6stat_time_typetinyint4否統(tǒng)計(jì)時(shí)間類型7stat_timetinyint4否統(tǒng)計(jì)時(shí)間(10)菜品統(tǒng)計(jì)表:該表數(shù)據(jù)來(lái)源于系統(tǒng)定時(shí)統(tǒng)計(jì),數(shù)據(jù)主要在管理端顯示,只提供基礎(chǔ)的查詢功能x,y軸分別是時(shí)間與菜品的消耗量。表410菜品統(tǒng)計(jì)表(t_s_dishes_rank)序號(hào)列名數(shù)據(jù)類型長(zhǎng)度主鍵允許空說(shuō)明1dishes_rank_idint11是否菜品統(tǒng)計(jì)編號(hào)2member_idint11否商家編號(hào)3dishes_idInt11否菜品編號(hào)4trade_numInt11否消耗數(shù)量 5 stat_time_typetinyint4否統(tǒng)計(jì)時(shí)間類型6stat_timetinyint4否統(tǒng)計(jì)時(shí)間本章先對(duì)便捷點(diǎn)餐系統(tǒng)的總體功能結(jié)構(gòu)設(shè)計(jì)與系統(tǒng)的主要功能模塊進(jìn)行簡(jiǎn)單敘述,而后重點(diǎn)對(duì)數(shù)據(jù)庫(kù)結(jié)構(gòu)與設(shè)計(jì)以及各個(gè)功能模塊進(jìn)行詳細(xì)剖析與論述,對(duì)系統(tǒng)各個(gè)功能模塊的進(jìn)行業(yè)務(wù)邏輯的解析,從而為倉(cāng)庫(kù)管理系統(tǒng)做一個(gè)實(shí)現(xiàn)的鋪墊。

5系統(tǒng)實(shí)現(xiàn)5.1工作量統(tǒng)計(jì)本倉(cāng)庫(kù)管理系統(tǒng)經(jīng)過(guò)了統(tǒng)籌、分析與整合了系統(tǒng)結(jié)構(gòu)的設(shè)計(jì)與業(yè)務(wù)需求分析2個(gè)階段的工作量,最終實(shí)現(xiàn)的具體功能有:菜單管理、餐桌管理、數(shù)據(jù)統(tǒng)計(jì)、訂單管理、打印機(jī)管理、點(diǎn)餐操作、訂單支付、多人點(diǎn)餐、歷史訂單。具體文件量如圖5-1所示:圖5-1系統(tǒng)文件圖5.2登錄實(shí)現(xiàn)登錄模塊采用的精細(xì)的權(quán)限控制,首先驗(yàn)證賬號(hào),在前端通過(guò)一次md5加密后此時(shí)的后端以對(duì)密碼不可見(jiàn),在密碼到達(dá)后端后再次進(jìn)行md5加密,在密碼與數(shù)據(jù)庫(kù)中的匹配成功后,獲取當(dāng)前賬號(hào)的所有角色,通過(guò)角色獲取角色權(quán)限,該權(quán)限將伴隨登入返回與存入緩存中,并授權(quán)數(shù)據(jù)token返回一并返回,在后續(xù)請(qǐng)求中都會(huì)對(duì)其調(diào)用的接口進(jìn)行校驗(yàn)同時(shí)請(qǐng)求必須攜帶有token令牌,token令牌對(duì)登入用戶起到單次登入有效時(shí)長(zhǎng)的限制。其主要代碼如下/*校驗(yàn)賬號(hào)和密碼是否通過(guò)*/StringstrPwd=CommonMapUtils.getString(mapParams,"pwd");if(!UserUtils.checkUserPwd(mapUser,strPwd)){returngetReturnFail("80001","賬號(hào)或密碼錯(cuò)誤!");}/*檢查賬號(hào)是否有效*/if(!UserUtils.checkUserState(CommonMapUtils.getInteger(mapUser,"account_state"))){returngetReturnFail("80002","賬號(hào)已鎖定或關(guān)閉!");}/*獲取用戶角色,并寫(xiě)入緩存中*/ IntuserId=CommonMapUtils.getInteger(mapUser,"user_id");StringroleIdStr=RoleUtils.getRoleIdByUserId(jdbcExec,userId);mapUser.put("role_id",roleIdStr);mapUser.remove("pwd");//移除密碼信息/*登陸成功,注冊(cè)信息到redis中*/StringaccountId=MD5Utils.getLoginToken(CommonMapUtils.getString(mapParams,"sessionId"));registerSession(accountId,mapUser);/*組裝返回信息*/Map<String,Object>mapRet=newConcurrentHashMap<>();mapRet.put("account",CommonMapUtils.getString(mapParams,"account"));mapRet.put("module_type_id",moduleTypeId);mapRet.put("user_name",CommonMapUtils.getString(mapUser,"user_name"));mapRet.put("uid",accountId);登錄界面如圖5-2所示:圖5-2系統(tǒng)登錄界面

通過(guò)賬號(hào)與密碼校驗(yàn)之后,隨即登錄到系統(tǒng)主界面。圖5-3為商家登入的主界面圖5-3商家主界面5.3菜單管理基本的實(shí)現(xiàn)的功能有:菜單分組管理、菜品管理。以下分成兩點(diǎn)詳細(xì)闡述具體實(shí)現(xiàn)代碼并附上界面截圖。菜單分組管理-商家進(jìn)入該界面后可以創(chuàng)建菜品的分類并設(shè)置顯示序號(hào),分組名稱上限10個(gè)字符,序號(hào)輸入框必須是數(shù)字且上限999,是否上架單選鈕默認(rèn)是,該單選鈕控制是否在客戶端顯示。輸入完成后點(diǎn)擊下方保存按鈕,即可對(duì)當(dāng)前輸入信息進(jìn)行保存:圖5-4菜單分組管理界面圖5-5菜單分組編輯界面添加菜品分類實(shí)現(xiàn)主要代碼如下:Map<String,Object>map=newConcurrentHashMap<>();map.put("member_id",CommonMapUtils.getInteger(mapParams,"member_id"));map.put("group_name",CommonMapUtils.getString(mapParams,"group_name"));map.put("number",CommonMapUtils.getInteger(mapParams,"number"));map.put("status",CommonMapUtils.getInteger(mapParams,"status"));map.put("is_del",StatusConstant.IS_DEL_NO);map.put("c_time",ComDateUtils.getUnixCurrTime());inta=jdbcExec.add(TableConstant.GROUP_TABLE,map);if(a<1){returnfalse;}returntrue;

菜品管理-當(dāng)商店管理員進(jìn)入系統(tǒng)后,進(jìn)入該頁(yè)面即可執(zhí)行對(duì)菜品的操作添加,刪除查看,編輯等。在添加操作中菜品分組下拉框與菜單分組管理聯(lián)動(dòng),在創(chuàng)建時(shí)也對(duì)輸入框單選鈕做了基礎(chǔ)的數(shù)據(jù)格式校驗(yàn),其中每一種菜品的序號(hào)在添加時(shí)都會(huì)校驗(yàn)序號(hào)在分組的唯一性,確保在客戶端排序時(shí)的準(zhǔn)確性。圖5-6菜品管理界面

圖5-7添加菜品界面添加菜品實(shí)現(xiàn)關(guān)鍵代碼如下:JdbcExecjdbcExec=newJdbcExec(conn);Map<String,Object>mapWhere=newLinkedConcurrentHashMap<>();mapWhere.put("member_id|=",memberId);mapWhere.put("dishes_name|=",dishesName);Map<String,Object>info=jdbcExec.getMapByWhere("t_e_dishes","dishes_id",mapWhere);if(!MapUtils.isEmpty(info)){returngetReturnFail("10003","已有重復(fù)菜品名稱。");}Map<String,Object>mapWhere2=newLinkedConcurrentHashMap<>();mapWhere2.put("member_id|=",memberId);mapWhere2.put("group_id|=",groupId);mapWhere2.put("number|=",number);Map<String,Object>info2=jdbcExec.getMapByWhere("t_e_dishes","dishes_id",mapWhere2);if(!MapUtils.isEmpty(info2)){returngetReturnFail("10003","已有重復(fù)菜品排序。");}jdbcExec.beginTrans();if(!DishesUtils.addDishes(jdbcExec,mapParams)){jdbcExec.rollback();Log.error("新增菜品失??!該商家ID為:"+memberId);returngetReturnFail("-","新增菜品失??!");}//提交事務(wù)jdbcEmit();5.4餐桌管理實(shí)現(xiàn)餐桌管理除了主要的增刪查改功能,其中包含主要功能每桌一個(gè)唯一的二維碼,該二維碼由微信平臺(tái)生成,二維碼內(nèi)保存有餐桌的編號(hào),在掃描后客戶端將進(jìn)入到該餐桌。該模塊也提供餐桌二維碼批量導(dǎo)出功能。具體操作界面如圖5-8所示。圖5-8餐桌管理界面圖5-8二維碼管理界面圖5-8創(chuàng)建餐桌界面生成餐桌二維碼關(guān)鍵實(shí)現(xiàn)代碼如下:L("accessToken"+accessToken);//二維碼攜帶信息memberId=memberId+TableConstant.ID_ENCRYPT_KEY;placeId=placeId+TableConstant.ID_ENCRYPT_KEY;//請(qǐng)求微信地址Stringurl="/wxa/getwxacode?access_token="+accessToken;StringsceneStr="memberId="+memberId+"&placeId="+placeId;Stringpath="pages/index/index?"+sceneStr;Map<String,Object>prams=newConcurrentHashMap<>();//auth2tokenprams.put("access_token",accessToken);prams.put("path",path);JSONObjectrequestJson=newJSONObject();requestJson.put("path",path);try{InputStreaminputStream=post(url,requestJson);if(Objects.isNull(inputStream)){L("inputStream為空");return"";}//二維碼地址生傳Oss服務(wù)Stringfilename="ORDERING/TABLE/QRCODE/"+placeId+".jpg";AliyunOSS.uploadImg2OSS(inputStream,filename);returnfilename;}catch(Exceptione){e.printStackTrace();}5.5數(shù)據(jù)統(tǒng)計(jì)模塊實(shí)現(xiàn)數(shù)據(jù)統(tǒng)計(jì)模塊的主要功能就是定期去統(tǒng)計(jì)某段時(shí)間的數(shù)據(jù),并以圖標(biāo)的方式顯示在頁(yè)面,該模塊采用了SpringBoot的scheduled模塊實(shí)現(xiàn)定時(shí)效果,主要統(tǒng)計(jì)訂單相關(guān)的數(shù)據(jù),統(tǒng)計(jì)時(shí)間范圍共有上一周與上個(gè)月的兩種類型,以定時(shí)統(tǒng)計(jì)的方式減少統(tǒng)計(jì)數(shù)據(jù)引起的性能問(wèn)題。其中界面也提供了時(shí)間段的查詢條件。相關(guān)操作界面如下圖所示。圖5-9訂單交易統(tǒng)計(jì)界面圖5-9訂單菜品統(tǒng)計(jì)界面統(tǒng)計(jì)實(shí)現(xiàn)關(guān)鍵代碼如下:/***cron表達(dá)式每日0點(diǎn)15分跑一次*/@Scheduled(cron="0150**?")publicvoidDishesStatistics(){DaoJDBC.excute(connection->{JdbcExecjdbcExec=newJdbcExec(connection);List<Map<String,Object>>info=getOrderInfo(jdbcExec);if(ListUtils.isEmpty(info)){returnnull;}//構(gòu)建查詢條件StringorderIdS=ComListUtils.getIdString(info,"order_id");Map<String,Object>mapWhere=newLinkedConcurrentHashMap<>();mapWhere.put("order_id|in",orderIdS);List<Map<String,Object>>dishesInfo=jdbcExec.getListByWhere("t_g_dishes_order","order_id,dishes_id,dishes_num",mapWhere);dishesInfo=ComListUtils.listMergeByKey(dishesInfo,"order_id",info,"member_id");Map<String,Object>statisticsMap=newConcurrentHashMap<>();//循環(huán)統(tǒng)計(jì)數(shù)據(jù)for(Map<String,Object>item:dishesInfo){intdishesNum=CommonMapUtils.getInteger(item,"dishes_num");intdishesId=CommonMapUtils.getInteger(item,"dishes_id");intmemberId=CommonMapUtils.getInteger(item,"member_id");Map<String,Object>map=CommonMapUtils.getMap(statisticsMap,String.valueOf(dishesId));if(MapUtils.isEmpty(map)){map=newConcurrentHashMap<>();}intnum=CommonMapUtils.getInteger(map,"num");num+=dishesNum;map.put("num",num);map.put("member_id",memberId);statisticsMap.put(String.valueOf(dishesId),map);}//生成批量插入sqlStringBuffersql=newStringBuffer("INSERTINTOt_s_dishes_rank(member_id,dishes_id,trade_num,stat_time)VALUE");for(Map.Entry<String,Object>entry:statisticsMap.entrySet()){Stringkey=entry.getKey();Map<String,Object>map=CommonMapUtils.getMap(statisticsMap,key);if(MapUtils.isEmpty(map)){continue;}StringmemberId=CommonMapUtils.getString(map,"member_id");Stringnum=CommonMapUtils.getString(map,"num");longtime=ComDateUtils.getUnixCurrDate()-3600*24;sql.append("('"+memberId+"','"+key+"','"+num+"','"+time+"'),");}StringinsertSql=sql.toString();insertSql=insertSql.substring(0,insertSql.length()-1);jdbcExec.beginTrans();//執(zhí)行插入操作intexec=jdbcExec.exec(insertSql);if(exec<0){jdbcExec.rollback();L("插入菜品統(tǒng)計(jì)表錯(cuò)誤");returnnull;}jdbcEmit();returnnull;});}

5.6訂單管理實(shí)現(xiàn)該模塊提供了訂單相關(guān)的操作,如多條件查詢訂單、查詢訂單詳細(xì)菜品、商家段加單操作、結(jié)算訂單、取消訂單。模塊內(nèi)容過(guò)多將分為以下多個(gè)小段描述。 (1).訂單管理主界面,該界面上方提供多條件查詢訂單記錄,列表顯示訂單的詳細(xì)數(shù)據(jù),列表右方顯示訂單的其它操作。具體如下圖5-10:圖5-10訂單管理主界面(2).訂單詳情彈窗,由訂單管理主界面-操作-查詢彈出此界面,該界面顯示訂單的菜品相關(guān)信息,該信息在訂單沒(méi)有結(jié)束前都可以通過(guò)加單的方式添加菜品。具體界面見(jiàn)圖5-11。圖5-11訂單詳情彈出框(3).加單管理彈出框,該框是由訂單管理主界面-操作-加單管理彈出此框,該框主要功能包含對(duì)訂單追加菜品功能,可選擇菜品并設(shè)置菜品的數(shù)量,選擇追加菜品按鈕在彈出框的上方,點(diǎn)擊追加菜品按鈕即彈出選擇菜品彈出框。具體界面見(jiàn)下圖:圖5-12加單管理彈出框界面圖5-12追加菜品彈出框界面(4)結(jié)算訂單彈出框,該框是由訂單管理主界面-操作-結(jié)算訂單彈出此框,該框主要功能包含對(duì)訂單的結(jié)算,其中在結(jié)算訂單有選擇支付方式單選鈕,在點(diǎn)擊立即支付后會(huì)彈出填寫(xiě)實(shí)付金額對(duì)話框。具體界面見(jiàn)下圖:圖5-13結(jié)算彈出框界面圖5-14立即支付彈出框界面5.7打印機(jī)管理界面打印機(jī)管理界面,該界面主要對(duì)第三方硬件進(jìn)行管理的界面內(nèi)部調(diào)用設(shè)備的接口時(shí)間打印小票與壓桌單的功能,其中提供是否打印小票或壓桌單單選鈕,硬件方提供的功能清除未打印訂單,操作列中提供刪除功能。具體界面如圖5-16所示。圖5-16打印機(jī)設(shè)置界面調(diào)用三方接口實(shí)現(xiàn)關(guān)鍵代碼如下:publicstaticMap<String,Object>sendBindToCloud(StringmachineCode,StringmachineSign){//打印機(jī)密鑰與編號(hào)StringcleintNo=SysTemConfig.PRINT_API_ID;StringcliSecret=SysTemConfig.PRINT_API_KEY;//構(gòu)建請(qǐng)求體ConcurrentHashMap<String,Object>pram=newConcurrentHashMap<>();pram.put("client_id",clientId);pram.put("machine_code",machineCode);pram.put("msign",machineSign);pram.put("accessToken",WXUtils.getToken(clientId,clientSecret));Longtime=CommonDateUtils.getUnixCurrTime();Stringsign=WXtUtils.creatSign(clientId,time,clientSecret);pram.put("sign",sign);pram.put("id",UUID.randomUUID());pram.put("timestamp",time);Stringurl="/printer/addprinter";//調(diào)用三方接口ConcurrentHashMap<String,Object>info=WXtUtils.sendCloudPost(url,pram);Stringres=CommonMapUtils.getString(info,"error");Map<String,Object>pm=newConcurrentHashMap<>();pm.put("sub_errno","1000"+res);interrorCode=CommonMapUtils.getInteger(info,"error");if(errorCode==18){//access_token過(guò)期,重新獲取WXtUtils.delCloudToken();returnsendBindToCloud(machineCode,machineSign);}if(errorCode>48){pm.put("sub_errmsg","添加失敗,可能打印機(jī)終端號(hào)或者終端密鑰不正確,請(qǐng)檢查!");}else{pm.put("sub_errmsg",CommonMapUtils.getString(info,"error_description"));}returnpm;};5.8點(diǎn)餐實(shí)現(xiàn)點(diǎn)餐操作的實(shí)現(xiàn)發(fā)生在客戶端,該操作伴隨著一系列的功能,如掃嗎進(jìn)入、購(gòu)物車、菜單分類。下文將對(duì)其進(jìn)行概括描述:(1).客戶端主界面,該界面是用戶掃碼后進(jìn)入的界面,該界面由左上角餐館名、我的右上角訂單跳轉(zhuǎn)按鈕、中間分類菜單、下方購(gòu)物車,右下方選好了進(jìn)入結(jié)算界面按鈕組成,其中分類菜單按商家端設(shè)置的序號(hào)排序,當(dāng)掃碼后如果該桌已有訂單存在將會(huì)加入該訂單從而實(shí)現(xiàn)多人共享訂單的功能。具體界面如下所示:圖5-17點(diǎn)餐主界面

圖5-18加入訂單彈框界面

圖5-19購(gòu)物車界面

圖5-20多人點(diǎn)餐提示效果界面當(dāng)多人點(diǎn)餐時(shí)左下角會(huì)提示出同桌的加餐人的頭像與加餐菜品,具體同步代碼如下://消息推送flushOrderStatus(){ varparm={ actoin:$api.flushOrderStatus, customer_id:this.customer_id } letjsonOb=JSON.stringify(parm) //請(qǐng)求獲取當(dāng)前訂單狀態(tài)信息 this.$http.request({ url:this.$api.url, method:'POST', data:jsonStr }).then((res)=>{ //如果有同桌添加記錄,提示加餐彈窗 if(res.data[0].notice_info.length!=0){ for(intk=0;i<res.data[0].notice_info.length;k++){ setTimeout(()=>{ this.messagesInfo.push(res.data[0].noticeInfo[i]) animationShow=true //定時(shí)器-加餐彈窗動(dòng)畫(huà) setTimeout(()=>{ animation.opacity(0).translateY(-200).step({ duration:4000 }) animationData=this.animation.export() setTimeout(()=>{ this.animationData=this.animation2.export() },0) },100) },i*1000) } } for(letkinthis.vegetableList){ this.vegetableList[k].vegeNumber=0 } //更新最新的購(gòu)物車 this.payCarList=res.data[0].info this.carList=res.data[0].info })}

5.9支付訂單支付訂單的具體實(shí)現(xiàn),由于是基于微信開(kāi)發(fā),調(diào)用的支付也只能是微信支付,當(dāng)在顧客端首頁(yè)點(diǎn)餐完成后點(diǎn)擊選好了按鈕,該按鈕會(huì)先彈出選擇就餐人數(shù)對(duì)話框,在選擇就餐人數(shù)后,即可進(jìn)入正式支付訂單界面,該界面會(huì)顯示訂單的菜品與合計(jì)價(jià)格,界面左下方按鈕可退回點(diǎn)餐界面繼續(xù)點(diǎn)餐,點(diǎn)擊界面右下方立即支付按鈕,即可調(diào)起微信支付界面,該支付由后端代碼生成訂單并返回訂單編號(hào),此訂單編號(hào)提供給顧客端作為調(diào)起微信支付的必要參數(shù)。詳細(xì)界面見(jiàn)下圖所示:圖5-21選擇就餐人數(shù)效果界面圖5-22訂單結(jié)算界面圖5-23支付界面

申請(qǐng)微信支付代碼實(shí)現(xiàn):publicstaticMap<String,Object>sendWxPay(Map<String,Object>orderData,StringopenId){//構(gòu)建申請(qǐng)訂單入?yún)oncurrentHashMap<String,Object>pram=newConcurrentHashMap<>();pram.put("a","payOnline");pram.put("i","0");pram.put("j",CommonMapUtils.getString(orderData,"total_money"));pram.put("q","2");pra

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論