版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于SpringBoot的校園物品交易平臺的設(shè)計與實(shí)現(xiàn)目錄1緒論 11.1課題研究的背景和意義 11.2課題研究內(nèi)容 11.3論文組織結(jié)構(gòu) 21.4本章小結(jié) 22相關(guān)技術(shù)介紹 22.1.1Java 22.1.2SpringBoot框架 32.1.3Vue.js 32.1.4MySQL 42.2開發(fā)工具 52.3本章小結(jié) 53系統(tǒng)分析 63.1可行性分析 63.1.1技術(shù)可行性 63.1.2操作可行性 63.1.3經(jīng)濟(jì)可行性 63.2功能性分析 63.2.1主要功能模塊分析 63.2.2管理員功能分析 113.2.3用戶模塊分析 123.3非功能性分析 133.3.1穩(wěn)定性需求 133.3.2安全性需求 143.3.3高并發(fā)需求 143.3.4可擴(kuò)展性需求 143.4本章小結(jié) 144系統(tǒng)設(shè)計 144.1系統(tǒng)總體設(shè)計 144.2系統(tǒng)詳細(xì)設(shè)計 154.2.1用戶模塊 154.2.2閑置物品模塊 164.2.3評論回復(fù)模塊 174.2.4購買記錄模塊 184.3數(shù)據(jù)庫設(shè)計 194.3.1概念結(jié)構(gòu)設(shè)計 194.3.2數(shù)據(jù)庫表設(shè)計 214.4本章小結(jié) 235系統(tǒng)實(shí)現(xiàn) 235.1用戶管理功能 245.2商品管理功能 255.3商品評論回復(fù)功能 275.4權(quán)限控制功能 295.5本章小結(jié) 306系統(tǒng)測試 306.1測試目的 306.2測試方法 306.3系統(tǒng)功能模塊測試 306.4本章小結(jié) 31結(jié)束語 32參考文獻(xiàn) 33PAGE5緒論課題研究的背景和意義隨著我國經(jīng)濟(jì)的快速發(fā)展,對人才需求的不斷擴(kuò)大,大學(xué)生的數(shù)量在不斷增加,消費(fèi)水平也在日益提高。而隨著學(xué)生購買能力的提高,必然促使學(xué)生用品更新?lián)Q代的速度加快,大學(xué)生在大學(xué)期間也會購買一些閑置物品,尤其在畢業(yè)季大學(xué)校園每年都會掀起一場二手商品買賣的風(fēng)潮。由于大學(xué)生們畢業(yè)離校和宿舍調(diào)換,大學(xué)校園都會產(chǎn)生許多的閑置物品,又不能及時很好的處理掉,以至于在畢業(yè)的時候托運(yùn)麻煩而扔掉,造成了極大的浪費(fèi)[1]。國內(nèi)現(xiàn)有的阿里巴巴旗下的“咸魚”和騰訊旗下的“轉(zhuǎn)轉(zhuǎn)”等二手商品交易平臺又是面向大眾的,針對于大學(xué)生服務(wù)的二手交易平臺卻少之又少,使得這些二手商品無法得到充分利用。國外的Zaarly是一個移動設(shè)備上的關(guān)于個人對個人的需求對接平臺,F(xiàn)ribi是結(jié)合社交的移動二手交易平臺,EggDrop是基于地圖幫助用戶探索身邊的二手物品交易的平臺,也有Listia這種舊物贈送平臺的網(wǎng)站,定位于社區(qū)型舊物贈送平臺,至于專門針對校園的二手交易網(wǎng)并不多。因此開發(fā)一款畢業(yè)生物品交易平臺是很有必要的。以往每年到畢業(yè)季校園內(nèi)也會有線下的跳蚤市場來處理這些閑置物品,但受天氣、校園空間限制、學(xué)生時間限制,需要一直在攤位守著,時間比較集中緊迫,收效不大,只有較少的閑置物品能被再次利用,還可能會產(chǎn)生大量的垃圾,無法及時的滿足學(xué)生的個人需求。大學(xué)生具有收入單一,消費(fèi)多樣化,消費(fèi)觀念開放等特點(diǎn),并且大多數(shù)二手物品都是學(xué)生自身所需要的,交易的物品具有共性,所以導(dǎo)致了買賣二手物品的需求很高。大學(xué)生在大學(xué)期間是有需求且持有較為信任的態(tài)度去購買一些閑置物品,目前學(xué)生大多數(shù)通過社交平臺、熟人介紹等進(jìn)行買賣二手物品,因此研究本課題加快二手商品的流轉(zhuǎn),同時也為那些需要二手商品的同學(xué)提供價格低廉、實(shí)用的物品,使得畢業(yè)季大家能夠更加環(huán)保、充分的利用資源、減少浪費(fèi),可以24小時不受限制的挑選或售賣閑置物品,對畢業(yè)季校園二手經(jīng)濟(jì)具有非常重要的現(xiàn)實(shí)意義[2]。課題研究內(nèi)容本課題所設(shè)計的畢業(yè)季物品交易系統(tǒng),實(shí)現(xiàn)對閑置物品的在線交易功能[3],種類包括了電子產(chǎn)品、二手圖書、日常用品、衣帽服飾、交通出行及其它閑置物品;點(diǎn)擊產(chǎn)品,進(jìn)入詳情頁,可以查看產(chǎn)品的詳細(xì)信息。用戶注冊后完善個人信息,可以對產(chǎn)品進(jìn)行評論討論,也可以與商品售賣者在線溝通,系統(tǒng)會保存兩者的聊天記錄信息;如果用戶對該產(chǎn)品感興趣,可以點(diǎn)擊收藏該商品,在收藏管理界面可以查看用戶收藏的所有商品,用戶還可以在個人中心中查看訂單信息;可以進(jìn)行閑置物品的發(fā)布上架,可以修改商品的信息,也可以下架其在售的閑置物品;系統(tǒng)開發(fā)過程中需要考慮用戶群體的使用體驗(yàn),盡量保證用戶操作的便捷性,利于上手,界面要簡潔明了,體驗(yàn)感要好。本系統(tǒng)中用戶的關(guān)鍵性信息要進(jìn)行加密存儲,采用MyBatis中Cache二級緩存來應(yīng)對可能出現(xiàn)的用戶同時大量訪問網(wǎng)站時對系統(tǒng)數(shù)據(jù)庫所帶來的壓力,各個模塊功能之間緊密協(xié)同配合[4]。論文組織結(jié)構(gòu)本論文分為六個章節(jié)來講解該畢業(yè)生物品交易系統(tǒng),章節(jié)結(jié)構(gòu)如下:第一章:本章主要講解每年大量高校畢業(yè)生畢業(yè)季所產(chǎn)生大量的閑置物品無法及時處理。分析本課題的背景和意義,以及對課題研究內(nèi)容的分析。第二章:本章主要介紹了《基于SpringBoot的畢業(yè)生物品交易系統(tǒng)》中所使用的相關(guān)技術(shù)和開發(fā)工具,包括SpringBoot架構(gòu),Vue等應(yīng)用技術(shù)。第三章:本章主要進(jìn)行系統(tǒng)的需求性分析,從技術(shù)可行性、操作可行性、經(jīng)濟(jì)可行性、社會可行性、功能性需求、非功能性需求、面向?qū)ο筮@些方面對系統(tǒng)進(jìn)行需求分析。第四章:本章主要進(jìn)行概要設(shè)計、詳細(xì)功能設(shè)計、數(shù)據(jù)庫設(shè)計三大方面進(jìn)行系統(tǒng)設(shè)計,從概要設(shè)計方面對系統(tǒng)進(jìn)行了總體模塊圖設(shè)計。從用戶模塊、商品模塊、評論回復(fù)模塊、售出記錄模塊四大模塊進(jìn)行流程圖設(shè)計。根據(jù)具體功能對數(shù)據(jù)庫進(jìn)行了設(shè)計,包括數(shù)據(jù)庫概念設(shè)計和數(shù)據(jù)表結(jié)構(gòu)設(shè)計。第五章:本章主要進(jìn)行系統(tǒng)實(shí)現(xiàn)的部分功能的核心編碼實(shí)現(xiàn),從用戶管理功能、商品管理功能、售出記錄功能、權(quán)限控制功能四個功能進(jìn)行了系統(tǒng)核心編碼的實(shí)現(xiàn)邏輯,展示了部分功能實(shí)現(xiàn)界面。第六章:本章主要對系統(tǒng)的部分功能進(jìn)行分析測試,對系統(tǒng)的部分功能模塊進(jìn)行黑盒測試。本章小結(jié)本章節(jié)介紹了每年大量高校畢業(yè)生畢業(yè)季所產(chǎn)生大量的閑置物品無法及時處理,通過分析國內(nèi)外現(xiàn)有的平臺及對主要處理閑置物品的方式進(jìn)行了總結(jié),對線上處理畢業(yè)季大量的閑置物品的技術(shù)服務(wù)和前景進(jìn)行了展望和分析,進(jìn)一步明確本課題的研究方向和內(nèi)容。相關(guān)技術(shù)介紹JavaJava是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡單易用兩個特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程
。Java具有簡單性、面向?qū)ο蟆⒎植际?、健壯性、安全性、平臺獨(dú)立與可移植性、多線程、動態(tài)性等特點(diǎn)
。Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序[5]、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。Java分為三個體系:JavaSE(J2SE)(Java2PlatformStandardEdition,java平臺標(biāo)準(zhǔn)版)JavaEE(J2EE)(Java2Platform,EnterpriseEdition,java平臺企業(yè)版)JavaME(J2ME)(Java2PlatformMicroEdition,java平臺微型版)。本課題采用JavaEE[6]的知識體系來完成該Web程序。SpringBoot框架在使用傳統(tǒng)的Spring去做JavaEE(JavaEnterpriseEdition)開發(fā)中,大量的XML文件存在于項(xiàng)目之中,導(dǎo)致JavaEE項(xiàng)目變得慢慢笨重起來,,繁瑣的配置和整合第三方框架的配置,導(dǎo)致了開發(fā)和部署效率的降低。SpringBoot并不是用來替代Spring的解決方案,而是和Spring框架緊密結(jié)合用于提升Spring開發(fā)者體驗(yàn)的工具[7]。同時它集成了大量常用的第三方庫配置,SpringBoot應(yīng)用中這些第三方庫幾乎可以是零配置的開箱即用(out-of-the-box),大部分的SpringBoot應(yīng)用都只需要非常少量的配置代碼(基于Java的配置),開發(fā)者能夠更加專注于業(yè)務(wù)邏輯。因?yàn)镾pringBoot是伴隨著Spring4.0而生的,boot是引導(dǎo)的意思,也就是它的作用其實(shí)就是在于幫助開發(fā)者快速的搭建Spring框架,因此SpringBoot繼承了Spring優(yōu)秀的基因,在Spring中開發(fā)更為方便快捷。Vue.jsVue.js是一個漸進(jìn)的JavaScript框架,用于開發(fā)交互式Web界面,是用于簡化Web開發(fā)的著名框架之一。Vue的核心庫只關(guān)注視圖層,并且非常容易學(xué)習(xí),也非常容易與其他庫或已有項(xiàng)目整合。Vue完全有能力驅(qū)動采用單文件組件和Vue生態(tài)系統(tǒng)支持的庫開發(fā)的復(fù)雜單頁應(yīng)用。Vue.js還提供了MVVM數(shù)據(jù)綁定和一個可組合的組件系統(tǒng),具有簡單、靈活的API,其目標(biāo)是通過盡可能簡單的API實(shí)現(xiàn)響應(yīng)式的數(shù)據(jù)綁定和可組合的視圖組件[8]。Vue.js的特點(diǎn):(1)輕量級的框架Vue.js能夠自動追蹤依賴的模板表達(dá)式和計算屬性,提供MVVM數(shù)據(jù)綁定和一個可組合的組件系統(tǒng),具有簡單、靈活的API,使讀者更加容易理解,能夠更快上手。(2)雙向數(shù)據(jù)綁定聲明式渲染是數(shù)據(jù)雙向綁定的主要體現(xiàn),同樣也是Vue.js的核心,它允許采用簡潔的模板語法將數(shù)據(jù)聲明式渲染整合進(jìn)DOM。(3)指令Vue.js與頁面進(jìn)行交互,主要就是通過內(nèi)置指令來完成的,指令的作用是當(dāng)其表達(dá)式的值改變時相應(yīng)地將某些行為應(yīng)用到DOM上。(4)組件化組件(Component)是Vue.js最強(qiáng)大的功能之一[9]。組件可以擴(kuò)展HTML元素,封裝可重用的代碼。(5)客戶端路由Vue-router是Vue.js官方的路由插件,與Vue.js深度集成,用于構(gòu)建單頁面應(yīng)用。Vue單頁面應(yīng)用是基于路由和組件的,路由用于設(shè)定訪問路徑,并將路徑和組件映射起來,傳統(tǒng)的頁面是通過超鏈接實(shí)現(xiàn)頁面的切換和跳轉(zhuǎn)的。(6)狀態(tài)管理狀態(tài)管理實(shí)際就是一個單向的數(shù)據(jù)流,State驅(qū)動View的渲染,而用戶對View進(jìn)行操作產(chǎn)生Action,使State產(chǎn)生變化,從而使View重新渲染,形成一個單獨(dú)的組件。圖2-1Vue的雙向數(shù)據(jù)綁定原理圖MySQLMySQL是一個開放源碼的小型關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQLAB公司。目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫[10]。MySQL是應(yīng)用最廣泛的開源關(guān)系數(shù)據(jù)庫,是許多常見網(wǎng)站、應(yīng)用程序和商業(yè)產(chǎn)品使用的主要關(guān)系數(shù)據(jù)存儲。MySQL支持多線程、多種數(shù)據(jù)存儲引擎、在線DDL變動等功能。特別是在數(shù)據(jù)架構(gòu)上,它還支持動態(tài)程序,因此具備很高的靈活性,MySQL數(shù)據(jù)庫適用于各種使用案例,包括任務(wù)關(guān)鍵型應(yīng)用程序、動態(tài)網(wǎng)站以及用于軟件、硬件和設(shè)備的嵌入式數(shù)據(jù)庫。圖2-2MySQL架構(gòu)圖開發(fā)工具IDEA全稱IntelliJIDEA,是Java語言開發(fā)的集成環(huán)境,IntelliJIDEA在業(yè)界被公認(rèn)為最好的Java開發(fā)工具之一,IDEA相對于Eclipse來說最大的優(yōu)點(diǎn)就是更加智能,尤其在智能代碼助手、代碼自動提示、重構(gòu)、J2EE支持、各類版本工具(git、svn、github等)、JUnit、CVS整合、代碼分析、創(chuàng)新的GUI設(shè)計等方面的功能可以說是超常的。擁有更好的項(xiàng)目管理方式,更高的開發(fā)效率,強(qiáng)大的整合能力:比如Git、Maven、Spring等支持。IntelliJIDEA是跨平臺的,可以適用于Windows,OSX和Linux。本章小結(jié)本章節(jié)介紹了《基于SpringBoot的畢業(yè)生物品交易系統(tǒng)》開發(fā)過程中所用到的開發(fā)技術(shù)及開發(fā)工具,對當(dāng)下流行的SpringBoot、Vue[11]等技術(shù)特點(diǎn)進(jìn)行了大概介紹。系統(tǒng)分析可行性分析在每年大量高校畢業(yè)生畢業(yè)季所產(chǎn)生大量的閑置物品無法及時處理,現(xiàn)有處理模式具有很大局限性的當(dāng)下,針對該課題,必須要對在線的畢業(yè)生物品交易方式的可行性進(jìn)行探索,從技術(shù)可行性、操作可行性、經(jīng)濟(jì)可行性三個方面,來對本課題進(jìn)行可行性研究。技術(shù)可行性本課題系統(tǒng)使用當(dāng)下流行的SpringBoot架構(gòu),前端部分頁面使用Thymeleaf模板引擎渲染數(shù)據(jù),部分頁面使用Vue.js作為頁面渲染,JavaScript進(jìn)行前后端的數(shù)據(jù)交互,MySQL進(jìn)行系統(tǒng)數(shù)據(jù)的存儲,實(shí)現(xiàn)難度適中,具備完善的技術(shù)層次支撐開發(fā)該系統(tǒng)。操作可行性 對于互聯(lián)網(wǎng)幾乎普及的當(dāng)下,上網(wǎng)瀏覽網(wǎng)頁以及網(wǎng)絡(luò)購物變得非常普遍,用戶可以很容易的瀏覽網(wǎng)站,尋找自己喜歡的商品,用戶操作簡便,操作可行性較為完善。經(jīng)濟(jì)可行性(1)開發(fā)階段:在該階段只需要適當(dāng)?shù)娜肆ξ锪涂梢蚤_發(fā)完成,相關(guān)技術(shù)及開發(fā)工具是免費(fèi)使用的,開發(fā)成本很低。(2)使用階段:在使用本系統(tǒng)時會產(chǎn)生一定量的驗(yàn)證碼費(fèi)用,該費(fèi)用由對應(yīng)驗(yàn)證碼提供商阿里云SMS收費(fèi),使用成本較低。綜上分析,本系統(tǒng)在開發(fā)階段及使用階段的成本較低,具有良好的經(jīng)濟(jì)可行性。功能性分析主要功能模塊分析本畢業(yè)生物品交易平臺主要分為三種角色,一是普通用戶,二是管理員用戶,三是超級管理員用戶。普通用戶可以瀏覽網(wǎng)站,查看最新商品及自己喜歡的商品,可以對商品進(jìn)行評價及購買,用戶還可以在完善自己的信息后發(fā)布商品進(jìn)行商品的售賣,提供一個既是買方也可以是賣方的平臺,用戶注冊時使用手機(jī)號進(jìn)行注冊,忘記密碼時或更換手機(jī)號時都需要提供短信驗(yàn)證碼進(jìn)行驗(yàn)證。管理員可以對用戶進(jìn)行管理,進(jìn)行審核用戶發(fā)布的商品信息,也可以發(fā)布系統(tǒng)新聞供用戶查看,刪除已發(fā)布的新聞通知。超級管理員可以修改用戶權(quán)限,添加新的管理員。購買方還可以收藏感興趣的商品進(jìn)行保存,用戶購買商品后會進(jìn)行購買記錄的匯總。用戶在非登錄狀態(tài)和登錄狀態(tài)擁有很大不同的功能,登錄后既可以作為買方也可以成為賣方,登錄后可以進(jìn)行收藏商品、購買商品、發(fā)布商品、刪除發(fā)布的商品、查看消息通知、查看售出記錄等功能。管理員主要進(jìn)行用戶發(fā)布商品的審核、查看所有用戶名單、發(fā)布新聞、刪除新聞等。超級管理員在可以修改用戶的權(quán)限,變更其角色,添加管理員等。下面以普通用戶,管理員和超級管理員為用例對象,先分析系統(tǒng)總體用例圖,通過分析系統(tǒng)總體用例圖中各個模塊之間的關(guān)系,介紹各個模塊的主要功能,進(jìn)而能夠更加清晰系統(tǒng)設(shè)計開發(fā)流程模塊功能,再分別以管理員登錄用例、新聞用例、管理員商品用例、超級管理員用例、用戶商品用例、用戶收藏商品用例、用戶購買記錄用例、用戶訂單用例八個方面進(jìn)行用例的參與者、前置條件、基本事件流、異常事件流、后置條件的詳細(xì)分析。系統(tǒng)總體用例圖如圖3-1所示:圖STYLEREF1\s3–SEQ圖\*ARABIC\s11系統(tǒng)總體用例圖管理員功能分析系統(tǒng)管理員分為普通管理員和超級管理員,管理員可以對用戶發(fā)布的閑置物品進(jìn)行審核,可以選擇審核通過或?qū)徍瞬煌ㄟ^,即違規(guī)狀態(tài),將閑置物品打回給用戶重新上傳,也可以瀏覽其它所有的商品信息。超級管理員可以查看所有的用戶信息,可以將普通用戶設(shè)置為管理員,也可以將管理員設(shè)置為普通用戶,還可以封禁用戶。管理員可以管理系統(tǒng)的新聞模塊,新聞模塊是受管理員操作的,管理員可以在后臺發(fā)布想發(fā)布的新聞內(nèi)容,新聞中有發(fā)布者的信息,確保如果發(fā)布不合規(guī)的新聞可以找到發(fā)布者,而且只能是發(fā)布新聞的管理員可以修改新聞信息,首頁默認(rèn)展示最新發(fā)布的三條新聞,用戶可以在首頁瀏覽這些新聞信息。系統(tǒng)管理員的用例關(guān)系設(shè)計如圖3-2所示:圖3-2系統(tǒng)管理員用例圖用戶模塊分析用戶初次進(jìn)行注冊后,會跳轉(zhuǎn)到完善信息界面,用戶完善個人信息后,可以在個人中心進(jìn)行如下功能模塊:商品模塊:發(fā)布閑置物品,修改已發(fā)布的閑置物品,展示自己已發(fā)布的閑置物品,查看待審核的閑置物品、已下架的閑置物品,也可以刪除對應(yīng)的閑置物品,點(diǎn)擊可以查看閑置物品的詳情信息。發(fā)布閑置物品后管理員會進(jìn)行審核,閑置物品合規(guī)的會通過審核,不合規(guī)的會被標(biāo)記為違規(guī)閑置物品不允許在系統(tǒng)中展示出來。首頁默認(rèn)分類展示部分閑置物品,用戶也可以分類別按價格查找感興趣的閑置物品。評論回復(fù)模塊:閑置物品下方提供評論功能,用戶在登錄狀態(tài)可以在閑置物品下方進(jìn)行評論或回復(fù)評論。收藏模塊:若用戶對某個閑置物品感興趣可以點(diǎn)擊收藏按鈕進(jìn)行收藏,在個人中心界面可以查看收藏的閑置物品列表或者取消收藏的閑置物品,點(diǎn)擊收藏的閑置物品可以查看閑置物品的詳情信息。消息模塊:用戶發(fā)布閑置物品后的審核信息、對用戶發(fā)布的閑置物品下的評論回復(fù)信息、閑置物品售出的信息都會以消息通知的形式發(fā)送給用戶供用戶及時查看相關(guān)信息。售出記錄模塊:系統(tǒng)不提供在線購買功能,雙方可以進(jìn)行線上溝通后線下交易,賣家手動將已售出的閑置物品進(jìn)行下架,售出信息會保存在售出記錄中供用戶查看。個人信息模塊:用戶可以查看自己的個人信息,可以修改個人信息。系統(tǒng)用戶的用例關(guān)系設(shè)計如圖3-3所示:圖3-3系統(tǒng)用戶用例圖核心用例描述用戶登錄網(wǎng)站默認(rèn)存在一個超級管理員用戶,其余的用戶都需要進(jìn)行注冊后才能使用,管理員由超級管理員設(shè)置,所有用戶進(jìn)行相應(yīng)操作時都需要進(jìn)行進(jìn)行登錄。下面以用戶登錄用例進(jìn)行分析,用戶進(jìn)入登錄界面后輸入賬號和密碼進(jìn)行登錄驗(yàn)證,登錄成功后會跳轉(zhuǎn)到平臺首頁,登錄失敗后會提示相應(yīng)的登錄失敗原因,需重新登錄。用戶登錄的用例描述如表3-1所示:表3-1用戶登錄用例名稱:用戶登錄用例標(biāo)識符User_login參與者:網(wǎng)站用戶用例說明:用戶登錄系統(tǒng)前置條件:用戶已經(jīng)注冊成功為網(wǎng)站的用戶基本事件流:(1)用戶打開畢業(yè)生物品交易平臺的首頁(2)用戶點(diǎn)擊進(jìn)入登錄頁面(3)用戶輸入賬號和密碼,然后點(diǎn)擊登錄其他事件流:無異常事件流:如果登錄驗(yàn)證失敗,則會彈出登錄失敗的原因后置條件:用戶登錄成功后會跳轉(zhuǎn)到網(wǎng)站首頁,用戶可以正常操作其余功能注釋:無管理員審核商品網(wǎng)站普通用戶發(fā)布閑置的物品后需要經(jīng)過管理員審核通過后才能展示在平臺上,以管理員審核商品為例,管理員登錄進(jìn)入管理員界面后查看商品列表,選擇待審核的商品,管理員可以查看待審核的商品詳情,選擇進(jìn)行通過審核或不通過審核,商品不通過會以違規(guī)商品的狀態(tài)返回給用戶的商品狀態(tài)里。管理員審核商品的用例描述如下表3-2所示:表3-2管理員審核商品用例名稱:管理員審核商品用例標(biāo)識符Admin_review參與者:管理員用例說明:管理員審核商品前置條件:管理員成功登錄進(jìn)管理員界面基本事件流:(1)管理員查看商品列表里的待審核狀態(tài)的商品(2)管理員查看待審核商品的詳情信息(3)管理員選擇該商品通過審核或不通過審核其他事件流:無異常事件流:如果管理員操作失敗,會彈出操作失敗的提醒后置條件:管理員審核通過的商品會展示在平臺中,未通過則會打回給用戶查看注釋:無用戶篩選商品網(wǎng)站用戶可以在商品清單界面通過各種篩選條件選擇商品,登錄后還可以篩選只看自己學(xué)校商品及看非本校的商品。以用戶在商品清單界面篩選商品為例,用戶未登錄時可以根據(jù)商品的價格高低、價格范圍、商品類別進(jìn)行篩選,用戶登錄后還可以按照區(qū)域進(jìn)行篩選查找商品。用戶篩選商品的用例描述如下表3-3所示:表3-3用戶篩選商品用例名稱:用戶篩選商品用例標(biāo)識符User_screening參與者:普通用戶用例說明:網(wǎng)站普通用戶篩選商品前置條件:用戶登錄后處于物品清單界面基本事件流:(1)用戶按照物品類別查找商品(2)用戶按照物品價格選擇進(jìn)行查找商品(3)用戶按照區(qū)域查找商品其他事件流:無異常事件流:若查找失敗,會彈出系統(tǒng)錯誤后置條件:展示出按照指定條件查找的商品注釋:無用戶操作售出記錄用戶將正常售賣的商品設(shè)置為已售后系統(tǒng)會將其信息保存在售出記錄中,用戶可以查看或者刪除售出記錄。以用戶操作售出記錄為例,用戶登錄后在個人管理界面可以查看售出記錄,用戶也可以選擇刪除售出記錄。用戶操作售出記錄的用例描述如下表3-4所示:表3-4用戶操作售出記錄用例名稱:用戶操作售出記錄用例標(biāo)識符User_action參與者:網(wǎng)站用戶用例說明:用戶操作售出記錄前置條件:用戶成功登錄后基本事件流:(1)用戶點(diǎn)擊進(jìn)入個人管理界面(2)用戶選擇售出記錄菜單查看售出記錄(3)用戶可以選擇是否刪除售出記錄其他事件流:無異常事件流:頁面彈出提示框“刪除失敗”后置條件:售出記錄列表刷新并顯示新的售出記錄數(shù)據(jù)注釋:無非功能性分析在一個系統(tǒng)設(shè)計中,光光分析功能性分析是不夠的,還需要分析系統(tǒng)所需要的非功能性需求分析,以此來更加的完善服務(wù)于用戶。穩(wěn)定性需求對于系統(tǒng)的運(yùn)行,穩(wěn)定性至關(guān)重要,要確保系統(tǒng)能夠長期穩(wěn)定的運(yùn)行,出現(xiàn)問題也能夠及時解決,預(yù)留一部分解決方案,防止出現(xiàn)系統(tǒng)崩潰。安全性需求對于一個系統(tǒng)而言,必須考慮系統(tǒng)的安全性,數(shù)據(jù)庫對用戶的密碼信息都進(jìn)行了MD5加鹽加密,對于系統(tǒng)操作都進(jìn)行了不同的判斷,根據(jù)對應(yīng)的權(quán)限來執(zhí)行對應(yīng)的操作。高并發(fā)需求系統(tǒng)應(yīng)考慮部分可能存在的高并發(fā)情況,對數(shù)據(jù)庫訪問密集的業(yè)務(wù)場景中都使用了緩存來緩解系統(tǒng)的壓力[12],來使系統(tǒng)盡量流暢的運(yùn)行。可擴(kuò)展性需求隨著系統(tǒng)運(yùn)行時間的增長,用戶量會不斷的增長,可能會催生新的業(yè)務(wù)功能,部分系統(tǒng)業(yè)務(wù)功能會進(jìn)行改變,因?yàn)樾枰紤]系統(tǒng)的可擴(kuò)展性需求。本章小結(jié)本章節(jié)首先從技術(shù)可行性、操作可行性、經(jīng)濟(jì)可行性、社會可行性進(jìn)行可行性分析,又從功能性需求分析及非功能性需求分析來進(jìn)行系統(tǒng)的分析,最后針對系統(tǒng)總體用例圖對系統(tǒng)各個用例進(jìn)行用例分析。系統(tǒng)設(shè)計系統(tǒng)總體設(shè)計本系統(tǒng)作為一個畢業(yè)生物品交易平臺的web網(wǎng)站,采用B/S架構(gòu),系統(tǒng)主要分為表現(xiàn)層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層。表現(xiàn)層作為與用戶交互的界面,要考慮美觀性和易操作性,業(yè)務(wù)邏輯層與表現(xiàn)層使用Ajax進(jìn)行異步數(shù)據(jù)交互,主要通過json數(shù)據(jù)格式進(jìn)行數(shù)據(jù)的交互,根據(jù)數(shù)據(jù)返回值的不同展示不同的頁面效果,業(yè)務(wù)邏輯相關(guān)功能模塊主要分為商品模塊、評論回復(fù)模塊、權(quán)限控制模塊、用戶模塊、售出記錄模塊、在線聊天模塊。其中用戶模塊以手機(jī)號為唯一真實(shí)數(shù)據(jù)憑證,包括用戶的注冊、登錄、角色控制等,角色控制由角色id及權(quán)限id控制,通過查找用戶的角色信息,再根據(jù)角色信息查找擁有的相應(yīng)權(quán)限,商品模塊主要為發(fā)布商品、審核商品、修改商品、售賣商品、分類查看商品等,根據(jù)角色不同用戶擁有不同的商品操作權(quán)限,評論回復(fù)模塊在商品詳情界面下方給用戶提供評論和回復(fù)的功能,點(diǎn)擊評論及回復(fù)中用戶的頭像信息可以跳轉(zhuǎn)到用戶個人主頁中,用戶可以在個人中心購買記錄中查看或刪除自己購買過商品的購買記錄,訂單管理展示的是用戶所售出商品的訂單信息,也有其余模塊相互之間配合完善整體的系統(tǒng)架構(gòu)。系統(tǒng)整體功能架構(gòu)圖如圖4-1所示:圖4-1系統(tǒng)整體功能模塊圖系統(tǒng)詳細(xì)設(shè)計用戶模塊用戶模塊主要包括注冊時的信息綁定,用戶個人信息的查看及修改,注冊后默認(rèn)角色為普通用戶,可以進(jìn)行商品的購買及售賣,查看新聞信息及進(jìn)行聊天,但是變更為管理員后可以審核用戶發(fā)布的商品,發(fā)布新聞等操作,系統(tǒng)默認(rèn)內(nèi)置一個超級管理員,可以更改用戶的角色信息等功能。此處以用戶角色授權(quán)為例,默認(rèn)注冊后為普通用戶,會將用戶角色id存入數(shù)據(jù)庫中,角色信息對應(yīng)的權(quán)限信息不可更改,通過賦予用戶不同的角色擁有不同的權(quán)限,用戶進(jìn)行登錄時,會先判斷該賬戶是否存在,如果賬號未注冊則跳轉(zhuǎn)到注冊操作,注冊后進(jìn)行完善個人信息,若為已注冊用戶則進(jìn)行登錄操作,登錄后通過Shiro進(jìn)行角色授權(quán)操作,查詢用戶對應(yīng)的角色后返回登錄授權(quán)結(jié)果,前端通過角色信息可以提供給用戶不同的操作界面,以此達(dá)到根據(jù)用戶角色不同提供不同的系統(tǒng)權(quán)限功能。具體過程如流程圖4-2所示。圖4-2用戶角色授權(quán)流程圖閑置物品模塊用戶模塊主要包括閑置物品的購買、發(fā)布、修改、審核等功能,不同角色可以執(zhí)行不同的功能,閑置物品詳情界面展示了閑置物品的所有信息,包括圖片及商品簡介等,用戶可以收藏閑置物品信息,也可以對閑置物品進(jìn)行評論及回復(fù),供他人了解更多的閑置物品信息,可以購買閑置物品或者點(diǎn)擊感興趣發(fā)起聊天功能與賣家溝通。系統(tǒng)首頁默認(rèn)按分類展示一定數(shù)量的商品,首頁下面也會展示一定量最新發(fā)布閑置物品,在閑置物品清單界面可以按照類別及價格排序等查看不同種類的所有閑置物品信息,用戶可以查看其詳情信息。此處以發(fā)布審核閑置物品為例,用戶登錄后獲取到角色權(quán)限,普通用戶可以在個人中心的發(fā)布閑置物品頁面發(fā)布閑置物品,填寫閑置物品的標(biāo)題、簡介、售價、類別等,上傳閑置物品的照片和視頻即可發(fā)布閑置物品,閑置物品發(fā)布后進(jìn)入審核階段,管理員審核通過后即可在系統(tǒng)閑置物品中顯示,審核不通過則不能出現(xiàn)在系統(tǒng)閑置物品里。具體過程如流程圖4-3所示。圖4-3發(fā)布審核商品流程圖評論回復(fù)模塊在閑置物品詳情界面下方,提供用戶評論回復(fù)功能,感興趣或者已購買的用戶可以對閑置物品進(jìn)行評論及回復(fù)。用戶進(jìn)行評論回復(fù)前會判斷用戶是否已登錄,如果未登錄則提醒前往登錄后再評論回復(fù),登陸后用戶可以在閑置物品詳情下進(jìn)行評論,評論數(shù)據(jù)庫保存評論者id、閑置物品發(fā)布者id、評論內(nèi)容、評論時間等信息,評論閑置物品后會推送通知給閑置物品擁有者,評論后會刷新閑置物品下方評論,評論顯示用戶頭像信息,點(diǎn)擊頭像可以跳轉(zhuǎn)到個人主頁,可以對評論進(jìn)行回復(fù),回復(fù)會保存閑置物品id、被回復(fù)者id、回復(fù)者id、閑置物品發(fā)布者id、回復(fù)內(nèi)容、回復(fù)時間等信息,評論和回復(fù)根據(jù)評論id進(jìn)行數(shù)據(jù)關(guān)聯(lián),刪除評論后也會刪除評論對應(yīng)下所有的回復(fù)。此處以用戶進(jìn)行評論為例,用戶在登錄狀態(tài)下進(jìn)行評論,系統(tǒng)提示評論成功后會給閑置物品發(fā)布者發(fā)布一條評論通知,提醒閑置物品發(fā)布者查看,下面是流程圖分析,具體過程如流程圖4-4所示。圖4-4發(fā)布評論流程圖購買記錄模塊購買記錄模塊是保存用戶已經(jīng)購買過的商品信息,用戶可以隨時查看自己購買過的商品或刪除自己購買過商品的記錄。此處以添加購買記錄為例,用戶在瀏覽商品詳情信息時可以選購自己感興趣的商品添加至購物車,此時用戶選購的商品信息及選購的數(shù)量、價格等保存在購物車中,用戶在購物車選擇要購買的商品開始進(jìn)行結(jié)算,用戶結(jié)算成功后系統(tǒng)會判斷是否購買成功,當(dāng)用戶購買成功后系統(tǒng)將購買的商品信息,包括商品名、商品單價、商品數(shù)量、訂單金額、購買時間、購買者的ID等存入購買記錄中,如用戶購買失敗則會不保存用戶的購買記錄。具體過程如流程圖4-5所示。圖4-5添加購買記錄流程圖數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫是系統(tǒng)中最重要的部分之一,設(shè)計好完善合理的數(shù)據(jù)庫能夠?qū)ο到y(tǒng)的運(yùn)行起到重要的作用,從數(shù)據(jù)庫的需求分析,完善各模塊之間數(shù)據(jù)庫信息,到數(shù)據(jù)庫各表之間的聯(lián)系建立,針對某些表可能訪問壓力大需要進(jìn)行緩存數(shù)據(jù)等都要進(jìn)行分析[13]。概念結(jié)構(gòu)設(shè)計概念模型的最常用模型是實(shí)體-聯(lián)系模型(Entity-RelationshipModel,簡稱E-R模型),E-R模型中,數(shù)據(jù)的結(jié)構(gòu)被表示為“實(shí)體-聯(lián)系”圖。(E-R圖)圖中有三個主要的元素類型:實(shí)體集,屬性和聯(lián)系。E-R圖遵循三條設(shè)計原則:相對原則、一致原則、簡單原則。數(shù)據(jù)庫概念設(shè)計是程序開發(fā)中必不可少的重要環(huán)節(jié),下面從用戶實(shí)體、商品實(shí)體、商品評論實(shí)體、商品評論回復(fù)實(shí)體進(jìn)行概要設(shè)計。(1)用戶信息實(shí)體屬性表:用戶實(shí)體類包括的屬性有用戶id、真實(shí)姓名、用戶密碼、手機(jī)號、用戶頭像、地區(qū)、注冊時間、用戶狀態(tài)。用戶實(shí)體類屬性圖如圖4-6所示。圖4-6用戶實(shí)體屬性圖(2)商品實(shí)體屬性表:商品實(shí)體類包括的屬性有商品id、商品名、商品描述、視頻、商品數(shù)量、售價、是否包郵、供貨地址、發(fā)布時間、修改時間、下架時間、商品狀態(tài)、瀏覽量、商品類別、簡介圖、用戶id。商品實(shí)體類屬性圖如圖4-7所示。圖4-7商品實(shí)體屬性圖(3)商品評論實(shí)體屬性表:商品評論實(shí)體類包括的屬性有評論id、商品id、評論者id、商品發(fā)布者id、評論內(nèi)容、評論時間、評論狀態(tài)。商品評論實(shí)體類屬性圖如圖4-8所示。圖4-8商品評論實(shí)體屬性圖(4)商品評論回復(fù)實(shí)體屬性表:商品評論回復(fù)實(shí)體類包括的屬性有回復(fù)id、評論id、商品id、被回復(fù)用戶id、商品發(fā)布者id、回復(fù)內(nèi)容、回復(fù)者id、回復(fù)時間、回復(fù)狀態(tài)。商品評論回復(fù)實(shí)體類屬性圖如圖4-9所示。圖4-9商品評論回復(fù)實(shí)體屬性圖數(shù)據(jù)庫表設(shè)計(1)用戶信息表用戶信息表是用來存儲用戶個人信息的,包括用戶id(gyf_userid)、真實(shí)姓名(gyf_username)、用戶密碼(gyf_password)、手機(jī)號(gyf_mobilephone)、用戶頭像(gyf_uimage)、地區(qū)(gyf_userarea)、注冊時間(gyf_createtime)、用戶狀態(tài)(gyf_userstatus),其中用戶id是根據(jù)系統(tǒng)時間+隨機(jī)數(shù)組成的19位ID數(shù),確保id不會重復(fù),用戶密碼采用MD5加鹽的方式進(jìn)行加密處理,但用戶信息表不作為登錄使用。用戶信息表結(jié)構(gòu)如表4-1所示:表4-1用戶信息表(User_info)字段名字段類型字段長度能否為空是否主鍵字段描述gyf_useridvarchar64否是用戶idgyf_usernamevarchar255是否用戶真實(shí)姓名gyf_passwordvarchar255否否用戶密碼gyf_mobilephonevarchar255否否用戶手機(jī)號gyf_uimagevarchar255是否用戶頭像gyf_userareavarchar255是否用戶地區(qū)gyf_userstatusint10否否1正常0封號gyf_createtimetimestamp0否否用戶注冊時間(2)商品信息表商品信息表是用來存儲發(fā)布的商品信息,包括商品id(gyf_commid)、商品名稱(gyf_commname)、商品描述(gyf_commdesc)、視頻(gyf_videourl)、商品數(shù)量(gyf_commnumber)、售價(gyf_price)、是否包郵(gyf_freeship)、供貨地址(gyf_suppaddress)、發(fā)布時間(gyf_createtime)、修改時間(gyf_updatetime)、下架時間(gyf_endtime)、商品狀態(tài)(gyf_commstatus)、瀏覽量(gyf_rednumber)、商品類別(gyf_category)、簡介圖(gyf_image)、用戶id(gyf_userid)。商品信息表結(jié)構(gòu)如表4-2所示:表4-2商品信息表(commodity)字段名字段類型字段長度能否為空是否主鍵字段描述gyf_commidvarchar64否是商品的idgyf_commnamevarchar255否否商品的名稱gyf_commdescvarchar255否否商品的簡介gyf_videourlvarchar255否否商品視頻地址gyf_commnumberint10否否商品的數(shù)量gyf_pricedecimal55否否商品的售價gyf_freeshipvarchar64否否是否包郵gyf_suppaddressvarchar255否否供貨地址gyf_createtimetimestamp0否否發(fā)布時間gyf_updatetimetimestamp0否否修改時間gyf_endtimetimestamp0否否下架時間gyf_commstatusint10否否商品的狀態(tài)gyf_rednumberint10是否商品的瀏覽量gyf_categoryvarchar255否否商品的類別gyf_imagevarchar255否否簡介圖地址gyf_useridvarchar64否否用戶id(3)商品評論信息表商品評論信息表是用來存儲已注冊用戶對商品的評論信息,用戶登錄后才能夠進(jìn)行商品的評論,包括評論id(gyf_cid)、商品id(gyf_commid)、評論者id(gyf_cuserid)、商品發(fā)布者id(gyf_spuserid)、評論內(nèi)容(gyf_content)、評論時間(gyf_commtime)、評論狀態(tài)(gyf_commstatus)。其中id均為19位隨機(jī)ID數(shù),評論時間默認(rèn)系統(tǒng)當(dāng)前時間,商品評論信息表的結(jié)構(gòu)如表4-3所示:表4-3商品評論信息表(comment)字段名字段類型字段長度能否為空是否主鍵字段描述gyf_cidvarchar64否是評論idgyf_commidvarchar64否否商品的idgyf_cuseridvarchar64否否評論者的idgyf_spuseridvarchar64否否商品發(fā)布者idgyf_contentvarchar255否否用戶評論內(nèi)容gyf_commtimetimestamp0否否評論時間gyf_commstatusint10否否評論狀態(tài)(4)商品評論回復(fù)信息表商品評論回復(fù)信息表是用來存儲已注冊用戶對商品的評論回復(fù)的信息,具體包括回復(fù)id(gyf_rid)、評論id(gyf_cid)、商品id(gyf_commid)、被回復(fù)用戶id(gyf_cuserid)、商品發(fā)布者id(gyf_spuserid)、回復(fù)內(nèi)容(gyf_recontent)、回復(fù)者id(gyf_ruserid)、回復(fù)時間(gyf_replytime)、回復(fù)狀態(tài)(gyf_repstatus)。商品評論信息表的結(jié)構(gòu)如表4-4所示:表4-4商品評論回復(fù)信息表(reply)字段名字段類型字段長度能否為空是否主鍵字段描述gyf_ridvarchar64否是回復(fù)idgyf_cidvarchar64否否評論idgyf_commidvarchar64否否商品idgyf_cuseridvarchar64否否被回復(fù)用戶idgyf_spuseridvarchar64否否商品發(fā)布者idgyf_recontentvarchar255否否回復(fù)內(nèi)容gyf_ruseridvarchar64否否回復(fù)者idgyf_replytimetimestamp0否否回復(fù)時間gyf_repstatusint10否否回復(fù)狀態(tài)本章小結(jié)本章首先從系統(tǒng)概要設(shè)計進(jìn)行分析,創(chuàng)建了系統(tǒng)總功能模塊圖,又對具體功能的模塊進(jìn)行了描述及流程圖的設(shè)計,最后根據(jù)系統(tǒng)功能,對數(shù)據(jù)庫進(jìn)行了概念設(shè)計,創(chuàng)建E-R圖,對數(shù)據(jù)庫關(guān)鍵表進(jìn)行了具體的表結(jié)構(gòu)設(shè)計,對系統(tǒng)設(shè)計中的模塊設(shè)計及數(shù)據(jù)庫設(shè)計進(jìn)行了進(jìn)一步完善。系統(tǒng)實(shí)現(xiàn)畢業(yè)生物品交易系統(tǒng)中功能模塊過多,因此以關(guān)鍵的用戶模塊、商品模塊、評論模塊、權(quán)限控制模塊進(jìn)行系統(tǒng)實(shí)現(xiàn)的介紹。用戶管理功能系統(tǒng)用戶分為普通用戶、管理員、超級管理員三種用戶,本系統(tǒng)內(nèi)置一名超級管理員,管理員是由超級管理員設(shè)置的,普通用戶是注冊網(wǎng)站的用戶;為了方便用戶注冊使用該網(wǎng)站,注冊時使用手機(jī)號進(jìn)行注冊,用戶需要輸入獲取的短信驗(yàn)證碼進(jìn)行注冊,用戶的手機(jī)號具有唯一性,注冊時會判斷該手機(jī)號是否已被注冊,若忘記密碼可以通過手機(jī)號發(fā)送短信驗(yàn)證碼重置密碼,數(shù)據(jù)庫存儲用戶密碼是會進(jìn)行MD5加鹽加密進(jìn)行存儲,用戶可以在個人中心中修改自己的個人信息。系統(tǒng)管理員可以查看所有用戶列表,超級管理員可以設(shè)置用戶的角色。這里給出用戶注冊、重置密碼、更換手機(jī)號時發(fā)送短信驗(yàn)證碼模塊的代碼,部分核心代碼如下:@ResponseBody
@PostMapping("/user/sendresetpwd")
publicResultVosendresetpwd(HttpServletRequestrequest)throwsIOException{
JSONObjectjson=JsonReader.receivePost(request);
finalStringmobilephone=json.getString("mobilephone");
Integertype=json.getInt("type");
Loginlogin=newLogin();
if(type!=1){
returnnewResultVo(false,StatusCode.ACCESSERROR,"違規(guī)操作");
}
if(!JustPhone.justPhone(mobilephone)){//判斷輸入的手機(jī)號格式是否正確
returnnewResultVo(false,StatusCode.ERROR,"請輸入正確格式的手機(jī)號");
}
//查詢手機(jī)號是否存在
login.setMobilephone(mobilephone);
LoginuserIsExist=loginService.userLogin(login);
if(StringUtils.isEmpty(userIsExist)){//用戶賬號不存在
returnnewResultVo(false,StatusCode.LOGINERROR,"該用戶不存在");
}
Stringcode=GetCode.phonecode();
Integerresult=newSmsUtil().SendMsg(mobilephone,code,type);//發(fā)送驗(yàn)證碼
if(result==1){//發(fā)送成功
phonecodemap2.put(mobilephone,code);//放入map集合進(jìn)行對比
/*
finalTimertimer=newTimer();
timer.schedule(newTimerTask(){
@Override
publicvoidrun(){
phonecodemap2.remove(phoneNum);
timer.cancel();
}
},5*60*1000);
*/
//執(zhí)行定時任務(wù)
ScheduledExecutorServiceexecutorService=newScheduledThreadPoolExecutor(1,
newBasicThreadFactory.Builder().namingPattern("example-schedule-pool-%d").daemon(true).build());
executorService.scheduleAtFixedRate(newRunnable(){
@Override
publicvoidrun(){
phonecodemap2.remove(mobilephone);
((ScheduledThreadPoolExecutor)executorService).remove(this::run);
}
},5*60*1000,5*60*1000,TimeUnit.HOURS);
returnnewResultVo(true,StatusCode.SMS,"驗(yàn)證碼發(fā)送成功");
}elseif(result==2){
returnnewResultVo(false,StatusCode.ERROR,"請輸入正確格式的手機(jī)號");
}
returnnewResultVo(false,StatusCode.REMOTEERROR,"驗(yàn)證碼發(fā)送失敗");
}用戶個人中心中個人信息包括基本資料、修改密碼、更換手機(jī)號三個功能,其中更換手機(jī)號需要輸入要更換的手機(jī)號,獲取短信驗(yàn)證碼確認(rèn)更換,更換成功后會提醒更換成功,個人中心更換手機(jī)號界面如圖5-1所示:圖5-1個人中心更換手機(jī)號圖商品管理功能商品模塊包括用戶發(fā)布商品,用戶修改商品、用戶刪除已發(fā)布的商品、管理員審核發(fā)布的商品等功能,系統(tǒng)主頁分類展示最新的8條商品,店鋪清單界面包含了所有的商品信息,這里以商品發(fā)布過程中保存商品的圖片和視頻信息為例。用戶發(fā)布商品時需要上傳商品的一張主圖、三張附圖,上傳拍攝的商品視頻,填寫發(fā)布的商品信息時若覺得圖片不合適可以隨時刪除圖片重新上傳,上傳的商品視頻可以進(jìn)行播放預(yù)覽,系統(tǒng)將商品主圖及視頻存儲在商品表中,將附屬圖存儲在商品詳情圖片表中,部分核心代碼如下:/**
*上傳視頻和主圖
*/
@PostMapping("/relgoods/video")
@ResponseBody
publicJSONObjectrelgoodsvideo(@RequestParam(value="file",required=false)MultipartFilefile)throwsIOException{
JSONObjectres=newJSONObject();
JSONObjectresUrl=newJSONObject();
Stringfilename=UUID.randomUUID().toString().replaceAll("-","");
Stringext=FilenameUtils.getExtension(file.getOriginalFilename());
Stringfilenames=filename+"."+ext;
Stringpathname="D:\\campusshops\\file\\"+filenames;
file.transferTo(newFile(pathname));
resUrl.put("src","/pic/"+filenames);
res.put("msg","");
res.put("code",0);
res.put("data",resUrl);
returnres;
}
/**
*上傳其他圖片
*/
@PostMapping(value="/relgoods/images")
@ResponseBody
publicJSONObjectrelgoodsimages(@RequestParam(value="file",required=false)MultipartFile[]file)throwsIOException{
JSONObjectres=newJSONObject();
JSONObjectresUrl=newJSONObject();
List<String>imageurls=newArrayList<>();
for(MultipartFilefiles:file){
Stringfilename=UUID.randomUUID().toString().replaceAll("-","");
Stringext=FilenameUtils.getExtension(files.getOriginalFilename());
Stringfilenames=filename+"."+ext;
Stringpathname="D:\\campusshops\\file\\"+filenames;
files.transferTo(newFile(pathname));
imageurls.add("/pic/"+filenames);
res.put("msg","");
res.put("code",0);
}
resUrl.put("src",imageurls);
res.put("data",resUrl);
returnres;
}個人中心商品管理界面如圖5-2所示:圖5-2商品管理圖商品評論回復(fù)功能商品評論模塊在商品詳情界面下方提供用戶對商品的評論及回復(fù)供其他用戶參考,用戶填寫評論信息內(nèi)容后點(diǎn)擊提交,前端獲取商品ID、商品發(fā)布者ID、評論內(nèi)容傳入后端系統(tǒng),后端從session中獲取登錄用戶的ID信息,將這些信息存入評論回復(fù)表中,部分核心代碼如下:/**
*評論
*1.前端傳入:商品id(commid)、商品發(fā)布者id(spuserid)、評論內(nèi)容(content)
*2.session獲?。涸u論者id(cuserid)
*3.過濾評論內(nèi)容后,插入評論
*/
@ResponseBody
@PostMapping("/comment/insert")
publicResultVoinsertcomment(@RequestBodyCommentcomment,HttpSessionsession){
Stringcuserid=(String)session.getAttribute("userid");
Stringcontent=comment.getContent();
if(StringUtils.isEmpty(cuserid)){
returnnewResultVo(false,StatusCode.ACCESSERROR,"請登錄后再評論");
}
content=content.replace("<","<");
content=content.replace(">",">");
content=content.replace("'","\"");
comment.setCid(KeyUtil.genUniqueKey()).setCuserid(cuserid).setContent(content);
/**插入評論*/
Integeri=commentService.insertComment(comment);
if(i==1){
returnnewResultVo(true,StatusCode.OK,"評論成功");
}
returnnewResultVo(false,StatusCode.ERROR,"評論失敗");
}在商品詳情界面下方展示該商品所有的評論和回復(fù)信息,展示用戶的頭像信息、用戶評論回復(fù)的日期、用戶評論回復(fù)的內(nèi)容,部分核心代碼如下:/**
*查詢商品下的評論和回復(fù)
**/
@ResponseBody
@GetMapping("/comment/query/{commid}")
publicResultVoqueryCommentReply(@PathVariable("commid")Stringcommid){
/**查詢評論*/
List<Comment>commentsList=commentService.queryComments(commid);
for(Commentcomment:commentsList){
/**查詢對應(yīng)評論下的回復(fù)*/
List<Reply>repliesList=replyService.queryReply(comment.getCid());
for(Replyreply:repliesList){
/**查詢回復(fù)者的昵稱和頭像信息*/
UserInforuser=userInfoService.queryPartInfo(reply.getRuserid());
/**查詢被回復(fù)者的昵稱信息*/
UserInfocuser=userInfoService.queryPartInfo(reply.getCuserid());
/**添加回復(fù)中涉及到的用戶昵稱及頭像信息*/
reply.setRusername(ruser.getUsername()).setRuimage(ruser.getUimage()).setCusername(cuser.getUsername());
}
/**查詢評論者的昵稱和頭像信息*/
UserInfouserInfo=userInfoService.queryPartInfo(comment.getCuserid());
/**添加評論下的回復(fù)及評論者昵稱和頭像信息*/
comment.setReplyLsit(repliesList).setCusername(userInfo.getUsername()).setCuimage(userInfo.getUimage());
}
returnnewResultVo(true,StatusCode.OK,"查詢評論回復(fù)成功",commentsList);
}商品詳情下方評論回復(fù)界面,用戶點(diǎn)擊商品進(jìn)入商品詳情界面會自動刷新并加載商品的評論及回復(fù),商品評論回復(fù)界面如圖5-2所示:圖5-3商品評論回復(fù)圖權(quán)限控制功能系統(tǒng)中分為普通用戶、管理員、超級管理員三種角色,系統(tǒng)部分界面通過Thymeleaf集成Shiro[14]進(jìn)行訪問控制,擁有對應(yīng)權(quán)限的角色可以訪問對應(yīng)的界面,這些都需要權(quán)限模塊進(jìn)行權(quán)限控制,權(quán)限控制采用Shiro進(jìn)行控制,用戶登錄時先執(zhí)行shiro判斷邏輯,判斷用戶手機(jī)號和密碼進(jìn)行登錄,登錄后執(zhí)行授權(quán)邏輯,給用戶進(jìn)行角色授權(quán),部分核心代碼如下:/**
*執(zhí)行授權(quán)邏輯
*只要訪問加上授權(quán)的資源都會調(diào)用改方法
**/
@Override
protectedAuthorizationInfodoGetAuthorizationInfo(PrincipalCollectionprincipalCollection){
//給資源進(jìn)行授權(quán)
SimpleAuthorizationInfoinfo=newSimpleAuthorizationInfo();
//到數(shù)據(jù)庫查詢當(dāng)前用戶的授權(quán)的字符串
Subjectsubject=SecurityUtils.getSubject();
UserInfouserInfo=(UserInfo)subject.getPrincipal();
IntegerpermId=userRoleService.LookUserRoleId(userInfo.getUserid());
List<String>userPerms=userPermsService.LookPermsByUserid(permId);
info.addStringPermissions(userPerms);
returninfo;
}
/**
*執(zhí)行認(rèn)證邏輯
*只要使用subject.login(token)就會調(diào)用該方法
**/
@Override
protectedAuthenticationInfodoGetAuthenticationInfo(AuthenticationTokenauthenticationToken)throwsAuthenticationException{
//編寫shiro判斷邏輯,判斷用戶手機(jī)號和密碼
//1、判斷手機(jī)號
UsernamePasswordTokentoken=(UsernamePasswordToken)authenticationToken;
Loginlogin=newLogin();
login.setMobilephone(token.getUsername());
LoginLogin1=loginService.userLogin(login);
if(Login1==null){
//用戶不存在
returnnull;//shiro底層拋出UnknownAccountException
}
//2、判斷密碼三個參數(shù):1、返回給subject.login(token);方法的參數(shù)2、數(shù)據(jù)庫中的密碼3、shiro的名字
returnnewSimpleAuthenticationInfo(Login1,Login1.getPassword(),"");
}本章小結(jié)本章節(jié)對系統(tǒng)部分功能進(jìn)行編碼實(shí)現(xiàn),主要對用戶管理模塊、商品管理模塊、商品評論回復(fù)模塊、權(quán)限控制模塊四個模塊進(jìn)行部分功能的核心編碼的實(shí)現(xiàn),展示了部分模塊運(yùn)行界面。系統(tǒng)測試測試目的系統(tǒng)測試是開發(fā)項(xiàng)目中必不可少的一項(xiàng)功能,系統(tǒng)的功能在根據(jù)需求進(jìn)行開發(fā)后,必須經(jīng)過系統(tǒng)測試,測試通過滿足需求并
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年草除靈乙酯項(xiàng)目建議書
- 2025年多路信號老化檢測系統(tǒng)項(xiàng)目合作計劃書
- 急腹癥護(hù)理科研進(jìn)展視頻
- 肺部疾病的護(hù)理創(chuàng)新實(shí)踐
- 癲癇護(hù)理技能培訓(xùn)要點(diǎn)
- 精神護(hù)理中的倫理問題與應(yīng)對策略
- 刮痧護(hù)理與現(xiàn)代醫(yī)學(xué)結(jié)合
- 聽課件困教學(xué)課件
- 預(yù)防醫(yī)學(xué)中的醫(yī)患
- 非銷售場景溝通話術(shù)
- 全球重點(diǎn)區(qū)域算力競爭態(tài)勢分析報告(2025年)-
- 2025北京熱力熱源分公司招聘10人參考筆試題庫及答案解析
- 2025年湖南省法院系統(tǒng)招聘74名聘用制書記員筆試參考題庫附答案
- 2025廣西機(jī)電職業(yè)技術(shù)學(xué)院招聘教職人員控制數(shù)人員79人備考題庫及答案解析(奪冠)
- 2026屆高考政治一輪復(fù)習(xí):必修2 經(jīng)濟(jì)與社會 必背主干知識點(diǎn)清單
- 大學(xué)生校園創(chuàng)新創(chuàng)業(yè)計劃書
- 護(hù)士職業(yè)壓力管理與情緒調(diào)節(jié)策略
- 貴州國企招聘:2025貴州涼都能源有限責(zé)任公司招聘10人備考題庫及答案詳解(必刷)
- 招標(biāo)人主體責(zé)任履行指引
- 2025-2026學(xué)年北師大版五年級數(shù)學(xué)上冊(全冊)知識點(diǎn)梳理歸納
- 2021年廣東省廣州市英語中考試卷(含答案)
評論
0/150
提交評論