楊 晟,羅 奇
(湖南信息職業(yè)技術(shù)學(xué)院,湖南 長沙 410200)
網(wǎng)上商城的興起和發(fā)展為人們提供了方便快捷的商品選購服務(wù),與傳統(tǒng)的線下交易方式相比,在線交易具有諸多優(yōu)勢。一方面是交易活動不受時間和空間的限制[1],客戶可以通過查看商品詳情及評價,快速了解商品的各種信息,享受隨時隨地線上下單,線下收貨服務(wù)。另一方面為商家和客戶提供了廣闊的市場交易平臺[2-3],提高了商品流通的效率,降低了商品交易的成本[4-6]。在線商城系統(tǒng)是網(wǎng)上交易平臺能夠正常運轉(zhuǎn)的基礎(chǔ)和支撐,通過靈活方便的交易方式、簡單明了的操作界面、完善安全的后臺管理來滿足消費者多樣化的購物需求,提升商品交易管理效率[7]。因此研究并設(shè)計一款架構(gòu)合理、功能完善的在線商城系統(tǒng)具有較大的社會價值和意義。本文設(shè)計了一個基于Spring Boot 的在線商城系統(tǒng),商家可以使用系統(tǒng)進(jìn)行商品信息以及訂單信息的管理,顧客可以使用系統(tǒng)方便快捷地進(jìn)行商品的選購,并使用購物車收藏自己喜歡的商品。系統(tǒng)管理員可以使用系統(tǒng)對商家及顧客等用戶信息進(jìn)行維護(hù)。
1.1.1 社會可行性
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,特別是移動互聯(lián)網(wǎng)技術(shù)的發(fā)展,在線購物已經(jīng)日益成為人們主流的購物方式。經(jīng)過將近三十年的發(fā)展,我國在線交易份額已經(jīng)占據(jù)較大規(guī)模,在線購物行業(yè)已進(jìn)入穩(wěn)定、健康、可持續(xù)的發(fā)展行列。而生活節(jié)奏的加快使得人們迫切地希望及時通過碎片化的時間也能購買到自己所稱心如意的商品,因此相比于傳統(tǒng)的購物方式,在線購物方式更受人們(特別是年輕顧客)的青睞。相比于傳統(tǒng)購物方式的耗時耗力,在線購物方式十分方便快捷,用戶只需要打開手機或電腦,即可在線了解商品的相關(guān)特性,并通過評論信息獲取其他用戶的購買體驗。在線購物不受時間地點的限制,用戶可以隨時隨地享受在線下單、線下收貨的服務(wù)。其次,在線購物方式為用戶商家提供了廣闊的交易平臺,顧客可以瀏覽來自全國甚至全世界琳瑯滿目的商品,大大增加了購物的可選擇范圍;商家也可以通過網(wǎng)絡(luò)增加規(guī)模龐大的客源。最后,在線購物打破了商家和顧客之間的壁壘,減少了商品流通過程的中間環(huán)節(jié),節(jié)約了交易成本,實現(xiàn)了顧客和商家的雙贏。在線商品交易具有廣闊的前景,因此研究并設(shè)計一款架構(gòu)合理、功能完善的在線商城系統(tǒng)具有較大的社會價值和意義。
1.1.2 技術(shù)可行性
本系統(tǒng)采用B/S 架構(gòu),用戶在使用本系統(tǒng)時無須安裝客戶端軟件,只需要通過瀏覽器即可進(jìn)行訪問。系統(tǒng)運用MVC 開發(fā)模式,實現(xiàn)前后端分離。其中后端以Java 作為開發(fā)語言,由于Java 具有高度的可移植性,因此系統(tǒng)可以部署在任意操作系統(tǒng)的服務(wù)器上。以Spring Boot+MyBatis 作為開發(fā)框架,采用MySQL 數(shù)據(jù)庫技術(shù)來進(jìn)行數(shù)據(jù)的存儲,并使用Maven 來進(jìn)行系統(tǒng)資源的管理和項目的構(gòu)建,采用GIT 進(jìn)行代碼版本控制;前端采用Bootstrap+jQuery 作為開發(fā)框架,并使用AJAX 技術(shù)來和后端進(jìn)行數(shù)據(jù)的交互。以上技術(shù)都是當(dāng)前成熟且主流的技術(shù),因此采用上述技術(shù)進(jìn)行設(shè)計開發(fā)在線商城系統(tǒng)是可行的。
系統(tǒng)總體包含6個部分的功能,分別為用戶信息管理、商品信息管理、購物車管理、訂單信息管理、地址信息管理和評論信息管理。其中管理員具有用戶信息管理的功能,包含了對顧客及商家的管理;商家具有商品信息管理、訂單信息管理、評論信息管理等功能;顧客具有商品信息管理、購物車管理、訂單信息管理、地址信息管理、評論信息管理等功能。
1.3.1 安全需求
為了保障系統(tǒng)安全性,特定的操作必須登錄之后才能進(jìn)行。顧客、商家和管理員在登錄之前只能瀏覽商品信息和查看評論信息,不能進(jìn)行其他操作。不同角色的用戶登錄系統(tǒng)后,會進(jìn)入到不同的頁面,執(zhí)行不同的操作。為了保證系統(tǒng)運行的安全性,防止越權(quán)訪問和惡意操作,需要建立基于角色的訪問控制(RBAC)策略。根據(jù)上文1.2 所示的功能需求為管理員、商家和顧客三個不同的角色賦予不同的權(quán)限。當(dāng)用戶登錄系統(tǒng)后,針對其發(fā)起的每一個操作,系統(tǒng)首先會判斷當(dāng)前用戶所對應(yīng)的角色是否具有指定的操作權(quán)限,若該用戶具有對應(yīng)的操作權(quán)限,則允許當(dāng)前操作執(zhí)行;否則禁止當(dāng)前用戶執(zhí)行該操作,并強制當(dāng)前用戶退出系統(tǒng)。
1.3.2 實時性
要求系統(tǒng)保證一定的響應(yīng)速度,不至于讓用戶在操作時等待過長時間,以便讓用戶具有良好的購物體驗。如在進(jìn)行商品信息搜索、查看商品詳情及評論信息、在購物車中添加商品、編輯地址信息以及創(chuàng)建訂單的響應(yīng)時間不能超過3 s,支付的響應(yīng)時間不可以超過7 s。
1.3.3 可擴展性
隨著時間的推移,系統(tǒng)往往會伴隨著業(yè)務(wù)需求的變動。而如果對系統(tǒng)進(jìn)行重新設(shè)計開發(fā)則容易造成人力物力資源的浪費,因此往往會在原系統(tǒng)的基礎(chǔ)上進(jìn)行升級。為了保證能夠順利完成更新升級,系統(tǒng)必須要具有良好的可擴展性。首先系統(tǒng)在設(shè)計時需要采用MVC 模式,實現(xiàn)系統(tǒng)的業(yè)務(wù)邏輯層、數(shù)據(jù)層和表現(xiàn)層相分離,使得當(dāng)某一層級發(fā)生改變時,其他層級不發(fā)生變動或者變動較?。黄浯巫裱案邇?nèi)聚、低耦合”的思路,對系統(tǒng)功能進(jìn)行模塊化設(shè)計,保持各個模塊之間的相對獨立性,當(dāng)一個模塊發(fā)生異常時,其他模塊仍然可以正常使用,并且在維護(hù)時還可以快速定位到異常發(fā)生的位置。最后在開發(fā)時必須嚴(yán)格按照標(biāo)準(zhǔn)化要求進(jìn)行文檔和代碼的編寫,充分考慮將來系統(tǒng)擴展的需求,預(yù)留好相應(yīng)的接口和方法。
2.1.1 用戶信息管理模塊設(shè)計
系統(tǒng)的用戶一共包含三種類型,分別是管理員、商家和顧客,通過給用戶設(shè)置不同的角色編碼來進(jìn)行角色的區(qū)分。管理員賬戶由系統(tǒng)擁有者在數(shù)據(jù)庫中直接創(chuàng)建,并賦予其角色編碼ADMIN,使其具有管理員角色,管理員賬戶可以有多個;顧客需要通過注冊才能成為系統(tǒng)用戶,注冊完成后,系統(tǒng)為其賦予角色編碼CUSTOMER;商家由管理員添加后成為系統(tǒng)用戶,添加成功后,系統(tǒng)為其賦予角色編碼MERCHENT。管理員登錄系統(tǒng)后可進(jìn)行顧客和商家信息的維護(hù)。顧客信息維護(hù)包括查詢顧客信息和凍結(jié)/解凍顧客信息等功能。商家信息維護(hù)則包括添加商家信息、修改商家信息、查詢商家信息、刪除商家信息、凍結(jié)/解凍商家信息等功能。為了更好地保障系統(tǒng)用戶權(quán)益,對于存在違規(guī)操作的商家或顧客,管理員可以對其賬戶進(jìn)行凍結(jié)。用戶被凍結(jié)后,將無法使用系統(tǒng),直至解凍后方可繼續(xù)使用系統(tǒng)。
2.1.2 商品信息管理模塊設(shè)計
商家登錄系統(tǒng)后,可以對商品信息進(jìn)行維護(hù),包括添加商品信息、查詢商品信息、修改商品信息、刪除商品信息、商品上架、商品下架等功能。顧客具有查看商品信息的功能,包括搜索商品信息、查看商品詳情。商家可以添加多種商品信息以便進(jìn)行發(fā)售,商家編輯好商品信息后,可以將商品上架。上架后,該商品即可被顧客搜索并購買。對于已經(jīng)不再售賣的商品,商家可以選擇將其下架,下架后的商品將不會被顧客搜索到,且不能被顧客購買。
2.1.3 購物車管理模塊設(shè)計
為了方便顧客選購商品,系統(tǒng)允許顧客將心儀的商品收藏到購物車中進(jìn)行暫存,購物車中包含了商品及其收藏數(shù)量信息,收藏的數(shù)量不能超過該商品的庫存量。顧客只有在登錄成功的情況下,才可以對購物車進(jìn)行管理,包括添加商品到購物車、修改購物車中的商品數(shù)量、查詢購物車中的商品信息、將商品從購物車中刪除等操作。如果顧客首次將某商品添加到購物車,則直接在購物車中添加該商品,并設(shè)置數(shù)量默認(rèn)為1。如果顧客再次添加該商品,則直接在購物車中,將該商品數(shù)量加1。顧客還可以選中購物中的若干商品直接下單。
2.1.4 訂單信息管理模塊設(shè)計
顧客和商家都具有訂單管理的相關(guān)功能。顧客登錄系統(tǒng)后,具有創(chuàng)建訂單、查詢訂單信息、刪除訂單信息等功能。訂單的創(chuàng)建有兩種方式,第一種是顧客通過選擇購物車中的商品信息來創(chuàng)建訂單,另一種方式是顧客通過直接在商品列表中選擇某個商品創(chuàng)建訂單。此外,顧客在創(chuàng)建訂單時,還需要選擇收貨地址,訂單創(chuàng)建后,訂單中會保存收貨地址的副本,確保即使后續(xù)用戶地址發(fā)生修改時,也不會對已提交的訂單造成影響。每一個訂單可以包含多個訂單項,每一個訂單項對應(yīng)一個商品及其數(shù)量,訂單項中還會保存商品的詳細(xì)信息作為快照,快照將作為商家和顧客發(fā)生糾紛時的重要評判依據(jù),即使后續(xù)商家對商品進(jìn)行修改,也不會對已提交的訂單造成影響。商家登錄系統(tǒng)后,具有查詢訂單信息及發(fā)貨的功能。顧客提交完訂單后,商家即可在系統(tǒng)中看到對應(yīng)的訂單信息,待客戶支付完成后,商家即可進(jìn)行發(fā)貨。
2.1.5 地址信息管理模塊設(shè)計
地址信息為顧客訂單的收貨地址,為了讓訂單順利地派送到指定位置,顧客還需進(jìn)行地址信息的維護(hù),顧客登錄系統(tǒng)后可以進(jìn)行新增地址信息、修改地址信息、查詢地址信息、刪除地址信息等操作。地址信息中包含了收件人的詳細(xì)地址、收件人姓名以及電話等信息。
2.1.6 評論信息管理
評論信息可以讓顧客更方便快捷地了解其他用戶購買該商品后的用戶體驗,以便給其他顧客提供參考,使人們對商品的了解更加全方位、立體。顧客和商家都可以查看商品的所有評論信息。此外,顧客還具有創(chuàng)建評論的功能,顧客購買商品之后,可以對商品進(jìn)行評論。
2.2.1 用戶登錄控制
用戶在未登錄的情況下只能瀏覽商品和評論信息,無權(quán)執(zhí)行任何其他操作。當(dāng)用戶要完成其他操作時,系統(tǒng)將強制跳轉(zhuǎn)到登錄頁面,提示用戶輸入賬戶密碼進(jìn)行登錄。同時為了防止密碼泄露,系統(tǒng)還采用SHA-256 哈希算法對數(shù)據(jù)庫中的密碼進(jìn)行加密。
2.2.2 用戶操作權(quán)限控制
為了提高系統(tǒng)運行的安全性,需要對用戶的操作進(jìn)行權(quán)限控制。系統(tǒng)采用RBAC 訪問控制策略,并使用Spring Security 進(jìn)行安全訪問控制,防止越權(quán)操作。如前2.1 所述,本系統(tǒng)中,數(shù)據(jù)庫中用戶表結(jié)構(gòu)中每個用戶都有一個角色編碼,用于標(biāo)識用戶的角色信息。同時數(shù)據(jù)庫中還存在一個角色權(quán)限關(guān)聯(lián)表,包含了角色與操作權(quán)限的對應(yīng)關(guān)系,當(dāng)用戶登錄成功后,系統(tǒng)將根據(jù)用戶角色,從數(shù)據(jù)庫的角色權(quán)限關(guān)聯(lián)表中讀取用戶的所有操作權(quán)限信息。當(dāng)用戶發(fā)出執(zhí)行某項操作的請求時,系統(tǒng)將首先根據(jù)用戶的操作內(nèi)容,獲取執(zhí)行該操作所需要的權(quán)限,并判斷用戶已有的權(quán)限集合中是否包含該操作權(quán)限,若包含對應(yīng)的操作權(quán)限,則允許用戶進(jìn)行當(dāng)前操作,反之則禁止用戶執(zhí)行當(dāng)前操作,并強制當(dāng)前用戶退出系統(tǒng)。
本系統(tǒng)采用開源的MySQL 數(shù)據(jù)庫系統(tǒng)進(jìn)行數(shù)據(jù)存儲,包含的數(shù)據(jù)表有收貨地址信息表、省市區(qū)信息表、評論信息表、商品信息表、訂單信息表、訂單詳情信息表、購物車信息表、用戶信息表、權(quán)限信息表等。各個數(shù)據(jù)表結(jié)構(gòu)設(shè)計為:收貨地址信息表(地址id、所在省份id、所在市id、所在區(qū)/縣id、詳細(xì)地址、郵編、收件人姓名、收件電話、所屬用戶id、刪除標(biāo)志位、創(chuàng)建人id、創(chuàng)建時間、修改人id、修改時間);省市區(qū)信息表(區(qū)域id、區(qū)域編碼、區(qū)域名稱、父區(qū)域id、刪除標(biāo)志位、創(chuàng)建人id、創(chuàng)建時間、修改人id、修改時間);評論信息表(評論id、評論人id、商品id、所屬訂單id、評論類型、詳細(xì)評論信息、刪除標(biāo)志位、創(chuàng)建人id、創(chuàng)建時間、修改人id、修改時間);商品信息表(商品id、商品名稱、商品類型、商品價格、商品庫存、圖片存儲路徑、商品描述信息、商品狀態(tài)、刪除標(biāo)志位、創(chuàng)建人id、創(chuàng)建時間、修改人id、修改時間);訂單信息表(訂單id、訂單編號、客戶id、收貨地址詳情、訂單總金額、刪除標(biāo)志位、創(chuàng)建人id、創(chuàng)建時間、修改人id、修改時間);訂單詳情信息表(訂單詳情id、訂單id、商品id、購買數(shù)量、商品名稱、商品類型、商品價格、商品圖片、商品描述、訂單詳情狀態(tài)、刪除標(biāo)志位、創(chuàng)建人id、創(chuàng)建時間、修改人id、修改時間);購物車信息表(購物車id、用戶id、商品型號id、商品id、商品數(shù)量、刪除標(biāo)志位、創(chuàng)建人id、創(chuàng)建時間、修改人id、修改時間);用戶信息表(用戶id、用戶名、密碼、昵稱、性別、聯(lián)系電話、郵箱、角色編碼、用戶狀態(tài)、刪除標(biāo)志位、創(chuàng)建人id、創(chuàng)建時間、修改人id、修改時間);權(quán)限信息表(角色編碼、權(quán)限編碼)。
本文設(shè)計了一款在線商城系統(tǒng),能夠有效實現(xiàn)商家及顧客進(jìn)行在線商品交易的需要,并能有效提高商品交易的便捷度,減少商品流通環(huán)節(jié),并節(jié)約交易成本。同時通過Spring Security 進(jìn)行安全訪問控制,防止越權(quán)操作,確保系統(tǒng)的安全性。