版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于SpringCloud的眾籌網(wǎng)站系統(tǒng)設(shè)計(jì)摘要當(dāng)前經(jīng)濟(jì)環(huán)境下,中小型創(chuàng)業(yè)公司在創(chuàng)新方面推動(dòng)了社會(huì)的高度發(fā)展,對(duì)社會(huì)的穩(wěn)定具有非常重要的意義,但是它們都面臨著共同的發(fā)展瓶頸——融資難。隨著眾籌網(wǎng)平臺(tái)的出現(xiàn),中小企業(yè)乃至個(gè)人都可以通過(guò)眾籌網(wǎng)平臺(tái)籌集資金,解決了中小型創(chuàng)業(yè)公司融資難的問(wèn)題。為了實(shí)現(xiàn)和攻克這一個(gè)難題,本次論文經(jīng)過(guò)設(shè)計(jì)實(shí)現(xiàn)了基于SpringCloud微服務(wù)架構(gòu)眾籌網(wǎng)站。本系統(tǒng)主要使用SpringCloud微服務(wù)架構(gòu),由前端和后臺(tái)兩部分組成。前端基于Thymeleaf技術(shù)。后端采用SSM架構(gòu)實(shí)現(xiàn),并且擁有一套完整的權(quán)限控制,z采用了Mysql數(shù)據(jù)庫(kù)進(jìn)行對(duì)數(shù)據(jù)的存儲(chǔ)。在整個(gè)眾籌網(wǎng)站的正常運(yùn)行中依賴SpringCloud框架中服務(wù)的注冊(cè)與服務(wù)發(fā)現(xiàn)、服務(wù)的消費(fèi)、負(fù)載均衡、斷路器一些服務(wù)治理組件共同組建了一個(gè)微服務(wù)系統(tǒng),該眾籌網(wǎng)系統(tǒng)還采用了Mybatis+SSM+Redis+springsecurity+springSession+OSS+ajax等技術(shù)實(shí)現(xiàn)。主要實(shí)現(xiàn)的功能有用戶登錄和用戶注冊(cè)、首頁(yè)眾籌商品的展示、發(fā)起眾籌,添加回報(bào)信息,支付功能。后臺(tái)實(shí)現(xiàn)的功能有用戶維護(hù),角色維護(hù)和菜單維護(hù),可對(duì)用戶信息進(jìn)行增刪查改以及權(quán)限控制操作。本系統(tǒng)在一系列的詳細(xì)功能設(shè)計(jì)、規(guī)范的流程開(kāi)發(fā)下,目前眾籌網(wǎng)已具備普通眾籌系統(tǒng)功能并能正常運(yùn)行,在通過(guò)部署單元測(cè)試、功能測(cè)試與一定程度上的壓力測(cè)試,最終該微服務(wù)系統(tǒng)已成功穩(wěn)定運(yùn)行。實(shí)現(xiàn)本眾籌網(wǎng)站系統(tǒng),在一定程度上解決了中小企業(yè)融資難的問(wèn)題,也給目前正在創(chuàng)業(yè)的人提供了一個(gè)平臺(tái),對(duì)實(shí)現(xiàn)“大眾創(chuàng)業(yè),萬(wàn)眾創(chuàng)新”政策實(shí)現(xiàn)具有重要意義。關(guān)鍵詞:眾籌網(wǎng);微服務(wù);SpringCloud;Redis;ajax目錄TOC\o"1-3"\h\u286991緒論 緒論1.1課題背景和意義在國(guó)家“大眾創(chuàng)業(yè),萬(wàn)眾創(chuàng)新”政策的號(hào)召下,我國(guó)近年來(lái)涌現(xiàn)出一大批中小企業(yè)創(chuàng)業(yè)公司,其中更不乏許多創(chuàng)業(yè)型企業(yè),利用信息技術(shù)和科技手段,把創(chuàng)意轉(zhuǎn)化成產(chǎn)品,這就更加便利了我們的生活。眾籌平臺(tái)通過(guò)互聯(lián)網(wǎng)從大量潛在支持者那里獲得小額投資,并創(chuàng)建一個(gè)動(dòng)態(tài)的融資網(wǎng)絡(luò),能夠增強(qiáng)項(xiàng)目的融資能力[1]。眾籌(crowdfunding)一詞起源于美國(guó),指普通大眾以互聯(lián)網(wǎng)為平臺(tái),集中多筆小額資金用來(lái)支持某個(gè)項(xiàng)目或組織[2]。眾籌網(wǎng)平臺(tái)的出現(xiàn),極大的推動(dòng)了社會(huì)的發(fā)展,其最大的特點(diǎn)就是支持創(chuàng)新,并且可以實(shí)現(xiàn)個(gè)人對(duì)項(xiàng)目的融資,在互聯(lián)網(wǎng)眾籌平臺(tái)上,眾籌平臺(tái)可以將融資需求展現(xiàn)在投資人面前,在很大程度上可以解決社會(huì)融資難的問(wèn)題,提高社會(huì)資金配置,因此研究眾籌平臺(tái)具有重大意義。1.2當(dāng)前的研究現(xiàn)狀現(xiàn)狀分析:眾籌系統(tǒng)平臺(tái)在國(guó)外興起的比較早,已經(jīng)有一定的研究成果,發(fā)展相對(duì)成熟,而在國(guó)內(nèi),我國(guó)則是處于萌芽探索階段。點(diǎn)名時(shí)間是我國(guó)的第一個(gè)眾籌網(wǎng)站,該網(wǎng)站成立于2011年,目前已經(jīng)成為國(guó)內(nèi)最大的眾籌網(wǎng)站了,在剛開(kāi)始發(fā)布點(diǎn)名時(shí)間眾籌網(wǎng)站時(shí),該網(wǎng)站就已經(jīng)擁有一套完整的功能流程了,其特點(diǎn)主要有在項(xiàng)目發(fā)起之后發(fā)起人可以與項(xiàng)目負(fù)責(zé)人進(jìn)行溝通,而且點(diǎn)名時(shí)間眾籌的范圍也是很大,除了眾籌資金外,還能眾籌紀(jì)錄片,唱片和書(shū)籍等。在外部監(jiān)管政策趨嚴(yán)和內(nèi)部不同細(xì)分業(yè)態(tài)下平臺(tái)競(jìng)爭(zhēng)的背景下,不同細(xì)分業(yè)態(tài)下互聯(lián)網(wǎng)金融發(fā)展受到的影響程度有所不同。聶富強(qiáng)等從狹義角度,將互聯(lián)網(wǎng)金融劃分為第三方借貸、第三方融資平臺(tái)和第三方支付平臺(tái),并以P2P網(wǎng)貸、眾籌、第三方支付為其業(yè)態(tài)代表[3]。匡亞林運(yùn)用案例分析法和訪談法對(duì)輕松籌平臺(tái)的案例進(jìn)行分析,提出了嵌入式“互聯(lián)網(wǎng)+”公益眾籌信息等級(jí)的評(píng)估方案[4],來(lái)衡量個(gè)人救助參與的有效性,發(fā)現(xiàn)公信力對(duì)整個(gè)社會(huì)的慈善救助環(huán)境的影響重大在法律方面。雖然公益眾籌平臺(tái)發(fā)展趨勢(shì)平穩(wěn),但仍存在許多問(wèn)題,比如出資人和發(fā)起人之間是嚴(yán)重信息不對(duì)稱的,一切的審核查驗(yàn)工作完全靠平臺(tái)來(lái)完成,這對(duì)出資人的權(quán)益保護(hù)可以說(shuō)是非常的弱。在一系列騙籌事件發(fā)生后,互聯(lián)網(wǎng)籌款平臺(tái)如何對(duì)籌款人信息及善款使用情況進(jìn)行監(jiān)管和核實(shí)的問(wèn)題引發(fā)了廣泛關(guān)注[5]。當(dāng)前我國(guó)眾籌的籌資模式游走在法律的模糊地帶,有非法集資的法律風(fēng)險(xiǎn),創(chuàng)意性成果在眾籌平臺(tái)上存在被竊取的風(fēng)險(xiǎn),然而大部分項(xiàng)目仍未申請(qǐng)專利,故不受知識(shí)產(chǎn)權(quán)法律保護(hù);由于信息不對(duì)稱,投資人可能會(huì)誤判項(xiàng)目的質(zhì)量,存在很大的評(píng)估風(fēng)險(xiǎn)[6]。1.2.1眾籌系統(tǒng)模式分類眾籌的平臺(tái)模式由三部份組成,項(xiàng)目發(fā)起人,眾籌平臺(tái)以及項(xiàng)目投資人。獎(jiǎng)勵(lì)型眾籌平臺(tái)也被稱為產(chǎn)品型眾籌平臺(tái),比如京東眾籌、淘寶眾籌等;股權(quán)型眾籌平臺(tái)的投資者通常用資金來(lái)?yè)Q取公司的小部分股權(quán),同時(shí)作為回報(bào),比如天使匯、大家投等;債券型眾籌平臺(tái),也被稱為P2P借貸平臺(tái)或市場(chǎng)借貸平臺(tái),比如人人貸等;捐贈(zèng)型眾籌平臺(tái),即具有慈善捐贈(zèng)性質(zhì)的[7]。有的學(xué)者認(rèn)為眾籌的商業(yè)模式可以分為三類,一類是捐贈(zèng)模式,捐贈(zèng)模式在我們生活中見(jiàn)得最多,QQ,微博,微信更是隨從都可以見(jiàn)到,這種眾籌模式是不求任何實(shí)質(zhì)回報(bào)的,無(wú)償?shù)?。?jīng)統(tǒng)計(jì),在我國(guó)捐贈(zèng)模式的眾籌平臺(tái)目前只有十幾家,借貸模式的眾籌平臺(tái)則是多一點(diǎn),但是也不超過(guò)300家,全行業(yè)成交量達(dá)200億元[2]。借貸、股權(quán)投資模式與預(yù)售模式在根本上的不同是回報(bào)方式,該模式更加適合于中小企業(yè)融資,因?yàn)閳?bào)酬是現(xiàn)金或公司股權(quán)[8]。1.2.2國(guó)外眾籌系統(tǒng)發(fā)展對(duì)我國(guó)的啟示眾籌平臺(tái)在美國(guó)發(fā)展迅猛,當(dāng)前美國(guó)是世界上規(guī)模最大的眾籌平臺(tái)Kickstarter成立于2009年,截至2018年8月已經(jīng)擁有超過(guò)1500萬(wàn)資助者為接近15萬(wàn)個(gè)眾籌項(xiàng)目實(shí)現(xiàn)成功籌資,總資助額度超過(guò)38億美元[4]。基于網(wǎng)絡(luò)眾籌融資模式在全球迅猛發(fā)展,我國(guó)眾籌卻剛剛起步的大環(huán)境,我國(guó)眾多學(xué)者紛紛開(kāi)始研究比較國(guó)外與我國(guó)眾籌特點(diǎn)、模式以及發(fā)展,借鑒國(guó)外發(fā)展經(jīng)驗(yàn)。美國(guó)的研究,更值得我們?nèi)ソ梃b和學(xué)習(xí),為了解決中小企業(yè)融資難問(wèn)題,活躍美國(guó)市場(chǎng),2012年美國(guó)奧巴馬簽訂JOBS法案,正式將眾籌歸入法律監(jiān)管。我國(guó)借鑒于國(guó)外的Kickstarter網(wǎng)站,利用媒體和宣傳來(lái)提高關(guān)注度,孟韜(2014)同樣提出了制定和完善眾籌的法律法規(guī),他還提出我國(guó)不能全盤(pán)吸納美國(guó)的眾籌商業(yè)模式,值得向美國(guó)借鑒的一點(diǎn)是項(xiàng)目發(fā)起人學(xué)會(huì)提高在社交媒體上的影響力,擴(kuò)大企業(yè)融資圈,擴(kuò)大線下眾籌項(xiàng)目推廣渠道,完善營(yíng)銷策略[9]。陳文星(2015)就中美眾籌的生存環(huán)境從監(jiān)管體系、融資環(huán)境、信用體系三個(gè)方面展開(kāi)了對(duì)比研究,美國(guó)眾籌融資環(huán)境遵循的是“啄食順序理論”,及內(nèi)源融資>債務(wù)融資>股權(quán)融資的先后順序;美國(guó)社會(huì)已形成信用交易的社會(huì)秩序[10]。1.2.2眾籌系統(tǒng)風(fēng)險(xiǎn)防范目前,我國(guó)的眾籌模式正處于發(fā)展中階段所以將面臨著許多危險(xiǎn),許多眾籌模式都處于法律的模糊地帶,弄不好就是非法集資,屬于違法行為,有著非常大的風(fēng)險(xiǎn)?;ヂ?lián)網(wǎng)公益眾籌平臺(tái)要加強(qiáng)信用管理和披露,保證項(xiàng)目捐贈(zèng)者或投資者的知情權(quán),項(xiàng)目發(fā)起者可以向眾籌平臺(tái)和資金托管方申請(qǐng)資金,由眾籌平臺(tái)和資金托管方審核其真實(shí)合理后,直接將資金撥付給項(xiàng)目發(fā)起者所應(yīng)支付資金的相應(yīng)機(jī)構(gòu)或組織[16]。雷華順(2015)提出了三種制度設(shè)計(jì)來(lái)解決這種現(xiàn)狀,分別是緩沖型——冷靜期制度設(shè)計(jì)、風(fēng)險(xiǎn)轉(zhuǎn)移分散型——擔(dān)保制度、風(fēng)險(xiǎn)隔離型——資金第三方托管制度[11]。1.3論文主要工作內(nèi)容本文基于SpringCloud微服務(wù)架構(gòu),經(jīng)過(guò)設(shè)計(jì)實(shí)現(xiàn)了眾籌網(wǎng)站系統(tǒng)。本項(xiàng)目首先通過(guò)對(duì)國(guó)內(nèi)眾籌網(wǎng)系統(tǒng)的可行性進(jìn)行分析,確定開(kāi)發(fā)的可行性后再進(jìn)一步對(duì)系統(tǒng)的功能進(jìn)行功能需求分析以及系統(tǒng)的非功能需求分析,在開(kāi)發(fā)中選擇使用目前主流的微服務(wù)開(kāi)發(fā)思想,詳細(xì)的描述了項(xiàng)目中的各個(gè)服務(wù)與實(shí)現(xiàn),并且在最后對(duì)系統(tǒng)功能進(jìn)行了測(cè)試。眾籌網(wǎng)站總體上分為前臺(tái)系統(tǒng)和后臺(tái)管理員管理系統(tǒng)。前臺(tái)系統(tǒng)又分為眾籌商品展示,發(fā)起眾籌商品,設(shè)置商品回報(bào),支付等若干個(gè)微服務(wù)系統(tǒng),每個(gè)微服務(wù)系統(tǒng)都有其自己的功能模塊,并且每個(gè)微服務(wù)系統(tǒng)都有其自己的頁(yè)面,每個(gè)微服務(wù)都是獨(dú)立存在的,但各個(gè)微服務(wù)直接有著相互調(diào)用的關(guān)系,每個(gè)微服務(wù)直接又是密不可分的。對(duì)于后臺(tái)管理系統(tǒng),用戶或者管理員首先需要登錄,后臺(tái)系統(tǒng)是專門(mén)用于平臺(tái)內(nèi)部人員使用,不提供注冊(cè),如果需要添加用戶,則需要管理員添加,后臺(tái)部分有用戶維護(hù),角色維護(hù)和菜單維護(hù)三個(gè)模塊,對(duì)于后臺(tái)管理員,可以進(jìn)入用戶維護(hù)執(zhí)行里面相應(yīng)的操作,用戶管理可以給某個(gè)用戶分配角色;管理員在進(jìn)入角色模塊后,可以對(duì)角色進(jìn)行相應(yīng)的操作,還可以給角色分配權(quán)限,當(dāng)用戶具備某個(gè)權(quán)限時(shí)才能訪問(wèn)某些資源。在前臺(tái)會(huì)員系統(tǒng)中,首先,用戶進(jìn)入到眾籌網(wǎng)首頁(yè)面,首頁(yè)面就會(huì)展示當(dāng)時(shí)正在眾籌的創(chuàng)意產(chǎn)品,用戶可以通過(guò)分類來(lái)進(jìn)行瀏廣覽自己想要瀏覽的商品,對(duì)于心儀的眾籌商品,可以點(diǎn)擊商品名稱進(jìn)入支持頁(yè)面,選擇支持金額后進(jìn)入訂單頁(yè)面,但是必須提交地址才能支付,支付成功即是支持成功;普通用戶必須通過(guò)短信注冊(cè)擁有自己的賬號(hào)才能進(jìn)行登錄,登錄成功后可以發(fā)起眾籌,勾選協(xié)議后通過(guò)上傳眾籌商品圖片,添加回報(bào)信息后填寫(xiě)易付寶賬號(hào)密碼即可發(fā)起成功。1.4論文組織結(jié)構(gòu)本篇論文主要以眾籌網(wǎng)站系統(tǒng)為研究對(duì)象,利用目前主流的微服務(wù)框架技術(shù)設(shè)計(jì)開(kāi)發(fā)的眾籌網(wǎng)站系統(tǒng),主要由以下七章組成:第一章:緒論,闡述了眾籌網(wǎng)站系統(tǒng)的選題背景和意義,對(duì)國(guó)內(nèi)的眾籌網(wǎng)現(xiàn)狀進(jìn)行需求分析,做好整個(gè)微服務(wù)架構(gòu)部署和論文等工作。第二章:技術(shù)選型概述,本章主要介紹了SpringCloud框架,SSM框架,springsecurity技術(shù),Thymeleaf技術(shù),MybatisPlus技術(shù)、Redis非關(guān)系型緩存數(shù)據(jù)庫(kù)和Mysql關(guān)系型數(shù)據(jù)庫(kù)。第三章:微服務(wù)系統(tǒng)需求詳細(xì)分析,本章主要對(duì)眾籌網(wǎng)系統(tǒng)進(jìn)行了可行性分析和功能需求分析以及非功能需求分析。第四章:微服務(wù)系統(tǒng)總體設(shè)計(jì),本章通過(guò)視圖分析眾籌網(wǎng)系統(tǒng)的總體功能設(shè)計(jì)以及通過(guò)表的展示對(duì)數(shù)據(jù)庫(kù)進(jìn)行詳細(xì)分析。第五章:系統(tǒng)詳細(xì)設(shè)計(jì)和具體實(shí)現(xiàn):本章具體闡述了后端SSM系統(tǒng)以及前臺(tái)整個(gè)微服務(wù)系統(tǒng)中各個(gè)模塊的具體設(shè)計(jì)以及實(shí)現(xiàn)。第六章:系統(tǒng)測(cè)試:本章主要對(duì)后臺(tái)SSM系統(tǒng)和前臺(tái)微服務(wù)系統(tǒng)進(jìn)行單元測(cè)試,包括功能型測(cè)試,保證系統(tǒng)能夠順利進(jìn)行。第七章:總結(jié)和展望:總結(jié)本次的論文工作,客觀分析該系統(tǒng)功能的優(yōu)缺點(diǎn),并對(duì)眾籌網(wǎng)系統(tǒng)做出為了展望。2相關(guān)技術(shù)概論在開(kāi)發(fā)系統(tǒng)前,需要對(duì)目前主流的技術(shù)進(jìn)行選型分析,并且要確定開(kāi)發(fā)本系統(tǒng)所需要的技術(shù)。本章主要對(duì)進(jìn)行技術(shù)選型后的技術(shù)進(jìn)行核心介紹,該系統(tǒng)主要涉及了SpringCloud框架、SSM框架,springsecurity技術(shù),NoSQL緩存數(shù)據(jù)庫(kù)Redis、Thymeleaf技術(shù)、Mybatis、數(shù)據(jù)庫(kù)Mysql等技術(shù)2.1SpringCloud簡(jiǎn)介SpringCloud是一系列框架的有序集合。主要包括幾個(gè)組件,包括服務(wù)發(fā)現(xiàn)Eureka、注冊(cè)中心config-server、消息總線Bus、負(fù)載均衡Feign和Ribbon、斷路器Hystrix、數(shù)據(jù)監(jiān)控Turbine等,利用目前主流的框架SpringBoot可以把微服務(wù)架構(gòu)輕松的部署和啟動(dòng),給我們省去了許多配置的麻煩。微服務(wù)架構(gòu)就是由單一架構(gòu)構(gòu)成,一個(gè)微服務(wù)其實(shí)就是一個(gè)SpringBoot項(xiàng)目,每個(gè)微服務(wù)之間通過(guò)注冊(cè)中心能夠相互通信,其優(yōu)點(diǎn)就是如果中間即某個(gè)微服務(wù)模塊出錯(cuò),也不會(huì)導(dǎo)致整個(gè)項(xiàng)目直接癱瘓。眾籌網(wǎng)站系統(tǒng)項(xiàng)目中主要運(yùn)用了服務(wù)注冊(cè)與發(fā)現(xiàn)中心Eureka,Zuul路由網(wǎng)關(guān),F(xiàn)eign負(fù)載均衡等幾個(gè)微服務(wù)組件,在項(xiàng)目中,注冊(cè)中心作為一個(gè)獨(dú)立的服務(wù),進(jìn)行其他服務(wù)的注冊(cè)和發(fā)現(xiàn),服務(wù)啟動(dòng)后,其他的每個(gè)服務(wù)都要向注冊(cè)中心進(jìn)行注冊(cè),每個(gè)服務(wù)通過(guò)注冊(cè)中心相互發(fā)現(xiàn),相互聯(lián)系,期間注冊(cè)中心會(huì)不斷的收集其他服務(wù)的心跳包。每個(gè)服務(wù)通過(guò)Feign直接能相互調(diào)用,但是必須都要通過(guò)注冊(cè)中心Eureka獲取服務(wù)的信息才能調(diào)用,Zuul作為路由網(wǎng)關(guān)時(shí)客戶端和服務(wù)器的中間層,用于處理非業(yè)務(wù)邏輯功能路由請(qǐng)求,監(jiān)控等功能,目的是為微服務(wù)架構(gòu)提供一套簡(jiǎn)單,有效和統(tǒng)一的API路由管理方式,所以的請(qǐng)求都必須經(jīng)過(guò)Zuul經(jīng)過(guò)處理才能訪問(wèn)具體的微服務(wù),F(xiàn)eign也實(shí)現(xiàn)負(fù)載均衡,實(shí)現(xiàn)微服務(wù)之間的調(diào)用。2.2SSM架構(gòu)SSM框架是Spring+SpringMVC+MyBatis的簡(jiǎn)稱。Spring可以稱之為容器,其核心思想是loC(控制反轉(zhuǎn)),控制反轉(zhuǎn)就是在創(chuàng)建對(duì)象不需要我們自己去創(chuàng)建,我們可以通過(guò)Spring容器去幫我們創(chuàng)建對(duì)象,當(dāng)我們需要使用到它的時(shí)候,就通過(guò)注入的方式把它從容器里拿出來(lái),Spring容器幫我們管理這個(gè)對(duì)象。SpringMVC可以在后端組件中攔截用戶請(qǐng)求,其核心是前端控制器DispatcherServlet,經(jīng)過(guò)一系列組件處理后返回一個(gè)ModolAndVue給服務(wù)器并且進(jìn)行渲染,SpringMVC和Spring可以說(shuō)是無(wú)縫連接的。mybatis框架通過(guò)對(duì)jdbc的封裝,讓數(shù)據(jù)庫(kù)底層操作變的透明。眾籌網(wǎng)站系統(tǒng)項(xiàng)目中,后臺(tái)的管理員管理系統(tǒng)采用SSM架構(gòu)開(kāi)發(fā),在用戶發(fā)送請(qǐng)求時(shí),首先在會(huì)把請(qǐng)求發(fā)送請(qǐng)求給前端的控制器,前端控制器接收到請(qǐng)求后調(diào)用控制層(也叫handler層),在控制層需要處理具體的業(yè)務(wù)邏輯,比如增刪改查等操作的代碼邏輯,然后控制層調(diào)用業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層主要對(duì)整個(gè)項(xiàng)目起解耦作用,通過(guò)業(yè)務(wù)邏輯層可以實(shí)現(xiàn)系統(tǒng)代碼“高內(nèi)聚低耦合”,業(yè)務(wù)邏輯層調(diào)用Mapper層接口從而做到與數(shù)據(jù)庫(kù)進(jìn)行交互,最后結(jié)果返回給SpringMVC的ModolAndVue,經(jīng)過(guò)ModolAndVue渲染后展現(xiàn)給用戶。2.3Redis技術(shù)Redis是一種基于鍵值對(duì)的NoSQL數(shù)據(jù)庫(kù),其特點(diǎn)是:一、它擁有多種數(shù)據(jù)結(jié)構(gòu)類型,分別有String(字符串)、hash(哈希)、List(列表)、set(集合)、zset(有序集合)。二、它會(huì)將所有數(shù)據(jù)進(jìn)行序列化后存儲(chǔ)在內(nèi)存中,讀寫(xiě)性能可以達(dá)到10萬(wàn)/秒。為避免發(fā)生斷點(diǎn)或機(jī)器故障時(shí),Redis提供了將內(nèi)存中的數(shù)據(jù)利用快照和日志的形式保存到磁盤(pán)中的方式內(nèi)存數(shù)據(jù)丟失的問(wèn)題[12]。眾籌網(wǎng)系統(tǒng)項(xiàng)目中在注冊(cè)功能時(shí)使用到Redis來(lái)存儲(chǔ)手機(jī)驗(yàn)證碼并且設(shè)置驗(yàn)證碼的有效時(shí)間,另外Redis解決分布式架構(gòu)中session不共享問(wèn)題,利用SpringSession技術(shù)把Session存到Redis里,后期訪問(wèn)系統(tǒng)的全部頁(yè)面都需要經(jīng)過(guò)Zuul路由網(wǎng)關(guān)從而實(shí)現(xiàn)Session共享,在工程服務(wù)中利用Redis存儲(chǔ)表單數(shù)據(jù)提高性能。2.4SpringSecuritySpringSecurity是一個(gè)功能強(qiáng)大且高度可定制的身份驗(yàn)證和訪問(wèn)控制框架。與所有Spring項(xiàng)目一樣,SpringSecurity的真正強(qiáng)大之處在于可以輕松擴(kuò)展以滿足自定義要求,主要特性有全面和可擴(kuò)展的身份驗(yàn)證和授權(quán);支持防止會(huì)話固定、點(diǎn)擊劫持、跨網(wǎng)站請(qǐng)求偽造等攻擊;ServletAPI集成;與SpringWebMVC的可選集成等。在項(xiàng)目的后臺(tái)管理系統(tǒng)中,主要運(yùn)用了SpringSecurity技術(shù)對(duì)后臺(tái)系統(tǒng)的用戶進(jìn)行權(quán)限管理,在后臺(tái)管理系統(tǒng)中,通過(guò)用戶去關(guān)聯(lián)角色,然后角色關(guān)聯(lián)權(quán)限從而達(dá)到對(duì)系統(tǒng)資源訪問(wèn)控制,在用戶關(guān)聯(lián)角色中,每個(gè)用戶可以擁有多個(gè)角色,每個(gè)角色可以被多個(gè)用戶所擁有。角色關(guān)聯(lián)權(quán)限也是一樣,最后通過(guò)權(quán)限控制資源。2.5SpringSessionSpringSession是Spring中的一個(gè)框架。SpringSession提供了一套創(chuàng)建和管理ServletHttpSession的方案,默認(rèn)采用外置的Redis來(lái)存儲(chǔ)Session數(shù)據(jù),以此來(lái)解決Session共享的問(wèn)題。在該項(xiàng)目中配置Redis來(lái)實(shí)現(xiàn)分布式Session共享問(wèn)題,SpringSession框架每次都會(huì)將Session保存到Redis里,保證Redis里時(shí)刻保存著最新的Session,每次訪問(wèn)其他的微服務(wù)都通過(guò)Zuul網(wǎng)關(guān),在Zuul網(wǎng)關(guān)中會(huì)自動(dòng)獲取Redis里的Session,從而實(shí)現(xiàn)了Session共享。2.6Mysql數(shù)據(jù)庫(kù)MySQL是一種開(kāi)放源代碼的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),使用的SQL語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言,由于其體積小、速度快、開(kāi)放源碼等特點(diǎn),一般中小型網(wǎng)站的開(kāi)發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。在眾籌網(wǎng)站系統(tǒng)項(xiàng)目中,為了對(duì)一些必要的數(shù)據(jù)進(jìn)行持久化保存,如用戶信息,眾籌商品信息,訂單信息等都有設(shè)計(jì)數(shù)據(jù)庫(kù)表格保存到數(shù)據(jù)庫(kù)中。2.7Thymeleaf技術(shù)Thymeleaf是一個(gè)流行的模板引擎,該模板引擎采用Java語(yǔ)言開(kāi)發(fā),可以執(zhí)行HTML,XML,JavaScript,CSS甚至純文本模板,目前也是主流的技術(shù)之一。在眾籌網(wǎng)站系統(tǒng)中,利用Thymeleaf使用html模板,拋棄了傳統(tǒng)的jsp頁(yè)面。相比于jsp表達(dá)式,Thymeleaf的性能更好,Thymeleaf更加使用于目前項(xiàng)目的開(kāi)發(fā)。Thymeleaf的用法為“th:”,在頁(yè)面不經(jīng)過(guò)服務(wù)器時(shí),html模板不會(huì)對(duì)Thymeleaf進(jìn)行渲染,因此前端頁(yè)面可以提供一些假數(shù)據(jù)暫時(shí)渲染,這樣便于前端工程師的開(kāi)發(fā),在該項(xiàng)目中,前臺(tái)系統(tǒng)的全部頁(yè)面都是由Thymeleaf進(jìn)行渲染。2.8MybatisMyBatis是一款優(yōu)秀的持久層框架。使用簡(jiǎn)單的XML或注解來(lái)配置和映射原生信息,將接口和Java的POJOs(PlainOrdinaryJavaObject,普通的Java對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄。
在眾籌網(wǎng)站系統(tǒng)中,通過(guò)mapper接口和mapper.xml文件對(duì)數(shù)據(jù)庫(kù)進(jìn)行一一映射,ServiceImpl層調(diào)用mapper接口,mapper接口中的方法映射到mapper.xml文件里的方法,最后執(zhí)行SQL語(yǔ)句實(shí)現(xiàn)系統(tǒng)所需要的增刪改查操作。2.9AjaxAjax(Asynchronous
JavaScript
andXML),直譯為“異步的JavaScript與XML技術(shù)”,是一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù),在通過(guò)瀏覽器與服務(wù)器進(jìn)行少量的數(shù)據(jù)交換就可以實(shí)現(xiàn)網(wǎng)頁(yè)的異步更新,即不重新加載整個(gè)網(wǎng)頁(yè)的情況下,即可對(duì)網(wǎng)頁(yè)進(jìn)行更新。在眾籌網(wǎng)后臺(tái)管理中,角色維護(hù)中的增刪改查功能使用到了大量的ajax向后端服務(wù)器發(fā)送請(qǐng)求,然后返回一個(gè)Json數(shù)據(jù),從而在前端頁(yè)面通過(guò)JavaScript動(dòng)態(tài)動(dòng)態(tài)相應(yīng)并且渲染。通過(guò)異步刷新,給予用戶更友好的體驗(yàn)。2.10本章小結(jié)本章通過(guò)對(duì)眾籌網(wǎng)站系統(tǒng)進(jìn)行了相關(guān)技術(shù)設(shè)計(jì)介紹和分析,分別對(duì)SpringCloud、Redis、Ajax等技術(shù)進(jìn)行主要的概括以及項(xiàng)目中如何用到該技術(shù),最后結(jié)合當(dāng)前流行的技術(shù),進(jìn)行了技術(shù)適用性和優(yōu)點(diǎn)分析。3需求分析本章內(nèi)容結(jié)合眾籌網(wǎng)站系統(tǒng)以及當(dāng)下國(guó)內(nèi)外眾籌的情況下,主要從系統(tǒng)可行性以及功能需求兩個(gè)方面分析眾籌網(wǎng)站系統(tǒng)的功能模塊。在開(kāi)發(fā)項(xiàng)目之前,必須通過(guò)需求分析,才能進(jìn)行下一步的開(kāi)發(fā)工作。通過(guò)對(duì)現(xiàn)代眾籌網(wǎng)平臺(tái)的分析,確定了系統(tǒng)的綜合要求,主要分為:功能需求、性能需求、可靠性和可用性需求。3.1可行性分析在開(kāi)發(fā)系統(tǒng)時(shí),首先應(yīng)該考慮項(xiàng)目的可行性,通過(guò)了可行性分析,才能把項(xiàng)目的開(kāi)發(fā)成本降到最大化,本文從技術(shù),經(jīng)濟(jì),運(yùn)行等方面分析了眾籌網(wǎng)站系統(tǒng)開(kāi)發(fā)的可行性,是確保系統(tǒng)遇到的問(wèn)題得到解決,避免浪費(fèi)時(shí)間、金錢(qián)和人力。3.1.1技術(shù)可行性分析眾籌網(wǎng)站系統(tǒng)的開(kāi)發(fā)采用idea作為開(kāi)發(fā)工具,微服務(wù)架構(gòu)選擇使用SpringCloud,數(shù)據(jù)庫(kù)選擇MySQL,在對(duì)文件上傳的部分使用阿里云的OSS對(duì)象存儲(chǔ),此系統(tǒng)的開(kāi)發(fā)不需要復(fù)雜的開(kāi)發(fā)設(shè)備,對(duì)電腦的配置要求也不高。開(kāi)發(fā)者需要熟悉java語(yǔ)言、熟悉MySQL數(shù)據(jù)庫(kù)和熟悉電腦的操作系統(tǒng),能熟練操控這些技術(shù),便可實(shí)現(xiàn)系統(tǒng)的主要技能要求。研究結(jié)果表明,開(kāi)發(fā)扶貧商城系統(tǒng)在技術(shù)上是可行的。3.1.2經(jīng)濟(jì)可行性分析在眾籌網(wǎng)站系統(tǒng)的開(kāi)發(fā)中需要的東西并不昂貴:1:一臺(tái)普通的電腦;2:idea開(kāi)發(fā)工具;3:windows系統(tǒng);4:Linux系統(tǒng);5:MySQL數(shù)據(jù)庫(kù),對(duì)計(jì)算機(jī)硬件設(shè)備和軟件條件要求都不算高,所以用戶不需要購(gòu)買高配置的昂貴電腦,對(duì)于idea開(kāi)發(fā)工具,可以直接從網(wǎng)上下載破解版即可使用,無(wú)需任何費(fèi)用;MySQL數(shù)據(jù)庫(kù)也是可以免費(fèi)使用的,因此,開(kāi)發(fā)眾籌網(wǎng)站系統(tǒng)在經(jīng)濟(jì)上可行。3.1.3操作可行性分析眾籌網(wǎng)站系統(tǒng)都是基于瀏覽器訪問(wèn),并不需要安裝App或者其他程序,網(wǎng)頁(yè)設(shè)計(jì)簡(jiǎn)潔、用戶體驗(yàn)感友好、操作方便。用戶可以直接訪問(wèn)瀏覽器網(wǎng)址到達(dá)首頁(yè),可以使用發(fā)起眾籌,設(shè)置回報(bào),支付等功能。3.2功能需求分析完整的系統(tǒng)會(huì)有一個(gè)完善的功能設(shè)計(jì),本項(xiàng)目從系統(tǒng)功能概述和功能需求進(jìn)行闡述。3.2.1系統(tǒng)功能概述、本次眾籌網(wǎng)站系統(tǒng)經(jīng)過(guò)過(guò)需求分析設(shè)計(jì)并實(shí)現(xiàn)一個(gè)擁有完整的眾籌網(wǎng)站系統(tǒng)。該系統(tǒng)中除了在前臺(tái)中可以發(fā)起眾籌,發(fā)起眾籌的過(guò)程中可以設(shè)置回報(bào)信息,給心儀的商品支持后,還可以登錄后臺(tái)管理員系統(tǒng)對(duì)用戶,角色,菜單進(jìn)行維護(hù),并且擁有權(quán)限控制。在設(shè)計(jì)該系統(tǒng)中考慮到整個(gè)系統(tǒng)運(yùn)行流程,每個(gè)功能模塊的內(nèi)容,由此設(shè)計(jì)出的眾籌網(wǎng)系統(tǒng)具備主要功能如下:(1):前臺(tái)系統(tǒng)的用戶注冊(cè)登錄以及后臺(tái)系統(tǒng)的管理員登錄(2):訪問(wèn)網(wǎng)站的用戶都可對(duì)本網(wǎng)站的眾籌商品進(jìn)行瀏覽,支付支持(3):登錄用戶可以發(fā)起眾籌,設(shè)置回報(bào),發(fā)表成功(4):后臺(tái)系統(tǒng)管理權(quán)限控制3.2.2功能需求功能需求分析主要分為兩部分:前臺(tái)系統(tǒng)功能需求注冊(cè)功能:用戶可以發(fā)起自己的眾籌項(xiàng)目,但必須登錄才能發(fā)起,如果沒(méi)有賬號(hào),需要去注冊(cè)一個(gè)屬于自己的賬號(hào),用戶必須通過(guò)短信驗(yàn)證才能注冊(cè)成功。登錄功能:在本項(xiàng)目中,用戶可以通過(guò)頁(yè)面輸入自己的賬號(hào)密碼即可登錄。簽訂協(xié)議:用戶在發(fā)布眾籌前必須同意并勾選相關(guān)協(xié)議方能進(jìn)入下一步。發(fā)起眾籌:用戶在發(fā)起眾籌頁(yè)面可以上傳眾籌商品的圖片,填寫(xiě)眾籌商品有關(guān)的信息。設(shè)置回報(bào):用戶可以設(shè)置多條支持后的回報(bào)信息。發(fā)布成功:填完資料后點(diǎn)擊發(fā)布即可發(fā)布成功。眾籌商品詳情:在首頁(yè)面可以瀏覽眾籌網(wǎng)的商品詳情,可以點(diǎn)擊項(xiàng)目名稱進(jìn)入詳情頁(yè)。商品支持:用戶可以對(duì)心儀的商品進(jìn)行錢(qián)財(cái)支持。下訂單:用戶在支持后選擇回報(bào)的數(shù)量和支持金額,如果沒(méi)有收貨地址,可以在訂單頁(yè)面進(jìn)行創(chuàng)建地址。支付:進(jìn)入支付頁(yè)面,顯示支付金額,可通過(guò)掃描或者輸入賬號(hào)密碼付款。后臺(tái)系統(tǒng)功能需求登錄模塊:相關(guān)的管理員通過(guò)賬號(hào)和密碼登錄到后臺(tái)管理系統(tǒng),登錄后可以進(jìn)行相關(guān)操作。用戶維護(hù):對(duì)后臺(tái)用戶管理員進(jìn)行管理,登錄的管理員可以添加用戶,查詢用戶,刪除用戶,編輯用戶,還能給用戶分配一個(gè)或多個(gè)角色。角色維護(hù):角色管理員可以對(duì)進(jìn)入系統(tǒng)的角色維護(hù)進(jìn)行管理,可以添加角色,查詢角色,刪除角色,編輯角色,還能給角色分配權(quán)限,對(duì)應(yīng)的權(quán)限有后臺(tái)系統(tǒng)的增刪改查。菜單管理:管理員可對(duì)系統(tǒng)菜單進(jìn)行維護(hù),包括添加結(jié)點(diǎn),刪除結(jié)點(diǎn),編輯結(jié)點(diǎn)。3.3非功能需求分析所謂非功能性需求,是指軟件產(chǎn)品為滿足用戶業(yè)務(wù)需求而必須具有且除功能需求以外的特性。軟件產(chǎn)品的非功能性需求包括系統(tǒng)的性能、易用性、可靠性、可維護(hù)性、可擴(kuò)展性和對(duì)技術(shù)和對(duì)業(yè)務(wù)的適應(yīng)性等。3.4本章小結(jié)本章主要對(duì)系統(tǒng)進(jìn)行需求分析,包括可行性分析和功能需求分析以及非功能需求分析,可信性分析包括技術(shù)和經(jīng)濟(jì)可行性,功能需求主要對(duì)系統(tǒng)的前臺(tái)和后臺(tái)功能進(jìn)行簡(jiǎn)單的描述,最后是非功能需求,經(jīng)過(guò)分析,本系統(tǒng)達(dá)到開(kāi)發(fā)需求。4系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)在本項(xiàng)目整個(gè)微服務(wù)架構(gòu)系統(tǒng)還沒(méi)有成功設(shè)計(jì)出來(lái)之前,需要設(shè)計(jì)系統(tǒng)的總體設(shè)計(jì),然后在一步一步深入,一步一步細(xì)分,直到將一個(gè)總的微服務(wù)架構(gòu)分為每一個(gè)細(xì)小的功能模塊,本次設(shè)計(jì)主要分為系統(tǒng)總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)??傮w設(shè)計(jì):包括系統(tǒng)的模塊結(jié)構(gòu)設(shè)計(jì)和計(jì)算機(jī)配置方案設(shè)計(jì),計(jì)算機(jī)配置方案設(shè)計(jì)即解決計(jì)算機(jī)軟硬件系統(tǒng)的配置、通信網(wǎng)絡(luò)系統(tǒng)的配置等。系統(tǒng)模塊結(jié)構(gòu)設(shè)計(jì)主要是劃分子系統(tǒng)。在本項(xiàng)目中,整個(gè)微服務(wù)系統(tǒng)拆分為登錄系統(tǒng),發(fā)起眾籌系統(tǒng),訂單系統(tǒng)等。詳細(xì)設(shè)計(jì):在總體架構(gòu)設(shè)計(jì)的基礎(chǔ)上,經(jīng)過(guò)一步步細(xì)分,最終得到每個(gè)模塊的詳細(xì)實(shí)現(xiàn)和執(zhí)行過(guò)程,包括代碼設(shè)計(jì)、界面設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)等。并且通常會(huì)用到流程圖、問(wèn)題分析圖等描述每個(gè)模塊的執(zhí)行過(guò)程。4.1系統(tǒng)功能結(jié)構(gòu)在微服務(wù)架構(gòu)中,每個(gè)系統(tǒng)的功能都各具特色,各個(gè)模塊組和在一起構(gòu)成了一個(gè)完整的系統(tǒng),而擁有一個(gè)完整的功能結(jié)構(gòu)圖,后期就便于維護(hù)。本次眾籌網(wǎng)站系統(tǒng)后臺(tái)管理系統(tǒng)使用SSM架構(gòu),分為用戶維護(hù),角色維護(hù),菜單維護(hù),前臺(tái)使用微服務(wù)架構(gòu),分為多個(gè)微服務(wù)結(jié)構(gòu),具體分為登錄服務(wù),發(fā)起眾籌商品服務(wù),眾籌商品展示服務(wù),訂單服務(wù),支付服務(wù)。1.后臺(tái)管理系統(tǒng)分為超級(jí)管理員跟普通管理員,超級(jí)管理員擁有系統(tǒng)的最高權(quán)限,普通管理員有用戶管理員,角色管理員和其他的管理員,用戶管理員能操作用戶維護(hù)模塊,角色管理員能操作角色維護(hù)模塊,具體功能結(jié)構(gòu)圖如下圖4-1所示:圖4-1后臺(tái)管理系統(tǒng)功能結(jié)構(gòu)圖2.前臺(tái)系統(tǒng)由登錄注冊(cè)服務(wù),發(fā)起注冊(cè)商品服務(wù),眾籌商品展示服務(wù),訂單服務(wù),支付服務(wù),中間通過(guò)Redis緩存存儲(chǔ)數(shù)據(jù),對(duì)于需要持久化的數(shù)據(jù)則保存在數(shù)據(jù)庫(kù)。主要有普通用戶,系統(tǒng)功能如下圖4-2所示:圖4-2前臺(tái)功能結(jié)構(gòu)圖4.2系統(tǒng)主要功能模塊設(shè)計(jì)1.后臺(tái)功能主要涉及登錄、用戶維護(hù)、角色維護(hù)、用戶維護(hù)有分配角色操作,角色維護(hù)有分配權(quán)限操作,整個(gè)后臺(tái)功能模塊設(shè)計(jì)流程如圖4-3所示:4-3后臺(tái)功能模塊設(shè)計(jì)流程圖2.前臺(tái)功能主要涉及注冊(cè)、登錄、商品詳情、購(gòu)物車、訂單、支付等模塊,整個(gè)前臺(tái)功能模塊設(shè)計(jì)流程如圖4-4所示:圖4-4前臺(tái)功能模塊流程圖4.2.1登錄注冊(cè)模塊設(shè)計(jì)非登錄用戶可以對(duì)眾籌網(wǎng)站首頁(yè)的所以眾籌商品進(jìn)行瀏覽,對(duì)于心儀的商品可以選擇錢(qián)財(cái)支持,如果想發(fā)起自己的創(chuàng)意產(chǎn)品,沒(méi)有登錄必須通過(guò)注冊(cè)賬號(hào)才能登錄,賬號(hào)注冊(cè)需要短信驗(yàn)證,通過(guò)手機(jī)驗(yàn)證成功后方能注冊(cè)成功,眾籌網(wǎng)站內(nèi)的模塊使用權(quán)必須通過(guò)登錄才能享有。4.2.2眾籌商品展示模塊設(shè)計(jì)當(dāng)用戶訪問(wèn)眾籌網(wǎng)站系統(tǒng)首頁(yè)時(shí),首頁(yè)會(huì)展示當(dāng)前正在眾籌的商品信息,包括商品的頭圖,還有商品信息中發(fā)起人的信息,發(fā)起眾籌的時(shí)間,當(dāng)前支持的人數(shù),當(dāng)點(diǎn)擊項(xiàng)目發(fā)起人時(shí),會(huì)跳到眾籌商品詳情頁(yè)。4.2.3眾籌回報(bào)模塊設(shè)計(jì)在發(fā)起眾籌過(guò)程中,發(fā)起人可以設(shè)置眾籌回報(bào)的相關(guān)信息,有支持金額,回報(bào)內(nèi)容,回報(bào)類型,運(yùn)費(fèi)等等,發(fā)起人也可以添加多條回報(bào)。4.2.4訂單支付模塊設(shè)計(jì)在眾籌商品詳情頁(yè)面中選擇支持后,用戶才可以進(jìn)入到下訂單的操作,在訂單詳情中,如果是一個(gè)新用戶,需要添加收貨地址,如果是一個(gè)老用戶,并且設(shè)置過(guò)地址,可以直接選擇地址或者也可以新增地址,在勾選協(xié)議之后才能進(jìn)行支付。4.3后臺(tái)主要功能模塊設(shè)計(jì)后臺(tái)管理系統(tǒng)主要針對(duì)于管理員進(jìn)行設(shè)計(jì),所以后臺(tái)管理的模塊有用戶維護(hù),角色維護(hù),菜單維護(hù)。后臺(tái)系統(tǒng)獲取數(shù)據(jù)庫(kù)中獲取用戶信息,并提供給管理員對(duì)用戶操作的權(quán)限,可以編輯用戶信息,刪除該用戶,給用戶分配角色等操作,角色維護(hù)可以分配權(quán)限,菜單維護(hù)可以實(shí)現(xiàn)后臺(tái)菜單管理。4.3.1用戶信息模塊設(shè)計(jì)用戶信息管理可以對(duì)每個(gè)用戶進(jìn)行管理,包括添加用戶,編輯用戶信息,刪除該用戶,給用戶分配角色等操作。4.3.1角色信息模塊設(shè)計(jì)角色信息維護(hù)可以分配權(quán)限,通過(guò)關(guān)聯(lián)用戶信息中的用戶表,可以賦予某個(gè)用戶一個(gè)或者多個(gè)權(quán)限,除此之外,管理員還可以對(duì)角色進(jìn)行添加,編輯,刪除角色。4.3.1菜單信息模塊設(shè)計(jì)菜單信息模塊可以對(duì)菜單的全部結(jié)點(diǎn)執(zhí)行刪除或修改操作,添加結(jié)點(diǎn)操作可以添加結(jié)點(diǎn)的名稱和URL地址,數(shù)據(jù)庫(kù)會(huì)根據(jù)當(dāng)前結(jié)點(diǎn)從而生成子結(jié)點(diǎn)。4.4數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)是根據(jù)用戶的需求,在某一具體的數(shù)據(jù)庫(kù)管理系統(tǒng)上,設(shè)計(jì)數(shù)據(jù)庫(kù)的結(jié)構(gòu)和建立數(shù)據(jù)庫(kù)的過(guò)程。就是規(guī)劃和結(jié)構(gòu)化數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)象以及這些數(shù)據(jù)對(duì)象之間關(guān)系的過(guò)程,一個(gè)良好的數(shù)據(jù)庫(kù)設(shè)計(jì)可以給系統(tǒng)帶來(lái)清晰的數(shù)據(jù)統(tǒng)計(jì)與數(shù)據(jù)的詳細(xì)分析,給系統(tǒng)帶來(lái)方便的直觀的數(shù)據(jù)[14]。下面分別從概念結(jié)構(gòu)設(shè)計(jì)和物理結(jié)構(gòu)設(shè)計(jì)進(jìn)行闡述。4.4.1概念結(jié)構(gòu)設(shè)計(jì)在構(gòu)建系統(tǒng)時(shí),對(duì)于數(shù)據(jù)庫(kù)的構(gòu)建是非常重要的,在設(shè)計(jì)數(shù)據(jù)庫(kù)表時(shí),往往要考慮很多因素,對(duì)于數(shù)據(jù)庫(kù)表來(lái)說(shuō),需要合理設(shè)計(jì)每一個(gè)字段,是否主外鍵關(guān)聯(lián),主鍵要不要自增等等,對(duì)于數(shù)據(jù)庫(kù)模型分析,我們可以用通過(guò)E-R圖表示,通過(guò)E-R圖可以清楚明了的分析出數(shù)據(jù)實(shí)體的屬性、實(shí)體之間的聯(lián)系類型。系統(tǒng)后臺(tái)用戶實(shí)體:包括用戶ID,用戶賬號(hào),用戶密碼,用戶名,郵箱,創(chuàng)建時(shí)間,具體E-R圖設(shè)計(jì)如圖4-3所示。圖4-3后臺(tái)用戶實(shí)體后臺(tái)角色實(shí)體:包括角色的ID,角色名稱,具體E-R圖設(shè)計(jì)如圖4-4所示。圖4-4后臺(tái)角色實(shí)體前臺(tái)用戶實(shí)體:包括用戶的ID、用戶名、用戶密碼、用戶昵稱、郵箱、實(shí)名認(rèn)證狀態(tài)。用來(lái)描述用戶信息,具體E-R圖設(shè)計(jì)如圖4-5所示。圖4-5前臺(tái)用戶實(shí)體(4)眾籌商品實(shí)體類:包括商品ID,商品名字,支持人數(shù),,商品描述,眾籌金額,已籌金額,籌集天數(shù),眾籌狀態(tài),具體用來(lái)描述眾籌商品的信息,具體E-R圖設(shè)計(jì)如圖4-6所示。圖4-6眾籌商品實(shí)體類(5)商品回報(bào)實(shí)體:包括回報(bào)ID、商品ID、回報(bào)類型、支持金額、回報(bào)內(nèi)容、回報(bào)限額,運(yùn)費(fèi),限購(gòu)數(shù)量。具體用來(lái)描述回報(bào)信息,具體E-R圖設(shè)計(jì)如圖4-7所示。圖4-7商品回報(bào)實(shí)體(6)訂單實(shí)體:包括訂單ID、訂單號(hào)、流水號(hào)、金額、發(fā)票狀態(tài)、訂單備注、地址,發(fā)票抬頭。具體E-R圖設(shè)計(jì)如圖4-8所示。圖4-8訂單實(shí)體(7)地址實(shí)體:包括地址ID、收貨人姓名、詳細(xì)地址、用戶ID、收件人電話。具體E-R圖設(shè)計(jì)如圖4-9所示。圖4-9地址實(shí)體4.4.2數(shù)據(jù)庫(kù)表設(shè)計(jì)在系統(tǒng)正常的運(yùn)行過(guò)程中,需要使用多個(gè)數(shù)據(jù)庫(kù)表來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)中的各種數(shù)據(jù),因此數(shù)據(jù)庫(kù)表的設(shè)計(jì)非常重要,設(shè)計(jì)一個(gè)好的數(shù)據(jù)庫(kù)可以使開(kāi)發(fā)中變得事半功倍,眾籌網(wǎng)系統(tǒng)的數(shù)據(jù)庫(kù)表結(jié)構(gòu)如行:后臺(tái)用戶表t_admin,主要用于存儲(chǔ)后臺(tái)管理員的基本信息,包括管理員ID、管理員賬號(hào)、管理員密碼、管理員名稱、郵箱、創(chuàng)建時(shí)間,如表4-1所示。表4-1用戶表t_admin序號(hào)字段名稱字段類型大小允許為空描述1idint11否管理員ID2login_acctvarchar255否管理員賬號(hào)3user_pswdchar100否管理員密碼4user_namevarchar255否管理員名稱5emailvarchar255否郵箱6create_timeint19是創(chuàng)建時(shí)間后臺(tái)角色表t_role,主要用于存儲(chǔ)后臺(tái)角色的基本信息,包括角色I(xiàn)D、角色名稱,如表4-1所示。表4-2用戶表t_role序號(hào)字段名稱字段類型大小允許為空描述1idint11否角色I(xiàn)D2namevarchar100否角色名字3.用戶表t_member,主要用于存儲(chǔ)前臺(tái)用戶的基本信息,包括用戶的ID、用戶名、用戶密碼、用戶昵稱、郵箱、實(shí)名認(rèn)證狀態(tài),如表4-3所示。表4-3用戶表t_member序號(hào)字段名稱字段類型大小允許為空描述1idint11否用戶ID2loginacctvarchar255否用戶賬號(hào)3userpswdchar200否密碼4usernamevarchar255是用戶名5emailvarchar255是郵箱6authstatusint4是認(rèn)證狀態(tài)7usertypeint4是使用類型眾籌商品表t_project,主要用來(lái)存儲(chǔ)商品ID,商品名字,支持人數(shù),,商品描述,眾籌金額,已籌金額,籌集天數(shù),眾籌狀態(tài),發(fā)起人的會(huì)員id如表4-4所示。表4-4眾籌商品表t_project序號(hào)字段名稱字段類型大小允許為空描述1idint11是商品ID2project_namevarchar255是商品名字3project_descriptionvarchar200是商品描述4moneybigint255是眾籌金額5dayint11是眾籌天數(shù)6statusint4是眾籌狀態(tài)7deploydatevarchar4是發(fā)起時(shí)間8supportmoneybigint11是已籌集金額9supporterint11是支持人數(shù)10completionint3是百分比完成度11memberidint11是發(fā)起人的會(huì)員id4.眾籌回報(bào)表t_return,主要用來(lái)存儲(chǔ)回報(bào)信息,包括回報(bào)ID、商品ID、回報(bào)類型、支持金額、回報(bào)內(nèi)容、回報(bào)限額,運(yùn)費(fèi),限購(gòu)數(shù)量如表4-5所示。表4-5眾籌回報(bào)表t_return序號(hào)字段名稱字段類型大小允許為空描述1idint11否ID2projectidint11否商品ID3typeint4是回報(bào)類型4supportmoneyint11是支持金額5contentvarchar255是回報(bào)內(nèi)容6countint11是回報(bào)限額7signalpurchaseint11是是否代筆限購(gòu)8purchaseint11是限購(gòu)數(shù)量9freightint11是運(yùn)費(fèi)10invoiceint4是是否開(kāi)發(fā)票5.訂單表t_order,主要用來(lái)存儲(chǔ)訂單信息,包括訂單ID、訂單號(hào)、流水號(hào)、金額、發(fā)票狀態(tài)、訂單備注、地址,發(fā)票抬頭。如表4-6所示。表4-6訂單表t_order序號(hào)字段名稱字段類型大小允許為空描述1idint11否ID2order_numchar100是訂單號(hào)3pay_order_numchar100是流水號(hào)4order_amountdouble10是訂單金額5invoiceint11是是否開(kāi)發(fā)票6invoice_titlechar100是發(fā)票抬頭7order_remarkchar100是訂單描述8address_idchar100是收貨地址ID6.地址表t_address,主要用來(lái)存儲(chǔ)地址信息,包括地址ID、收貨人姓名、詳細(xì)地址、用戶ID、收件人電話。如表4-7所示。表4-7地址表t_address序號(hào)字段名稱字段類型大小允許為空描述1idint11否ID2receive_nameint100是收件人3phone_numchar100是手機(jī)號(hào)4addresschar100是收貨地址5member_idint11是用戶ID4.5本章小結(jié)本章內(nèi)容主要介紹了眾籌網(wǎng)系統(tǒng)總體結(jié)構(gòu)的詳細(xì)設(shè)計(jì),通過(guò)圖解對(duì)系統(tǒng)功能結(jié)構(gòu)進(jìn)行了詳細(xì)的描述,通過(guò)功能流程圖分析每個(gè)模塊的功能,最后通過(guò)E-R圖和表的顯示對(duì)系統(tǒng)的數(shù)據(jù)庫(kù)中重要的表進(jìn)行了詳細(xì)描述。5系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)本章設(shè)計(jì)并實(shí)現(xiàn)了系統(tǒng)各模塊的功能。前臺(tái)功能主要包括:登錄注冊(cè)功能,首頁(yè)眾籌商品展示功能,眾籌商品詳情展示,訂單模塊,支付模塊,后臺(tái)功能主要包括:用戶信息管理,角色信息管理,菜單管理功能。5.1主要功能模塊實(shí)現(xiàn)前臺(tái)功能模塊主要有首頁(yè)的展示、登錄注冊(cè)、商品詳情模塊、購(gòu)物車模塊、訂單模塊、支付模塊。本章通過(guò)每個(gè)模塊通過(guò)功能實(shí)現(xiàn)截圖以及主要核心代碼進(jìn)行闡述。后臺(tái)權(quán)限控制在眾籌網(wǎng)站后臺(tái)系統(tǒng)中,管理員可以給相關(guān)用戶分配角色,當(dāng)分配完角色之后,還有給相應(yīng)的角色分配權(quán)限,只有用戶擁有了某一些權(quán)限之后,才能訪問(wèn)系統(tǒng)里面的資源,否則將拒絕訪問(wèn)。后臺(tái)權(quán)限控制頁(yè)面如圖5-1所示:圖5-1后臺(tái)權(quán)限控制頁(yè)面如果當(dāng)前用戶沒(méi)有權(quán)限訪問(wèn)資源,則會(huì)轉(zhuǎn)到一個(gè)眾籌網(wǎng)系統(tǒng)消息頁(yè)面,友好的提示該用戶沒(méi)有權(quán)限訪問(wèn)。拒絕頁(yè)面如圖5-2所示:圖5-2拒絕訪問(wèn)頁(yè)面(1)Springsecurity內(nèi)部其實(shí)是通過(guò)一個(gè)過(guò)濾器鏈來(lái)實(shí)現(xiàn)認(rèn)證流程的。除了一個(gè)配置類之外,還要繼承一個(gè)UserDetailSevice接口并且加入到容器中,才能實(shí)現(xiàn)我們自己的邏輯,在重新loadUserByUsername方法中,需要查找當(dāng)前的一個(gè)Admin對(duì)象,然后再根據(jù)當(dāng)前對(duì)象到數(shù)據(jù)庫(kù)查詢當(dāng)前對(duì)象擁有的角色信息,用Listj接收;當(dāng)用戶擁有某種角色后,還要根據(jù)角色信息查詢當(dāng)前用戶擁有的權(quán)限信息,并且存入List交給Springsecurity管理,而且權(quán)限信息必須加上“ROLE_”前綴,Springsecurity才能識(shí)別。用戶權(quán)限控制的核心代碼如下:publicUserDetailsloadUserByUsername(Strings)throwsUsernameNotFoundException{
//3.查詢角色信息
List<Role>assignedRoleList=roleService.getAssignedRole(adminId);
//4.詢權(quán)限的信息
List<String>authNameList=authService.getAssignedAuthNameByAdminId(adminId);
//5.創(chuàng)建集合對(duì)象存儲(chǔ)GrantedAuthority
List<GrantedAuthority>authorities=newArrayList<>();
//6.存入角色的信息
for(Rolerole:assignedRoleList){
//不要忘了加前綴!一定要加上
StringroleName="ROLE_"+role.getName();
SimpleGrantedAuthoritysimpleGrantedAuthority=newSimpleGrantedAuthority(roleName);
authorities.add(simpleGrantedAuthority);
}
//7.存入權(quán)限的信息
for(StringauthName:authNameList){
SimpleGrantedAuthoritysimpleGrantedAuthority=newSimpleGrantedAuthority(authName);
authorities.add(simpleGrantedAuthority);
}
}5.1.2首頁(yè)展示眾籌商品在眾籌網(wǎng)站首頁(yè)頁(yè)面中,會(huì)將正在眾籌的商品分類展示給用戶看,包括科技,農(nóng)業(yè),設(shè)計(jì)等,當(dāng)用戶進(jìn)入首頁(yè)時(shí),后臺(tái)相應(yīng)后給用戶展現(xiàn)的頁(yè)面如如圖5-3所示:圖5-3首頁(yè)(2)通過(guò)Feign接口調(diào)用數(shù)據(jù)庫(kù)服務(wù),在數(shù)據(jù)庫(kù)中查詢已經(jīng)發(fā)起的項(xiàng)目,返結(jié)果用List接收,最后存入Session模型,返回給前端頁(yè)面進(jìn)行渲染。展示眾籌商品的核心代碼如下:publicStringshowPortalPage(Modelmodel){
//1調(diào)用MySQLRemoteService提供的方法查詢首頁(yè)要顯示的數(shù)據(jù)
ResultEntity<List<PortalTypeVO>>resultEntity=
mySQLRemoteService.getPortalTypeProjectDataRemote();
//2檢查查詢結(jié)果
Stringresult=resultEntity.getResult();
if(ResultEntity.SUCCESS.equals(result)){
//3.獲取查詢結(jié)果數(shù)據(jù)
List<PortalTypeVO>list=resultEntity.getData();
//4.存入模型里
model.addAttribute(CrowdConstant.ATTR_NAME_PORTAL_DATA,list);
}
return"portal";
}5.1.3登錄與注冊(cè)模塊用戶想要發(fā)起眾籌或者給心儀的眾籌商品支持錢(qián)財(cái),則需要在本系統(tǒng)進(jìn)行注冊(cè)才能使用,注冊(cè)時(shí)需要填寫(xiě)用戶的基本信息:包括賬號(hào),密碼,昵稱,郵箱,手機(jī)號(hào),驗(yàn)證碼。如果注冊(cè)成功則會(huì)跳轉(zhuǎn)到登錄頁(yè)面,若注冊(cè)失敗后臺(tái)會(huì)響應(yīng)對(duì)應(yīng)的錯(cuò)誤信息給用戶。注冊(cè)頁(yè)面如圖5-4所示。圖5-4注冊(cè)頁(yè)面在注冊(cè)過(guò)程中,手機(jī)驗(yàn)證碼驗(yàn)證需要調(diào)用阿里云的短信驗(yàn)證服務(wù),當(dāng)用戶填寫(xiě)信息后短信發(fā)送成功如圖5-5所示:圖5-5短信發(fā)送(3)在調(diào)用阿里的短信接口服務(wù)時(shí),需要給阿里的短信服務(wù)傳幾個(gè)參數(shù),比如Appcode個(gè)人ID,向阿里發(fā)生短信請(qǐng)求的地址,mobile手機(jī)號(hào)碼,code(必選)手機(jī)短信模板:這里使用隨機(jī)生成的四位數(shù)驗(yàn)證碼,param短信模板變量對(duì)應(yīng)的實(shí)際值以及smsSignId和templateId,最后向阿里的短信接口服務(wù)發(fā)生請(qǐng)求,如果操作成功,把生成的驗(yàn)證碼返回。短信發(fā)送的核心代碼:publicstaticResultEntity<String>sendCodeByShortMessage(Stringhost,Stringpath,Stringmethod,Stringmobile,StringappCode,StringsmsSignId,StringtemplateId){//隨機(jī)生成四位數(shù)的驗(yàn)證碼
for(inti=0;i<4;i++){
intrandom=(int)(Math.random()*10);
builder.append(random);
}
Stringcode1=builder.toString();
inti=5;
Stringcode="**code**:"+code1+","+"**minute**:"+i;
querys.put("mobile",mobile);
querys.put("param",code);
querys.put("smsSignId",smsSignId);
querys.put("templateId",templateId);
try{
HttpResponseresponse=HttpUtils.doPost(host,path,method,headers,bodys,querys);
if(statusCode==200){
//操作成功,把生成的驗(yàn)證碼返回
returnResultEntity.successWithData(code1);
}
}(4)用戶登錄的過(guò)程中通過(guò)Feign調(diào)用數(shù)據(jù)庫(kù)服務(wù)進(jìn)行賬號(hào)密碼的唯一性校驗(yàn),將頁(yè)面賬號(hào)密碼進(jìn)行鹽值加盟形成密文后與數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行對(duì)比,如果校驗(yàn)成功,則跳轉(zhuǎn)到眾籌網(wǎng)中我的首頁(yè)部分,同時(shí)為了能夠?qū)崿F(xiàn)Session共享,還要?jiǎng)?chuàng)建MemberLoginVO對(duì)象將用戶模型存入Session域。用戶登錄主要核心代碼:publicStringlogin()
{
//1.調(diào)用遠(yuǎn)程接口根據(jù)登錄賬號(hào)查詢MemberPO對(duì)象
ResultEntity<MemberPO>resultEntity=
mySQLRemoteService.getMemberPOByLoginAcctRemote(loginacct);
if(ResultEntity.FAILED.equals(resultEntity.getResult())){
modelMap.addAttribute(CrowdConstant.ATTR_NAME_MESSAGE,resultEntity.getMessage());
return"member-login";
}
MemberPOmemberPO=resultEntity.getData();
if(memberPO==null){
modelMap.addAttribute(CrowdConstant.ATTR_NAME_MESSAGE,CrowdConstant.MESSAGE_LOGIN_FAILED);
return"member-login";
}
//2.比較密碼
StringuserpswdDataBase=memberPO.getUserpswd();
BCryptPasswordEncoderpasswordEncoder=newBCryptPasswordEncoder();
booleanmatcheResult=passwordEncoder.matches(userpswd,userpswdDataBase);
if(!matcheResult){
modelMap.addAttribute(CrowdConstant.ATTR_NAME_MESSAGE,CrowdConstant.MESSAGE_LOGIN_FAILED);
}
//3.創(chuàng)建MemberLoginVO對(duì)象存入Session域
MemberLoginVOmemberLoginVO=newMemberLoginVO(memberPO.getId(),memberPO.getUsername(),memberPO.getEmail());
session.setAttribute(CrowdConstant.ATTR_NAME_LOGIN_MEMBER,memberLoginVO);
}5.1.4設(shè)置回報(bào)模塊在發(fā)起眾籌的過(guò)程在,用戶可以設(shè)置相應(yīng)的回報(bào)信息,用來(lái)適當(dāng)?shù)难a(bǔ)償支持的用戶,發(fā)起人可以設(shè)置一條或者多條回報(bào),設(shè)計(jì)回報(bào)模塊中可以設(shè)計(jì)回報(bào)類型,支持金額,回報(bào)內(nèi)容等等,回報(bào)頁(yè)面如圖5-6所示:圖5-6設(shè)置回報(bào)(5)設(shè)置回報(bào)的信息是存在非關(guān)系型數(shù)據(jù)庫(kù)Redis里面的,在表單提交后保存設(shè)置回報(bào)的信息時(shí),需要從Session域中讀取之前緩存的ProjectVO對(duì)象,再?gòu)膒rojectVO對(duì)象中獲取存儲(chǔ)回報(bào)信息的集合returnVOList,如果ProjectVO對(duì)象中沒(méi)有,則說(shuō)明沒(méi)有設(shè)置回報(bào)信息,此時(shí)需要?jiǎng)?chuàng)建集合對(duì)象對(duì)returnVOList進(jìn)行初始化,并且把returnVOList存進(jìn)projectVO里,最后將表單數(shù)據(jù)的returnVO對(duì)象存入集合returnVOList里并存入Session域中。設(shè)置回報(bào)的核心代碼:publicResultEntity<String>saveReturn(ReturnVOreturnVO,HttpSessionsession){
try{
//1.從session域中讀取之前緩存的ProjectVO對(duì)象
ProjectVOprojectVO=(ProjectVO)session.getAttribute(CrowdConstant.ATTR_NAME_TEMPLE_PROJECT);
//2.判斷projectVO是否為null
if(projectVO==null){
returnResultEntity.failed(CrowdConstant.MESSAGE_TEMPLE_PROJECT_MISSING);
}
//3.從projectVO對(duì)象中獲取存儲(chǔ)回報(bào)信息的集合
List<ReturnVO>returnVOList=projectVO.getReturnVOList();
//4.判斷returnVOList集合是否有效
if(returnVOList==null||returnVOList.size()==0){
//5.創(chuàng)建集合對(duì)象對(duì)returnVOList進(jìn)行初始化
returnVOList=newArrayList<ReturnVO>();
//6.設(shè)置到projectVO對(duì)象中
projectVO.setReturnVOList(returnVOList);
}
//7.將收集了表單數(shù)據(jù)的returnVO對(duì)象存入集合
returnVOList.add(returnVO);
//8.把新的ProjectVO對(duì)象重新存入Session域,session.setAttribute(CrowdConstant.ATTR_NAME_TEMPLE_PROJECT,projectVO);
}5.1.5訂單模塊用戶在支持的時(shí)候,需要到訂單頁(yè)面填寫(xiě)收貨地址和回報(bào)數(shù)量,如果該用戶沒(méi)有收獲地址或者想換個(gè)收件人和收貨地址,需要新增收獲地址,并將收貨人信息、地址、手機(jī)號(hào)碼等信息完善,詳細(xì)頁(yè)面如圖5-7所示:圖5-7訂單頁(yè)面(6)在訂單模塊中,首先進(jìn)行對(duì)地址的保存,然后重定向但訂單頁(yè)面,確認(rèn)訂單時(shí),把接收到的回報(bào)數(shù)量存到Session域,并且獲取當(dāng)前已登錄用戶的id,通過(guò)id查詢目前的收貨地址數(shù)據(jù),最后跳轉(zhuǎn)到確認(rèn)訂單頁(yè)中。訂單模塊核心代碼:publicStringsaveAddress(AddressVOaddressVO,HttpSessionsession){
//1.執(zhí)行地址信息的保存
ResultEntity<String>resultEntity=mySQLRemoteService.saveAddressRemote(addressVO);
//2.從Session域獲取orderProjectVO對(duì)象
OrderProjectVOorderProjectVO=(OrderProjectVO)session.getAttribute("orderProjectVO");
//3.從orderProjectVO對(duì)象中獲取returnCount
IntegerreturnCount=orderProjectVO.getReturnCount();
//4.重定向到指定地址,重新進(jìn)入確認(rèn)訂單頁(yè)面
}
publicStringshowConfirmOrderInfo(){
//1.把接收到的回報(bào)數(shù)量存入到Session域
OrderProjectVOorderProjectVO=(OrderProjectVO)session.getAttribute("orderProjectVO");
orderProjectVO.setReturnCount(returnCount);
session.setAttribute("orderProjectVO",orderProjectVO);
//2.獲取當(dāng)前已登錄的用戶的id
MemberLoginVOmemberLoginVO=(MemberLoginVO)session.getAttribute(CrowdConstant.ATTR_NAME_LOGIN_MEMBER);
IntegermemberId=memberLoginVO.getId();
//3.查詢目前的收貨地址
ResultEntity<List<AddressVO>>resultEntity=mySQLRemoteService.getAddressVORemote(memberId);
if(ResultEntity.SUCCESS.equals(resultEntity.getResult())){
List<AddressVO>list=resultEntity.getData();
session.setAttribute("addressVOList",list);
}
}5.1.6支付模塊用戶在確認(rèn)完訂單,跳轉(zhuǎn)到支付頁(yè)面,目前支付環(huán)境接入的是阿里的支付寶沙箱環(huán)境。通過(guò)調(diào)用支付寶的第三方接口,在成功調(diào)用了支付寶提供的第三方接口后,會(huì)自動(dòng)生成支付二維碼,可通過(guò)支付寶掃碼的方式進(jìn)行支付。截至目前為止系統(tǒng)處于支付測(cè)試的階段。詳細(xì)支付頁(yè)面如圖5-8所示:圖5-8支付圖片當(dāng)用戶掃碼支付成功后,會(huì)轉(zhuǎn)到支付成功頁(yè)面提醒用戶該訂單支付成功,詳細(xì)的支付成功頁(yè)面如圖5-9所示:圖5-9支付成功頁(yè)面(7)在調(diào)用支付寶沙箱環(huán)境的第三方接口時(shí),需要一些必要的參數(shù),參數(shù)包括:訂單詳情的信息、APPID以及密鑰。APPID和密鑰是通過(guò)注冊(cè)支付寶開(kāi)發(fā)平臺(tái)提供給使用方的與第三方接口對(duì)接的唯一憑證。調(diào)用成功后會(huì)返回一個(gè)支付寶掃碼頁(yè)面,也可以在頁(yè)面通過(guò)賬號(hào)密碼登錄。支付模塊主要核心代碼:privateStringsendRequestToAliPay(StringoutTradeNo,DoubletotalAmount,Stringsubject,Stringbody)throwsAlipayApiException{
AlipayClientalipayClient=newDefaultAlipayClient(
payProperties.getGatewayUrl(),
payProperties.getAppId(),
payProperties.getMerchantPrivateKey(),
"json",
payProperties.getCharset(),
payProperties.getAlipayPublicKey(),
payProperties.getSignType());
AlipayTradePagePayRequestalipayRequest=newAlipayTradePagePayRequest();
alipayRequest.setReturnUrl(payProperties.getReturnUrl());
alipayRequest.setNotifyUrl(payProperties.getNotifyUrl());
alipayRequest.setBizContent("{\"out_trade_no\":\""+outTradeNo+"\","
+"\"total_amount\":\""+totalAmount+"\","
+"\"subject\":\""+subject+"\","
+"\"body\":\""+body+"\","
+"\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
//發(fā)生請(qǐng)求
returnalipayClient.pageExecute(alipayRequest).getBody();
}5.2本章小結(jié)本章節(jié)內(nèi)容主要介紹了前臺(tái)SSM系統(tǒng)以及后臺(tái)整個(gè)微服務(wù)系統(tǒng)服務(wù)中重要功能模塊的核心代碼實(shí)現(xiàn)過(guò)程,并通過(guò)對(duì)功能圖片進(jìn)行詳細(xì)的介紹,最后通過(guò)代碼截圖簡(jiǎn)明扼要的介紹了實(shí)現(xiàn)功能模塊關(guān)鍵的技術(shù)點(diǎn)。6系統(tǒng)測(cè)試系統(tǒng)測(cè)試在不接觸代碼的情況下,在系統(tǒng)的外部操作下為整個(gè)系統(tǒng)的全部功能做全面的性能測(cè)試和調(diào)優(yōu)。在設(shè)計(jì)并完成微服務(wù)系統(tǒng)后,為了保證眾籌網(wǎng)站系統(tǒng)系統(tǒng)能穩(wěn)定運(yùn)行,性能流暢,需要對(duì)各個(gè)微服務(wù)架構(gòu)系統(tǒng)進(jìn)行測(cè)試。6.1測(cè)試目的軟件測(cè)試的目的是為了測(cè)試整個(gè)系統(tǒng)的各種功能和性能,尋找產(chǎn)品需求之間的差異,即產(chǎn)品缺陷。通過(guò)不斷修復(fù)產(chǎn)品缺陷,讓產(chǎn)品更加趨向于完善完從而提供給用戶一個(gè)有可信度的質(zhì)量評(píng)價(jià)。測(cè)試要以查找錯(cuò)誤為中心去檢查產(chǎn)品細(xì)致上的問(wèn)題,不僅僅需要找出問(wèn)題所在,還要通過(guò)分析錯(cuò)誤產(chǎn)生的原因和錯(cuò)誤的特征,以此可以幫助項(xiàng)目開(kāi)發(fā)者發(fā)現(xiàn)當(dāng)前使用過(guò)程中軟件、網(wǎng)站出現(xiàn)缺陷,以便更快進(jìn)行修復(fù)完善[15]。所以在產(chǎn)品正式上線之前,必須經(jīng)過(guò)完整的軟件測(cè)試,確保沒(méi)有bug之后才能進(jìn)入正式上線的環(huán)境。6.2測(cè)試方法軟件測(cè)試的方法主要分為白盒測(cè)試和黑盒測(cè)試兩種方法。白盒測(cè)試主要的目的是保證系統(tǒng)的模塊中所以的獨(dú)立路徑都要被執(zhí)行一次。黑盒測(cè)試又稱為數(shù)據(jù)驅(qū)動(dòng)測(cè)試,對(duì)測(cè)試對(duì)象進(jìn)行功能性測(cè)試。白盒測(cè)試要求每行代碼都要執(zhí)行,黑盒測(cè)試對(duì)于程序的代碼是不透明的,即不能測(cè)試系統(tǒng)的內(nèi)部代碼,只能測(cè)試系統(tǒng)的外部可視化功能。6.3功能測(cè)試本項(xiàng)目中功能測(cè)試主要采用的是黑盒測(cè)試方法,首先要進(jìn)行業(yè)務(wù)流程測(cè)試,在功能點(diǎn)測(cè)試的基礎(chǔ)上結(jié)合測(cè)試內(nèi)容對(duì)功能模塊以及業(yè)務(wù)流程進(jìn)行模塊化測(cè)試。對(duì)于系統(tǒng)的測(cè)試,更多的關(guān)注點(diǎn)都是數(shù)據(jù)的交互和數(shù)據(jù)的流向,可以通過(guò)單元測(cè)試來(lái)測(cè)試單個(gè)功能的數(shù)據(jù)的流向,通過(guò)測(cè)試主流程和分支流程來(lái)檢測(cè)數(shù)據(jù)的交互:先測(cè)單個(gè)功能后測(cè)流程:業(yè)務(wù)的流程能夠正常運(yùn)行是建立單個(gè)功能沒(méi)有bug的基礎(chǔ)上的,所以先測(cè)試單個(gè)功能是非常有必要的,在每個(gè)功能模塊都建立一個(gè)測(cè)試類,用來(lái)測(cè)試觀察每個(gè)功能的數(shù)據(jù)流向,當(dāng)全部的單元測(cè)試都完成沒(méi)有問(wèn)題之后在安排流程測(cè)試。先測(cè)項(xiàng)目分支流程后測(cè)主流程:主流程由分支流程構(gòu)成,需要先測(cè)項(xiàng)目分支流程后測(cè)主流程。在項(xiàng)目結(jié)構(gòu)中,發(fā)起眾籌服務(wù),訂單服務(wù)等都有通過(guò)Feign調(diào)用數(shù)據(jù)庫(kù)服務(wù)用來(lái)向數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù),在測(cè)試時(shí)先測(cè)試單個(gè)微服務(wù)的運(yùn)行流程,確定沒(méi)有問(wèn)題后在測(cè)試主分支流程。6.4功能測(cè)試用例測(cè)試用例(TestCase)是指對(duì)一項(xiàng)特定的軟件產(chǎn)品進(jìn)行測(cè)試任務(wù)的描述,體現(xiàn)測(cè)試方案、方法、技術(shù)和策略。其內(nèi)容包括測(cè)試目標(biāo)、測(cè)試環(huán)境、輸入數(shù)據(jù)、測(cè)試步驟、預(yù)期結(jié)果、測(cè)試腳本等。為了發(fā)現(xiàn)并及時(shí)解決系統(tǒng)的Bug,保證系統(tǒng)的功能和性能,本系統(tǒng)抽取核心部分進(jìn)行測(cè)試用例分析,具體測(cè)試用例如下圖6-1所示:序號(hào)測(cè)試項(xiàng)操作輸入測(cè)試結(jié)果結(jié)論
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 錦州市太和區(qū)社區(qū)《網(wǎng)格員》真題匯編(含答案)
- PICC測(cè)試題附答案
- 三基護(hù)理管理試題及答案
- 嵐皋縣輔警招聘考試試題庫(kù)帶答案
- 本科護(hù)理操作題庫(kù)及答案
- 高頻c語(yǔ)言面試試題及答案
- 永德縣輔警招聘公安基礎(chǔ)知識(shí)考試題庫(kù)及答案
- 心理精神科護(hù)理試題及參考答案
- 2025年質(zhì)量工程師職業(yè)能力評(píng)估試題集(附答案)
- 特殊兒童早期干預(yù)自考試卷四真題及答案
- 消化內(nèi)鏡ERCP技術(shù)改良
- DB37-T6005-2026人為水土流失風(fēng)險(xiǎn)分級(jí)評(píng)價(jià)技術(shù)規(guī)范
- 云南師大附中2026屆高三1月高考適應(yīng)性月考卷英語(yǔ)(六)含答案
- 2026湖北隨州農(nóng)商銀行科技研發(fā)中心第二批人員招聘9人筆試備考試題及答案解析
- 紀(jì)念館新館項(xiàng)目可行性研究報(bào)告
- 仁愛(ài)科普版(2024)八年級(jí)上冊(cè)英語(yǔ)Unit1~Unit6補(bǔ)全對(duì)話練習(xí)題(含答案)
- 騎行美食活動(dòng)方案策劃(3篇)
- 石化企業(yè)環(huán)保培訓(xùn)課件
- 2026年呂梁職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試備考試題帶答案解析
- 2025年新疆師范大學(xué)輔導(dǎo)員招聘考試真題及答案
- 電梯更新改造方案
評(píng)論
0/150
提交評(píng)論