微信點餐系統(tǒng)的設(shè)計與實現(xiàn)_第1頁
微信點餐系統(tǒng)的設(shè)計與實現(xiàn)_第2頁
微信點餐系統(tǒng)的設(shè)計與實現(xiàn)_第3頁
微信點餐系統(tǒng)的設(shè)計與實現(xiàn)_第4頁
微信點餐系統(tǒng)的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

I緒論1.1選題背景及意義1.1.1選題背景中國是一個美食大國,我們的生活中又缺少不了飲食,據(jù)不完全統(tǒng)計,2018年餐飲行業(yè)收入首破四萬億元,達42716億元,可見有著巨大的市場。而平常的人工點餐和桌面級的點餐網(wǎng)站,都存在著效率低小,使用不便等問題。而微信的月活用戶已經(jīng)突破了10.8億,基于如此龐大的用戶量加上微信5.0后推出的公眾號,我們只需要開發(fā)一個微信點餐系統(tǒng),使其與微信公眾號對接,即可實現(xiàn)原來需要開發(fā)一個APP才能實現(xiàn)的功能。利用微信公眾平臺,商家可以直觀的向賣家展示自己的商品,買家也只需要關(guān)注公眾號就可以實現(xiàn)點餐,比起傳統(tǒng)的電話預(yù)定要方便快捷的多。再加上目前人們越來越喜歡使用手機進行點餐,特別是年輕用戶群體。在此基礎(chǔ)上研發(fā)的微信點餐系統(tǒng),可以讓商家快速的提升人氣,擁有自己的用戶,從而提高知名度。1.1.2選題意義本系統(tǒng)開發(fā)的目標(biāo)是實現(xiàn)微信點餐,通過微信公眾號,方便客戶購買商品,基于freemaker的后臺管理系統(tǒng)和基于vue的前端可以給用戶帶來很好的使用體驗,賣家通過PC端可以對商品,類目進行添加和修改,對商品進行上下架的操作,對訂單進行完結(jié),取消的操作,而買家可以在微信中自由選擇商品,填寫個人信息后點擊支付,我這次使用了微信支付,符合廣大消費者的使用習(xí)慣,同時買家和賣家都可以取消訂單,金額將原路返回到買家得到錢包。微信點餐系統(tǒng)要實現(xiàn)的功能非常多,最重要的就是訂單的生成和支付,生成訂單時要考慮庫存夠不夠,同時不能直接把金額傳給后端,只傳數(shù)量和商品id,其金額的操作全在后臺完成。微信點餐系統(tǒng)為用戶提供一個美觀,大方,快速的了解信息交流的頁面。微信點餐系統(tǒng)已成為零售的一個重要載體,對促進網(wǎng)絡(luò)媒體的廣泛應(yīng)用有著重要的現(xiàn)實。1.2國內(nèi)外研究現(xiàn)狀及發(fā)展趨勢計算機技術(shù)在美國等西方國家應(yīng)用發(fā)展較快,各行業(yè)在早期便開始融入計算機技術(shù),信息化點餐比我國國內(nèi)起步早。例如2007年德國開始出現(xiàn)無人餐廳,餐廳沒有服務(wù)員,由機器代替自動化運營。顧客可通過餐廳內(nèi)提供設(shè)備自行瀏覽菜單、自助點餐并完成付款。經(jīng)過調(diào)查,絕大部分顧客對該種用餐方式和環(huán)境表示滿意,餐廳內(nèi)良好的秩序和高效的服務(wù)表明了信息技術(shù)對餐飲行業(yè)帶來的革新。后來幾年,在日本、美國等國家有餐廳紛紛開始采用信息化的點餐技術(shù),隨著手機App開發(fā)熱潮的到來,不少餐廳開發(fā)屬于個企業(yè)的APP.顧客通過手機下載和安裝App即可完成點餐、預(yù)約點餐等,大大節(jié)約了人力成本和顧客等待的時間。國外餐飲業(yè)與信息技術(shù)結(jié)合主要分為有線點餐、無線點餐、移動智能端的無線點餐等階段。在國外,由于人們的時間觀念較強,對服務(wù)質(zhì)量的要求也較高,外國人經(jīng)常在用餐前打電話進行預(yù)訂。隨著人們生活節(jié)奏不斷加快,越來越多人考慮外出用餐較花費時間,于是便有了后來興起的網(wǎng)上點餐,商家送餐上門。這樣的點餐方式不僅大大節(jié)省了時間,商家的點餐過程還可以實現(xiàn)訂單化管理,便利且高效。網(wǎng)上訂餐與電話訂餐相比,顧客能更全面地了解菜單,還可以對比價格,進而選擇更加心儀的美食。網(wǎng)上訂餐主要通過商家建立的網(wǎng)頁讓顧客完成點餐過程,后來隨著嵌入式技術(shù)的發(fā)展和無線局域網(wǎng)的出現(xiàn),店內(nèi)點餐開始引入智能化的無線點餐設(shè)備。服務(wù)員可通過移動PDA完成餐廠內(nèi)的無線點餐,此點餐方式在一定程度上提高了餐廳的服務(wù)效率。1.3論文的主要工作內(nèi)容本論文的設(shè)計主要分為以下四個主要內(nèi)容和結(jié)構(gòu):(1)緒論部分:詳細闡明了本系統(tǒng)的研究意義和發(fā)展趨勢,這是我們設(shè)計該系統(tǒng)的背景和意義所在。(2)需求分析部分:主要對整個系統(tǒng)功能需求的評估和分析,這是系統(tǒng)設(shè)計的重要階段,只有在獲取到清晰的系統(tǒng)需求的基礎(chǔ)上我們才能設(shè)計出符合期望的系統(tǒng)。(3)系統(tǒng)設(shè)計部分:大致劃分出組成系統(tǒng)的物理元素,主要包括數(shù)據(jù)庫、系統(tǒng)E-R圖以及表的創(chuàng)建,在該階段中,需要我們透徹理解表之間的關(guān)聯(lián),進而設(shè)計出完整的E-R圖以及在數(shù)據(jù)庫中進行表的創(chuàng)建。(4)系統(tǒng)實現(xiàn)部分:主要展示系統(tǒng)的運行過程以及功能實現(xiàn)截圖,本階段要求系統(tǒng)已經(jīng)實現(xiàn),并且通過圖文的形式向他人展示我們的系統(tǒng)。需求分析和總體設(shè)計2.1可行性分析系統(tǒng)的可行性分析主要包括技術(shù)可行性、經(jīng)濟可行性和運行可行性。下面將介紹三種技術(shù)可行性。2.1.1經(jīng)濟可行性本系統(tǒng)開發(fā)只需要一臺配置還過得去的電腦和一個微信服務(wù)號就行,系統(tǒng)設(shè)計一旦完成就可以運行,所以,從經(jīng)濟可行性上分析,本微信點餐系統(tǒng)是可以開發(fā)的。2.1.2技術(shù)可行性微信點餐系統(tǒng)主要是使用Springbox和mysql開發(fā)的,因為SpringBoot是以Spring4.0誕生的,而引導(dǎo)就是引導(dǎo)的意思,也就是說,它的作用實際上是幫助開發(fā)者快速構(gòu)建Spring框架。因此,SpringBoot繼承了Spring優(yōu)秀的基因。它可以簡化代碼,簡化配置,簡化部署和簡化監(jiān)控,大大降低了開發(fā)的難度。該數(shù)據(jù)庫是用流行的MySQL、Java來支持MySQL的,經(jīng)過多年的開發(fā),MySQL有了很好的口碑。此系統(tǒng)在技術(shù)上是可行的。2.1.3操作可行性本微信點餐系統(tǒng)界面友好,操作簡單,易于維護,買家只要用過微信就能實現(xiàn)購買商品的操作,賣家只要有一定的計算機基礎(chǔ)就可以上手賣家管理系統(tǒng)。因此,從操作的角度來看,該系統(tǒng)的開發(fā)是可行的。2.1.4法律可行性本微信點餐系統(tǒng)在很多開發(fā)的技術(shù)上和資料上的使用都是合法的,而且本系統(tǒng)完完全全是自己完全設(shè)計的,并不會涉及到其他系統(tǒng)的一些知識產(chǎn)權(quán)等問題,所以在開發(fā)過程中是完全不會侵權(quán)而產(chǎn)生的糾紛。綜上所述,此系統(tǒng)在技術(shù)上、經(jīng)濟上、操作上的開發(fā)都是可行的。2.2需求分析所謂"需求分析",是指對要解決的問題進行詳細的分析,弄清楚問題的要求,包括需要輸入什么數(shù)據(jù),要得到什么結(jié)果,最后應(yīng)輸出什么??梢哉f,在軟件工程當(dāng)中的“需求分析”就是確定要計算機“做什么”,要達到什么樣的效果??梢哉f需求分析是做系統(tǒng)之前必做的。2.2.1功能需求概述該系統(tǒng)應(yīng)分為買家和賣家兩方面,所以總體功能圖大致如下:圖2-1買家系統(tǒng)業(yè)務(wù)圖2-2賣家系統(tǒng)業(yè)務(wù)2.3系統(tǒng)功能結(jié)構(gòu)數(shù)據(jù)流圖(DataFlowDiagram):簡稱DFD,它從數(shù)據(jù)傳遞和加工角度,以圖形方式來表達系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過程,是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達工具及用于表示軟件模型的一種圖示方法。如圖3-3圖2-3微信點餐系統(tǒng)數(shù)據(jù)流圖(總)2.3.1創(chuàng)建訂單功能分析圖2-4創(chuàng)建訂單IPO圖2-5創(chuàng)建訂單數(shù)據(jù)流(分)數(shù)據(jù)字典:數(shù)據(jù)項編號:101-01數(shù)據(jù)項名稱:商品id別名:商品的唯一id簡述:某商品的代碼類型及寬度:字符型,32位取值范圍:0000000000000001-9999999999999999數(shù)據(jù)項編號:101-02數(shù)據(jù)項名稱:商品類目id別名:商品類目的唯一id簡述:某商品類目的代碼類型及寬度:整型,11位取值范圍:00000000001-99999999999表2-1源點“買家用戶”詞條描述源點名稱:買家用戶別名:購物者簡述:對商品進行采購數(shù)據(jù)流:商品類目信息,商品信息數(shù)目:2表2-2終點“訂單管理”詞條描述源點名稱:訂單管理別名:無簡述:對訂單進行管理的接口數(shù)據(jù)流:生成訂單及詳情數(shù)目:1本功能實現(xiàn)買家創(chuàng)建訂單的功能,買家進入買家端首頁,此時,會自動獲取買家的信息,買家端會根據(jù)商品的狀態(tài)(是否在架)和商品的類目進行分類,然后顯示在首頁上,買家選購好商品后點擊,然后會根據(jù)用戶的openid,商品的數(shù)量生成一個訂單和多個訂單詳情寫入數(shù)據(jù)庫。2.3.2新增或修改類目功能分析圖2-6新增或修改類目IPO圖2-7新增或修改類目數(shù)據(jù)流(分)數(shù)據(jù)字典數(shù)據(jù)項編號:101-02數(shù)據(jù)項名稱:商品類目id別名:商品類目的唯一id簡述:某商品類目的代碼類型及寬度:整型,11位取值范圍:00000000001-99999999999表2-3源點“賣家用戶”詞條描述源點名稱:賣家用戶別名:商家簡述:對商品、商品類目、訂單等進行管理數(shù)據(jù)流:商品類目信息數(shù)目:1表2-4終點“商品類目管理”詞條描述源點名稱:商品類目管理別名:無簡述:對商品類目進行管理的接口數(shù)據(jù)流:生成類目信息數(shù)目:1本功能實現(xiàn)賣家對商品類目的管理,賣家進入類目管理后,創(chuàng)建,修改類目將根據(jù)是否傳入商品類目id進行切換,有商品類目id進入修改頁面,如果沒有則進入類目創(chuàng)建頁面。2.3.3完結(jié)或取消訂單功能分析圖2-8完結(jié)或取消訂單IPO圖2-9完結(jié)或取消訂單數(shù)據(jù)流(分)數(shù)據(jù)字典數(shù)據(jù)項編號:102-01數(shù)據(jù)項名稱:商品訂單id別名:商品訂單的唯一id簡述:某訂單的代碼類型及寬度:字符型,32位取值范圍:0000000000000001-9999999999999999表2-5源點“賣家用戶”詞條描述源點名稱:賣家用戶別名:商家簡述:對商品、商品類目、訂單等進行管理數(shù)據(jù)流:商品訂單信息數(shù)目:1表2-6終點“商品訂單管理”詞條描述源點名稱:商品訂單管理別名:無簡述:對商品訂單進行管理的接口數(shù)據(jù)流:生成訂單信息數(shù)目:1本功能實現(xiàn)對商品訂單的完結(jié)和取消,賣家進入訂單管理后,系統(tǒng)會根據(jù)定但的狀態(tài)進行判定,只有新訂單和已支付訂單可以進行完結(jié)和取消的操作,完結(jié)訂單后,系統(tǒng)將修改訂單狀態(tài),若進行取消訂單的操作,系統(tǒng)將判定訂單是否已支付,若已支付,將會把金額原路退回到買家的賬戶,若未支付,買家將不能再支付這個訂單,最后,系統(tǒng)將修改訂單的狀態(tài),若訂單為完結(jié)或取消的狀態(tài),賣家就不能對訂單進行完結(jié)或者取消的操作。2.3.4商品功能分析圖2-10增或修改商品IPO圖2-11新增或修改商品IPO圖2-12商品管理數(shù)據(jù)流(分)數(shù)據(jù)字典:數(shù)據(jù)項編號:101-01數(shù)據(jù)項名稱:商品id別名:商品的唯一id簡述:某商品的代碼類型及寬度:字符型,32位取值范圍:0000000000000001-9999999999999999表2-7源點“賣家用戶”詞條描述源點名稱:賣家用戶別名:商家簡述:對商品、商品類目、訂單等進行管理數(shù)據(jù)流:商品信息數(shù)目:1表2-8終點“商品信息管理”詞條描述源點名稱:商品信息管理別名:無簡述:對商品信息進行管理的接口數(shù)據(jù)流:生成商品信息數(shù)目:1本功能主要實現(xiàn)了賣家對商品信息的管理,賣家進入到商品信息管理頁面,可以對商品進行上下架的管理,若商品為上架,則只可以對它進行下架的操作,若商品為下架,則只能對它進行上架的操作。創(chuàng)建,修改商品將根據(jù)是否傳入商品id進行切換,有商品id進入修改頁面,如果沒有則進入商品創(chuàng)建頁面。2.3.5訂單支付與退款功能分析圖2-13微信支付IPO圖2-14微信退款I(lǐng)PO圖2-15微信支付與退款數(shù)據(jù)流(分)數(shù)據(jù)字典數(shù)據(jù)項編號:102-01數(shù)據(jù)項名稱:商品訂單id別名:商品訂單的唯一id簡述:某訂單的代碼類型及寬度:字符型,32位取值范圍:0000000000000001-9999999999999999表2-9源點“買家用戶”詞條描述源點名稱:買家用戶別名:購物者簡述:對商品進行支付與退款數(shù)據(jù)流:訂單信息數(shù)目:2表2-10終點“訂單管理”詞條描述源點名稱:訂單管理別名:無簡述:對訂單進行管理的接口數(shù)據(jù)流:生成訂單信息數(shù)目:1本功能主要實現(xiàn)了買家支付和退款的功能,買家創(chuàng)建訂單后進行支付,系統(tǒng)將判定頁面的金額和數(shù)據(jù)庫的金額是否一致,若一致將喚起微信支付的界面,買家支付成功后跳轉(zhuǎn)到支付成功界面,接下來可以對訂單進行退款,退款時將校驗當(dāng)前用戶openid與訂單的openid是否一致,若一致則可以進行退款。數(shù)據(jù)庫設(shè)計3.1數(shù)據(jù)庫概念設(shè)計3.1.1實體屬性分析畢業(yè)設(shè)計管理系統(tǒng)涉及到的實體對象有:商品(product)、訂單(order)、賣家(seller)、類目(category)等。下面呈現(xiàn)的是系統(tǒng)的主要實體對象及其屬性。(1)商品:商品id、商品名稱、商品單價、商品庫存、商品描述、商品小圖、商品狀態(tài)(上架、下架)、類目編號等。 商品庫存商品庫存商品單價商品單價商品描述商品描述商品名稱商品名稱商品id類目編號商品id類目編號商品商品圖3-1商品實體圖(2)訂單:買家名字、買家手機號、買家地址、買家微信openid、訂單總金額、訂單狀態(tài)、商品id、商品名稱、商品單價、商品數(shù)量、商品小圖等。買家地址買家地址買家手機買家手機號訂單總金額訂單總金額買家名字買家名字訂單狀態(tài)訂單狀態(tài)號訂單id訂單id訂單訂單圖3-2訂單實體圖(3)類目:類目id、類目名稱、類目編號、創(chuàng)建時間、修改時間創(chuàng)建時間類目編號創(chuàng)建時間類目編號號類目名稱類目名稱修改時間修改時間號類目id類目id類目類目圖3-3類目實體圖(4)賣家:賣家id、用戶名、密碼、openid、創(chuàng)建時間、修改時間。openid密碼openid密碼創(chuàng)建時間創(chuàng)建時間用戶名用戶名修改時間修改時間號賣家id賣家id賣家賣家圖3-4賣家實體圖3.1.2實體聯(lián)系圖圖3-5完整的數(shù)據(jù)庫E-R圖3.2數(shù)據(jù)庫邏輯設(shè)計數(shù)據(jù)庫設(shè)計工作在軟件開發(fā)中占有重要地位,在本系統(tǒng)主要用到的表有product_info-商品詳情表、product_category-商品類目表、order_master-訂單表、order_detail-訂單詳情表、seller_info-賣家信息表。下面呈現(xiàn)數(shù)據(jù)庫中幾個主要表邏輯結(jié)構(gòu)。3.2.1商品詳情表product_info商品詳情表product_info的結(jié)構(gòu)如表3-1所示。表3-1商品詳情表product_info的結(jié)構(gòu)表字段描述字段名稱數(shù)據(jù)類型數(shù)據(jù)長度允許空商品代號product_idvarchar320商品名稱product_namevarchar640商品價格product_pricedecimal8(2)0商品庫存product_stockint110商品小圖product_iconvarchar5121商品描述product_descriptionvarchar641商品狀態(tài)product_statustinyint31類目編號category_typeint110創(chuàng)建時間create_timetimestamp00修改時間update_timetimestamp00說明:上表中允許空一列1表示允許空,0表示不允許為空(下同)。3.2.2商品類目表product_category商品類目表product_category表結(jié)構(gòu)如表3-2所示。表3-2商品類目表product_category的結(jié)構(gòu)表字段描述字段名稱數(shù)據(jù)類型數(shù)據(jù)長度允許空類目代號category_idint110類目名字category_namevarchar640類目編號category_typevarchar110創(chuàng)建時間create_timetimestamp00修改時間update_timetimestamp003.2.3訂單表order_master訂單表order_master,表結(jié)構(gòu)如表3-3所示。表3-3訂單表order_master的結(jié)構(gòu)表字段描述字段名稱數(shù)據(jù)類型數(shù)據(jù)長度允許空訂單代號order_idvarchar320買家名字buyer_namevarchar320買家電話buyer_phonevarchar320買家地址buyer_addressvarchar1280買家openidbuyer_openidvarchar640訂單總金額order_amountdecimal8(2)0訂單狀態(tài)order_statustinyint30支付狀態(tài)pay_statustinyint30創(chuàng)建時間create_timetimestamp00修改時間update_timetimestamp003.2.4訂單詳情表order_detail訂單詳情表order_detail,表結(jié)構(gòu)如表4-3所示。表4-3訂單詳情表order_detail的結(jié)構(gòu)表字段描述字段名稱數(shù)據(jù)類型數(shù)據(jù)長度允許空詳情代號detail_idvarchar320訂單代號order_idvarchar320商品代號product_idvarchar320商品名稱product_namevarchar640商品價格product_pricedecimal8(2)0商品數(shù)量product_quantityint110商品小圖product_iconvarchar5121創(chuàng)建時間create_timetimestamp00修改時間update_timetimestamp003.3數(shù)據(jù)庫實現(xiàn)MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫系統(tǒng)使用最常用的數(shù)據(jù)庫管理語言--結(jié)構(gòu)化查詢語言(SQL)進行數(shù)據(jù)庫管理。通過NavicatforMySQL可以很方便地建立數(shù)據(jù)庫我、WOS(Wechatorderingsystem),在數(shù)據(jù)庫中定義數(shù)據(jù)表,建立表問關(guān)聯(lián)關(guān)系。在數(shù)據(jù)處理過程中,可以在基本表的基礎(chǔ)上建立查詢或視圖。通過NavicatforMySQL建立數(shù)據(jù)庫WOS效果圖如圖3-6所示。圖3-6NavicatforMySQL–WOS效果圖系統(tǒng)的實現(xiàn)4.1買家商品詳情頁面設(shè)計買家關(guān)注公眾號后選擇點餐進入主頁面,首頁包括定義的類目。上架的商品,簡潔明了,主界面如圖4-1所示。圖4-1商品詳情頁面該界面主要調(diào)用買家商品詳情,這個controller會返回一個json,前臺獲取json后顯示。同時,后臺進行判斷,看是否已存買家openid,如果沒有,將調(diào)用http://chenjianjun.top/sell/wechat/authorize?returnUrl=/#/,這個方法主要調(diào)用一個微信網(wǎng)頁授權(quán),首先微信公眾號里面添加網(wǎng)頁授權(quán)域名,如圖4-2,接下來根據(jù)微信開發(fā)文檔獲取code,在通過code換取網(wǎng)頁授權(quán)access_token,最后拉取用戶的信息,此過程通過第三方SDK進行操作,以減輕代碼量,只需要傳入公眾號的開發(fā)者ID(AppID)和開發(fā)者密碼(AppSecret)即可,在用戶的信息中獲取用戶openid,用作后面微信支付的判斷,最后微信支付即可。圖4-2網(wǎng)頁授權(quán)域名@GetMapping("/authorize")

publicStringauthorize(@RequestParam("returnUrl")StringreturnUrl){

//1.配置

//2.調(diào)用方法

Stringurl="http://chenjianjun.top/sell/wechat/userInfo";

StringredirectUrl=wxMpService.oauth2buildAuthorizationUrl(url,WxConsts.OAuth2Scope.SNSAPI_BASE,URLEncoder.encode(returnUrl));

("【微信網(wǎng)頁授權(quán)】獲取code,result={}",redirectUrl);

return"redirect:"+redirectUrl;

}

@GetMapping("/userInfo")

publicStringuserInfo(@RequestParam("code")Stringcode,

@RequestParam("state")StringreturnUrl){

try{

WxMpOAuth2AccessTokenwxMpOAuth2AccessToken=wxMpService.oauth2getAccessToken(code);

StringopenId=wxMpOAuth2AccessToken.getOpenId();

return"redirect:"+returnUrl+"?openid="+openId;

}catch(WxErrorExceptione){

log.error("【微信網(wǎng)頁授權(quán)】{}",e);

thrownewSellException(ResultEnum.WECHAT_MP_ERROR.getCode(),e.getError().getErrorMsg());

}

}//1.查詢所有的上架商品

List<ProductInfo>productInfoList=productService.findUpAll();

//精簡方法(java8,lambda)

List<Integer>categoryTypeList=productInfoList.stream()

.map(e->e.getCategoryType())

.collect(Collectors.toList());

List<ProductCategory>productCategoryList=categoryService.findByCategoryTypeIn(categoryTypeList);

//3.數(shù)據(jù)拼裝

List<ProductVO>productVOList=newArrayList<>();

for(ProductCategoryproductCategory:productCategoryList){

ProductVOproductVO=newProductVO();

productVO.setCategoryType(productCategory.getCategoryType());

productVO.setCategoryName(productCategory.getCategoryName());

List<ProductInfoVO>productInfoVOList=newArrayList<>();

for(ProductInfoproductInfo:productInfoList){

if(productInfo.getCategoryType().equals(productCategory.getCategoryType())){

ProductInfoVOproductInfoVO=newProductInfoVO();

BeanUtils.copyProperties(productInfo,productInfoVO);

productInfoVOList.add(productInfoVO);

}

}

productVO.setProductInfoVOList(productInfoVOList);

productVOList.add(productVO);

}returnResultVOUtil.success(productVOList);圖4-3微信網(wǎng)頁授權(quán)流程圖4.2買家商品購買支付和退款的設(shè)計用戶選擇好商品后進入支付界面圖4-3,在支付界面需要輸入聯(lián)系人,聯(lián)系電話和送餐地址,并顯示此次購買的商品詳情。在點擊支付后,會進行兩個操作,一是進行訂單的生成,再生成訂單時,將判定頁面中的聯(lián)系人,聯(lián)系電話,送餐地址,買家openid是否為空,如果為空,將拋出異常,若購物車為空,將提示購物車不能為空,前臺傳遞商品數(shù)量和商品價格,在后臺進行價格的計算并生成orderId,然后存入訂單表和訂單詳情表。在傳出一個orderId給支付的方法。二是喚起微信支付的頁面,根據(jù)微信的統(tǒng)一支付api的要求傳入訂單信息(openid,orderId,payTypeEnum,orderAmount,orderName),這里同樣使用第三方SDK,再把獲取到的數(shù)據(jù)寫入create.ftl中,喚起微信支付,由于支付成功的判斷由前端傳入不可靠,所以要在后臺進行微信異步通知,在異步通知里面判斷訂單是否存在,訂單的金額和數(shù)據(jù)庫的金額是否一致,返回微信處理結(jié)果。通過之后進入到支付成功界面圖4-4,此時買家可以進行退款,進行退款時,會先進行openid的判斷,退款人的openid要與支付時的openid一致,接下來返回庫存,更改訂單的支付狀態(tài),退款。退款成功界面如圖4-5。圖4-4待支付界面圖4-5支付界面圖4-6支付成功界面圖4-7退款成功界面functiononBridgeReady(){

WeixinJSBridge.invoke(

'getBrandWCPayRequest',{

"appId":"${payResponse.appId}",//公眾號名稱,由商戶傳入

"timeStamp":"${payResponse.timeStamp}",//時間戳,自1970年以來的秒數(shù)

"nonceStr":"${payResponse.nonceStr}",//隨機串

"package":"${payResponse.packAge}",

"signType":"MD5",//微信簽名方式:

"paySign":"${payResponse.paySign}"http://微信簽名

},

function(res){

//if(res.err_msg=="get_brand_wcpay_request:ok"){

////使用以上方式判斷前端返回,微信團隊鄭重提示:

////res.err_msg將在用戶支付成功后返回ok,但并不保證它絕對可靠。

//}

location.href="${returnUrl}"

});微信支付接口要求傳入appId、timeStamp、nonceStr、package、signType和paySign,微信會返回一個err_msg,其中包括get_brand_wcpay_request:ok支付成功get_brand_wcpay_request:cancel支付過程中用戶取消get_brand_wcpay_request:fail支付失敗這三種消息。4.3賣家管理的設(shè)計4.3.1賣家訂單模塊的設(shè)計賣家端進入訂單模塊后,如圖4-7,訂單根據(jù)生成日期排序,根據(jù)支付狀態(tài),如果為新訂單的話可取消訂單,點擊詳情進入訂單詳情,如圖4-8,若為新訂單,則可對訂單進行完結(jié)和取消的操作,如果訂單已支付,點擊取消會退款給買家。圖4-8訂單頁面圖4-9訂單詳情頁面4.3.2賣家商品模塊的設(shè)計賣家進入商品模塊,如圖4-8,可以簡潔明了的了解每個商品的信息,同時可以對他進行修改和新增的操作。當(dāng)點擊下架后,商品的操作會自動變成上架,點擊上架同理。點擊修改進入商品修改頁面如圖4-9,商品新增和修改公用一個頁面,區(qū)別在于是否傳入productId。圖4-10商品頁面圖4-11商品詳情、新增頁面4.3.3賣家類目模塊的設(shè)計賣家進入商品類目模塊,如圖4-9,可以簡潔明了的了解每個商品類目的信息,同時可以對他進行修改和新增的操作。點擊修改進入商品類目修改頁面如圖4-10,商品類目新增和修改公用一個頁面,區(qū)別在于是否傳入categoryId。圖4-12賣家類目頁面圖4-13賣家類目新增、修改頁面結(jié)論與展望通過這次的畢業(yè)設(shè)計,我發(fā)現(xiàn)了開發(fā)類似于微信點餐系統(tǒng)這樣的系統(tǒng)的時候,剛開始一定得制定好系統(tǒng)的流程,明白系統(tǒng)各方面的作用,制定各種解決方案,明確自己的目標(biāo),通過本系統(tǒng)的開發(fā),讓我對mysql、springboot、微信支付和網(wǎng)頁授權(quán)有了個更加深刻的印象,同時也擴展了我的視野,提升了我的計算機方面的的知識。首先在開發(fā)這個系統(tǒng)的時候,要對整個系統(tǒng)的流程有一個認(rèn)識,知道微信前后端是怎樣的一個通訊過程,以及怎樣把虛擬機,本機和手機三端調(diào)通。在進行代碼的編寫的時候,遇到了很多問題,因為采用了比較新的技術(shù),很多問題百度上根本查不到,只能自己去翻文檔,去看看源碼才能知道該怎么寫。在編寫完每個接口的時候,都得做一下單元測試,以防止代碼出了什么問題,這是個很好的方法,可以防止在系統(tǒng)總的運行的時候出了問題時難以下手。在進行微信支付的測試時,一開始微信前臺調(diào)取不到支付的方法,后來請教了同學(xué)和導(dǎo)師后,才知道要刷新一下前臺頁面,不然會一直讀取緩存。在最后系統(tǒng)能夠真正的運行的時候,讓我非常激動,產(chǎn)生了極大的自豪感和成就感,讓我又一次體驗到學(xué)習(xí)給我?guī)淼目鞓?。隨著系統(tǒng)接近了結(jié)束,我所開發(fā)的微信點餐系統(tǒng)也具備了一定的規(guī)模,但仍存在的許多不足,像多個用戶支付時的多線程問題,和邏輯上的一些問題,都具有很大的提升空間,同時,在整個開發(fā)的過程中,我學(xué)到了很多東西,而且這次的研究,也讓我做了我自己喜歡的東西。雖然說這一過程艱苦且漫長,但在一一克服其中的

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論