《基于SSM和SpringBoot商鋪系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》16000字_第1頁
《基于SSM和SpringBoot商鋪系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》16000字_第2頁
《基于SSM和SpringBoot商鋪系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》16000字_第3頁
《基于SSM和SpringBoot商鋪系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》16000字_第4頁
《基于SSM和SpringBoot商鋪系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》16000字_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

共3頁第1頁基于SSM和SpringBoot商鋪系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[摘要]隨著社會(huì)經(jīng)濟(jì)的發(fā)展,市場(chǎng)活力的上升,以及互聯(lián)網(wǎng)信息技術(shù)廣泛、深入地應(yīng)用到人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來越重要的作用。居家經(jīng)濟(jì)成為了一種新的經(jīng)濟(jì)模式。人們?cè)谌我鈺r(shí)間地點(diǎn)就可以通過網(wǎng)購進(jìn)行所需物品的交易。電子商城是居家經(jīng)濟(jì)模式的一個(gè)重要組成部分,依托于分布式開發(fā)技術(shù),集合了商品展示、商品挑選、購買支付等功能,為人們提供了一站式的網(wǎng)絡(luò)購物服務(wù)。系統(tǒng)搭建使用基于SSM框架,通過項(xiàng)目管理工具M(jìn)aven將三個(gè)框架整合在一起進(jìn)行項(xiàng)目構(gòu)建和依賴管理;系統(tǒng)同時(shí)使用面向服務(wù)的分布式技術(shù)。項(xiàng)目運(yùn)用SSM快速迭代出商鋪1.0,再結(jié)合SSM轉(zhuǎn)型成SpringBoot的思路,切換到商鋪2.0。云部署等實(shí)用技術(shù)點(diǎn)。本系統(tǒng)使用Eclipse開發(fā)工具進(jìn)行開發(fā)調(diào)試,前臺(tái)使用Html、Css、JavaScript以及SUIMobile快速實(shí)現(xiàn)響應(yīng)式頁面,數(shù)據(jù)使用Redis緩存,后臺(tái)使用Spring、SpringMVC、Mybatis框架進(jìn)行初步開發(fā),使用SpringBoot進(jìn)行升級(jí)改造。本系統(tǒng)使用MySQL來存取數(shù)據(jù)并實(shí)現(xiàn)相應(yīng)的增刪改查的功能。[關(guān)鍵字]:SSM框架,SpringBoot框架,商城。目錄1.引言 31.1項(xiàng)目開發(fā)目的 31.2.項(xiàng)目開發(fā)意義 31.3研究現(xiàn)狀 41.3.1國內(nèi)研究現(xiàn)狀 41.3.2國外研究現(xiàn)狀 42.系統(tǒng)需求分析 52.1系統(tǒng)需求概述 52.2系統(tǒng)需求分析 52.2.1登錄注冊(cè)功能需求分析 52.2.2商品搜索功能需求分析 62.2.3購物車功能需求分析 72.2.4訂單功能需求分析 82.2.5支付功能需求分析 92.2.6商品管理功能需求分析 102.2.7內(nèi)容管理功能需求分析 102.3系統(tǒng)非功能需求分析 113.系統(tǒng)概要設(shè)計(jì) 123.1系統(tǒng)邏輯架構(gòu)概要設(shè)計(jì) 123.2系統(tǒng)功能概要設(shè)計(jì) 133.2.1登錄功能概要設(shè)計(jì) 133.2.2注冊(cè)功能概要設(shè)計(jì) 133.2.3商品搜索功能概要設(shè)計(jì) 133.2.4購物車功能概要設(shè)計(jì) 133.2.5訂單功能概要設(shè)計(jì) 153.2.6商品管理功能概要設(shè)計(jì) 153.2.7內(nèi)容管理功能概要設(shè)計(jì) 153.3系統(tǒng)使用框架和技術(shù) 153.3.1MVC設(shè)計(jì)模式 163.3.2Spring+SpringMVC+MyBatis框架 163.4其他技術(shù) 223.4.1系統(tǒng)管理工具M(jìn)aven 223.4.2數(shù)據(jù)庫緩存Redis 234.數(shù)據(jù)庫設(shè)計(jì) 234.1數(shù)據(jù)庫設(shè)計(jì)原則 234.2數(shù)據(jù)庫E-R圖設(shè)計(jì) 244.3數(shù)據(jù)庫表的設(shè)計(jì) 245.詳細(xì)設(shè)計(jì) 305.1系統(tǒng)的基本流程 305.2店鋪信息界面 325.3商品管理界面 325.4類別管理界面 335.5消費(fèi)記錄頁面 345.6授權(quán)管理界面 345.7商城首頁 356.功能測(cè)試 366.1注冊(cè)登錄功能測(cè)試 366.2店鋪管理功能測(cè)試 366.3商品管理功能測(cè)試 376.4搜索功能測(cè)試 386.5綁定本地賬號(hào)密碼功能測(cè)試 396.6店員信息錄入測(cè)試 396.7地區(qū)查詢測(cè)試 397.總結(jié)與展望 397.1總結(jié) 397.2展望 40參考文獻(xiàn) 411.引言1.1項(xiàng)目開發(fā)目的 由于網(wǎng)絡(luò)信息技術(shù)日益發(fā)展壯大,逐漸廣泛、深入地應(yīng)用到人類社會(huì)的各個(gè)階層領(lǐng)域并發(fā)揮著相當(dāng)重要的作用。因此計(jì)算機(jī)軟件技術(shù)應(yīng)用于日常生活中是發(fā)展的必然。網(wǎng)上購物作為一種新的購物形式,正逐漸取代實(shí)體店購物,成為人們?nèi)粘Y徺I商品的方式和習(xí)慣。而消費(fèi)能力巨大的網(wǎng)購市場(chǎng)正催生著線上商城的發(fā)展。電子商城不斷改進(jìn)自身的架構(gòu),順應(yīng)用戶對(duì)于商城的要求。作為計(jì)算機(jī)應(yīng)用不可或缺的一部分,將大量復(fù)雜的數(shù)據(jù)交給計(jì)算機(jī)來處理,有著手工處理所無法企及的特點(diǎn)。這些特點(diǎn)能夠極大程度的減少人工任務(wù)量從而提升信息管理的速度及質(zhì)量,是真正意義上的合理利用資源。1.2.項(xiàng)目開發(fā)意義網(wǎng)絡(luò)商城是指通過計(jì)算機(jī)互聯(lián)網(wǎng)技術(shù)搭建而成的電子交易平臺(tái)。用戶通過網(wǎng)絡(luò)商城進(jìn)行網(wǎng)上下單和網(wǎng)上交易。在電子商城,人們可以享受同在實(shí)體店一樣的服務(wù)。通過瀏覽商品詳情了解商品的信息,獲取商品的價(jià)格、圖片甚至商品規(guī)格;通過購物車功能,像實(shí)體店的購物車一樣,將心儀的商品放入購物車;通過虛擬支付,在線支付商品訂單,無需花費(fèi)多余的路程、時(shí)間和金錢,隨時(shí)可以進(jìn)行交易;可以通過一鍵退款,將不合適的商品退貨,避免了人工的交流成本;通過瀏覽店鋪的信譽(yù)指數(shù)、開店年限和商品的評(píng)價(jià)詳情,獲得欲購買商品更多有價(jià)值的信息,使得選購的商品擁有更加可靠的來源和放心的品質(zhì)。因此在全球經(jīng)濟(jì)飛速發(fā)展,經(jīng)濟(jì)一體化的大背景下,人們消費(fèi)的需求逐年上升,對(duì)消費(fèi)的便捷性和快速性也有著越來越高的要求。人們通過足不出戶的方式任意時(shí)刻地點(diǎn)的進(jìn)行消費(fèi)購物。在家收取貨品、一鍵下單、一鍵支付、一鍵退款成了人們習(xí)慣的消費(fèi)方式。用戶的大規(guī)模網(wǎng)購需求使電子商城在服務(wù)體驗(yàn)等環(huán)節(jié)中加速發(fā)展的同時(shí),也對(duì)電子商城的硬件架構(gòu)提出了更高的要求。一方面在大數(shù)據(jù)時(shí)代,網(wǎng)站需要對(duì)大量的數(shù)據(jù)進(jìn)行存儲(chǔ)、分析和處理。比如面對(duì)不斷增長(zhǎng)的用戶,網(wǎng)站的用戶管理功能需要存儲(chǔ)用戶的個(gè)人信息,存儲(chǔ)用戶的行為信息用于網(wǎng)站對(duì)特定用戶進(jìn)行特定化的服務(wù);商城規(guī)模的增加,使得商品種類和商品數(shù)量也在增加,這些都需要網(wǎng)站進(jìn)行合理化的存儲(chǔ)分配,來保證數(shù)據(jù)存儲(chǔ)的安全性、訪問的及時(shí)性、可靠性和可擴(kuò)展性。另一方面,網(wǎng)站本身需要根據(jù)業(yè)務(wù)的需求時(shí)時(shí)更新,靈活的架構(gòu)不僅要支撐當(dāng)前的業(yè)務(wù),也需要應(yīng)對(duì)未來的挑戰(zhàn),而健壯的架構(gòu)需要保證不停歇的為消費(fèi)者提供服務(wù),不出現(xiàn)無法訪問、頁面錯(cuò)誤、丟失數(shù)據(jù)甚至宕機(jī)的情況。鑒于互聯(lián)網(wǎng)的優(yōu)勢(shì),我決定以使用SSM框架和SpringBoot框架做出一個(gè)百貨商鋪系統(tǒng)。1.3研究現(xiàn)狀1.3.1國內(nèi)研究現(xiàn)狀我國的網(wǎng)絡(luò)購物的背景不長(zhǎng),第一筆成功交易的訂單是1998年3月6日下午3:20,隨后中國的網(wǎng)絡(luò)購物才逐步出現(xiàn)在大眾的視野中。1999年底,互聯(lián)網(wǎng)開始沸騰,國內(nèi)開始有300多家網(wǎng)絡(luò)公司從事B2C這個(gè)行業(yè)。2000年,遞增至700余家,但讓人熟知的卻僅三四家。直至SARS的出現(xiàn),人們才開始熱愛上了足不出戶的購物方式,于是,購物網(wǎng)站開始逐漸的成功,從而到發(fā)展了今天。如今的購物網(wǎng)站主要有以下幾個(gè)發(fā)展優(yōu)勢(shì):(1)商品送貨上門、購買快捷方便。(2)價(jià)格低廉、優(yōu)勢(shì)明顯。(3)商品種類齊全、可購買到當(dāng)?shù)貨]有的商品。(4)節(jié)約時(shí)間、提高效率。(5)交易透明、信息公開。1.3.2國外研究現(xiàn)狀在歐美等信息化程度較高的國家和地區(qū),相較于國內(nèi)有著更完善的產(chǎn)權(quán)保護(hù)和物流配送流程。這使得國外的網(wǎng)絡(luò)購物得以安全飛速的成長(zhǎng)。調(diào)查表明,美國的家庭已經(jīng)習(xí)慣于在網(wǎng)上購物?;ヂ?lián)網(wǎng)信息量大,傳播迅速,而且信息傳遞不受時(shí)空的限制,可以不限時(shí)間地點(diǎn)且不需要人力就可以提供銷售服務(wù)。在法、德等歐洲國家,就二手類交易平臺(tái)對(duì)于整個(gè)電子商務(wù)所產(chǎn)生的營業(yè)額可占電子商務(wù)總額的1/8,在美國則已高達(dá)1/6以上,而歐美國家網(wǎng)上電子商務(wù)的開展也不過才十幾年的時(shí)間。2.系統(tǒng)需求分析2.1系統(tǒng)需求概述系統(tǒng)分為前臺(tái)和后臺(tái)兩個(gè)子類系統(tǒng),用戶分為普通用戶和系統(tǒng)管理員。前臺(tái)系統(tǒng)為商城操作系統(tǒng),用于向用戶展示商品頁面,提供搜索工具。前臺(tái)頁面包括地區(qū)分類、商品分類、商品圖片、商品價(jià)格等基本信息,搜索工具提供地區(qū)和商品的搜索服務(wù)。前臺(tái)系統(tǒng)對(duì)普通用戶進(jìn)行服務(wù):普通用戶區(qū)分為注冊(cè)和未注冊(cè)用戶。未注冊(cè)的用戶僅僅可以搜索瀏覽商品、查看店鋪;注冊(cè)用戶且已登錄的用戶可以瀏覽添加商品、店鋪、查看購物車和訂單信息、支付購買商品;注冊(cè)但未登錄用戶在使用購物車、訂單功能時(shí)需要先進(jìn)性登錄;登陸時(shí)需要輸入賬號(hào)密碼;下訂單時(shí)需要填寫提交相關(guān)收貨信息才能進(jìn)行支付操作。后臺(tái)系統(tǒng)為管理系統(tǒng)。系統(tǒng)管理員登錄后臺(tái)管理系統(tǒng),可以選擇相關(guān)選項(xiàng)對(duì)系統(tǒng)進(jìn)行管理,不同選項(xiàng)按鈕提供不同的功能,包括提供地區(qū)分類管理、商品管理、商品分類管理等功能。具體系統(tǒng)功能劃分如圖2-1所示。圖2-1系統(tǒng)功能劃分2.2系統(tǒng)需求分析2.2.1登錄注冊(cè)功能需求分析登錄注冊(cè)功能是商城基本功能,商城通過保存注冊(cè)用戶的信息管理用戶,為用戶提供完整的服務(wù),同時(shí)可以通過統(tǒng)計(jì)用戶的注冊(cè)量和訪問量來判斷用戶行為,根據(jù)用戶行為對(duì)商城進(jìn)行改進(jìn),促使商城不斷的發(fā)展。未登錄的用戶屬于游客,可以使用的功能是:系統(tǒng)的瀏覽功能,部分的購物車功能,訂單和支付功能無法使用;已登錄用戶成為該系統(tǒng)的會(huì)員,前臺(tái)全部的功能都對(duì)會(huì)員進(jìn)行開放。(1)游客輸入網(wǎng)站地址進(jìn)入商城首頁,選擇“注冊(cè)”按鈕,隨后系統(tǒng)跳轉(zhuǎn)到注冊(cè)管理頁面,用戶填寫相關(guān)個(gè)人信息進(jìn)行注冊(cè),如果信息合法則提示“注冊(cè)成功”,并跳轉(zhuǎn)到登錄頁面;反之提示“注冊(cè)失敗”,顯示非法數(shù)據(jù)位置,引導(dǎo)用戶重新注冊(cè)。(2)已注冊(cè)用戶點(diǎn)擊“登錄”進(jìn)行系統(tǒng)登錄,并跳轉(zhuǎn)到登錄頁面,用戶填寫賬號(hào)密碼登錄,填寫正確提示“登錄成功”;反之提示“登錄失敗”,用戶重新登錄。用例圖如圖2-2所示。圖2-2注冊(cè)登錄用例圖2.2.2商品搜索功能需求分析搜索功能為用戶提供快速便捷的查找商品的服務(wù),在搜索框中輸入名稱或關(guān)鍵字即可獲得目標(biāo)商品的信息。搜索后系統(tǒng)直接顯示出符合搜索條件的商品,向用戶展示商品的詳情頁面;用戶搜索商品的關(guān)鍵字,系統(tǒng)顯示模糊查找到的相關(guān)商品列表,用戶在列表中選擇目標(biāo)商品。搜索功能一般提供給有特定目標(biāo)的人群,并且不受登錄注冊(cè)的限制,游客也可以使用。用戶在商城首頁的搜索框輸入想購買商品的名稱或關(guān)鍵字,系統(tǒng)在數(shù)據(jù)庫中迅速查詢?cè)撋唐贰H绻嬖?,則返回商品詳情頁;如果查詢失敗,系統(tǒng)則返回沒有找到商品的提示信息。用例圖如圖2-3所示。圖2-3搜索用例圖2.2.3購物車功能需求分析購物車是用戶保存欲購買商品和喜愛商品的一個(gè)表單。如果用戶在瀏覽過程中有需要購買的商品或者不確定是否需要購買的商品,可以將其先行保存在購物車中。購物車可為未進(jìn)行登錄的用戶在一定時(shí)間內(nèi)提供保存商品的服務(wù),為登錄的用戶永久提供商品保存服務(wù)。未登錄用戶可以將商品添加到購物車,查看購物車信息,但無法進(jìn)行提交訂單的操作,若需使用,則需登錄。(1)用戶在商品詳情頁點(diǎn)擊添加至購物車選項(xiàng),即可將當(dāng)前商品添加至購物車。(2)當(dāng)用戶不需要改商品時(shí)可在購物車頁面內(nèi)選擇移除該商品。(3)用戶在購物車頁面內(nèi)點(diǎn)擊對(duì)應(yīng)商品旁邊的“加號(hào)”則可增加該商品的數(shù)量,總價(jià)則根據(jù)所增加的商品價(jià)格進(jìn)行同步更改,反之同理。(4)用戶在瀏覽商品頁面時(shí)可以點(diǎn)擊右下角的購物車圖標(biāo)進(jìn)入購物車頁面,查看已添加的商品詳情。(5)未登錄的用戶在購物車頁面點(diǎn)擊“去結(jié)算”按鈕,系統(tǒng)引導(dǎo)用戶先進(jìn)行登錄操作,并跳轉(zhuǎn)至相應(yīng)界面;若已登錄,則跳轉(zhuǎn)到購物車商品列表頁面。用例圖如圖2-4所示。圖2-4購物車用例2.2.4訂單功能需求分析訂單展示用戶最終需要購買的商品,商品價(jià)格,同時(shí)生成用戶的收件地址等收貨信息。用戶通過訂單功能,查看購買商品的種類、數(shù)量和價(jià)格是否有錯(cuò)誤;通過填寫或在已有的收貨地址中選擇,確保可以準(zhǔn)確的收到商品;通過訂單功能,可進(jìn)入支付頁面進(jìn)行支付操作。(1)用戶通過點(diǎn)擊購物車中的“結(jié)算”按鈕,進(jìn)入訂單頁面;如未登錄,則系統(tǒng)引導(dǎo)用戶進(jìn)行登錄操作;反之則跳轉(zhuǎn)到訂單頁面。(2)用戶在訂單中查看購買物品的信息,如果信息錯(cuò)誤或者用戶希望返回購物車修改有購買欲望的商品,則用戶點(diǎn)擊返回購物車按鈕可返回到購物車頁面。(3)初次使用訂單功能的用戶需要填寫收貨地址、收貨電話等信息,點(diǎn)擊“保存”,收貨信息保存到數(shù)據(jù)庫中,用戶再次登錄可選擇已經(jīng)填寫的信息,無需再次填寫。(4)用戶填寫收貨信息,系統(tǒng)獲取數(shù)據(jù)庫中當(dāng)前賬號(hào)以往收貨信息列表,用戶在列表中選擇之前的收貨信息或新增收貨信息。(5)用戶確認(rèn)無誤后,點(diǎn)擊“結(jié)算”按鈕,跳轉(zhuǎn)進(jìn)入支付頁面。如圖2-5所示。圖2-5訂單用例圖2.2.5支付功能需求分析系統(tǒng)為用戶提供第三方的在線支付功能,對(duì)接支付寶,微信系統(tǒng)。(1)用戶在訂單頁面點(diǎn)擊“提交”按鈕從而跳轉(zhuǎn)到支付頁面,點(diǎn)擊“返回”則返回至購物車頁面。(2)用戶在支付頁面選擇自己需要的第三方支付方式,點(diǎn)擊“支付”按鈕,系統(tǒng)彈出第三方支付平臺(tái),引導(dǎo)用戶完成商品支付流程。(3)支付頁面商品價(jià)格信息、用戶的購買數(shù)量和需要付款的金額大小。用例圖如圖2-6所示。

圖2-6支付用例圖2.2.6商品管理功能需求分析商品管理由系統(tǒng)管理員通過后臺(tái)管理界面對(duì)商品進(jìn)行操作,包括新增商品、查詢已有的商品列表。(1)管理員在瀏覽器輸入后臺(tái)管理系統(tǒng)的網(wǎng)址進(jìn)入后臺(tái)主頁,點(diǎn)擊“新增商品”選項(xiàng),系統(tǒng)彈出商品信息輸入框,管理員輸入商品名稱、商品類別、價(jià)格以及對(duì)應(yīng)積分等信息并提交,系統(tǒng)對(duì)輸入的信息進(jìn)行核驗(yàn),如果核驗(yàn)成功,則返回新增商品成功。(2)管理員通過點(diǎn)擊查詢選項(xiàng),系統(tǒng)顯示查詢出的商品列表,每頁顯示部分商品,管理員通過下拉列表欄來查看完整商品列表。用例圖如圖2-7所示。圖2-7商品管理用例圖2.2.7內(nèi)容管理功能需求分析網(wǎng)站內(nèi)容的管理是對(duì)網(wǎng)站前端展示內(nèi)容的管理。(1)管理員點(diǎn)擊“分類管理”按鈕,系統(tǒng)按照商品分類的樹形結(jié)構(gòu)進(jìn)行展示,包括父節(jié)點(diǎn)和子節(jié)點(diǎn)。(2)管理員點(diǎn)擊“新增”按鈕,跳轉(zhuǎn)到新增頁面,管理員輸入新增的分類名稱、權(quán)重、所屬區(qū)域,系統(tǒng)新增相應(yīng)的內(nèi)容分類。(3)管理員點(diǎn)擊“新增商品”按鈕,系統(tǒng)顯示商品分類列表,管理員選擇將要添加分類的節(jié)點(diǎn),如果選中的不是分類樹的葉子節(jié)點(diǎn),系統(tǒng)提示無法在該節(jié)點(diǎn)添加商品,管理員需要重新選擇;如果選中的是分類樹的葉子節(jié)點(diǎn),系統(tǒng)彈出商品內(nèi)容輸入框,管理員填寫商品內(nèi)容信息并提交,系統(tǒng)返回“添加商品內(nèi)容成功”的提示信息。用例圖如圖2-8所示。圖2-8內(nèi)容管理用例圖2.3系統(tǒng)非功能需求分析易使用性:系統(tǒng)的用戶大多數(shù)為未受過專業(yè)培訓(xùn)的普通人,系統(tǒng)的頁面設(shè)計(jì)需要美觀大方,布局分配合理,突出商城的熱銷商品和推薦購買商品,根據(jù)不同的節(jié)日更換不同的主題頁面。系統(tǒng)的操作流程不能繁瑣,符合用戶購買商品的思維習(xí)慣。安全性:由于用戶在購買商品時(shí),向商城提供了個(gè)人私密信息,系統(tǒng)需要保證用戶的信息不外泄。用戶填寫的登錄密碼,系統(tǒng)應(yīng)加密保存,防止除用戶以外的其他使用者登錄該用戶的賬號(hào),進(jìn)行非法操作,造成用戶的經(jīng)濟(jì)損失。即時(shí)響應(yīng):用戶進(jìn)行操作時(shí),系統(tǒng)的響應(yīng)速度應(yīng)在1秒以內(nèi)。系統(tǒng)使用異步更新的方式,用戶填寫信息,系統(tǒng)實(shí)時(shí)驗(yàn)證并反饋,無需用戶提交等待??煽啃裕合到y(tǒng)應(yīng)具有健壯性,除系統(tǒng)維護(hù)階段,應(yīng)24小時(shí)保證用戶可以正常使用系統(tǒng)功能。在對(duì)系統(tǒng)更新、系統(tǒng)業(yè)務(wù)擴(kuò)充時(shí),不影響用戶正常使用原有功能。并發(fā)性:在商城進(jìn)行特殊的促銷活動(dòng)時(shí),或者特定的時(shí)間段和特定的節(jié)假日,商城的在線人數(shù)將是平時(shí)的幾十倍甚至幾百倍,系統(tǒng)需要有應(yīng)對(duì)高并發(fā)的能力,保證系統(tǒng)在用戶高并發(fā)量訪問時(shí)正常工作,不宕機(jī)。系統(tǒng)在高并發(fā)的時(shí)間段無需保證非重要數(shù)據(jù)的實(shí)時(shí)同步,相對(duì)不重要的數(shù)據(jù)可在系統(tǒng)相對(duì)空閑時(shí)再進(jìn)行數(shù)據(jù)同步。擴(kuò)展性:為應(yīng)對(duì)不斷擴(kuò)大的業(yè)務(wù),系統(tǒng)架構(gòu)應(yīng)靈活,具備可擴(kuò)展性,在設(shè)計(jì)時(shí)滿足高內(nèi)聚低耦合的要求。面向接口設(shè)計(jì),擴(kuò)展功能,添加新的模塊只需在原有系統(tǒng)中引入接口,更改特定模塊功能時(shí)只更換該模塊,不影響其他模塊的正常工作。3.系統(tǒng)概要設(shè)計(jì)3.1系統(tǒng)邏輯架構(gòu)概要設(shè)計(jì)系統(tǒng)基于MVC的設(shè)計(jì)模式和面向服務(wù)的分布式架構(gòu),基于MVC的設(shè)計(jì)模式使系統(tǒng)分為Controller層,Service層和Dao層。Controller層構(gòu)成面向服務(wù)架構(gòu)的表現(xiàn)層,Service層和Dao層構(gòu)成面向服務(wù)架構(gòu)的服務(wù)層。系統(tǒng)邏輯架構(gòu)圖如圖3-1所示。圖3-1系統(tǒng)邏輯架構(gòu)Controller層:負(fù)責(zé)控制業(yè)務(wù)模塊的流程,以及視圖的轉(zhuǎn)換。Controller的目的是用于接收瀏覽器的請(qǐng)求并根據(jù)請(qǐng)求的不同調(diào)用不同的業(yè)務(wù)邏輯處理模塊進(jìn)行隨后的操作處理。Service層:業(yè)務(wù)邏輯層,負(fù)責(zé)業(yè)務(wù)具體的邏輯處理模塊。Dao層:數(shù)據(jù)訪問層,可以與數(shù)據(jù)庫進(jìn)行訪問以及增刪改的操作;當(dāng)請(qǐng)求是查詢數(shù)據(jù)庫中的信息時(shí),返回的是數(shù)據(jù)表中的數(shù)據(jù)對(duì)象;當(dāng)請(qǐng)求為增加、刪除和修改時(shí),返回結(jié)果為是否成功的布爾值。3.2系統(tǒng)功能概要設(shè)計(jì)3.2.1登錄功能概要設(shè)計(jì)用戶在登錄頁面輸入用戶名和密碼,系統(tǒng)首先校驗(yàn)通過比對(duì)數(shù)據(jù)庫中的數(shù)據(jù)來判斷輸入的用戶名和密碼是否正確,如若不正確,則用戶需要重新輸入正確的信息;反之,將用戶名和密碼存入Session中。系統(tǒng)生成的令牌作為Session的鍵,用戶信息作為Session的值,將該鍵值對(duì)存儲(chǔ)在Redis的緩存中,保存用戶信息同時(shí)設(shè)置Session的過期時(shí)間,系統(tǒng)向用戶顯示登錄成功,將Session放入Cookie中,由用戶的瀏覽器攜帶,用戶再次登錄時(shí),服務(wù)器讀取Cookie,取出SessionID,判斷兩次登錄是否為同一用戶。3.2.2注冊(cè)功能概要設(shè)計(jì)在登錄頁面的表單里填寫用戶名、密碼、郵箱和驗(yàn)證手機(jī)號(hào)的基本信息,填寫后完成點(diǎn)擊注冊(cè)按鈕,將表單提交給后臺(tái)進(jìn)行驗(yàn)證。系統(tǒng)校驗(yàn)用戶名、密碼或手機(jī)號(hào)任何一項(xiàng)是否為空或非法。如果為空,則提示“不能為空”;判斷輸入密碼和確認(rèn)密碼是否相同,如果不同,則提示“重新輸入”。判斷輸入的信息是否符合要求,如不符合則提示“非法輸入”。如果以上校驗(yàn)通過,則注冊(cè)頁面向后端發(fā)送請(qǐng)求,驗(yàn)證用戶名、郵箱和手機(jī)號(hào)等個(gè)人專屬信息是否已經(jīng)在數(shù)據(jù)庫中存在。如果用戶不存在,則注冊(cè)成功,系統(tǒng)將用戶信息存入數(shù)據(jù)庫;如果用戶的任意一項(xiàng)或多項(xiàng)信息存在,則返回給用戶提示信息“注冊(cè)失敗”,用戶重新填寫。3.2.3商品搜索功能概要設(shè)計(jì)用戶進(jìn)行搜索時(shí),首先在搜索框中輸入查詢條件,系統(tǒng)根據(jù)查詢條件查詢索引庫中是否有符合該條件的數(shù)據(jù),如果搜索到商品列表,則將該商品列表及總頁數(shù)返回,并根據(jù)設(shè)置的每頁可顯示商品數(shù)顯示商品;如果沒有搜索到商品列表,則系統(tǒng)向用戶返回沒有查詢到相關(guān)商品的提示信息。3.2.4購物車功能概要設(shè)計(jì)登錄判斷購物車分為未登錄狀態(tài)下的購物車和登錄狀態(tài)下的購物車,用戶是否進(jìn)行了登錄操作決定著系統(tǒng)將用戶個(gè)人的購物信息暫時(shí)存儲(chǔ)到哪個(gè)位置。當(dāng)用戶使用購物車時(shí),系統(tǒng)首先區(qū)分用戶是否進(jìn)行了登錄操作,通過登錄系統(tǒng)從用戶的Cookie中獲取的登錄信息Session中的token,如果token沒有值,說明用戶暫未登錄,則購物車信息保存在Cookie中;如果取到token信息,但調(diào)用登錄系統(tǒng)判斷token已過期,說明用戶登錄過期,則購物車信息保存在Cookie中;反之未過期,則說明用戶是登錄狀態(tài),則將購物車中的相關(guān)商品信息保存于Redis中;如果用戶先在未登錄時(shí)添加了購物車,然后進(jìn)行登錄操作,則系統(tǒng)將Cookie和Redis中的購物車合并為一個(gè)購物車,將其信息存儲(chǔ)在Redis中。未登錄狀態(tài)的購物車功能1.添加商品功能添加商品到購物車時(shí),從Cookie中取出購物車的列表,判斷該列表是否存在。如果存在,則將相應(yīng)商品的數(shù)量相加;如果列表不存在,則根據(jù)取到的商品ID查詢商品的信息,把商品添加到商品列表,向用戶返回商品已經(jīng)成功添加到購物車的提示信息。2.查看購物車列表功能用戶點(diǎn)擊“去結(jié)算”按鈕,系統(tǒng)會(huì)跳轉(zhuǎn)到購物車列表頁面,展示用戶添加進(jìn)去的商品信息,系統(tǒng)從用戶的Cookie中獲得對(duì)應(yīng)的商品列表,3.刪除商品功能用戶如若需要?jiǎng)h除商品,則系統(tǒng)從用戶的Cookies中獲得購物車列表相關(guān)信息,并遍歷該列表,找到用戶要?jiǎng)h除的商品項(xiàng),隨后將該商品的相關(guān)信息全部刪除,最后將新的購物車列表寫回到Cookie里,刪除成功,系統(tǒng)返回新的購物車列表。登錄狀態(tài)的購物車功能1.添加商品功能當(dāng)用戶在登錄狀態(tài)下進(jìn)行操作向購物車添加商品信息時(shí),是向Redis中添加購物車的信息進(jìn)行存儲(chǔ),Redis中存放數(shù)據(jù)的形式以鍵為用戶ID,值為哈希值。哈希值的鍵為商品ID,值為商品信息。添加時(shí)分兩種情況,如果商品的ID存在,則將相同商品的數(shù)量進(jìn)行累加;反之不存在,則根據(jù)商品ID從數(shù)據(jù)庫中取出商品的信息并存入在Redis中。2.展示購物車列表用戶點(diǎn)擊“去購物車結(jié)算”后,系統(tǒng)接收url請(qǐng)求跳轉(zhuǎn)到購物車列表展示頁。如果用戶登錄前并沒有向購物車中添加任何商品,則用戶Cookie中的商品信息部分為空,系統(tǒng)從Redis緩存中取出用戶登錄后保存的購物車信息并展示;如果用戶在登陸前和登陸后均向購物車添加商品,然后點(diǎn)擊“去購物車結(jié)算”按鈕,則系統(tǒng)會(huì)從用戶的Cookie中和Redis緩存中取出購物車信息并將其合并展示。3.刪除商品功能用戶點(diǎn)擊“刪除商品”,系統(tǒng)將緩存中存放的商品數(shù)據(jù)刪除。3.2.5訂單功能概要設(shè)計(jì)用戶在購物車頁面點(diǎn)擊“去結(jié)算”時(shí),系統(tǒng)首先使用攔截器攔截用戶的申請(qǐng),其次判斷用戶是否已經(jīng)登錄;如果用戶還未登錄,則系統(tǒng)跳轉(zhuǎn)到登錄界面引導(dǎo)用戶進(jìn)行登錄操作,登錄完成后自動(dòng)跳轉(zhuǎn)到訂單頁面;如果已登錄,則系統(tǒng)直接跳轉(zhuǎn)到訂單頁面。展示收貨地址和購物車中商品的列表。3.2.6商品管理功能概要設(shè)計(jì)1.商品添加店家管理員在后臺(tái)管理系統(tǒng)內(nèi)點(diǎn)擊添加按鈕會(huì)跳轉(zhuǎn)到添加商品頁面,隨后填寫商品價(jià)格、圖片、對(duì)應(yīng)積分、所屬分類等相關(guān)信息,點(diǎn)擊提交按鈕進(jìn)行提交操作給系統(tǒng),系統(tǒng)根據(jù)表單生成商品的ID,并在表單對(duì)象中插入創(chuàng)建時(shí)間、更新時(shí)間等屬性并存入到數(shù)據(jù)庫中。2.商品查詢管理員在后臺(tái)管理系統(tǒng)中輸入相關(guān)信息并點(diǎn)擊“查詢商品”按鈕,系統(tǒng)會(huì)查詢數(shù)據(jù)庫獲得商品列表并展示出來,并利用分頁插件PageHelper,將查詢到的列表分頁顯示。顯示的頁面中包括查詢到的商品列表、總頁數(shù)、當(dāng)前頁數(shù)、每頁記錄數(shù)。3.2.7內(nèi)容管理功能概要設(shè)計(jì)1.內(nèi)容分類管理系統(tǒng)管理員點(diǎn)擊“內(nèi)容分類管理”按鈕,系統(tǒng)根據(jù)請(qǐng)求加載和顯示內(nèi)容分類的樹形列表,如果管理員選擇父節(jié)點(diǎn),則系統(tǒng)無需加載葉子節(jié)點(diǎn);如果管理員選擇葉子節(jié)點(diǎn),則系統(tǒng)根據(jù)父節(jié)點(diǎn)ID查找葉子節(jié)點(diǎn)并顯示。管理員點(diǎn)擊相應(yīng)節(jié)點(diǎn)添加分類信息,隨后系統(tǒng)進(jìn)行接收分類信息并將其添加到數(shù)據(jù)庫中保存,返回成功的提示信息。2.內(nèi)容管理系統(tǒng)管理員點(diǎn)擊“內(nèi)容管理”按鈕后,系統(tǒng)開始加載出內(nèi)容分類的列表,根據(jù)管理員點(diǎn)擊的分類按鈕進(jìn)行相關(guān)的判斷;如果管理員點(diǎn)擊的是父節(jié)點(diǎn),則系統(tǒng)根據(jù)父節(jié)點(diǎn)ID查找子節(jié)點(diǎn)并顯示;反之如果點(diǎn)擊的是子節(jié)點(diǎn),則系統(tǒng)根據(jù)子節(jié)點(diǎn)ID查找數(shù)據(jù)庫中屬于該子節(jié)點(diǎn)的商品列表并顯示。管理員在顯示出的列表中新增商品后,系統(tǒng)接收新增商品的數(shù)據(jù)并插入到相應(yīng)數(shù)據(jù)表中,返回添加內(nèi)容成功提示信息。3.3系統(tǒng)使用框架和技術(shù)基于JavaEE的企業(yè)級(jí)開源框架數(shù)量眾多,選用合適的框架可以在節(jié)約人力物力成本的同時(shí)最大化滿足系統(tǒng)對(duì)于功能和性能的要求。合適的框架可以事半功倍,而不合適的框架可能給系統(tǒng)帶來不可預(yù)期的負(fù)面效果,甚至拖垮整個(gè)系統(tǒng)。3.3.1MVC設(shè)計(jì)模式MVC設(shè)計(jì)模式是目前互聯(lián)網(wǎng)系統(tǒng)常用的架構(gòu)設(shè)計(jì)模式,其中的M指模型,包含了系統(tǒng)中的各種數(shù)據(jù);V指視圖,負(fù)責(zé)將模型的數(shù)據(jù)包裝成頁面展現(xiàn)給用戶;C指控制器,負(fù)責(zé)接收用戶請(qǐng)求并控制業(yè)務(wù)層處理請(qǐng)求。MVC設(shè)計(jì)模式的優(yōu)點(diǎn)是將系統(tǒng)解耦成單一功能的模塊,方便增加刪除和替換。當(dāng)業(yè)務(wù)增加時(shí),不用重構(gòu)原有系統(tǒng),只需在原有系統(tǒng)中添加接口即可實(shí)現(xiàn)功能的變動(dòng)。其結(jié)構(gòu)如圖3-2所示:圖3-2MVC設(shè)計(jì)模式圖3.3.2Spring+SpringMVC+MyBatis框架Spring框架Spring是一個(gè)分層的應(yīng)用輕量級(jí)開源框架。擁有web層、業(yè)務(wù)層和持久層的一站式解決方案.兩大核心為控制反轉(zhuǎn)和面向切面。Spring容器在系統(tǒng)中負(fù)責(zé)自動(dòng)裝載和創(chuàng)建Java資源,Java資源也稱JavaBean。同時(shí)通過在JavaBean的配置文件中配置類與類依賴關(guān)系描述的方式,使對(duì)象關(guān)系解耦,達(dá)到簡(jiǎn)化開發(fā),方便集成其他開源框架和第三方類庫的目的。Spring框架結(jié)構(gòu)圖如圖3-3所示。圖3-3Spring框架結(jié)構(gòu)圖SpringMVC框架SpringMVC是一種基于MVC設(shè)計(jì)模式,使用Java語言實(shí)現(xiàn)的請(qǐng)求驅(qū)動(dòng)類型的輕量級(jí)Web框架,將web層進(jìn)行職責(zé)解耦。SpringMVC框架各模塊之間協(xié)調(diào)運(yùn)作,處理用戶發(fā)送的請(qǐng)求,并將處理后的結(jié)果,返回給用戶使用。SpringMVC的6個(gè)組件具體如下:DispatcherServlet前端控制器:用在接收用戶發(fā)送的請(qǐng)求的情況下。當(dāng)用戶在瀏覽器輸入url訪問地址時(shí),訪問請(qǐng)求會(huì)最先到達(dá)DispatcherServlet,再通過DispatcherServlet調(diào)用其他的SpringMVC組件來完成其它工作,前端控制器的存在極大的降低了模塊之間的耦合。HandlerMapping處理器映射器:用于接受前端控制器的調(diào)用,并且根據(jù)需要請(qǐng)求的url找到對(duì)應(yīng)于該url的處理器,生成處理器Contrller和處理器適配器HandlerAdapter的對(duì)象,返回給前端控制器。HandlerAdapter處理器適配器:該適配器是設(shè)計(jì)模式中適配器模式的應(yīng)用,其功能是對(duì)處理器Controller進(jìn)行執(zhí)行。Controller處理器:Controller處理器接受HandlerAdapter處理器映射器的調(diào)用,并返回ModelAndView。ViewResolver視圖解析器:ViewResolver負(fù)責(zé)view視圖的解析,并將視圖進(jìn)行渲染,渲染后的結(jié)果以頁面的形式發(fā)送返回瀏覽器,然后瀏覽器將該頁面展示給用戶使用。View視圖:View視圖是一個(gè)接口,它通過頁面模板技術(shù)或頁面標(biāo)簽將模型數(shù)據(jù)以前端頁面的方式展示給用戶使用,具體的頁面根據(jù)需要的不同需求進(jìn)行開發(fā)。SpringMVC的框架結(jié)構(gòu)圖如圖3-4所示。圖3-4SpringMVC框架結(jié)構(gòu)圖MyBatis框架MyBatis的框架結(jié)構(gòu)分別是如下幾個(gè)部分:配置加載:MyBatis的配置來源于配置文件和Java的注解,MyBatis通過傳入?yún)?shù)的映射配置的方式,執(zhí)行相關(guān)的SQL語句和結(jié)果映射配置,將SQL語句的配置信息加載成一個(gè)MappedStatement對(duì)象并存儲(chǔ)在內(nèi)存中。SQL解析:API接口層接收傳入的SQL語句ID和可以包括基本類型、JavaBean的對(duì)象,MyBatis可以根據(jù)ID找到對(duì)應(yīng)期望的MappedStatement,再參考傳入?yún)?shù)的對(duì)象對(duì)后者進(jìn)行解析,之后得到要執(zhí)行的SQL語句和參數(shù)。SQL執(zhí)行:先將經(jīng)過SQL解析得到的SQL語句和參數(shù)放入數(shù)據(jù)庫中執(zhí)行,最后得到相關(guān)結(jié)果。結(jié)果映射:將SQL語句執(zhí)行后的結(jié)果按照映射的配置的方式轉(zhuǎn)換成對(duì)應(yīng)的JavaBean或者基本數(shù)據(jù)類型,最后將得到的最終結(jié)果返回。框架結(jié)構(gòu)圖如圖3-5所示。圖3-5MyBatis框架結(jié)構(gòu)圖SpringBoot簡(jiǎn)介用微服務(wù)框架Springboot對(duì)平臺(tái)進(jìn)行二次開發(fā),采用服務(wù)化的組件開發(fā)模式,實(shí)現(xiàn)了復(fù)雜的業(yè)務(wù)功能。SpringBoot首先繼承了原有Spring框架的長(zhǎng)處,全新型微服務(wù)系統(tǒng)基礎(chǔ)架構(gòu)。該框架使用了自己特定的方式進(jìn)行配置,不需要定義樣版化配置,內(nèi)部含有Tomcat的應(yīng)用服務(wù),優(yōu)化了Maven的配置減少了開發(fā)人員的工作量,還提供了startPOM來進(jìn)行包管理,同時(shí)快速啟動(dòng)一個(gè)web容器,內(nèi)部含有servlet容器,因此降低了其對(duì)環(huán)境的要求,可以使用命令直接執(zhí)行項(xiàng)目。在開發(fā)完整功能的微服務(wù)時(shí),會(huì)遇到所有繁瑣的事情。采用SpringBoot可以在很大程度上來簡(jiǎn)化開發(fā)模式,開發(fā)人員想要集成自己習(xí)慣的常用框架時(shí)它都有對(duì)應(yīng)的組件支持。它具有以下特點(diǎn):(1)使用Spring項(xiàng)目引導(dǎo)頁面可以在幾秒構(gòu)建一個(gè)項(xiàng)目,方便快捷。(2)創(chuàng)建后就可使用,無代碼生成,也無需配置XML文件,也可以修改相關(guān)默認(rèn)值進(jìn)而來滿足特定的需求。(3)方便對(duì)外輸出各種形式的服務(wù),如RESTAPI、WebSocket、Web、Streaming、Tasks。(4)非常簡(jiǎn)潔的安全策略集成。(5)支持關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫。(6)內(nèi)部包含了一些大型項(xiàng)目中常見的非功能性特性,支持運(yùn)行期內(nèi)嵌容器,如Tomcat、Jetty。(7)SpringBoot自動(dòng)管理相關(guān)依賴,自帶應(yīng)用的監(jiān)控。(8)強(qiáng)大的開發(fā)包,支持熱啟動(dòng)。MySQL數(shù)據(jù)庫簡(jiǎn)介MySQL數(shù)據(jù)庫原本是由瑞典的名為MySQLAB公司開發(fā)的中小型數(shù)據(jù)庫管理系統(tǒng),但在2009年被甲骨文公司收購,現(xiàn)在是其旗下的一個(gè)成熟的開源產(chǎn)品。它是世界范圍內(nèi)使用非常廣泛的數(shù)據(jù)庫之一,根據(jù)數(shù)據(jù)庫權(quán)威網(wǎng)站DB-Engines(/)的數(shù)據(jù)統(tǒng)計(jì),截止2021年5月為止,MySQL位于排行榜第二名的位置,具體如圖3-6所示圖3-6數(shù)據(jù)庫排行榜MySQL使用者人數(shù)眾多,在其發(fā)展歷程中,經(jīng)過原始開發(fā)者以及社區(qū)愛好者不斷增強(qiáng)與改進(jìn),目前MySQL運(yùn)行穩(wěn)定,架構(gòu)清楚,源代碼質(zhì)量高。其特點(diǎn)如下:(1)支持多線程,繼而可以充分利用數(shù)據(jù)庫所在操作系統(tǒng)平臺(tái)下的CPU資源。通過服務(wù)器/多客戶端的形式支持多進(jìn)程,即支持多用戶同一時(shí)間連接一個(gè)MySQL數(shù)據(jù)庫服務(wù)器。(2)自身攜帶的優(yōu)化器在很多時(shí)候可以極大程度優(yōu)化用戶編寫的SQL查詢語句,提高查詢速度。(3)為了提高通用性,MySQL提供了許多國家語言的編碼支持,現(xiàn)在通常使用utf-8編碼,該編碼能夠支持世界上幾乎所有的語言。(4)提供TCP/IP、ODBC等多種途徑進(jìn)行客戶端與服務(wù)器的通信。(5)可以快速處理擁有上千萬條記錄的數(shù)據(jù)表,每一記錄代表一行數(shù)據(jù)。(6)日志系統(tǒng)確保機(jī)器故障之后能夠快速恢復(fù)。圖3-7MySQL結(jié)構(gòu)圖3.4其他技術(shù)3.4.1系統(tǒng)管理工具M(jìn)avenMaven是一個(gè)使用在Java項(xiàng)目管理的跨平臺(tái)的自動(dòng)化構(gòu)建工具,在系統(tǒng)中的職責(zé)包括三大模塊分別是如下:項(xiàng)目構(gòu)建:Maven的特點(diǎn)導(dǎo)致主動(dòng)免除了手動(dòng)搭建項(xiàng)目的繁瑣流程,提供了項(xiàng)目清理、初始化、編譯、測(cè)試、打包、部署等主要構(gòu)建步驟,這些步驟由Maven內(nèi)置插件完成,無需手工編寫腳本文件,減少了程序員的任務(wù)量。依賴管理:由于java應(yīng)用中包含的大量第三方類庫,這些類庫因?yàn)橄嗷ヒ蕾嚩赡軐?dǎo)致版本沖突和依賴臃腫。通過在Maven的配置文件pom中加入依賴,即一個(gè)標(biāo)識(shí)構(gòu)件名字、版本、倉庫中所在位置的坐標(biāo),Maven自動(dòng)在本地或中央倉庫尋找構(gòu)件。由于其具有傳遞性依賴的機(jī)制,模塊只需要配置直接依賴,間接依賴從上一層模塊繼承。項(xiàng)目信息管理:Maven的pom配置文件中集中配置了模塊所依賴的其他模塊以及插件信息,通過修改查看pom文件就可以完成項(xiàng)目信息的管理。在系統(tǒng)中,因?yàn)橄到y(tǒng)被拆解成了許多獨(dú)立的Maven項(xiàng)目,項(xiàng)目之間協(xié)調(diào)運(yùn)行,因此使用Maven的聚合特性將各個(gè)項(xiàng)目聚合在一起構(gòu)建,提取出父Maven項(xiàng)目,用于管理子項(xiàng)目依賴信息,子項(xiàng)目在父項(xiàng)目中選取所需依賴進(jìn)行配置。3.4.2數(shù)據(jù)庫緩存RedisRedis是一個(gè)高性能的key-value非關(guān)系型的數(shù)據(jù)庫,也稱為數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)服務(wù)器。Redis是基于內(nèi)存運(yùn)行的,查詢效率高于關(guān)系型數(shù)據(jù)庫且具有良好的容災(zāi)性。有五種數(shù)據(jù)結(jié)構(gòu):字符串、列表、哈希、集合、有序集合,這五種數(shù)據(jù)結(jié)構(gòu)都是以鍵值對(duì)的方式存在,使得Redis具有良好的靈活性。因此本系統(tǒng)使用Redis作為數(shù)據(jù)庫的緩存,Redis介于服務(wù)層與持久層之間,存儲(chǔ)前臺(tái)訪問量高的數(shù)據(jù)。查詢數(shù)據(jù)時(shí),先在緩存中查詢,若命中,則Redis直接將數(shù)據(jù)返回給用戶;反之,通過Redis訪問后端MySQL數(shù)據(jù)庫,再返回?cái)?shù)據(jù)。4.數(shù)據(jù)庫設(shè)計(jì)4.1數(shù)據(jù)庫設(shè)計(jì)原則本系統(tǒng)用到高性能的數(shù)據(jù)庫MySQL和Redis,兩種不同類型數(shù)據(jù)庫的結(jié)合有效優(yōu)化了數(shù)據(jù)讀取的性能,使系統(tǒng)能快速響應(yīng)請(qǐng)求。對(duì)于MySQL數(shù)據(jù)庫,主要存儲(chǔ)各類用戶信息在硬盤上。MySQL對(duì)表的設(shè)計(jì)要求遵循基本范式標(biāo)準(zhǔn),每個(gè)基本項(xiàng)屬性不可再分,非主鍵字段依賴主鍵,非主鍵字段之間不能互相依賴。數(shù)據(jù)類型越小運(yùn)行的越快,因此數(shù)據(jù)類型的設(shè)計(jì)要盡可能簡(jiǎn)單,從而減少需要的CPU周期和CPU緩存。在索引的使用方面不要過度,當(dāng)MySQL在對(duì)表進(jìn)行增加、刪除、修改等操作時(shí),索引需要一起更新,索引的創(chuàng)建和維護(hù)等均對(duì)時(shí)間空間有影響,降低查詢效率。對(duì)于Redis數(shù)據(jù)庫,主要存儲(chǔ)商品信息在內(nèi)存中。使用非關(guān)系型數(shù)據(jù)庫可以最大程度提高查詢速度。通過Redis將不常變化的數(shù)據(jù)存儲(chǔ)在內(nèi)存中,數(shù)據(jù)信息有變更時(shí)刷新到硬盤中,Redis數(shù)據(jù)庫的使用可以減少訪問磁盤數(shù)據(jù)庫的次數(shù),需注意每個(gè)key所對(duì)應(yīng)的數(shù)據(jù)不能過大。4.2數(shù)據(jù)庫E-R圖設(shè)計(jì)E-R圖描述了系統(tǒng)數(shù)據(jù)庫中數(shù)據(jù)表之間的關(guān)系。E-R圖如圖4-1所示。圖4-1E-R圖4.3數(shù)據(jù)庫表的設(shè)計(jì)本系統(tǒng)數(shù)據(jù)表分為地區(qū)表、獎(jiǎng)品信息表、銷售記錄表、商品分類表、頭條輪播等表。每個(gè)表的設(shè)計(jì)包括表的字段、類型、字段大小、約束和注釋。地區(qū)表:tb_area字段數(shù)據(jù)類型字段大小約束注釋area_idint10非空、主鍵地區(qū)編號(hào)area_namevarchar200非空地區(qū)名priorityint10非空權(quán)重create_timedatetime默認(rèn)空創(chuàng)建時(shí)間last_edit_timedatetime默認(rèn)空最后編輯時(shí)間獎(jiǎng)品信息表:tb_award字段數(shù)據(jù)類型字段大小約束注釋award_idint10非空、主鍵獎(jiǎng)品編號(hào)award_namevarchar256非空獎(jiǎng)品名award_descvarchar1024默認(rèn)空獎(jiǎng)品描述award_imgvarchar1024默認(rèn)空獎(jiǎng)品圖pointint20非空積分priorityint101默認(rèn)空權(quán)重create_timedatetime默認(rèn)空創(chuàng)建時(shí)間last_edit_timedatetime默認(rèn)空最后編輯時(shí)間enable_statusint非空狀態(tài)shop_idint10默認(rèn)空、外鍵店鋪編號(hào)銷售記錄表:tb_product_sell_daily字段數(shù)據(jù)類型字段大小約束注釋product_idint10非空、主鍵、商品圖編號(hào)shop_idint10非空、外鍵圖片路徑create_timedatetime默認(rèn)空?qǐng)D片描述totalint10非空權(quán)重頭條輪播表:tb_head_line字段數(shù)據(jù)類型字段大小約束注釋line_idint10非空、主鍵頭條編號(hào)line_namevarchar1000非空頭條名稱line_linkvarchar2000非空頭條鏈接line_imgvarchar2000非空頭條圖片priorityint10非空權(quán)重enable_statusint2非空狀態(tài)create_timedatetime默認(rèn)空創(chuàng)建時(shí)間last_edit_timedatetime默認(rèn)空最后編輯時(shí)間商品分類表:tb_product_category字段數(shù)據(jù)類型字段大小約束注釋product_category_idint10非空、主鍵商品分類編號(hào)product_category_namevarchar100非空商品分類名priorityint10默認(rèn)空權(quán)重create_timedatetime默認(rèn)空創(chuàng)建時(shí)間shop_idint10非空、外鍵店鋪編號(hào)用戶信息表:tb_person_info字段數(shù)據(jù)類型字段大小約束注釋user_idint10非空、主鍵用戶編號(hào)namevarchar32非空用戶名profile_imgvarchar1024默認(rèn)空簡(jiǎn)介圖emailvarchar1024默認(rèn)空郵箱gendervarchar2非空性別enable_statusint2非空狀態(tài)user_typeint10非空用戶類型create_timedatetime默認(rèn)空創(chuàng)建時(shí)間last_edit_timedatetime默認(rèn)空最后編輯時(shí)間用戶本地登錄信息:tb_local_auth字段數(shù)據(jù)類型字段大小約束注釋local_auth_idint10非空、主鍵用戶本地登錄編號(hào)user_idint10非空、外鍵用戶編號(hào)usernamevarchar128非空賬號(hào)passwordvarchar128非空密碼create_timedatetime默認(rèn)空創(chuàng)建時(shí)間last_edit_timedatetime默認(rèn)空最后編輯時(shí)間商品表:tb_product字段數(shù)據(jù)類型字段大小約束注釋product_idint10非空、主鍵商品編號(hào)product_namevarchar100非空用戶名product_descvarchar2000默認(rèn)空簡(jiǎn)介圖img_addrvarchar2000默認(rèn)空郵箱normal_pricevarchar100默認(rèn)空性別promotion_pricevarchar100默認(rèn)空狀態(tài)priorityint10非空用戶類型create_timedatetime默認(rèn)空創(chuàng)建時(shí)間last_edit_timedatetime默認(rèn)空最后編輯時(shí)間enable_statusint2非空狀態(tài)product_category_idint10默認(rèn)空商品分類編號(hào)pointint10默認(rèn)空積分shop_idint10非空店鋪編號(hào)商品圖片表:tb_product_img字段數(shù)據(jù)類型字段大小約束注釋product_img_idint10非空、主鍵商品圖編號(hào)img_addrvarchar2000非空?qǐng)D片路徑img_descvarchar2000默認(rèn)空?qǐng)D片描述priorityint10默認(rèn)空權(quán)重create_timedatetime默認(rèn)空創(chuàng)建時(shí)間product_idint10非空、外鍵商品編號(hào)店鋪信息表:tb_shop字段數(shù)據(jù)類型字段大小約束注釋shop_idint10非空、主鍵店鋪編號(hào)owner_idint10非空、外鍵擁有者編號(hào)area_idint10非空、外鍵區(qū)域編號(hào)shop_category_idint10非空、外鍵店鋪分類編號(hào)shop_namevarchar256非空店鋪名稱shop_descvarchar1024默認(rèn)空店鋪描述shop_addrvarchar200默認(rèn)空店鋪地址phonevarchar128默認(rèn)空電話shop_imgvarchar1024默認(rèn)空?qǐng)D片地址priorityint10默認(rèn)空權(quán)重create_timedatetime默認(rèn)空創(chuàng)建時(shí)間last_edit_timedatetime默認(rèn)空最后編輯時(shí)間enable_statusint10非空狀態(tài)advicevarchar255默認(rèn)空狀態(tài)提示用戶店鋪信息表:tb_user_shop_map字段數(shù)據(jù)類型字段大小約束注釋user_shop_idint10非空、主鍵用戶店鋪編號(hào)user_idint10非空、外鍵用戶編號(hào)shop_idint10非空、外鍵商店編號(hào)create_timedatetime10默認(rèn)空創(chuàng)建時(shí)間pointint10非空積分店鋪成員信息表:tb_shop_auth_map字段數(shù)據(jù)類型字段大小約束注釋shop_auth_idint10非空、主鍵店家編號(hào)employee_idint10非空、外鍵雇員編號(hào)shop_idint10非空、外鍵店鋪編號(hào)titlevarchar255默認(rèn)空頭銜title_flagint10非空頭銜權(quán)限create_timedatetime默認(rèn)空創(chuàng)建時(shí)間last_edit_timedatetime默認(rèn)空最后編輯時(shí)間enable_statusint10非空狀態(tài)店鋪分類表:tb_shop_category字段數(shù)據(jù)類型字段大小約束注釋shop_category_idint10非空、主鍵店鋪編號(hào)shop_category_namevarchar100非空擁有者編號(hào)shop_category_descvarchar1000默認(rèn)空區(qū)域編號(hào)shop_category_imgvarchar2000默認(rèn)空店鋪分類編號(hào)priorityint10非空店鋪名稱create_timedatetime默認(rèn)空店鋪描述last_edit_timedatetime默認(rèn)空店鋪地址parent_idint10非空、外鍵父級(jí)店鋪編號(hào)獎(jiǎng)品領(lǐng)取表:tb_user_award_map字段數(shù)據(jù)類型字段大小約束注釋user_award_idint10非空、主鍵用戶獎(jiǎng)品編號(hào)user_idint100非空、外鍵用戶編號(hào)award_idint1000非空、外鍵獎(jiǎng)品編號(hào)shop_idint2000非空、外鍵店鋪編號(hào)operator_idint10非空、外鍵上級(jí)編號(hào)create_timedatetime默認(rèn)空創(chuàng)建時(shí)間used_statusint10非空狀態(tài)pointint10非空積分店家產(chǎn)品表:tb_user_product_map字段數(shù)據(jù)類型字段大小約束注釋user_product_idint10非空、主鍵店家產(chǎn)品編號(hào)user_idint10非空、外鍵店家編號(hào)product_idint10非空、外鍵商品編號(hào)shop_idint10非空、外鍵店鋪編號(hào)operator_idint10非空、外鍵上級(jí)編號(hào)create_timedatetime默認(rèn)空創(chuàng)建時(shí)間pointint10非空積分用戶微信信息表:tb_wechat_auth字段數(shù)據(jù)類型字段大小約束注釋wechat_auth_idint10非空、主鍵用戶微信編號(hào)user_idint10非空、外鍵用戶編號(hào)open_idvarchar255非空開啟編號(hào)create_timedatetime默認(rèn)空創(chuàng)建時(shí)間5.詳細(xì)設(shè)計(jì)5.1系統(tǒng)的基本流程 O2O商城的基本歷程如下,先瀏覽器中輸入網(wǎng)址則會(huì)跳轉(zhuǎn)到登錄界面,在登陸界面則輸入用戶名密碼進(jìn)行登陸操作。如圖5-1所示:圖5-1輸入用戶名和登陸密碼后,系統(tǒng)判斷用戶身份信息并跳轉(zhuǎn)至特定頁面,例如本次身份信息為管理員,則顯示所有的店鋪相關(guān)信息,點(diǎn)擊進(jìn)入則可以對(duì)相關(guān)店鋪進(jìn)行編輯操作。如圖5-2、5-3所示。圖5-2圖5-3if(data.success){varshopCategoryList=data.shopCategoryList;varhtml='';html+='<ahref="#"class="button"data-category-id="">全部類別</a>';shopCategoryList.map(function(item,index){html+='<ahref="#"class="button"data-category-id=' +item.shopCategoryId+'>'+item.shopCategoryName+'</a>';});5.2店鋪信息界面在店鋪信息頁面可以填寫修改表單信息,填寫修改商鋪名稱、商鋪分類、所屬區(qū)域、地址電話、以及聯(lián)系方式,填寫完成點(diǎn)擊提交,將表單提交。系統(tǒng)校驗(yàn)用戶名、或手機(jī)號(hào)任何一項(xiàng)是否為空。如果為空,則提交失?。恍r?yàn)輸入驗(yàn)證碼碼和確認(rèn)驗(yàn)證碼碼是否一致,如果不一致,則提示“驗(yàn)證碼錯(cuò)誤”。如果以上校驗(yàn)通過,則頁面向后端發(fā)送請(qǐng)求,提交修改信息。如圖5-4。圖5-4。varshopId=getQueryString('shopId');varisEdit=shopId?true:false;varinitUrl='/o2o/shopadmin/getshopinitinfo';varregisterShopUrl='/o2o/shopadmin/registershop';varshopInfoUrl="/o2o/shopadmin/getshopbyid?shopId="+shopId;vareditShopUrl='/o2o/shopadmin/modifyshop';5.3商品管理界面在商品管理頁面可以修改商品所對(duì)應(yīng)的積分額度,點(diǎn)擊編輯進(jìn)行修改商品名稱、排序優(yōu)先級(jí)、商品、商品展示圖以及描述,填寫完成點(diǎn)擊提交,將表單提交。系統(tǒng)驗(yàn)證輸入的驗(yàn)證碼與期望的是否相同,如不同,則提示“驗(yàn)證碼錯(cuò)誤”。如果校驗(yàn)通過,則頁面向后端發(fā)送請(qǐng)求,提交修改信息。如圖5-5、圖5-6。圖5-5圖5-6varproductList=ductList;vartempHtml='';productList.map(function(item,index){vartextOp="下架";varcontraryStatus=0;if(item.enableStatus==0){textOp="上架";contraryStatus=1;}else{contraryStatus=0;}5.4類別管理界面在類別管理頁面可以修改類別所對(duì)應(yīng)的權(quán)重優(yōu)先級(jí),也可對(duì)某類商品進(jìn)行下架刪除。也可以點(diǎn)擊新增從而增加類別,并設(shè)置優(yōu)先級(jí)。編輯完畢后,點(diǎn)擊提交則頁面向后端發(fā)送請(qǐng)求,提交信息。如圖5-7。圖5-75.5消費(fèi)記錄頁面在消費(fèi)記錄頁面可以查看用戶在某時(shí)刻的購物記錄,以及商品所對(duì)應(yīng)的積分和操作的店員信息。如圖5-8。圖5-85.6授權(quán)管理界面在授權(quán)管理界面可以刪除店員信息,也可通過微信掃碼向來添加員工。如圖5-9。圖5-9if(item.enableStatus==1){textOp="刪除";contraryStatus=0;}else{contraryStatus=1;}5.7商城首頁顧客在商城首頁頁面可以查看所有商店,也可以根據(jù)商店分類來進(jìn)行查看。如圖5-10、圖5-11。圖5-10圖5-116.功能測(cè)試功能測(cè)試也叫黑盒測(cè)試,不考慮系統(tǒng)的內(nèi)部架構(gòu)和邏輯代碼,只考慮需要測(cè)試的各個(gè)功能,輸入輸出結(jié)果與期待是否相同。通過對(duì)注冊(cè)登錄功能、地區(qū)查詢、商品店鋪信息增刪改查、員工信息錄入、支付功能、后臺(tái)管理等功能設(shè)計(jì)測(cè)試用例,執(zhí)行系統(tǒng)測(cè)試。6.1注冊(cè)登錄功能測(cè)試注冊(cè)登錄測(cè)試用例表如表6-1所示。編號(hào)測(cè)試用例測(cè)試流程預(yù)期結(jié)果實(shí)際結(jié)果是否通過1注冊(cè)微信掃碼進(jìn)行注冊(cè)注冊(cè)成功注冊(cè)成功是2登錄填寫登錄信息并點(diǎn)擊“登錄”返回“登錄成功”的提示信息,主頁顯示登錄者用戶名返回“登錄成功”的提示信息,主頁顯示登錄者用戶名是注冊(cè)登錄功能測(cè)試表6-16.2店鋪管理功能測(cè)試店鋪管理功能模塊的測(cè)試用例包括新增店鋪、查看店鋪列表、店鋪分類展示、新增店鋪分類和新增店鋪。店鋪管理測(cè)試用例表如表6-2所示。編號(hào)測(cè)試用例測(cè)試流程預(yù)期結(jié)果實(shí)際結(jié)果是否通過3新增店鋪點(diǎn)擊“新增店鋪”按鈕填寫店鋪信息并提交彈出店鋪信息輸入頁面,管理員填寫完畢點(diǎn)擊“提交”后,返回新增店鋪成功彈出店鋪信息輸入頁面,管理員填寫完畢點(diǎn)擊“提交”后,返回新增店鋪成功是4查看店鋪點(diǎn)擊“查看店鋪”按鈕顯示店鋪列表信息,并分頁顯示顯示店鋪列表信息,并分頁顯示是5店鋪分類列表展示點(diǎn)擊“類別分類”按鈕顯示店鋪分類列表,列表節(jié)點(diǎn)根據(jù)用戶點(diǎn)擊依次展開顯示店鋪分類列表,列表節(jié)點(diǎn)根據(jù)用戶點(diǎn)擊依次展開是6新增店鋪分類輸入新增店鋪分類系統(tǒng)返回新增店鋪分類成功提示信息系統(tǒng)返回新增店鋪分類成功提示信息是7新增店鋪輸入店鋪信息系統(tǒng)返回新增店鋪成功提示信息系統(tǒng)返回新增店鋪成功提示信息是店鋪管理功能測(cè)試6-26.3商品管理功能測(cè)試商品管理功能模塊的測(cè)試用例包括新增商品、查看商品列表、商品分類列表展示、新增分類以及新增商品。商品管理測(cè)試用例表如表6-3所示。編號(hào)測(cè)試用例測(cè)試流程預(yù)期結(jié)果實(shí)際結(jié)果是否通過8新增商品點(diǎn)擊“新增商品”按鈕填寫商品信息并提交彈出商品信息輸入頁面,管理員填寫完畢點(diǎn)擊“提交”后,返回新增商品成功彈出商品信息輸入頁面,管理員填寫完畢點(diǎn)擊“提交”后,返回新增商品成功是9查看商品點(diǎn)擊“查看商品”按鈕顯示商品列表信息顯示商品列表信息是10商品分類列表展示點(diǎn)擊“類別分類”按鈕顯示商品分類列表,列表節(jié)點(diǎn)根據(jù)用戶點(diǎn)擊依次展開顯示商品分類列表,列表節(jié)點(diǎn)根據(jù)用戶點(diǎn)擊依次展開是11新增商品分類輸入新增商品分類系統(tǒng)返回新增商品分類成功信息系統(tǒng)返回新增商品分類成功信息是12新增商品輸入商品信息系統(tǒng)返回新增商品成功提示信息系統(tǒng)返回新增商品成功提示信息是商品管理測(cè)試表6-36.4搜索功能測(cè)試搜索模塊的測(cè)試用例是商品搜索。搜索測(cè)試用例表如表6-4所示。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論