基于uniapp校園服務(wù)平臺的設(shè)計與實(shí)現(xiàn)_第1頁
基于uniapp校園服務(wù)平臺的設(shè)計與實(shí)現(xiàn)_第2頁
基于uniapp校園服務(wù)平臺的設(shè)計與實(shí)現(xiàn)_第3頁
基于uniapp校園服務(wù)平臺的設(shè)計與實(shí)現(xiàn)_第4頁
基于uniapp校園服務(wù)平臺的設(shè)計與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

目錄12731摘要: DesignandImplementationofCampusServicePlatformBasedonUniappAbstract:Withtherapiddevelopmentandwideapplicationofinformationtechnology,theneedsofcollegestudentsinlearning,livingandentertainmenthaveshownanincreasinglydiversifiedtrend.Inordertomeettheseneeds,campustakeawayandcourierserviceplatformshaveemerged.Theplatformprovidesmanyconvenientservices,suchasstoreinformationinquiry,orderingofgoodsandtimelyassistance,creatingamoreconvenient,comfortableandcolorfulcampuslifeenvironmentforstudents.ThesystemadoptsUniappdevelopmenttechnologybasedonVue.jstowritethefront-endpageoftheplatform;Uniadmintobuildtheback-endoftheplatform;andUnicloudclouddevelopmenttechnologytodeveloptheback-endofthecloudfunction,cloudobjectandclouddatabase.Theapplicationofthesetechnologiesprovidesasolidguaranteefortheefficientoperationofthesystemandgooduserexperience.Userscanorderandpayforgoods,aswellaspostdeliveryinformation,etc.;merchantscanmanagethegoodsintheirstoresandprocessorders;helperscanearnalittleextramoneybyhelpingthem;administratorsareresponsibleformanagingtheinformationofthewholesystemtoensurestableoperationanddatasecurity.Thesystemsavestimeforstudentsorstaff,allowingthemtospendmoretimeontheirstudiesandotherimportantmatters.Inaddition,studentscanapplytobecomeerrandboystoearnextraincomebyprovidingpick-upanddeliveryservicestootherstudents,thusrelievingfinancialpressure.Forbusinessmen,thesystemnotonlyprovidesachannelforonlinesalesandexpandsbusinesscoverage,butalsoincreasessalesopportunitiesandrevenue.Atthesametime,thesystemalsopromotesamutual-helpatmosphereoncampus,strengthenscommunicationandinteractionamongstudents,andmakescampuslifemoreharmoniousandbetter.Keywords:campusserviceplatform;takeaway;express;Unicloud第7頁共=第7頁共=NUMPAGES45-639頁1.緒論1.1研究背景隨著互聯(lián)網(wǎng)和物流行業(yè)的快速發(fā)展,外賣和快遞服務(wù)在大學(xué)生生活中占據(jù)了重要地位。面對校園內(nèi)不斷增長的學(xué)生人數(shù)和高峰時段的擁擠問題,許多學(xué)生選擇外賣來解決餐飲需求。據(jù)調(diào)查,大約10%的學(xué)生頻繁依賴外賣,外賣雖然提供了很多方便,但也帶來了衛(wèi)生和校園安全問題REF_Ref18838\r\h[1]。因此,通過校園網(wǎng)站進(jìn)行外賣和快遞服務(wù)的交易顯得尤為關(guān)鍵,這不僅促進(jìn)了校園經(jīng)濟(jì)和快遞流通,還有助于保障師生的飲食和人身安全REF_Ref5908\r\h[2]。在教育領(lǐng)域下,國家鼓勵學(xué)生參與勤工儉學(xué),但學(xué)生在尋找兼職時面臨資源和時間安排的局限REF_Ref6149\r\h[3]。為了解決這些問題,校園服務(wù)平臺的出現(xiàn),為學(xué)生提供了多樣化的服務(wù),豐富了校園生活,并提高了校園管理效率。同時,它也為學(xué)校管理部門提供了制定相關(guān)服務(wù)管理規(guī)定的參考,以維護(hù)校園秩序和學(xué)生權(quán)益REF_Ref6228\r\h[4]。1.2國內(nèi)外研究現(xiàn)狀互聯(lián)網(wǎng)技術(shù)的革新推動了電子商務(wù)的蓬勃發(fā)展,特別在全球食品飲料行業(yè)的增長中起到了顯著作用REF_Ref6293\r\h[5]。OpenTable作為全球首個在線訂餐平臺,極大地提升了訂餐便捷性,滿足了消費(fèi)者需求REF_Ref6394\r\h[6]。在國際研究領(lǐng)域,外賣O2O模式的研究已較為成熟,覆蓋了行業(yè)發(fā)展趨勢、用戶滿意度和品牌分析等多個維度REF_Ref6450\r\h[7]。而在快遞服務(wù)領(lǐng)域,服務(wù)質(zhì)量評估尤為關(guān)鍵,Mentzer等學(xué)者通過擴(kuò)展SERVQUAL模型,強(qiáng)調(diào)了物流服務(wù)質(zhì)量的多維度重要性REF_Ref6522\r\h[8]。我國餐飲服務(wù)業(yè)以其龐大的市場規(guī)模和卓越的客戶體驗(yàn)引領(lǐng)全球REF_Ref6574\r\h[9]。隨著生活節(jié)奏的加快,外賣服務(wù)在校園中尤為受歡迎,市場規(guī)模迅速擴(kuò)大,2022年市場規(guī)模達(dá)9417.4億元REF_Ref13877\r\h[10]。此外,大學(xué)生網(wǎng)購比例高達(dá)96%,這一趨勢進(jìn)一步推動了校園快遞服務(wù)的發(fā)展REF_Ref30187\r\h[11]。在這一背景下,提升快遞服務(wù)的質(zhì)量對于增強(qiáng)消費(fèi)者的信任、維護(hù)客戶忠誠度以及推動整個快遞行業(yè)的健康發(fā)展具有至關(guān)重要的作用REF_Ref7133\r\h[12]。2.關(guān)鍵技術(shù)平臺使用基于Vue2.0的Uniapp框架實(shí)現(xiàn)前端頁面的開發(fā),Unicloud數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的存儲和管理,結(jié)合Uniadmin實(shí)現(xiàn)后端服務(wù)的搭建。這些技術(shù)搭配起來,能為各種行業(yè)開發(fā)應(yīng)用提供很牛的支持,而且用途很廣泛。Uniapp是一個用Vue.js這個技術(shù)做的開發(fā)工具,可以用一套代碼開發(fā)出多個平臺的應(yīng)用,就比如Web、iOS和Android等。同時還提供很多組件和接口可以更好的開發(fā)應(yīng)用。Vue是一個很好用又很火的JavaScript工具,可以用來快速搭建網(wǎng)站界面和那些只有一個頁面的應(yīng)用程序。在Vue2.0中,使用組件化特性和聲明式模板語法,能實(shí)現(xiàn)動態(tài)內(nèi)容更新和交互效果。Unicloud是一個可以在線編程的平臺,提供了多樣化的后臺服務(wù),比如可以存儲應(yīng)用數(shù)據(jù)的數(shù)據(jù)庫、能運(yùn)行后臺代碼的云函數(shù)、存放文件的云存儲等。并且可以用Unicloud提供的一些現(xiàn)成的接口,很容易地完成數(shù)據(jù)的存儲和處理工作,以及與前端頁面的交互。通過與Uniadmin結(jié)合,成功搭建后端服務(wù)。Uniadmin提供完整的管理工具和權(quán)限控制系統(tǒng),使后端開發(fā)和維護(hù)更輕松高效。這一結(jié)合讓平臺具備前后端一體化的解決方案,在前端頁面開發(fā)、數(shù)據(jù)存儲和管理以及后端服務(wù)搭建方面展現(xiàn)強(qiáng)大能力,為用戶提供高效、穩(wěn)定、安全的服務(wù)。3.需求分析 3.1需求描述本服務(wù)平臺致力于為學(xué)生們提供一個便捷、互助的校園生活環(huán)境。在學(xué)業(yè)壓力或校園高峰期的情況下,平臺提供了一種快速下單的解決方案,幫助學(xué)生們節(jié)省時間并減輕壓力。通過服務(wù)平臺,學(xué)生們能夠迅速地下訂單購買他們所需的物品,同時也可以幫助他人取送貨來獲得額外的收入。3.1.1功能需求(1)登錄/注冊模塊用戶在登錄或創(chuàng)建賬號時候,可以選擇移動號碼和驗(yàn)證碼很快的完成登錄注冊,同時用密碼也能登錄,以滿足不同用戶的需求。(2)外賣模塊用戶可以瀏覽校園內(nèi)外的商店信息,還可以把計劃購買的東西加到購物車?yán)?,這樣買東西就更方便。用戶可以挑自己喜歡的東西,然后在網(wǎng)上下單,還能用網(wǎng)上支付的方式交錢。用戶還可以查看自己的訂單目前的情況,如已接單、已送達(dá)等。用戶可以對訂單進(jìn)行評價。(3)服務(wù)代拿模塊用戶可以在平臺上發(fā)布自己需要幫拿的快遞信息。跑腿員可以在平臺上接受其他用戶發(fā)布的幫拿任務(wù),幫助其他用戶取送訂單的物品,并獲得相應(yīng)的報酬。(4)設(shè)置模塊用戶可以在個人中心輕松更新個人資料。用戶可以添加、修改、刪除送餐地址,確保外賣能夠準(zhǔn)確送達(dá)。還支持設(shè)置默認(rèn)地址,簡化下單流程。用戶可以進(jìn)行一系列操作來保障賬戶安全。用戶不僅可以設(shè)置或修改密碼,還能增加更多登錄方式。當(dāng)用戶希望成為跑腿員時,需要一些信息進(jìn)行實(shí)名認(rèn)證。用戶還可以詳細(xì)地描述軟件出現(xiàn)的問題并提交。管理員可以第一時間了解到問題的情況,并及時對軟件進(jìn)行修復(fù),以提升用戶體驗(yàn)。(5)商品管理模塊商家能夠便捷地上傳、修改和刪除菜品。借助此模塊,商家可以對菜品信息的精細(xì)管理。還能依據(jù)實(shí)際狀況,及時更新和調(diào)整菜品,以確保菜單時刻充滿新鮮感和吸引力。(6)訂單模塊賣家在收到顧客的訂單后,能夠清楚地查看到訂單的所有細(xì)節(jié),賣家還可以對這些訂單進(jìn)行后續(xù)的處理(7)后臺管理模塊后臺系統(tǒng)準(zhǔn)備了一個很全的管理界面,管理員可以在這個界面上用表格的形式查看用戶資料、訂單記錄等信息,還能添加、移除、更新和查找這些信息。管理員可以很方便地管理這些信息,掌握整個平臺的運(yùn)作狀況,確保平臺順暢運(yùn)行,服務(wù)質(zhì)量也能得到保障。3.1.2非功能需求(1)安全性:平臺擁有堅(jiān)固的安全防護(hù)措施,保障用戶的私人資料和交易信息得到妥善防護(hù),避免未授權(quán)的獲取、更改或者泄漏。(2)可靠性:平臺保持穩(wěn)定可靠的運(yùn)行狀態(tài),確保用戶能夠順利地下單、商家能夠及時接單、騎手能夠按時配送。系統(tǒng)具備可用性和容錯能力,以應(yīng)對可能的故障和異常情況。(3)擴(kuò)展性:為了適應(yīng)將來業(yè)務(wù)的增長和變化,平臺設(shè)計得很容易進(jìn)行擴(kuò)展,可以靈活地應(yīng)對新的業(yè)務(wù)需求和不同的使用場景。(4)用戶體驗(yàn):平臺的界面設(shè)計既簡潔又好看,操作起來也很容易上手,確保了用戶在使用過程中能有一個好的體驗(yàn)。3.2用例分析用例分析是軟件工程中識別系統(tǒng)功能需求的關(guān)鍵技術(shù),它通過模擬用戶交互來闡明系統(tǒng)的行為REF_Ref6642\r\h[13]。系統(tǒng)涉及四個主要角色:用戶、商家、跑腿員和管理員。分析將從用戶視角出發(fā),圍繞系統(tǒng)核心流程(如下單、接單、配送)及潛在的異常和擴(kuò)展場景,確保系統(tǒng)設(shè)計滿足高效、便捷的目標(biāo)。3.2.1用例圖用戶個人中心用例圖如圖3-1所示圖3-1用戶個人中心用例圖商家個人中心用例圖如圖3-2所示圖3-2商家個人中心用例圖下單用例圖如圖3-3所示。圖3-3訂單用例圖管理員用例圖圖3-5管理員用例圖接單用例圖如圖3-6所示圖3-6接單用例圖3.2.2用例描述表3-1“外賣下單”用例用例編號說明用例名稱UC1參與者用戶用例名稱外賣下單前置條件用戶已登錄校園服務(wù)平臺賬號,并進(jìn)入系統(tǒng)首頁?;玖鞒蹋?)用戶在主頁菜單中選擇“美食外賣”選項(xiàng),用例啟動。(2)平臺展示商品和店鋪的相關(guān)信息,用戶可以直接點(diǎn)擊“點(diǎn)購”或者“+”對心儀的菜品進(jìn)行下單。如數(shù)據(jù)庫連接失敗,進(jìn)入事件流e。(3)選好要下單的商品會再次顯示選擇的內(nèi)容,并進(jìn)行在線付款,付款失敗進(jìn)入事件流a。(4)付款成功,即下單成功,用例結(jié)束。后置條件如果用例順利完成,就會生成一個新的外賣訂單記錄。擴(kuò)展事件流a.提示賬戶余額不足,用例結(jié)束。異常事件流e.提醒數(shù)據(jù)庫連接失敗,用例終止。表3-2“快遞下單”用例用例編號說明用例名稱UC2參與者用戶用例名稱快遞下單前置條件用戶已經(jīng)進(jìn)入校園服務(wù)平臺,且有需要幫拿的快遞物品?;玖鞒蹋?)用戶在主頁中選擇“服務(wù)代拿”,然后點(diǎn)“快遞發(fā)布”,就跳到了發(fā)布快遞信息的頁面,用例啟動。(2)系統(tǒng)顯示快遞發(fā)布需要填寫的信息,如果快遞不止一個可以點(diǎn)擊“繼續(xù)添加”。(3)用戶可以點(diǎn)擊立即下單,系統(tǒng)將檢查必須填寫的數(shù)據(jù)是否已經(jīng)填寫完整。若不完整則進(jìn)事件流a1。(4)用戶支付費(fèi)用,支付成功,用例結(jié)束。若支付費(fèi)用不足進(jìn)入事件a2。后置條件如果用例順利完成,那么系統(tǒng)就會生成一個新的快遞訂單記錄。擴(kuò)展事件流a1.提示用戶填寫的快遞信息要么不符合規(guī)定,要么沒填全。a2.提示賬戶余額不足,用例結(jié)束。異常事件流無表3-3“接收訂單”用例用例編號說明用例名稱UC3參與者跑腿員用例名稱接收訂單前置條件跑腿員登錄進(jìn)入校園服務(wù)平臺,平臺中存在待幫拿的訂單?;玖鞒蹋?)在主頁菜單中點(diǎn)擊“服務(wù)代拿”選項(xiàng),在點(diǎn)擊“服務(wù)代拿”進(jìn)入訂單信息的界面,用例開始。(2)系統(tǒng)顯示出未被接單的訂單,顯示訂單的信息,如訂單地址、費(fèi)用、收貨地址等信息。如數(shù)據(jù)庫連接失敗,進(jìn)入事件流e。(3)跑腿員可以點(diǎn)擊訂單,查看訂單信息。(4)跑腿員點(diǎn)擊接受訂單,用例結(jié)束。如還未點(diǎn)擊接單,用戶取消接單,則進(jìn)入事件流a。后置條件跑腿員成功接單,并系統(tǒng)更新訂單狀態(tài)為已接單。擴(kuò)展事件流a.用戶取消訂單,那么這個訂單的信息就不會在界面上顯示,用例結(jié)束。異常事件流e.提醒數(shù)據(jù)庫連接失敗,用例終止。表3-4“接單”用例用例編號說明用例名稱UC4參與者商家用例名稱接單前置條件商家已進(jìn)入系統(tǒng),且有顧客下的訂單?;玖鞒蹋?)在主頁菜單中系統(tǒng)顯示訂單界面給商家,用例開始。如數(shù)據(jù)庫連接失敗,進(jìn)入事件流e。(2)商家查看訂單信息,系統(tǒng)顯示信息如菜品、數(shù)量、地址等信息。(3)商家接收訂單。用例結(jié)束。如果商家不愿意接這個單,進(jìn)入事件流a。后置條件跑腿員成功接單,并系統(tǒng)更新訂單狀態(tài)為已接單。擴(kuò)展事件流a.如果商家由于庫存不足或無法按時完成訂單等原因無法接受訂單,可以聯(lián)系用戶取消訂單,用例結(jié)束。異常事件流e.提醒數(shù)據(jù)庫連接失敗,用例終止。表3-5“接單”用例用例編號說明用例名稱UC5參與者商家用例名稱接單前置條件商家已進(jìn)入系統(tǒng),且有顧客下的訂單?;玖鞒蹋?)在主頁菜單中系統(tǒng)顯示訂單界面給商家,用例開始。如數(shù)據(jù)庫連接失敗,進(jìn)入事件流e。(2)商家查看訂單信息,系統(tǒng)顯示信息如菜品、數(shù)量、地址等信息。(3)商家接收訂單。用例結(jié)束。如果商家不愿意接這個單,進(jìn)入事件流a。后置條件接單成功,訂單狀態(tài)修改為已接單。擴(kuò)展事件流無異常事件流e.提醒數(shù)據(jù)庫連接失敗,用例終止。表3-6“商品管理”用例用例編號說明用例名稱UC6參與者商家用例名稱商品管理前置條件商家已登錄進(jìn)入系統(tǒng),并且打開了自己的店鋪界面?;玖鞒蹋?)商家查看商品列表,點(diǎn)擊懸浮按鈕想要添加新的商品,用例開始。(2)平臺展示商品的詳細(xì)信息,如商品名、價格等信息。如數(shù)據(jù)庫連接有問題,則進(jìn)入事件流e。(3)商家修改商品信息。如數(shù)據(jù)庫連接有問題,則進(jìn)入事件流e。(4)商家刪除商品。如數(shù)據(jù)庫連接有問題,則進(jìn)入事件流e。(5)商品管理成功,用例終止。后置條件商家成功地管理商品,那么商品的信息就會在系統(tǒng)里更新。擴(kuò)展事件流a.如果商家由于庫存不足或無法按時完成訂單等原因無法接受訂單,可以聯(lián)系用戶取消訂單,用例結(jié)束。異常事件流e.提示數(shù)據(jù)庫連接不上,用例終止。表3-7“資質(zhì)認(rèn)證”用例用例編號說明用例名稱UC7參與者商家用例名稱資質(zhì)認(rèn)證前置條件商家已登錄注冊系統(tǒng),并進(jìn)入系統(tǒng)?;玖鞒蹋?)商家完成登錄后,進(jìn)入資質(zhì)認(rèn)證頁面,用例開始。(2)資質(zhì)認(rèn)證分為三個頁面,商家需要填寫完整后進(jìn)入主頁,用例結(jié)束。如信息不完整進(jìn)入事件流a。后置條件資質(zhì)認(rèn)證成功,商家進(jìn)入系統(tǒng)。擴(kuò)展事件流a.提示商家提交的資質(zhì)材料不完整或不符合平臺要求,用例結(jié)束。異常事件流無表3-8“評論”用例用例編號說明用例名稱UC8參與者用戶用例名稱評論前置條件用戶已登錄系統(tǒng),并且有可以進(jìn)行評論的訂單?;玖鞒蹋?)用戶在個人訂單點(diǎn)擊了“待評論”的選項(xiàng),用例開始。(2)用戶開始對某個訂單進(jìn)行評論。(3)用戶在評論框里輸入他們想要表達(dá)的內(nèi)容或一些圖片等信息。(4)用戶提交評論。如數(shù)據(jù)庫連接有問題則進(jìn)入事件流e。(5)用戶完成輸入后,點(diǎn)擊提交按鈕,把評論發(fā)送出去,用例結(jié)束。后置條件如評論成功,則會創(chuàng)建新的評論信息。擴(kuò)展事件流a.提示商家提交的資質(zhì)材料不完整或不符合平臺要求,用例結(jié)束。異常事件流e.提示連接不上數(shù)據(jù)庫,用例終止。表3-9“修改信息”用例用例編號說明用例名稱UC9參與者商家、用戶用例名稱修改信息前置條件商家或用戶已登錄進(jìn)入系統(tǒng),并且有一些信息需要去修改?;玖鞒蹋?)商家或用戶打開校園服務(wù)商家平臺,并在在我的頁面中,可以對昵稱、頭像、收貨地址等信息進(jìn)行修改,用例啟動。(2)商家或用戶點(diǎn)擊了保存按鈕,成功地修改了需要更新的信息,那么這個測試用例就結(jié)束了。如果在這過程中數(shù)據(jù)庫連接出現(xiàn)了問題則進(jìn)入事件流e。后置條件一旦修改信息的操作成功,系統(tǒng)就會顯示出最新的信息。擴(kuò)展事件流無異常事件流e.提示連接不上數(shù)據(jù)庫,用例終止。表3-10“聯(lián)系商家”用例用例編號說明用例名稱UC10參與者用戶、跑腿員用例名稱聯(lián)系商家前置條件用戶或跑腿員已登錄系統(tǒng),并且有想要聯(lián)系的某個商家。基本流程(1)用戶、跑腿員選擇需要聯(lián)系的商家。用例開始。(2)用戶、跑腿員發(fā)起與商家的聯(lián)系,如通過聊天窗口、電話等方式。(3)商家收到用戶、跑腿員的聯(lián)系請求并進(jìn)行回應(yīng)。如數(shù)據(jù)庫連接有問題,則進(jìn)入事件流e。(4)用戶、跑腿員與商家進(jìn)行溝通交流成功,用例終止。后置條件如果成功地聯(lián)系上商家,就會創(chuàng)建一條新的聯(lián)系記錄。擴(kuò)展事件流無異常事件流e.提示連接不上數(shù)據(jù)庫,用例終止。表3-11“瀏覽商品”用例用例編號說明用例名稱UC11參與者用戶用例名稱瀏覽商品前置條件用戶登錄進(jìn)入校園服務(wù)平臺,并到達(dá)主頁?;玖鞒蹋?)在主頁菜單中美食外賣選擇選項(xiàng),用例開始。(2)系統(tǒng)顯示最新店鋪及菜品信息,可以點(diǎn)擊店鋪去瀏覽更多商品,點(diǎn)擊商品顯示更多詳情。如數(shù)據(jù)庫連接有問題,則進(jìn)入事件流e。(3)如果用戶選擇回到主頁,那么當(dāng)前的用例就結(jié)束了。后置條件如用例成功結(jié)束,什么信息也不會被修改。擴(kuò)展事件流無異常事件流e.提示連接不上數(shù)據(jù)庫,用例終止。3.3功能分析3.3.1實(shí)體類圖3-7實(shí)體類圖用戶類(user):包含用戶id、電話、昵稱、頭像、密碼,用戶可以瀏覽商品、商品下單、評論商品、提現(xiàn)/充值、修改信息。商家類(store):包含商家id、電話、昵稱、密碼、頭像,商家可以對信息進(jìn)行增刪改查、瀏覽評論、提現(xiàn)、修改信息。騎手類(exporders):包含用戶id、電話、姓名、班級、學(xué)號、學(xué)生證照、正觀照,跑腿員可以接單。管理員類(admin):包含管理員id、登錄賬號、密碼、昵稱,管理員擁有管理權(quán)限,可以處理和維護(hù)用戶的信息、商家信息、店鋪、商品、訂單、評論、提現(xiàn)。地址類(adders):包含地址id、用戶id、手機(jī)號、地址、昵稱、性別。評論類(reviews):包含評論id、用戶id、訂單id、內(nèi)容。店鋪類(shop):包含店鋪id、店名、商家id、店名、電話、地址、資質(zhì)信息、是否營業(yè)。商品類(goods):包含商品id、店鋪id、商品名、原價、現(xiàn)價、描述、照片。訂單類(takeout):包含訂單編號id、商品名、用戶id、、訂單類型、電話、地址id、騎手id、騎手移動電話、售價、商品編號id、代拿數(shù)據(jù)。3.3.2邊界類用戶邊界類:管理用戶登錄、外賣下單、快遞下單等接口,實(shí)現(xiàn)用戶與系統(tǒng)的交互。外賣界面類負(fù)責(zé)管理用戶購買商品,快遞界面類負(fù)責(zé)用戶快遞的發(fā)布,評論界面負(fù)責(zé)用戶對訂單的評論,信息界面負(fù)責(zé)管理用戶個人信息的管理,跑腿員界面類負(fù)責(zé)用戶申請成功跑腿員,登錄界面類管理負(fù)責(zé)用戶的登錄。圖3-8用戶邊界類商家邊界類:管理商家登錄、外賣訂單查看、商品信息等接口,實(shí)現(xiàn)商家與系統(tǒng)的交互。外賣訂單界面類負(fù)責(zé)商家查看訂單,商品界面類負(fù)責(zé)商家對商品的添加、修改、刪除,信息界面類負(fù)責(zé)商家的信息管理,評論界面類負(fù)責(zé)商家對商品評論的查看,登錄界面類負(fù)責(zé)管理商家的登錄。圖3-9商家邊界類管理員邊界類:管理管理員登錄、外賣訂單查看、商品信息查看等接口,實(shí)現(xiàn)系統(tǒng)和管理員的交互。登錄界面類管理負(fù)責(zé)管理員的登錄,訂單界面類負(fù)責(zé)查看和管理所有的訂單信息,評論管理類用來查看用戶對商品或服務(wù)的評論,用戶信息界面類用來添加、編輯或刪除用戶的信息,商家信息界面類用來添加、編輯或刪除商家的信息,商品界面類負(fù)責(zé)管理商品信息,意見反饋界面類負(fù)責(zé)管理軟件問題的信息。圖3-10管理員邊界類3.3.3控制類訂單控制類:對訂單特有的行為進(jìn)行封裝,有效的將訂單的實(shí)體類與邊界類分開。商品控制類負(fù)責(zé)商品界面功能的實(shí)現(xiàn),信息控制類負(fù)責(zé)用戶信息界面功能的實(shí)現(xiàn),商鋪控制類負(fù)責(zé)實(shí)現(xiàn)店鋪界面功能的實(shí)現(xiàn),快遞控制類負(fù)責(zé)快遞發(fā)布功能的實(shí)現(xiàn),評論控制類負(fù)責(zé)訂單評論功能的實(shí)現(xiàn),地址控制類負(fù)責(zé)地址功能的實(shí)現(xiàn),訂單控制類負(fù)責(zé)訂單功能的實(shí)現(xiàn),用戶實(shí)體類的職責(zé)是定義用戶特有的屬性和行為,商家實(shí)體類的職責(zé)是定義商家特有的屬性和行為。圖3-11訂單控制類商品控制類:對商品管理特有的行為進(jìn)行封裝,有效的將商品管理的實(shí)體類與邊界類分開。信息控制類負(fù)責(zé)負(fù)責(zé)處理和管理商家信息,商品控制類負(fù)責(zé)實(shí)現(xiàn)商品管理功能,商鋪控制類負(fù)責(zé)實(shí)現(xiàn)店鋪界面功能,商家實(shí)體類的職責(zé)是定義商家特有的屬性和行為。圖3-12商家控制類管理員實(shí)體類:對管理員特有的行為進(jìn)行封裝,有效的將管理員的實(shí)體類與邊界類分開。登錄控制類負(fù)責(zé)管理員登錄功能,用戶控制類負(fù)責(zé)實(shí)現(xiàn)管理員管理用戶信息功能,商家控制類負(fù)責(zé)實(shí)現(xiàn)管理員管理商家信息功能,訂單控制類負(fù)責(zé)實(shí)現(xiàn)管理員管理訂單處理訂單相關(guān)的事務(wù),評論控制類負(fù)責(zé)實(shí)現(xiàn)管理員管理用戶留下的評論,管理員實(shí)體類的職責(zé)是定義管理員特有的屬性和行為。圖3-13管理員控制類4.系統(tǒng)設(shè)計4.1總體結(jié)構(gòu)系統(tǒng)的功能模塊圖如圖4-1所示圖4-1功能模塊圖美食外賣模塊(1)店鋪:用戶登錄系統(tǒng)后,可以瀏覽店鋪信息。(2)商品信息:用戶找到想要了解的店鋪,可以點(diǎn)擊進(jìn)入店鋪,查看店里所有商品的詳細(xì)信息。(3)商品下單:顧客如果對某個商品感興趣,可以直接購買并下單。(4)聯(lián)系商家:如果顧客對商品存在疑問或者有其他問題,可以直接聯(lián)系店家進(jìn)行咨詢。服務(wù)代拿模塊(1)快遞發(fā)布:用戶可以對需要幫拿的快遞進(jìn)行發(fā)布,并支付相應(yīng)的跑腿費(fèi)。(2)快遞代拿:跑腿員可以瀏覽快遞訂單,幫助需要幫助的同學(xué)拿快遞,并得到一定的酬勞。(3)外賣代拿:跑腿員可以瀏覽外賣訂單,在去食堂時候順便幫拿外賣,并送到指定的地點(diǎn),并獲得一定的酬勞。(4)聯(lián)系用戶:跑腿員可以聯(lián)系用戶詢問關(guān)于訂單的問題。個人中心(1)我的訂單:用戶可以查看下單的商品以及訂單的狀態(tài)(2)評論:用戶可以對購買的商品進(jìn)行評價,分享對商品的滿意或者不滿意的地方;商家也可以通過查看顧客的評論來了解商品的受歡迎程度和存在的問題,進(jìn)而對商品進(jìn)行相應(yīng)的改進(jìn)或調(diào)整。(3)修改信息:所有用戶可以修改信息,如昵稱、頭像等信息。(4)余額:所有用戶可以錢包的余額進(jìn)行提現(xiàn)、充值。(5)意見反饋:所有用戶可以對系統(tǒng)出現(xiàn)的問題進(jìn)行提交。(6)賬號安全:所有用戶可以設(shè)置登錄密碼,當(dāng)不想要這個賬號,可以注銷賬號;用戶想成為跑腿員需要進(jìn)行實(shí)名認(rèn)證,填寫一些信息進(jìn)行申請;當(dāng)資質(zhì)認(rèn)證變更時,商家可以在資質(zhì)認(rèn)證這里修改信息。(7)收貨地址:用戶可以在這里設(shè)置收貨的地址,方便以后買東西時直接使用地址。(8)我的店鋪:商家可以根據(jù)實(shí)際情況對店鋪的信息進(jìn)行調(diào)整。店鋪管理(1)上架新貨:商家可以把的新菜品添加到店鋪里。(2)下架商品:如果有些商品不再出售,商家可以選擇把這些商品從店鋪上撤下來。(3)更新商品:當(dāng)商品的信息變更時,商家可以對這些商品的詳細(xì)信息進(jìn)行修改。(4)查看商品:商家可以隨時查看店鋪所有商品的信息。消息(1)發(fā)送消息:商家、跑腿員、用戶當(dāng)有什么問題時,可以通過發(fā)送消息去詢問對方。(2)接收消息:商家、跑腿員、用戶可以接收到對方給自己發(fā)送的消息,并可以回復(fù)對方的信息。后臺管理(1)用戶管理:管理員可以手動地對用戶的信息添加、移除、更新和查詢?nèi)婀芾碛脩糍~戶。(2)訂單管理:管理員可以對顧客訂單的信息進(jìn)行全面管理。(3)商品管理:管理員利用商品管理功能,能夠完成商品刪改查等基本操作。(4)處理提現(xiàn):管理員查看用戶提現(xiàn)的記錄,為用戶提供優(yōu)質(zhì)的服務(wù)。4.2運(yùn)行結(jié)構(gòu)系統(tǒng)運(yùn)行結(jié)構(gòu)圖如圖4-2所示圖4-2運(yùn)行結(jié)構(gòu)圖不同用戶通過界面發(fā)送請求,請求的操作由業(yè)務(wù)邏輯層進(jìn)行處理,并連接數(shù)據(jù)庫獲取信息,數(shù)據(jù)庫對數(shù)據(jù)進(jìn)行更新保存。4.3模塊設(shè)計(1)登錄登錄:用戶進(jìn)入平臺的登錄界面,輸入登錄信息,系統(tǒng)會檢查數(shù)據(jù)庫確認(rèn)用戶是否存在,如果是通過手機(jī)驗(yàn)證碼登錄,系統(tǒng)還會驗(yàn)證輸入的驗(yàn)證碼是否正確。一旦用戶信息或驗(yàn)證碼匹配,用戶就能成功登錄。圖4-3登錄時序圖(2)外賣下單外賣下單:用戶進(jìn)入店鋪界面,查看各種商品信息,系統(tǒng)連接店鋪表和商品表,顯示出各種店鋪和商品的信息,用戶點(diǎn)擊商品下單并進(jìn)行支付,支付成功進(jìn)入待收貨頁面。圖4-4外賣下單時序圖(3)快遞發(fā)布快遞發(fā)布:用戶進(jìn)入快遞發(fā)界面,并根據(jù)界面提示需要填寫的信息,填好信息,用戶點(diǎn)擊下單并支付,支付成功的訂單信息存儲到快遞訂單表里,返回結(jié)果。下單成功的跳到待收貨界面。圖4-5快遞發(fā)布時序圖(4)跑腿員搶單跑腿員搶單:跑腿員進(jìn)入服務(wù)代拿界面,查看訂單,系統(tǒng)查詢快遞或外賣表的訂單信息,并返回查詢的結(jié)果,跑腿員對訂單進(jìn)行接單,系統(tǒng)修改訂單的狀態(tài)并返回結(jié)果,跑腿員點(diǎn)擊送達(dá),系統(tǒng)再次修改訂單狀態(tài),并支付費(fèi)用給跑腿員。圖4-6跑腿員搶單時序圖(5)發(fā)布商品發(fā)布商品:商家進(jìn)入發(fā)布商品的頁面,按照頁面上的提示,商家需要填寫商品的各種信息,填好所有必要的信息進(jìn)行發(fā)布,系統(tǒng)連接商品信息表進(jìn)行存儲,并返回存儲結(jié)果。存儲好的的商品信息在店鋪界面進(jìn)行顯示。圖4-7發(fā)布商品時序圖4.4界面設(shè)計該平臺的登錄和注冊的頁面如圖4-8展示,向用戶展示了不同的登錄選項(xiàng)。用戶可以選擇使用手機(jī)驗(yàn)證碼來完成登錄注冊流程。如果用戶想使用密碼登錄,他們需要先進(jìn)入系統(tǒng),并在系統(tǒng)內(nèi)設(shè)置一個密碼后,才能啟用密碼登錄功能。圖4-8登錄注冊界面該系統(tǒng)的外賣訂餐界面如圖4-9所示,該界面展示了各個食堂的地址選擇,同時也展示了不同店鋪的信息。用戶也可以點(diǎn)擊進(jìn)入店鋪去瀏覽更多店鋪商品如圖4-10所示,展示了店鋪的商品、價格等信息。如果用戶對是否購買某個商品還拿不定主意,可以選擇將商品先加入購物車,如圖4-11所示。圖4-9外賣訂餐界面圖圖4-10店鋪商品圖圖4-11購物車界面該系統(tǒng)的快遞發(fā)布界面如圖4-12所示,列出了發(fā)布快遞信息時需要填寫的所有內(nèi)容,包括代拿的地址、配送的地址、取件碼、取件姓名等信息。圖4-12快遞發(fā)布界面該系統(tǒng)的服務(wù)幫拿界面如圖4-13所示,該界面展示用戶需要幫拿的東西,跑腿員可以選擇一個或多個進(jìn)行幫拿。跑腿員可以聯(lián)系要幫拿用戶如圖4-14所示,跑腿員可以發(fā)信息詢問想問的問題,更好的幫拿東西送到給用戶。圖4-13服務(wù)幫拿界面圖4-14聊天界面該店鋪商品界面如圖4-15所示,該界面展示了特色商品和普通商品,商品的商品名、價格、折扣等信息,商家可以添加更多的商品如圖4-16所示,填寫完商品所需的所有信息之后,點(diǎn)擊保存按鈕,就可以將新商品添加到系統(tǒng)中了。圖4-15商鋪商品界面圖4-16添加商品界面該系統(tǒng)的后臺界面如圖4-17所示,改界面顯示的各種表的信息,如用戶信息表、訂單信息表等進(jìn)行新增信息、查找信息、移除信息、修正信息等操作。圖4-17后臺信息界面4.5數(shù)據(jù)庫設(shè)計4.5.1數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計系統(tǒng)的實(shí)體有很多,下列舉例幾個重要的實(shí)體,用戶可以購買的商品會形成訂單,訂單會顯示到管理員、跑腿員和商家界面上,商家可以對商品進(jìn)行管理,訂單上的東西可以被跑腿員幫拿。用戶拿到東西后可以對東西進(jìn)行評價。系統(tǒng)的概念結(jié)構(gòu)圖如圖4-18所示。圖4-18概念結(jié)構(gòu)圖4.5.2數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計用戶表:(用戶id、手機(jī)號、昵稱、密碼、頭像、余額、姓名、頭像、專業(yè)班級、學(xué)號、學(xué)生證照、正面照、角色、賬戶狀態(tài))。店鋪表:(店鋪id、商家id、商品id、手機(jī)號、店名、樓層、店鋪類型、地址、詳細(xì)地址、店鋪照片、營業(yè)執(zhí)照、食品許可證照、身份正面照、身份反面照、營業(yè)時間)。訂單表:(訂單id、用戶id、店鋪id、商家id、商家電話、地址id、商品id、商家名稱、商家地址、收貨電話、收貨地點(diǎn)、收貨用戶昵稱、性別、店鋪名、商品名、商品照片、現(xiàn)價、原價、數(shù)量、份量、附加菜品數(shù)據(jù)、備注內(nèi)容、訂單原價、商品狀態(tài)、代拿數(shù)據(jù)、快遞狀態(tài)、訂單類型、訂單真實(shí)價格、支付方式、配送員id、配送員電話、配送時間、搶單時間、開始時間、結(jié)束時間、是否立即配送)。商品表:(商家id、商品id、種類、宣傳語、商品照片url、商品名、現(xiàn)價、原價、味道、份量、主料、輔料)。評論信息表:(評論id、用戶id、商家id、用戶頭像、用戶昵稱、店鋪名、商品id、商品名、是否匿名、總體評分?jǐn)?shù)、口味評分?jǐn)?shù)、包裝評分?jǐn)?shù)、評論內(nèi)容、評論照片)。聊天消息表:(消息id、發(fā)送者id、接收者id、消息種類、消息的預(yù)覽內(nèi)容、消息具體內(nèi)容、圖片路徑、聊天時間、是否接收、接收時間)。意見反饋表:(意見反饋id、用戶id、商家id、問題類型、問題場景、問題描述)。收貨地址表:(收貨地址id、用戶id、收貨電話、收貨地點(diǎn)、收貨人姓名、性別、設(shè)置默認(rèn))。余額表(金額表id、用戶id、總金額、變動類型、備注)購物車表(購物車id、用戶id、店鋪id、商家id、商品id、商品圖片、菜品名、現(xiàn)價、原價、數(shù)量、份量、附件選擇)4.5.3數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計 表4-1用戶表(user)字段名數(shù)據(jù)類型長度主鍵外鍵是否null說明user_idString11是否用戶idphoneString11否手機(jī)號nicknameString2否昵稱passwordString4否密碼headImgString11頭像balanceDouble否余額usernameString4否姓名majorClassString11否專業(yè)班級studentIdUrlString11否學(xué)生證照photoUrlString11否正面照表4-2店鋪表(shop)字段名數(shù)據(jù)類型長度主鍵外鍵是否null說明shop_idString11是否店鋪idstore_idString11是否商家idphoneString11否手機(jī)號shopnameString11否店名floorInt否樓層storetypeInt否店鋪類型addresstypeInt否地址addressString11否詳細(xì)地址shopImgString11否店鋪照片businessImgUrlString11否營業(yè)執(zhí)照FoodlicenUrlString11否食品許可照IdCardUrlString11否身份證正面照unIdCardUrlString11否身份證反面照shoptimetimestamp營業(yè)時間dishes_IdString11是商品id表4-3訂單表(takewayOrder)字段名數(shù)據(jù)類型長度主鍵外鍵是否null說明orderNoIdString11是否訂單idorderUserIdString11是否用戶idshop_IdString11是否商家idstroePhoneString11否商家電話addressIdString11是否收貨地址idphoneString11否手機(jī)號addressobject11否收貨地址userNameString11否收貨用戶昵稱sexbool2否性別Shop_IdString11是否店鋪idshopName_textString11否店鋪名shopName_addressString11否商家地址dishs_idString11是否菜品idmyimg_signatureImgString11否菜品照片signatureNameString8否菜品名XmoneyInt否現(xiàn)價YmoneyInt否原價dish_NumberInt否數(shù)量radioStrInt否附加選擇RemarksString11否備注內(nèi)容PickupcodeArray11否附加配菜PriceDouble否訂單原價AmountDouble否訂單真實(shí)價格FalgInt否支付狀態(tài)stateInt否菜品訂單狀態(tài)deliveryStatusobject11否代拿數(shù)據(jù)deliveryStatusInt否快遞訂單狀態(tài)wayBoolInt支付方式PersonnelIdString11是配送員idPersonnelPhoneString11配送員電話ordertimetimestamp 訂單生成時間timextimestamp配送時間orderGtimetimestamp搶單時間ordertypeString11訂單類型selcetBoolbool2是否立即配送表4-5商品表(comdishe)字段名數(shù)據(jù)類型長度主鍵外鍵是否null說明shopIdString11是否商家iddishes_IdString11是否商品iddishTypeString2否種類myimg_title_textString8否宣傳語myimg_signatureImgString11否菜品照片urlsignatureNameString11否商品名DmoneyString2否現(xiàn)價FmoneyString2否原價tasteString4否味道dish_measureInt否份量dish_packDouble2否打包費(fèi)ingredientsString11主料accessoriesString11輔料表4-6評論信息表(moreReviews)字段名數(shù)據(jù)類型長度主鍵外鍵是否null說明idString11是否評論iduserIdString11是否用戶idnicknameString11否用戶昵稱imgUrlArray11否用戶頭像businessIdString11是否商家idstoreNameString11否店鋪名dishIdString11是否菜品idsignatureNameString11否菜名checkedbool2是否匿名overallNumberInt總體評分?jǐn)?shù)tasteNumberInt口味評分?jǐn)?shù)量packageNumberInt包裝評分?jǐn)?shù)量contentString11評論內(nèi)容contentImgsarray11評論照片表4-7地址信息表(address)字段名數(shù)據(jù)類型長度主鍵外鍵是否null說明idString11是否地址iduserIdString11是否用戶idaddressString11否收貨地址userNameArray11否收貨人名稱phoneString11否收貨電話sexbool性別defaultbool是否默認(rèn)地址表4-8聊天信息表(chat)字段名數(shù)據(jù)類型長度主鍵外鍵是否null說明idString11是否聊天idsenderIdString11是否發(fā)送方賬號idreceiverIdString11是否接收方idchatModleInt否消息類型chatCententString11聊天的預(yù)覽內(nèi)容sendContentString11聊天具體內(nèi)容PathlistString11圖片的路徑chatTimetimestamp聊天時間chatBoolbool2是否接收Receptiontimetimestamp接收時間表4-9余額表(money)字段名數(shù)據(jù)類型長度主鍵外鍵是否null說明idString11是否收入iduseridString11是否用戶idzmoenyDouble否總的金額typeString11變動類型notesString11備注表4-10意見反饋表(opinion)字段名數(shù)據(jù)類型長度主鍵外鍵是否null說明idString11是否意見反饋idphoneString11是否用戶idquestionTypeBoolInt否問題類型questTypeBoolxInt否問題場景describeString11否問題描述5.系統(tǒng)實(shí)現(xiàn)及測試5.1系統(tǒng)開發(fā)/運(yùn)行環(huán)境5.1.1系統(tǒng)開發(fā)環(huán)境(1)硬件環(huán)境:開發(fā)設(shè)備為筆記本電腦,11thGenIntel(R)Core(TM)i5-1135G7@2.40GHz處理器,NVDIAGeForceMX4502G獨(dú)立顯卡,16.00GB的RAM運(yùn)行內(nèi)存,512GB的SSD固態(tài)硬盤存儲;(2)軟件環(huán)境:windows操作系統(tǒng)、Hbuilderx4.07、Node.js、vue.js、uni-app、uni-cloud、uni-admin。5.1.2系統(tǒng)運(yùn)行環(huán)境(1)服務(wù)器:11thGenIntel(R)Core(TM)i5-1135G7@2.40GHz處理器,NVDIAGeForceMX4502G獨(dú)立顯卡,16.00GB的RAM運(yùn)行內(nèi)存,512GB的SSD固態(tài)硬盤存儲;(2)數(shù)據(jù)庫:mongoDB云數(shù)據(jù)庫的serverless版。5.2系統(tǒng)模塊的實(shí)現(xiàn)5.2.1登錄注冊模塊用戶首次使用系統(tǒng),需要先進(jìn)行登錄注冊,系統(tǒng)提供便捷的登錄方式,即通過手機(jī)驗(yàn)證碼進(jìn)行登錄和注冊,用戶需要輸入手機(jī)號碼,收到手機(jī)驗(yàn)證碼后填寫驗(yàn)證碼點(diǎn)擊進(jìn)入系統(tǒng);當(dāng)有設(shè)置密碼,填寫手機(jī)號和密碼即可登錄系統(tǒng)。圖5-1驗(yàn)證登錄界面圖5-2密碼登錄界面主要代碼://

獲取短信驗(yàn)證碼方法async

getSmsCaptcha(scene,device_uuid,phone)

{

//

使用

where

查詢條件來查詢指定

opendb-sms

的數(shù)據(jù)

const

ress

=

await

verifyCodes.where({device_uuid:

device_uuid

}).orderBy('device_uuid','asc').limit(10).get()

//

預(yù)先生成新的驗(yàn)證碼數(shù)據(jù)

const

currentTimestamp

=

Math.floor(Date.now()

/

1000);

//

當(dāng)前時間戳(秒)

const

expirationTimestamp

=

currentTimestamp

+

(15

*

60);

//

當(dāng)前時間后15分鐘的時間戳

const

verificationCode

=Math.floor(1000

+

Math.random()

*

9000).toString()//

生成4位隨機(jī)數(shù)字驗(yàn)證碼//

新記錄到數(shù)據(jù)庫字段格式

const

newRecord

=

{

code:

verificationCode,

create_date:

new

Date(currentTimestamp

*

1000),

//

創(chuàng)建時間,需要轉(zhuǎn)換為毫秒

device_uuid:

device_uuid,expired_date:

new

Date(expirationTimestamp

*

1000),

//

過期時間,需要轉(zhuǎn)換為毫秒

mobile:

phone,

scene:

scene,

state:

0

//

設(shè)置狀態(tài)為未驗(yàn)證

}

if

(ress.data.length

>

0)

{

const

code

=

ress.data[0].code

const

expired_date=ress.data[0].expired_dateconst

timestamp

=

expired_date.getTime()/1000;console.log('查詢到的code:',

code,"過期時間:",timestamp,"當(dāng)前時間:",currentTimestamp)

if(

currentTimestamp<timestamp){return{code:

1,msg:

"請勿多次發(fā)送短信驗(yàn)證碼"}

}}//驗(yàn)證碼以過期重新發(fā)送for(var

i=0;i<ress.data.length;i++){

await

verifyCodes.doc(ress.data[i]._id).remove();

//

刪除驗(yàn)證碼數(shù)據(jù)

console.log("刪除成功

",i)

}

const

insertResult

=

await

verifyCodes.add(newRecord);

console.log(insertResult.id);

if

(insertResult.id)

{const

code=verificationCode;try{//

const

res

=

await

uniCloud.sendSms({//

appid:

'__UNI__C3C4E10',//

smsKey:

'ce28595d06bf13ccc8e55920f956695e',//

smsSecret:

'2dade917436c18bc8601b72ecbb96a17',//

phone:

phone,//

templateId:

'30371',//

data:

{//

code:

code//

}//

});var

res={code:0};console.log(res);if(res.code===0){return

{code:

0,msg:

"短信驗(yàn)證碼發(fā)送成功",data:code}}else{return

{code:

-1,msg:

"驗(yàn)證碼發(fā)送失敗",data:code}}}

catch

(err){return

{code:

-2,msg:

"服務(wù)器故障!"};}

}},//驗(yàn)證短信驗(yàn)證碼是否正確async

verify(scene,device_uuid,captcha)

{try

{

const

res

=

await

verifyCodes.where({

device_uuid:

device_uuid

}).orderBy('code',

'asc').limit(1).get();

if

(res.data.length

>

0)

{const

code

=

res.data[0].code;console.log('輸入的captcha',captcha)console.log('查詢到的captcha',code)console.log('device_uuid:',device_uuid)if

(code

===

captcha)

{

await

verifyCodes.doc(res.data[0]._id).remove();//

刪除驗(yàn)證碼數(shù)據(jù)return

{code:

1,msg:

"驗(yàn)證成功"

}}

else

{return

{code:

0,msg:

"驗(yàn)證失敗"

}}

}else{

return

{code:

-1,msg:

"未獲取驗(yàn)證碼"

}

}}

catch

(error)

{

console.error("發(fā)生異常:",

error);

return

{code:

-1,msg:

"服務(wù)器故障"

}}}5.2.2外賣下單用戶登錄系統(tǒng)后,可以美食外賣里面瀏覽商店,點(diǎn)擊商店可以瀏覽更多商品如圖5-3所示,用戶點(diǎn)擊“+”購買商品,選擇想購買的選擇就行加購如圖5-4所示,選擇支付方式完成訂單支付。圖5-3商店界面圖5-4商品下單界面主要代碼:async

pay(data)

{const

tran

=

await

DB.startTransaction();

//

開啟事務(wù)try

{//

支付前查詢訂單是否存在let

order

=

await

DB.collection('takeawayOrder').where({_id:

data.id,orderUserId:

data.user_Id,Falg:

0}).get();if

(order.affectedDocs

==

0)

return

{

//沒有找到訂單code:

1,

//code為1代表支付失敗message:

'訂單不存在'};if

(data.type

==

'wechat')

{

//

微信支付let

res

=

await

DB.collection('takeawayOrder').where({_id:

data.id,orderUserId:

data.user_Id,Falg:

0}).update({Falg:

1,state:

8});return

{code:

0,message:

'支付成功',res};}if

(data.type

==

'blance')

{let

money

=

await

DB.collection('UserTable').doc(data.user_Id).get();if

(!money.data[0].balance)

{

//

沒有找到用戶余額return

{code:

1,

//code為1代表支付失敗message:

'余額不足'};}let

zmoney

=

money.data[0].balance;if

(zmoney

>=

order.data[0].Amount)

{zmoney

-=

order.data[0].Amount;//

必須使用事務(wù)操作let

m

=

await

tran.collection('UserTable').doc(data.user_Id).update({balance:

zmoney

//

更新用戶余額});let

z

=

await

tran.collection('money').add({user_Id:

data.user_Id,zmoney:

order.data[0].Amount,type:

'reduce'

//減少})let

t

=

await

tran.collection('takeawayOrder').doc(data.id).update({Falg:

1,

//

修改訂單支付狀態(tài)state:

8});if

(m.updated

&&

t.updated)

{await

mit();return

{code:

0,message:

'支付成功'}}

else

{await

tran.rollback();return

{code:

1,message:

'支付失敗'}}}

else

return

{code:

1,

//code為1代表支付失敗message:

'余額不足'};}return

{code:

1,

//code為1代表支付失敗message:

'請選擇正確支付方式'};}

catch

(e)

{console.error(e)await

tran.rollback();

//回滾return

{code:

1,

//code為1代表支付失敗message:

'訂單不存在',err:

e.message};}},5.2.3訂單送達(dá)跑腿員搶單后,對訂單進(jìn)行配送,當(dāng)訂單已經(jīng)送達(dá)時,跑腿員可以點(diǎn)擊“送達(dá)”就可以完成這個訂單的幫拿,并將跑腿費(fèi)存入錢包。圖5-5訂單送達(dá)界面主要代碼:async

delivery2(data)

{const

tran

=

await

DB.startTransaction();

//事務(wù)try

{

//

異常捕獲let

res

=

await

DBJQL.collection('takeawayOrder').where({_id:

data._id,PersonnelId:

data.PersonnelId,state:

2}).get();

//

查詢到該訂單if

(res.affectedDocs

==

1)

{let

data

=

res.data[0];let

res1

=

await

tran.collection('UserTable').doc(data.PersonnelId).update({balance:

DBC.inc(data.DeliveryFee),})

//

給騎手配送費(fèi)let

res4

=

await

tran.collection('takeawayOrder').doc(data._id).update({state:

3,Falg:

2})

//

修改訂單狀態(tài)let

res5

=

await

tran.collection('money').add({userId:

data.PersonnelId,type:

'add',zmoney:

data.DeliveryFee,notes:

'訂單完成增加'})

//

添加騎手余額增加記錄if

(res1.updated

&&

res4.updated)

{await

mit();return

{code:

0,

//code為1代表失敗message:

'已送達(dá)',}}

else

return

{code:

1,

//code為1代表失敗message:

'操作失敗',}}return

{code:

1,

//code為1代表失敗message:

'操作失敗',}}

catch

(e)

{console.log(e);await

tran.rollback();

//

回滾取消操作return

{code:

1,

//code為1代表支付失敗message:

'訂單不存在',err:

e.message};}}5.2.4搶單跑腿員登錄系統(tǒng)后,在主頁點(diǎn)擊服務(wù)代拿,再點(diǎn)擊服務(wù)代拿選擇進(jìn)入服務(wù)中心,顯示了用戶需要幫拿的訂單如圖5-6所示,跑腿員可以瀏覽訂單選擇可以幫拿的訂單,點(diǎn)擊搶單即可幫拿。點(diǎn)擊訂單可以查看詳細(xì)的訂單詳情如圖5-7所示圖5-6服務(wù)代拿界面圖5-7訂單詳情界面主要代碼:asyncgrab(data){try{console.log(data);letres=awaitDB.collection('takeawayOrder').where({_id:data.id,PersonnelId:""}).update({PersonnelId:data.PersonnelId,PersonnelPhone:data.PersonnelPhone,state:1,orderGTime:newDate().getTime()})if(res.updated)return{code:0,//code為1代表失敗message:'搶單成功',}return{code:1,//code為1代表失敗message:'訂單已經(jīng)被別人搶走了~',}}catch(e){return{code:1,//code為1代表支付失敗message:'訂單不存在',err:e.message};}},5.2.5商家發(fā)布商品商家登錄后,進(jìn)入自己的店鋪頁面可以看到店里所有的商品,商家不僅可以可以上傳新的商品,還可以對原有的商品進(jìn)行編輯和更新。界面設(shè)計:圖5-8發(fā)布商品界面主要代碼://

入庫const

shop_Id

=

this.shops.shop_Id;const

dishes_Id

=

Getx.getCurrentTime().toString();const

dishType

=

this.dishItemIndex;//

const

myimg_title_text

=

this.signatureDish.myimg_title_text;const

myimg_signatureImg

=

this.signatureDish.myimg_signatureImg;const

signatureName

=

this.signatureDish.signatureName;const

Dmoney

=

this.signatureDish.Dmoney;const

Fmoney

=

this.signatureDish.Fmoney;const

taste

=

this.signatureDish.taste;const

dish_measure

=this.signatureDish.dish_measure;const

dish_pack

=

this.signatureDish.dish_pack;const

dish_preferential

=

this.signatureDish.dish_preferential;const

ingredients

=

this.signatureDish.ingredients;const

accessories

=

this.signatureDish.accessories;const

newDishData

={"shopId":shop_Id,"dishes_Id":dishes_Id,"dishType":dishType,"myimg_signatureImg":myimg_signatureImg,"signatureName":signatureName,"Dmoney":Dmoney,"Fmoney":Fmoney,"evaluate":80,"taste":taste,"dish_measure":dish_measure,"dish_pack":dish_pack,"dish_preferential":dish_preferential,"ingredients":ingredients,"accessories":accessories};console.log(newDishData);const

res

=

await

db_Comdishe.add(newDishData);5.2.6后臺管理 管理員能夠管理系統(tǒng)中的各種數(shù)據(jù)表,比如對商家信息進(jìn)行插入、剔除和更正等操作。界面設(shè)計:圖5-9后臺管理界面主要代碼:search()

{

const

newWhere

=

this.getWhere()

this.where

=

newWhere

this.$nextTick(()

=>

{

this.loadData()})

},

loadData(clear

=

true)

{

this.$refs.udb.loadData({

clear

})

},

onPageChanged(e)

{

this.selectedIndexs.length

=

0

this.$refs.table.clearSelection()

this.$refs.udb.loadData({

current:

e.current

})

},

navigateTo(url,

clear)

{

//

clear

表示刷新列表時是否清除頁碼,true

表刷新并回到列表第

1

頁,默認(rèn)為

true

uni.navigateTo({

url,

events:

{

refreshData:

()

=>

{

this.loadData(clear)

}

}})

},

selectedItems()

{

//

多選處理

var

dataList

=

this.$refs.udb.dataList

return

this.selectedIndexs.map(i

=>

dataList[i]._id)

},

delTable()

{

//

批量刪除

this.$refs.udb.remove(this.selectedItems(),

{

success:(res)

=>

{

this.$refs.table.clearSelection()}

})

},

selectionChange(e)

{

//

多選

this.selectedIndexs

=

e.detail.index

},

confirmDelete(id)

{

this.$refs.udb.remove(id,

{

success:(res)

=>

{

this.$refs.table.clearSelection()}})

},

sortChange(e,

name)

{

this.orderByFieldName

=

name;

if

(e.order)

{

this.orderby

=

name

+

'

'

+

orderByMapping[e.order]

}

else

{

this.orderby

=

''

}

this.$refs.table.clearSelection()

this.$nextTick(()

=>

{

this.$refs.udb.loadData()

})},

filterChange(e,

name)

{

this._filter[name]

=

{

type:

e.filterType,

value:

e.filter}

let

newWhere

=

filterToWhere(this._filter,

mand)

if

(Object.keys(newWhere).length)

{

this.where

=

newWhere

}

else

{

this.where

=

''}

this.$nextTick(()

=>

{

this.$refs.udb.loadData()

})

}5.3系統(tǒng)的測試5.3.1基本測試原理軟件測試調(diào)度在軟件開發(fā)中扮演著至關(guān)重要的角色,它確保了測試活動得到科學(xué)和合理的安排,對提升軟件質(zhì)量起著決定性作用REF_Ref6796\r\h[14]。有效的測試調(diào)度能夠提升測試效率,及時發(fā)現(xiàn)問題,減少缺陷風(fēng)險,增強(qiáng)軟件的可靠性和穩(wěn)定性,滿足用戶需求。測試的目的包括發(fā)現(xiàn)缺陷、提高質(zhì)量、驗(yàn)證功能、評估性能、增強(qiáng)信心、改進(jìn)開發(fā)流程、確保安全和兼容性,這些都是為了保障軟件的穩(wěn)定可靠運(yùn)行REF_Ref6835\r\h[15]。具體測試計劃是對每個模塊進(jìn)行單元測試。5.3.2測試環(huán)境硬件環(huán)境:Intel(R)Core(TM)i5-1135G7@2.40GHz2.42GHz處理器;軟件環(huán)境:Node.js、MicrosoftEdge、vue.js、uni-app、uni-cloud、uni-admin。5.2.3測試計劃表5-1測試計劃表日期測試用例3月27日-3月28日用戶登錄注冊測試3月29日-4月1日外賣下單測試4月2日-4月3日快遞發(fā)布測試4月4日-4月5日跑腿員接單測試4月6日-4月7日商家接單測試4月8日-4月9日商品管理測試4月10日-4月11日收貨地址測試4月12日-4月13日評論測試4月14日-4月15日余額測試4月16日-4月17日修改用戶信息測試4月18日-4月19日用戶聯(lián)系測試4月20日-4月21日意見反饋測試5.3.3測試用例由于待測試功能眾多,這里挑幾個關(guān)鍵的功能來作為測試的用例。表5-1登錄注冊功能測試用例名稱內(nèi)容測試項(xiàng)目登錄注冊測試優(yōu)先級高輸入數(shù)據(jù)一鍵登錄/手機(jī)號、驗(yàn)證碼/手機(jī)號、密碼執(zhí)行步驟1.系統(tǒng)獲取手機(jī)號,點(diǎn)擊登錄完成一鍵登錄2.輸入手機(jī)號,點(diǎn)擊獲取驗(yàn)證碼,將驗(yàn)證碼填寫,點(diǎn)擊登錄3.輸入手機(jī)號、密碼,點(diǎn)擊登錄預(yù)期結(jié)果登錄注冊成功表5-2外賣下單功能測試用例名稱內(nèi)容測試項(xiàng)目外賣下單測試優(yōu)先級高輸入數(shù)據(jù)商品信息執(zhí)行步驟1.選擇商品,點(diǎn)擊購買2.瀏覽購買信息3.選擇支付的方式,點(diǎn)擊下單預(yù)期結(jié)果購買成功表5-3快遞發(fā)布功能測試用例名稱內(nèi)容測試項(xiàng)目快遞發(fā)布測試優(yōu)先級高輸入數(shù)據(jù)快遞信息執(zhí)行步驟1.填寫快遞信息2.瀏覽快遞信息3.選擇支付的方式,點(diǎn)擊發(fā)布預(yù)期結(jié)果發(fā)布成功表5-4搶單功能測試用例名稱內(nèi)容測試項(xiàng)目搶單測試優(yōu)先級高輸入數(shù)據(jù)訂單信息執(zhí)行步驟1.瀏覽訂單信息2.點(diǎn)擊搶單預(yù)期結(jié)果搶單成功表5-5接單功能測試用例名稱內(nèi)容測試項(xiàng)目接單測試優(yōu)先級高輸入數(shù)據(jù)訂單信息執(zhí)行步驟1.瀏覽訂單信息2.點(diǎn)擊接單預(yù)期結(jié)果接單成功表5-5商品管理功能測試用例名稱內(nèi)容測試項(xiàng)目商品管理測試優(yōu)先級高輸入數(shù)據(jù)商品信息執(zhí)行步驟1.瀏覽商品信息2.對商品進(jìn)行增加、修改、刪除。3.點(diǎn)擊保存預(yù)期結(jié)果管理成功5.3.4測試過程表5-6測試過程用例編號測試功能說明預(yù)期結(jié)果測試結(jié)果是否通過1驗(yàn)證碼登錄輸入手機(jī)號、驗(yàn)證碼登錄成功與預(yù)期相同是2驗(yàn)證碼登錄輸入錯誤的驗(yàn)證碼提示驗(yàn)證碼錯誤與預(yù)期相同是3密碼登錄輸入手機(jī)號、驗(yàn)密碼登錄成功與預(yù)期相同是4密碼登錄輸入錯誤密碼提示密碼錯誤與預(yù)期相同是5外賣下單余額不足提示余額不足與預(yù)期相同是6外賣下單信息不完整提示需要填寫的與預(yù)期相同是7外賣下單未支付提示是否加入待付款與預(yù)期相同是8外賣下單提交訂單并完成支付回到商品頁面與預(yù)期相同是9快遞發(fā)布信息不完整提示需要填寫的與預(yù)期相同是10快遞發(fā)布余額不足提示余額不足與預(yù)期相同是11快遞發(fā)布提交訂單并完成支付到達(dá)待收貨界面與預(yù)期相同是12搶單點(diǎn)擊搶單搶單成功與預(yù)期相同是13搶單對搶單成功的取消取消成功與預(yù)期相同是14搶單聯(lián)系商家聯(lián)系成功與預(yù)期相同是15搶單聯(lián)系用戶聯(lián)系成功與預(yù)期相同是16接單點(diǎn)擊接單接單成功與預(yù)期相同是17接單對接單成功的取消取消成功與預(yù)期相同是18接單聯(lián)系用戶聯(lián)系成功與預(yù)期相同是19商品添加商品信息完整添加成功與預(yù)期相同是20商品添加商品信息不完整提示需要填寫信息與預(yù)期相同是21商品添加商品信息不符合規(guī)則提示信息不符合與預(yù)期相同是22商品修改商品信息完整修改成功與預(yù)期相同是23商品刪除商品刪除刪除成功與預(yù)期相同是5.3.5測試結(jié)果及分析表5-7測試結(jié)果分析表時間出現(xiàn)bug個數(shù)更正bug個數(shù)剩余bug個數(shù)3月27日5053月28日6563月29日8683月30日7873月31日9794月1日107124月2日1310154月3日1413174月4日1517154月5日1714184月6日1917204月7日2020204月8日2018224

溫馨提示

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

評論

0/150

提交評論