基于SpringCloud的動(dòng)漫論壇《BOKI》_第1頁(yè)
基于SpringCloud的動(dòng)漫論壇《BOKI》_第2頁(yè)
基于SpringCloud的動(dòng)漫論壇《BOKI》_第3頁(yè)
基于SpringCloud的動(dòng)漫論壇《BOKI》_第4頁(yè)
基于SpringCloud的動(dòng)漫論壇《BOKI》_第5頁(yè)
已閱讀5頁(yè),還剩80頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PAGEPAGEII基于SpringCloud的動(dòng)漫論壇《BOKI》摘要:鑒于現(xiàn)如今的互聯(lián)網(wǎng)網(wǎng)站的存在形式,網(wǎng)站內(nèi)部有可能內(nèi)嵌論壇,因此,該項(xiàng)目中實(shí)現(xiàn)一個(gè)整體的、可移植性強(qiáng)的插件式論壇,論壇就有可能突破ACG主題的限制,實(shí)現(xiàn)論壇與主站的分離,只要提供前端,就能夠正真實(shí)現(xiàn)論壇的插件式引入。在如今主流的web項(xiàng)目框架中,該項(xiàng)目中將使用Spring框架作為后端基礎(chǔ),使用mysql數(shù)據(jù)庫(kù)。項(xiàng)目的運(yùn)行環(huán)境包括但不限于windows7以上環(huán)境。mysql與redis將在CentOS環(huán)境中使用docker容器,以實(shí)現(xiàn)快速啟動(dòng)。由于數(shù)據(jù)的增刪改查并非完全以PO形式,故在項(xiàng)目的dao層使用靈活度較高的mybatis框架。該論壇主要實(shí)現(xiàn)未登錄的游客的帖子瀏覽,已登錄用戶的發(fā)帖回帖、個(gè)人信息管理,管理團(tuán)隊(duì)對(duì)普通用戶和帖子的調(diào)控,實(shí)現(xiàn)論壇環(huán)境的正常運(yùn)行和提升用戶的發(fā)帖與瀏覽體驗(yàn)。針對(duì)核心的發(fā)帖模塊,經(jīng)過(guò)對(duì)后端接口的嚴(yán)格測(cè)試,已經(jīng)能夠正確地實(shí)現(xiàn)發(fā)帖、回貼,甚至是二級(jí)回復(fù)。其他接口同樣地,均通過(guò)黑盒測(cè)試,能夠穩(wěn)定地提供數(shù)據(jù)交互。通過(guò)對(duì)系統(tǒng)各項(xiàng)功能的優(yōu)化與測(cè)試,系統(tǒng)能夠?qū)τ脩舨缓侠淼牟僮鬟M(jìn)行提示,所設(shè)計(jì)的系統(tǒng)能夠正常運(yùn)行、業(yè)務(wù)處理邏輯比較合理,符合初期的目標(biāo)和系統(tǒng)的實(shí)際要求。關(guān)鍵詞:spring框架,論壇,mysql,動(dòng)漫,VUE框架

ACGForum“BOKI”BasedonSpringCloudAbstract:InviewoftheexistingformofInternetwebsitesnowadays,itispossibletoembedforumsinsidethewebsites.Therefore,inthisproject,awholeplug-inforumwithstrongportabilitycanberealized,whichmaybreakthroughthelimitationofACGthemeandseparatetheforumfromthemainstation.Aslongasthefrontendisprovided,theplug-inintroductionoftheforumcanberealized.Intoday'smainstreamwebprojectframework,theprojectwillusethespringframeworkastheback-endfoundationandMySQLdatabase.TherunningenvironmentoftheprojectincludesbutisnotlimitedtotheenvironmentaboveWindows7.MySQLandrediswillusethedockercontainerintheCentOSenvironmentforquickstartup.Sincetheaddition,deletion,modificationandqueryofdataarenotentirelyintheformofPo,themybatisframeworkwithhighflexibilityisusedintheDaolayeroftheproject.Theforummainlyrealizesthepostbrowsingofthevisitorswhohavenotloggedin,thepostreplyandpersonalinformationmanagementoftheuserswhohaveloggedin,theregulationofthemanagementteamontheordinaryusersandposts,thenormaloperationoftheforumenvironmentandthepromotionofthepostandbrowsingexperienceoftheusers.Forthecorepostingmodule,afterthestricttestingoftheback-endinterface,ithasbeenabletocorrectlyimplementposting,reply,orevensecondaryreply.Theotherinterfacesalsopasstheblackboxtestandcanstablyprovidedatainteraction.Throughtheoptimizationandtestofvariousfunctionsofthesystem,thesystemcanprompttheunreasonableoperationofusers,thedesignedsystemcanoperatenormally,thebusinessprocessinglogicismorereasonable,andmeettheinitialgoalandtheactualrequirementsofthesystem.Keywords:Spring,BBS,MySql,ACG,VUE目錄TOC\o"1-3"\h\u第1章緒論 11.1系統(tǒng)的開發(fā)背景及意義 11、課題目的 12、課題意義 11.2國(guó)內(nèi)外研究現(xiàn)狀 31.3系統(tǒng)的主要研究?jī)?nèi)容 41.4系統(tǒng)開發(fā)環(huán)境與開發(fā)工具 5第2章系統(tǒng)需求分析 72.1系統(tǒng)的核心業(yè)務(wù)流程分析 72.2系統(tǒng)的整體功能需求分析 92.3動(dòng)漫論壇系統(tǒng)功能需求 112.3.1參與者 112.3.2用戶客戶端基礎(chǔ)功能需求 122.3.3管理員客戶端基礎(chǔ)功能需求 142.4本章小結(jié) 16第3章系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 173.1系統(tǒng)總體架構(gòu)設(shè)計(jì) 173.2數(shù)據(jù)庫(kù)設(shè)計(jì) 183.2.1概念結(jié)構(gòu)設(shè)計(jì) 183.2.2邏輯結(jié)構(gòu)設(shè)計(jì) 213.3客戶端子系統(tǒng)詳細(xì)設(shè)計(jì) 273.3.1客戶端后端接口設(shè)計(jì) 273.3.2客戶端關(guān)鍵代碼與難點(diǎn)實(shí)現(xiàn) 313.4管理端子系統(tǒng)詳細(xì)設(shè)計(jì) 353.4.1管理端后端接口設(shè)計(jì) 353.4.2管理端關(guān)鍵代碼與難點(diǎn)實(shí)現(xiàn) 373.5前端服務(wù)器詳細(xì)設(shè)計(jì) 393.4本章小結(jié) 39第4章系統(tǒng)測(cè)試 404.1測(cè)試的意義 404.2測(cè)試的目的 404.3測(cè)試方法 404.4測(cè)試用例及結(jié)果 404.5本章小結(jié) 40第5章結(jié)束語(yǔ) 415.1全文總結(jié) 415.2課題展望 41參考文獻(xiàn) 42致謝 43PAGEPAGE65第1章緒論1.1系統(tǒng)的開發(fā)背景及意義1、課題目的所謂論壇,隨著Internet技術(shù)的快速發(fā)展,BBS論壇在網(wǎng)絡(luò)上已成為人們彼此溝通、交流信息的主要方式。在論壇上,人們可以對(duì)某一領(lǐng)域提出自己遇到的問(wèn)題,隨后,論壇上的其他人會(huì)根據(jù)自己的學(xué)識(shí)、經(jīng)驗(yàn)發(fā)表意見或提出問(wèn)題的方法。BBS論壇接近了人們之間的距離,它早已成為人們網(wǎng)上生活的必備工具。所以說(shuō)BBS論壇對(duì)當(dāng)今社會(huì)是相當(dāng)重要的。對(duì)于日漸增多的動(dòng)漫愛(ài)好者社團(tuán)活動(dòng)的需求,我決定實(shí)現(xiàn)一個(gè)為動(dòng)漫愛(ài)好者定制的論壇系統(tǒng),實(shí)現(xiàn)動(dòng)漫愛(ài)好者彼此之間的線上交互。作為論壇,首要目標(biāo)就是要實(shí)現(xiàn)用戶界面的美觀,可讀性,以及用戶發(fā)帖和對(duì)帖子的閱讀。2、課題意義關(guān)于動(dòng)漫的解釋,動(dòng)漫,指動(dòng)畫與漫畫的集合,即動(dòng)畫、漫畫的合稱,取這兩個(gè)詞的第一個(gè)字合二為一稱之為“動(dòng)漫”,與游戲無(wú)關(guān),并非專業(yè)術(shù)語(yǔ)?,F(xiàn)如今的動(dòng)漫論壇不再單單是討論動(dòng)漫,往往包含了游戲領(lǐng)域。動(dòng)畫和漫畫的合稱,在臺(tái)灣一般為“動(dòng)漫畫”,簡(jiǎn)稱“動(dòng)漫”,在大陸則一般為“動(dòng)漫”。常見的搭配有“動(dòng)漫(畫)迷”、“動(dòng)漫(畫)產(chǎn)業(yè)”等。除“動(dòng)漫(畫)”以外,華語(yǔ)圈也經(jīng)常使用ACG(動(dòng)畫·漫畫·游戲)、ACGN(動(dòng)畫·漫畫·游戲·小說(shuō))等合稱。1995年,臺(tái)灣的動(dòng)漫愛(ài)好者AIplus在國(guó)立中山大學(xué)山抹微云BBS站開設(shè)新版面,使用“ACG_Review板”作為名稱以代動(dòng)畫、漫畫、游戲,乃為“ACG”一詞之始。由傻呼嚕同盟推廣下,三個(gè)字母的順序漸漸固定下來(lái),并流傳至中國(guó)大陸、香港等華人社會(huì)。現(xiàn)如今在輕小說(shuō)改編的動(dòng)畫、漫畫、游戲越來(lái)越多之際,又衍生出“ACGN”,小說(shuō)。主要指輕小說(shuō)(LightNovel)。ACG所指內(nèi)容也涵蓋輕小說(shuō),因此雖有人提出使用ACGN作為該演進(jìn)說(shuō)法的詞,但實(shí)際上絕大多數(shù)場(chǎng)合仍在使用ACG。不過(guò)近年來(lái)由于輕小說(shuō)的發(fā)展,使用ACGN的人群正逐漸增多。所謂論壇,隨著Internet技術(shù)的快速發(fā)展,BBS論壇在網(wǎng)絡(luò)上已成為人們彼此溝通、交流信息的主要方式。在論壇上,人們可以對(duì)某一領(lǐng)域提出自己遇到的問(wèn)題,隨后,論壇上的其他人會(huì)根據(jù)自己的學(xué)識(shí)、經(jīng)驗(yàn)發(fā)表意見或提出問(wèn)題的方法。BBS論壇拉近了人們之間的距離,所以說(shuō)BBS論壇對(duì)當(dāng)今社會(huì)是相當(dāng)重要的。它早已成為人們網(wǎng)上生活的必備工具。對(duì)于日漸增多的動(dòng)漫愛(ài)好者社團(tuán)活動(dòng)的需求,我們決定實(shí)現(xiàn)一個(gè)為動(dòng)漫愛(ài)好者定制的論壇系統(tǒng),實(shí)現(xiàn)動(dòng)漫愛(ài)好者彼此之間的線上交互。作為論壇,首要目標(biāo)就是要實(shí)現(xiàn)用戶界面的美觀,可讀性,以及用戶發(fā)帖和對(duì)帖子的閱讀。該論壇研發(fā)意義有以下幾點(diǎn):(1)為有有相同愛(ài)好的動(dòng)漫愛(ài)好者、動(dòng)漫愛(ài)好群體和有興趣的人們提供一個(gè)交流的平臺(tái)。(2)動(dòng)漫論壇的開發(fā)成本相對(duì)php項(xiàng)目開發(fā)成本高,但是,由于使用了穩(wěn)定性、拓展性和維護(hù)難度較低的Spring框架,大大提升了系統(tǒng)的可用性和運(yùn)行效率,具備了論壇的必要功能。.BIKI動(dòng)漫論壇具備了發(fā)帖與回復(fù),個(gè)人中心和其他論壇常見模塊,并實(shí)現(xiàn)一整發(fā)帖流程。(3)BIKI動(dòng)漫論壇具備有管理系統(tǒng),擁有對(duì)用戶的發(fā)言管理、懲罰機(jī)制、以及關(guān)鍵的帖子置頂?shù)裙δ埽奖阏搲芾砣藛T對(duì)論壇進(jìn)行管理,并減少無(wú)意義發(fā)帖、刷帖、不良內(nèi)容等惡意擾亂秩序的行為。(4)BIKI動(dòng)漫論壇本身作為開放性交流平臺(tái),游客不需要登陸也能夠?yàn)g覽帖子,擴(kuò)大了用戶的訪問(wèn)便利性。發(fā)帖或回復(fù)則需要登陸才能實(shí)現(xiàn),限制了游客經(jīng)行無(wú)意義發(fā)帖、刷帖、舉報(bào)等惡意擾亂秩序的行為。目前流行的動(dòng)漫論壇中,有三中類型,一是資源型,資源型論壇注重對(duì)ACG(Animation(動(dòng)畫),Comic(漫畫)和Game(游戲)的縮寫)資源的掌控。二是發(fā)布型,發(fā)布型論壇注重對(duì)ACG新聞熱點(diǎn)和實(shí)時(shí)消息的通知、公告、發(fā)布。三是交流型,交流型論壇注重對(duì)用戶之間的交互,言論自由,但不乏官方限制,比如百度貼吧、知乎、CSDN論壇。本系統(tǒng)主要設(shè)計(jì)形式為為第三種,交流型論壇。1.2國(guó)內(nèi)外研究現(xiàn)狀以動(dòng)漫作為主題的論壇,它的發(fā)展情況應(yīng)分為兩部分來(lái)分析也就是對(duì)動(dòng)漫與論壇進(jìn)行分析與結(jié)合。沒(méi)有人愿意接觸的領(lǐng)域,沒(méi)有建立論壇的必要性。如果沒(méi)有人愿意接觸動(dòng)漫,BOKI論壇也就失去了的意義。反之,一個(gè)交流平臺(tái)沒(méi)有的便利性與互動(dòng)性,熱門領(lǐng)域和熱門產(chǎn)業(yè)也就不會(huì)選擇這樣的平臺(tái)。如果BOKI論壇沒(méi)有的便利性與互動(dòng)性,動(dòng)漫愛(ài)好者也就不會(huì)選擇這樣的平臺(tái)。首先是動(dòng)漫領(lǐng)域的分析:基于IP的繁榮和產(chǎn)業(yè)鏈的成熟,各方都在不停的摸索,不停的嘗試,但沒(méi)有一家能拿出大手筆,也沒(méi)有一家真正拿出分蛋糕的方法。因?yàn)闆](méi)人敢于拿出更大的資金和精力去嘗試做一部劇情、分鏡、音樂(lè)、做畫質(zhì)量等都足夠優(yōu)秀的動(dòng)畫,百千萬(wàn)的投資對(duì)于沉寂了十來(lái)年的中國(guó)動(dòng)畫市場(chǎng)來(lái)說(shuō)無(wú)疑是一種賭博,而相關(guān)技術(shù)人員的匱乏也會(huì)讓保證質(zhì)量的動(dòng)畫周期變長(zhǎng),保證周期的動(dòng)畫質(zhì)量下降,加重動(dòng)畫的制作成本,導(dǎo)致國(guó)內(nèi)情況并不算樂(lè)觀。尤其是05年之后,隨著互聯(lián)網(wǎng)的發(fā)展,隨著社交網(wǎng)絡(luò)的發(fā)展,動(dòng)漫作為一種藝術(shù)載體其實(shí)有了很多新的一些小趨勢(shì)。同時(shí)受眾從原來(lái)單純的收聽率調(diào)查對(duì)象到真正參與進(jìn)整個(gè)作品的企劃也是一個(gè)比較良性的特征,也就是受眾與作品的互動(dòng)逐漸增多,并且受眾對(duì)作品的影響也從原來(lái)的商品屬性轉(zhuǎn)向一種多義性的屬性。國(guó)外情況以動(dòng)漫產(chǎn)業(yè)發(fā)達(dá)的日本為例,市場(chǎng)化經(jīng)濟(jì)體制的核心就是競(jìng)爭(zhēng)。競(jìng)爭(zhēng)是促進(jìn)產(chǎn)業(yè)進(jìn)步的動(dòng)力。日本漫畫業(yè)已是一個(gè)十分成熟的產(chǎn)業(yè),雜志社間的競(jìng)爭(zhēng)自然必不可少。本漫畫雜志依照消費(fèi)群體不同而籠統(tǒng)分為男性向(以男性讀者為主體)和女性向(以女性讀者為主體)兩類。由于互聯(lián)網(wǎng)近些年的快速發(fā)展,動(dòng)漫文化的交流已經(jīng)在中國(guó),乃至世界各地占有了一席之地,日漸火爆。其次是基于論壇的分析:拋出結(jié)論:論壇依舊是互聯(lián)網(wǎng)交流的主力,大型論壇有百度貼吧、天涯、貓撲等,中小型論壇作為小群體的主要交流平臺(tái),更是數(shù)不勝數(shù)。論壇本身是一種形式,主貼為一個(gè)話題點(diǎn),評(píng)論是話題的延伸,而話題以某個(gè)主題聚集在一起,就形成了論壇。這種形式是不死的。因?yàn)樗芩缮?,很活躍,很適合互聯(lián)網(wǎng),所以他會(huì)形變,會(huì)衍生,但就是不會(huì)消亡。具有鮮明主題的論壇將持續(xù)存在且越來(lái)越活躍。經(jīng)過(guò)無(wú)數(shù)網(wǎng)絡(luò)平臺(tái)的大浪淘沙,依然人氣不減的存在,就是主題鮮明的專業(yè)論壇。比如攝影主題下的色影無(wú)忌、蜂鳥論壇等等。論壇的字?jǐn)?shù)一般很多,圖文并茂,可以以數(shù)千上萬(wàn)字來(lái)詮釋一個(gè)專業(yè)的主題,加上精華和熱門的篩選機(jī)制,使得優(yōu)質(zhì)的內(nèi)容可以類似電子版圖書一般持久存在,即使論壇一時(shí)間人氣不足,憑借優(yōu)質(zhì)的精華內(nèi)容,依然可以吸引很多新手來(lái)到論壇中進(jìn)行系統(tǒng)化的學(xué)習(xí)。動(dòng)漫在國(guó)內(nèi)外作為近年來(lái)興起的未來(lái)發(fā)展空間無(wú)限的產(chǎn)業(yè),以及在互聯(lián)網(wǎng)上經(jīng)久不衰的論壇,二者的結(jié)合使得動(dòng)漫主題得以延續(xù),借助動(dòng)漫火爆熱度的同時(shí),論壇的功能與結(jié)構(gòu)得以拓展。1.3系統(tǒng)的主要研究?jī)?nèi)容首先對(duì)本課題的主要研究題目——《動(dòng)漫論壇BOKI》詮釋如下:對(duì)于日漸增多的動(dòng)漫愛(ài)好者社團(tuán)活動(dòng)的需求,我們決定實(shí)現(xiàn)一個(gè)為動(dòng)漫愛(ài)好者定制的論壇系統(tǒng),實(shí)現(xiàn)動(dòng)漫愛(ài)好者彼此之間的線上交互。作為論壇,首要目標(biāo)就是要實(shí)現(xiàn)用戶界面的美觀,可讀性,以及用戶發(fā)帖和對(duì)帖子的閱讀。隨著Internet技術(shù)的快速發(fā)展,BBS論壇在網(wǎng)絡(luò)上已成為人們彼此溝通、交流信息的主要方式。在論壇上,人們可以對(duì)某一領(lǐng)域提出自己遇到的問(wèn)題,隨后,論壇上的其他人會(huì)根據(jù)自己的學(xué)識(shí)、經(jīng)驗(yàn)發(fā)表意見或提出問(wèn)題的方法。BBS論壇接近了人們之間的距離,它早已成為人們網(wǎng)上生活的必備工具。所以說(shuō)BBS論壇對(duì)當(dāng)今社會(huì)是相當(dāng)重要的。論壇配備有管理端系統(tǒng),能夠很好地提高管理員的工作效率和降低工作量。論壇基于SpringCloud框架制作,維護(hù)人員也能夠較好進(jìn)行維護(hù)。需要解決的主要問(wèn)題是:該論壇能否完成發(fā)帖和回復(fù)、用戶個(gè)人信息管理、帖子調(diào)控等這幾個(gè)問(wèn)題,以及服務(wù)端之間的協(xié)調(diào)。動(dòng)漫論壇《BOKI》可分為包括以下幾個(gè)子系統(tǒng):1.4系統(tǒng)開發(fā)環(huán)境與開發(fā)工具系統(tǒng)開發(fā)環(huán)境配置:windows10系統(tǒng),8GB運(yùn)行內(nèi)存。CentOS7虛擬機(jī)一臺(tái),1GB運(yùn)行內(nèi)存。開發(fā)環(huán)境及其開發(fā)工具:jdk1.8,ideaIU,Mysqlserver,redis。以下是系統(tǒng)主要使用的研究方法和關(guān)鍵技術(shù):論壇的發(fā)帖和回復(fù)應(yīng)該呈現(xiàn)一個(gè)關(guān)聯(lián)的狀態(tài),即每個(gè)主題對(duì)應(yīng)的回復(fù)都有嚴(yán)格的關(guān)聯(lián)。以及用戶的權(quán)限,個(gè)人信息的維護(hù),關(guān)注、動(dòng)態(tài)、私信、舉報(bào)、以及系統(tǒng)發(fā)生錯(cuò)誤時(shí)對(duì)客戶端的回復(fù)等實(shí)現(xiàn),需要借助的方法和技術(shù)也多種多樣。以下技術(shù)歸納有:SpringCloud框架:SpringCloud框架使得服務(wù)拆分粒度更細(xì),有利于資源重復(fù)利用,有利于提高開發(fā)效率??梢愿珳?zhǔn)的制定優(yōu)化服務(wù)方案,提高系統(tǒng)的可維護(hù)性。微服務(wù)架構(gòu)采用去中心化思想,服務(wù)之間采用Restful等輕量級(jí)通訊,比ESB更輕量。適于互聯(lián)網(wǎng)時(shí)代,產(chǎn)品迭代周期更短。Myabatis:Mybatis是一種持久層框架,也屬于ORM映射。mybatis為半自動(dòng)化,需要自己書寫sql語(yǔ)句,需要自己定義映射。增加了程序員的一些操作,但是帶來(lái)了設(shè)計(jì)上的靈活,并且也是支持hibernate的一些特性,如延遲加載,緩存和映射等;對(duì)數(shù)據(jù)庫(kù)的兼容性比hibernate差。移植性不好,但是可編寫靈活和高性能的sql語(yǔ)句。Thymeleaf:thymeleaf是一種Java模板引擎,模板引擎就是為了使用戶頁(yè)面和業(yè)務(wù)數(shù)據(jù)相互分離而出現(xiàn)的,將從后臺(tái)返回的數(shù)據(jù)生成特定的格式的文檔,這里說(shuō)的特定格式一般都指HTML文檔。它能夠處理html、xml、js、css甚至純文本,類似于freemarker。它的優(yōu)點(diǎn)是語(yǔ)法優(yōu)雅易懂、原型即頁(yè)面、遵從web標(biāo)準(zhǔn)。原型即頁(yè)面是它的特色。eureka:Eureka是基于REST(RepresentationalStateTransfer)服務(wù),主要以AWS云服務(wù)為支撐,提供服務(wù)發(fā)現(xiàn)并實(shí)現(xiàn)負(fù)載均衡和故障轉(zhuǎn)移。我們稱此服務(wù)為Eureka服務(wù)。Eureka提供了Java客戶端組件,EurekaClient,方便與服務(wù)端的交互??蛻舳藘?nèi)置了基于round-robin實(shí)現(xiàn)的簡(jiǎn)單負(fù)載均衡。feign:Feign是一個(gè)聲明式的Web服務(wù)客戶端,使用Feign可使得Web服務(wù)客戶端的寫入更加方便。它具有可插拔注釋支持,包括Feign注解和JAX-RS注解、Feign還支持可插拔編碼器和解碼器、SpringCloud增加了對(duì)SpringMVC注釋的支持,并HttpMessageConverters在SpringWeb中使用了默認(rèn)使用的相同方式。SpringCloud集成了Ribbon和Eureka,在使用Feign時(shí)提供負(fù)載平衡的http客戶端。hystrix:給依賴于第三方庫(kù)的應(yīng)用程序提供給保護(hù),在復(fù)雜的分布式系統(tǒng)當(dāng)中避免級(jí)聯(lián)失敗,快速失敗并且快速恢復(fù),在可能的情況下提供回退和優(yōu)雅降級(jí)的能力,通過(guò)近乎實(shí)時(shí)的指標(biāo),監(jiān)控和警報(bào)來(lái)優(yōu)化發(fā)現(xiàn)故障的時(shí)間。mysql:MySQL體積小,命令執(zhí)行的速度快。MySQL是開源的,且提供免費(fèi)版本,對(duì)大多數(shù)用戶來(lái)說(shuō)大大降低了使用成本。與其他大型數(shù)據(jù)庫(kù)的設(shè)置和管理相比,其復(fù)雜程度較低,易于使用。MySQL能夠運(yùn)行與多種系統(tǒng)平臺(tái)上,如windouws,Linux,Unix等。支持最常用的數(shù)據(jù)管理功能,適用于中小型企業(yè)甚至大型網(wǎng)站應(yīng)用。redis:一般部署在linux系統(tǒng)中。速度快,因?yàn)閿?shù)據(jù)存在內(nèi)存中,類似于HashMap,HashMap的優(yōu)勢(shì)就是查找和操作的時(shí)間復(fù)雜度都是O。并且支持豐富數(shù)據(jù)類型,支持string,list,set,sortedset,hash。支持事務(wù),操作都是原子性,所謂的原子性就是對(duì)數(shù)據(jù)的更改要么全部執(zhí)行,要么全部不執(zhí)行。豐富的特性:可用于緩存,消息,按key設(shè)置過(guò)期時(shí)間,過(guò)期后將會(huì)自動(dòng)刪除。centOS7:用于部署持久化數(shù)據(jù)服務(wù)。作為免費(fèi)開源的系統(tǒng)。centOS7是一款完全免費(fèi)的操作系統(tǒng),任何人都可以從網(wǎng)絡(luò)上下載到它的源代碼,并可以根據(jù)自己的需求進(jìn)行定制化的開發(fā),而且沒(méi)有版權(quán)限制。騰訊郵箱服務(wù):騰訊出品的郵箱服務(wù),用于用戶注冊(cè)時(shí)進(jìn)行賬戶修改密碼時(shí)進(jìn)行郵箱驗(yàn)證。上面介紹的論壇開發(fā)的常用技術(shù),可以完成這些任務(wù),不同技術(shù)完成的任務(wù)和側(cè)重點(diǎn)有很大不同。

第2章系統(tǒng)需求分析需求分析,指對(duì)用戶的實(shí)際需求進(jìn)行調(diào)查,分析和表達(dá)這些需求以達(dá)成共識(shí)。需求分析包括以下步驟:一、對(duì)用戶想要解決的問(wèn)題和想法進(jìn)行詳細(xì)的分析,分層次的分析。二、將客戶需求轉(zhuǎn)化為系統(tǒng)業(yè)務(wù)需求,形成對(duì)系統(tǒng)分析的完整和特定要求。三、對(duì)先面的調(diào)查結(jié)果進(jìn)行初步分析,以確定系統(tǒng)的功能。四、根據(jù)后續(xù)需求拓展業(yè)務(wù)。2.1系統(tǒng)的核心業(yè)務(wù)流程分析本文在項(xiàng)目系統(tǒng)中的主要工作是對(duì)論壇客戶端的客戶端的業(yè)務(wù)流程進(jìn)行分析與展示。在該論壇的用戶客戶端,水友和論壇職務(wù)人員用戶可以通過(guò)論壇的發(fā)帖和回復(fù)功能進(jìn)行相應(yīng)的交流,以及對(duì)個(gè)人信息進(jìn)行更新等等。論壇客戶端發(fā)帖與回復(fù)流程如圖2-1所示。圖2-1系統(tǒng)核心業(yè)務(wù)流程圖此發(fā)帖流程。以已游客客戶端軟件用戶瀏覽帖子至登陸發(fā)帖為的業(yè)務(wù)流程為例。當(dāng)用戶打開論壇首頁(yè)時(shí),無(wú)論是否登陸該論壇,均可以瀏覽帖子信息。未授權(quán)的游客用戶提交功能功能不能使用,包括發(fā)帖、回復(fù)、個(gè)人信息等進(jìn)行提交的操作;登陸后的合法用戶用戶瀏覽帖子過(guò)程中,可以將喜歡的對(duì)感興趣的帖子盡興回復(fù),或者發(fā)帖與愛(ài)好者一同討論。發(fā)帖或回復(fù)完畢完后,在可繼續(xù)對(duì)帖子進(jìn)行瀏覽。2.2系統(tǒng)的整體功能需求分析論壇系統(tǒng)將會(huì)分為兩大模塊進(jìn)行設(shè)計(jì),分別是用戶功能模塊和管理員功能模塊。系統(tǒng)用戶功能模塊如圖所示:圖2-2系統(tǒng)用戶模塊功能結(jié)構(gòu)圖系統(tǒng)管理員功能模塊如圖所示:圖2-2系統(tǒng)管理員模塊功能結(jié)構(gòu)圖2.3動(dòng)漫論壇系統(tǒng)功能需求通過(guò)分析動(dòng)漫論壇功能模塊,可以確定為動(dòng)漫論壇分為兩大用戶,一般用戶和管理員用戶。一般用戶未登錄時(shí)可以對(duì)帖子進(jìn)行瀏覽,但不能進(jìn)行任何提交操作。用戶登陸后可以進(jìn)行其他操作,發(fā)帖,回復(fù),個(gè)人信息管理等等。。2.3.1參與者系統(tǒng)參與者之間的關(guān)系如下角色層次圖所示:參與者說(shuō)明:一般用戶:論壇的核心成員,可以執(zhí)行用戶發(fā)帖、關(guān)注、動(dòng)態(tài)、私信、回復(fù)、舉報(bào)等用戶交互操作。享受登陸、維護(hù)個(gè)人基本信息、等級(jí)、收藏、刪帖、信用度,違規(guī)受罰等權(quán)益。游客:游客基本權(quán)限為注冊(cè),瀏覽。不提供注冊(cè)以外的任何提交數(shù)據(jù)的權(quán)限和操作。管理員:論壇的核心成員,可以執(zhí)行用戶發(fā)帖、關(guān)注、動(dòng)態(tài)、私信、回復(fù)等用戶交互操作,但沒(méi)有用戶權(quán)益模塊的所有子功能。額外享有較高的權(quán)限,包括帖子置頂、論壇數(shù)據(jù)總覽、查看用戶信用度、查看用戶違規(guī)情況、查看用戶發(fā)帖記錄,對(duì)用戶刪帖、警告、關(guān)小黑屋等等權(quán)限。2.3.2用戶客戶端基礎(chǔ)功能需求下面是對(duì)圖2-2系統(tǒng)用戶模塊功能結(jié)構(gòu)圖的基本功能模塊的詳細(xì)解釋:登錄模塊主要包括用戶登錄和權(quán)限分配管理。用戶已有賬號(hào),在登陸界面,輸入【郵箱】【密碼】登陸即可。默認(rèn)為【水友】權(quán)限,即一般用戶權(quán)限。用戶互動(dòng)模塊:作為用戶在論壇上活躍的手段。用戶除了最基本的瀏覽之外,還應(yīng)該具有互動(dòng)的方式,該模塊實(shí)現(xiàn)了用戶之間的互動(dòng)。該子系統(tǒng)包括以下模塊:發(fā)帖子模塊:作為論壇最基本的功能,發(fā)帖是必備的一項(xiàng)。用戶在已經(jīng)的登陸的狀態(tài)下,在論壇發(fā)帖處輸入【主題】【內(nèi)容】之后點(diǎn)擊【發(fā)送】即可發(fā)帖;關(guān)注子模塊用戶之間必須擁有能夠多對(duì)多的關(guān)注。用戶在對(duì)另一個(gè)用戶的【關(guān)注】按鈕點(diǎn)擊之后,實(shí)現(xiàn)添加到關(guān)注列表,關(guān)注后可收到對(duì)方的發(fā)帖通知。動(dòng)態(tài)與消息子模塊。用戶所關(guān)注的對(duì)象的動(dòng)態(tài)應(yīng)及時(shí)通知到用戶,用戶被回復(fù)時(shí)必須【通知】到用戶。私信子模塊不作為帖子發(fā)送的信息,屬于私人發(fā)送信息。用戶點(diǎn)擊對(duì)方【私信】按鈕,打開會(huì)話,輸入【內(nèi)容】,點(diǎn)擊【發(fā)送】,對(duì)方收到私信【通知】,可進(jìn)行回復(fù)操作,輸入【內(nèi)容】,點(diǎn)擊【發(fā)送】?;貜?fù)子模塊除了基本的回復(fù)(俗稱“樓層”),該模塊支持了二級(jí)發(fā)帖(俗稱“樓中樓”)。用戶在進(jìn)入帖子之后,在帖子的回復(fù)處輸入【內(nèi)容】,之后點(diǎn)擊【發(fā)送】即可發(fā)送回復(fù)。用戶在對(duì)樓層進(jìn)行二級(jí)回復(fù),在樓層的回復(fù)處輸入【內(nèi)容】,之后點(diǎn)擊【發(fā)送】即可發(fā)送回復(fù)。舉報(bào)子模塊對(duì)違規(guī)帖子進(jìn)行舉報(bào)。用戶在帖子的【舉報(bào)】按鈕,輸入【理由】,點(diǎn)擊【提交】,帖子將進(jìn)入審核狀態(tài)。用戶權(quán)益模塊:用戶在論壇上享受的權(quán)力與義務(wù),在該系統(tǒng)上展現(xiàn)出來(lái),根據(jù)用戶的行為與習(xí)慣,對(duì)用戶本身的評(píng)價(jià)。該子系統(tǒng)包括以下模塊:注冊(cè)子模塊新用戶注冊(cè)。游客用戶進(jìn)行注冊(cè),首先進(jìn)入注冊(cè)頁(yè)面,輸入【昵稱】【郵箱】【密碼】之后,點(diǎn)擊【發(fā)送驗(yàn)證碼】,用戶在自己的郵箱收到驗(yàn)證碼之后將驗(yàn)證碼填入【驗(yàn)證碼】,完成注冊(cè)?;拘畔⒆幽K用戶基本信息完善與修改;用戶進(jìn)入【個(gè)人信息】頁(yè)面,修改信息后點(diǎn)擊【完成】即可完成個(gè)人信息的提交。等級(jí)子模塊根據(jù)用戶經(jīng)驗(yàn)代表的用戶資質(zhì)。根據(jù)發(fā)帖程度決定【經(jīng)驗(yàn)值】,【經(jīng)驗(yàn)值】決定【等級(jí)】,每次發(fā)帖經(jīng)驗(yàn)值+5,回復(fù)帖子經(jīng)驗(yàn)值+2,被回復(fù)時(shí)+1,【經(jīng)驗(yàn)值】不受自己回復(fù)自己的疊加。收藏子模塊在帖子【收藏帖子】按鈕點(diǎn)擊,可收藏帖子到【我的收藏】列表。以便用戶隨時(shí)找到該貼。刪帖子模塊 用戶刪除自己的帖。用戶對(duì)自己的帖子進(jìn)行【刪除】操作,出現(xiàn)確認(rèn)窗口之后,【確認(rèn)】即可刪除。只能對(duì)自己發(fā)送的帖子刪除,不能刪除其他人的帖子。當(dāng)帖子被刪除,帖子所包含的回復(fù)也應(yīng)該一同被【清除】。信用度子模塊信用度過(guò)低,用戶權(quán)益將受到一定程度的限制。用戶每次被管理員刪帖,【信譽(yù)值】將會(huì)降低10點(diǎn),初始值為100點(diǎn)。被刪除回復(fù)時(shí)【信譽(yù)值】-5?!拘抛u(yù)值】每天+1,直到150。違規(guī)子模塊用戶違規(guī),將被處罰?!拘抛u(yù)值】低于50將收到小黑屋觸發(fā),即封號(hào)處理。2.3.3管理員客戶端基礎(chǔ)功能需求下面是對(duì)圖2-2系統(tǒng)用戶模塊功能結(jié)構(gòu)圖的基本功能模塊的詳細(xì)解釋:登錄模塊主要包括用戶登錄和權(quán)限分配管理。用戶已有賬號(hào),在登陸界面,輸入【郵箱】【密碼】登陸即可。默認(rèn)為【小站長(zhǎng)】權(quán)限,即管理員權(quán)限。論壇總覽模塊包括一個(gè)子模塊,在【論壇總覽】頁(yè)面,其功能具有帖子數(shù)量總覽,在線用戶數(shù)量,作為用戶活躍度展示。數(shù)據(jù)總覽。用戶信息模塊:管理員可以對(duì)某一用戶的違規(guī)記錄和發(fā)帖記錄進(jìn)行查看。該子系統(tǒng)包括以下子模塊:違規(guī)處理子模塊查看用戶違規(guī)情況及其日志。在【用戶列表】中通過(guò)輸入【用戶ID】或【用戶名】作為條件進(jìn)行查詢,在【查看詳情】頁(yè)面瀏覽用戶違規(guī)情況。發(fā)帖記錄子模塊用戶一段時(shí)間內(nèi)的發(fā)帖記錄。在【用戶列表】中通過(guò)輸入【用戶ID】或【用戶名】作為條件進(jìn)行查詢,在【查看詳情】頁(yè)面瀏覽用戶發(fā)帖情況。賞罰模塊:根據(jù)用戶行為為用戶賦予榮譽(yù)勛章,或者刪帖、禁封賬號(hào)等處理,該子系統(tǒng)包括以下子模塊:刪帖子模塊管理員有最高權(quán)限的刪帖能力。在帖子瀏覽過(guò)程中,管理員點(diǎn)擊【刪除】按鈕,輸入【理由】進(jìn)行刪帖,被刪貼用戶將收到刪帖【通知】。小黑屋子模塊禁封非法用戶,違規(guī)用戶。在【用戶列表】中通過(guò)輸入【用戶ID】或【用戶名】作為條件進(jìn)行查詢,點(diǎn)擊【禁封】,輸入【禁封時(shí)長(zhǎng)】,完成禁封。信譽(yù)度勛章模塊表彰用戶資質(zhì)與素質(zhì)的獎(jiǎng)勵(lì)。根據(jù)信用度決定【勛章等級(jí)】,詳細(xì)數(shù)據(jù)可在數(shù)據(jù)庫(kù)中決定。帖子裝飾模塊該系統(tǒng)功能不多,但對(duì)論壇瀏覽起關(guān)鍵作用,能夠?qū)μ舆M(jìn)行置頂,和對(duì)貼紙升級(jí)為精華貼。在帖子瀏覽中,對(duì)帖子點(diǎn)擊【升華】,帖子即被升級(jí)為精華貼。在帖子瀏覽中,對(duì)帖子點(diǎn)擊【置頂】,帖子即被升級(jí)為置頂貼,需要設(shè)置置頂持續(xù)天數(shù)。2.4本章小結(jié)本章主要分析《BOKI》論壇的具體需求。在對(duì)論壇的基本需求的確定時(shí),除了其中確定的基本需求,開發(fā)過(guò)程中可能需要針對(duì)其中的一些需求做出調(diào)整。論壇總體,不論用戶客戶端還是管理員客戶端,需求都是比較明確的,這一點(diǎn)非常體現(xiàn)一個(gè)論壇的運(yùn)轉(zhuǎn)與管理方式。系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)詳細(xì)的系統(tǒng)設(shè)計(jì)是本論壇系統(tǒng)核心,根據(jù)所提供的需求以設(shè)計(jì)符合需求的系統(tǒng),基于論壇的基本上一章的基本功能需求,設(shè)計(jì)了該系統(tǒng)。包括系統(tǒng)總體框架的設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、系統(tǒng)詳細(xì)設(shè)計(jì),以及在文中末尾對(duì)本章做了總結(jié)。3.1系統(tǒng)總體架構(gòu)設(shè)計(jì)系統(tǒng)的總體設(shè)計(jì)分為兩個(gè)核心后端系統(tǒng),分別是用客戶端系統(tǒng)和管理端系統(tǒng),如圖3-1所設(shè)計(jì)。系統(tǒng)通過(guò)必要的后端組件對(duì)客戶端系統(tǒng)和管理端系統(tǒng)的運(yùn)轉(zhuǎn)進(jìn)行支持,消息通知與驗(yàn)證碼等非持久化數(shù)據(jù)信息將存儲(chǔ)在redis緩存中,如有必要,redis還能作為數(shù)據(jù)庫(kù)緩存使用。數(shù)據(jù)庫(kù)使用mysql。由于一般用戶和管理員都屬于用戶的分支,且擁有相似的功能權(quán)限,故使用同一個(gè)數(shù)據(jù)庫(kù),方便數(shù)據(jù)管理。/圖3-1系統(tǒng)總體框架圖3.2數(shù)據(jù)庫(kù)設(shè)計(jì)設(shè)計(jì)合適的數(shù)據(jù)庫(kù)是最基礎(chǔ)和最核心的,能夠?qū)?shù)據(jù)進(jìn)行持久化。本系統(tǒng)選用mysql數(shù)據(jù)庫(kù),它具有以下優(yōu)勢(shì):更好的讀寫性能,因?yàn)楹蛍indowsframework綁定一起,底層操作系統(tǒng)級(jí)優(yōu)勢(shì)。而mysql則有可能oom,被linux無(wú)差別清理掉;數(shù)據(jù)可靠性更好:數(shù)據(jù)安全,一致性;存儲(chǔ)過(guò)程。oracle和mssql都有強(qiáng)大的存儲(chǔ)過(guò)程,銀行系統(tǒng)甚至有規(guī)定凡是和資金相關(guān)的邏輯必須寫在存儲(chǔ)過(guò)程里,禁止寫在應(yīng)用程序里。而mysql的存儲(chǔ)過(guò)程則一直是雞肋。用c語(yǔ)言寫的擴(kuò)展存儲(chǔ)過(guò)程,即運(yùn)行在數(shù)據(jù)庫(kù)內(nèi)存中的程序代碼,兩個(gè)都支持,這個(gè)不在討論范圍;方便的性能監(jiān)控。打開profiler,可以在生產(chǎn)環(huán)境中實(shí)時(shí)看各個(gè)query的執(zhí)行詳情,還可以按需過(guò)濾,而且不影響系統(tǒng)性能之內(nèi)。3.2.1概念結(jié)構(gòu)設(shè)計(jì)概念結(jié)構(gòu)設(shè)計(jì)是將用戶需求抽象為信息結(jié)構(gòu),E-R圖是常用模型。E-R圖由實(shí)體、屬性、聯(lián)系組成。正方形表示的是實(shí)體,橢圓形表示的是屬性。實(shí)體間聯(lián)系分為:一對(duì)一、一對(duì)多、多對(duì)多,共三種。該動(dòng)漫論壇系統(tǒng)主要實(shí)體信息如下:用戶信息實(shí)體圖如圖3-2。圖3-2用戶信息實(shí)體圖帖子信息實(shí)體圖如圖3-3。圖3-3帖子信息實(shí)體圖樓層信息實(shí)體圖如圖3-4。圖3-4樓層信息實(shí)體圖樓中樓(二級(jí)回復(fù))回復(fù)信息實(shí)體圖如圖3-5。圖3-5樓中樓(二級(jí)回復(fù))信息實(shí)體圖由系統(tǒng)實(shí)體及實(shí)體間的關(guān)系得出該論壇系統(tǒng)的總體E-R圖。一對(duì)一關(guān)系有:用戶表對(duì)用戶表(私信)。一對(duì)多關(guān)系有:用戶表與帖子表、用戶表與樓層表、用戶表與樓中樓表、帖子表與樓層表、樓層表與樓中樓表。多對(duì)多關(guān)系有:用戶表與用戶表(關(guān)注)。矩形表示實(shí)體,橢圓形表示屬性,菱形表示聯(lián)系。如圖3-6所示:圖3-6總體E-R圖3.2.2邏輯結(jié)構(gòu)設(shè)計(jì)將概念結(jié)構(gòu)設(shè)計(jì)的E-R圖轉(zhuǎn)換成為邏輯結(jié)構(gòu),確定關(guān)系模式屬性和碼。根據(jù)關(guān)系的需求將會(huì)對(duì)系統(tǒng)表添加關(guān)系表,系統(tǒng)的數(shù)據(jù)模型以數(shù)據(jù)表的形式展現(xiàn)。數(shù)據(jù)庫(kù)表詳細(xì)設(shè)計(jì)如下:用戶信息基本數(shù)據(jù)表user,如表3-1。字段名類型是否為空缺省值中文idint否主鍵mailvarchar否郵箱pwdvarchar否密碼user_namevarchar否昵稱photovarchar是頭像urlsexvarchar否保密性別birthdate否1970-01-01生日come_fromvarchar是來(lái)自expint否0經(jīng)驗(yàn)值credit_degreeint否100信用度role_idint否1職位introvarchar是自我介紹showvarchar是個(gè)性簽名create_timetimestamp是CURRENT_TIMESTAMP創(chuàng)建時(shí)間modified_timetimestamp是CURRENT_TIMESTAMP更新時(shí)間creatorvarchar是創(chuàng)建人modifiervarchar是修改人is_deletedvarchar是n刪除標(biāo)記表3-1用戶信息表帖子信息基本數(shù)據(jù)表boki_post,如表3-2。字段名類型是否為空缺省值中文idint否主鍵user_idint否樓主idtitlevarchar否標(biāo)題contentvarchar否內(nèi)容last_replier_idint否最后回復(fù)者idreplies_countint否0回復(fù)數(shù)type_idint否1帖子類型is_topvarchar否n是否置頂report_statusint否1舉報(bào)狀態(tài)report_reasonint是舉報(bào)理由create_timetimestamp是CURRENT_TIMESTAMP創(chuàng)建時(shí)間modified_timetimestamp是CURRENT_TIMESTAMP更新時(shí)間creatorvarchar是創(chuàng)建人modifiervarchar是修改人is_deletedvarchar是n刪除標(biāo)記表3-2帖子信息表樓層信息基本數(shù)據(jù)表boki_reply,如表3-3。字段名類型是否為空缺省值中文idint否主鍵post_idint否所屬帖子iduser_idint否層主idfloor_noint否第x樓contentvarchar否內(nèi)容replies_countint否0樓層回復(fù)數(shù)report_statusint否1舉報(bào)狀態(tài)report_reasonvarchar否舉報(bào)理由create_timetimestamp是CURRENT_TIMESTAMP創(chuàng)建時(shí)間modified_timetimestamp是CURRENT_TIMESTAMP更新時(shí)間creatorvarchar是創(chuàng)建人modifiervarchar是修改人is_deletedvarchar是n刪除標(biāo)記表3-3樓層表樓中樓(二級(jí)回復(fù))基本數(shù)據(jù)表orderDetail,如表3-4。字段名類型是否為空缺省值中文idint否主鍵storey_idint否所屬樓層iduser_idint否回復(fù)者idcontentvarchar否內(nèi)容report_statusint否1舉報(bào)狀態(tài)report_reasonvarchar否舉報(bào)理由create_timetimestamp是CURRENT_TIMESTAMP創(chuàng)建時(shí)間modified_timetimestamp是CURRENT_TIMESTAMP更新時(shí)間creatorvarchar是創(chuàng)建人modifiervarchar是修改人is_deletedvarchar是n刪除標(biāo)記表3-4樓中樓信息表私信信息基本數(shù)據(jù)表boki_whisper,如表3-5。字段名類型是否為空缺省值中文idint否主鍵first_user_idint否甲second_user_idint否乙show_in_firstvarchar否y在甲列表顯示show_in_secondvarchar否n在乙列表顯示last_contentvarchar否最后一條私信create_timetimestamp是CURRENT_TIMESTAMP創(chuàng)建時(shí)間modified_timetimestamp是CURRENT_TIMESTAMP更新時(shí)間creatorvarchar是創(chuàng)建人modifiervarchar是修改人is_deletedvarchar是n刪除標(biāo)記表3-5私信信息表私信內(nèi)容信息基本數(shù)據(jù)表boki_whisper_detail,如表3-6。字段名類型是否為空缺省值中文idint否主鍵whisper_idint否私信iduser_idint否發(fā)送方target_user_idint否接收方contentvarchar否內(nèi)容create_timetimestamp是CURRENT_TIMESTAMP創(chuàng)建時(shí)間modified_timetimestamp是CURRENT_TIMESTAMP更新時(shí)間creatorvarchar是創(chuàng)建人modifiervarchar是修改人is_deletedvarchar是n刪除標(biāo)記表3-6私信內(nèi)容信息表黑名單信息基本數(shù)據(jù)表boki_blacklist,如表3-7。字段名類型是否為空缺省值中文idint否主鍵user_idint否用戶target_user_idint否被拉黑用戶create_timetimestamp是CURRENT_TIMESTAMP創(chuàng)建時(shí)間modified_timetimestamp是CURRENT_TIMESTAMP更新時(shí)間creatorvarchar是創(chuàng)建人modifiervarchar是修改人is_deletedvarchar是n刪除標(biāo)記表3-7boki_blacklist信息表關(guān)注基本信息表boki_follow,如表3-8。字段名類型是否為空缺省值中文idint否主鍵user_idint否粉絲target_user_idint否被關(guān)注者create_timetimestamp是CURRENT_TIMESTAMP創(chuàng)建時(shí)間modified_timetimestamp是CURRENT_TIMESTAMP更新時(shí)間creatorvarchar是創(chuàng)建人modifiervarchar是修改人is_deletedvarchar是n刪除標(biāo)記表3-8關(guān)注信息表帖子收藏基本信息表boki_collection,如表3-9。字段名類型是否為空缺省值中文idint否主鍵user_idint否用戶post_idint否收藏帖子titlevarchar否帖子標(biāo)題create_timetimestamp是CURRENT_TIMESTAMP創(chuàng)建時(shí)間modified_timetimestamp是CURRENT_TIMESTAMP更新時(shí)間creatorvarchar是創(chuàng)建人modifiervarchar是修改人is_deletedvarchar是n刪除標(biāo)記表3-9帖子收藏表3.3客戶端子系統(tǒng)詳細(xì)設(shè)計(jì)由于該系統(tǒng)整體上使用了前后端分離的設(shè)計(jì)理念,后端使用springcloud的一些組件以實(shí)現(xiàn)服務(wù)之間的對(duì)接,后端統(tǒng)一數(shù)據(jù)請(qǐng)求接口為負(fù)載均衡ribbon,對(duì)該服務(wù)的請(qǐng)求會(huì)被轉(zhuǎn)發(fā)到對(duì)應(yīng)的客戶端服務(wù)或?qū)?yīng)的管理端服務(wù)。由于使用了請(qǐng)求轉(zhuǎn)發(fā),以及前后端分離,傳統(tǒng)的通過(guò)session存儲(chǔ)當(dāng)前用戶信息(id、userName、sessionId等)將不再生效,因此設(shè)計(jì)分離時(shí)將尋找新的認(rèn)證方式。3.3.1客戶端后端接口設(shè)計(jì)在使用前后端分離的開發(fā)過(guò)程中,由于前后端數(shù)據(jù)對(duì)接是主要是前端對(duì)后端的接口請(qǐng)求以達(dá)到數(shù)據(jù)增刪改查的目的,因此在設(shè)計(jì)過(guò)程中對(duì)接口明確定義能夠提高開發(fā)方向和提升開發(fā)效率。ribbon接口入口:http://localhost:8001/登錄模塊接口設(shè)計(jì)①登陸登陸請(qǐng)求:post請(qǐng)求:http://localhost:8001/cli/login請(qǐng)求數(shù)據(jù):郵箱mail、密碼pwd用戶互動(dòng)模塊①發(fā)帖發(fā)帖請(qǐng)求,需要登陸后才能發(fā)帖post請(qǐng)求:http://localhost:8001/cli/post/send數(shù)據(jù):主題title、內(nèi)容content②關(guān)注關(guān)注他人post請(qǐng)求:http://localhost:8001/cli/user/addFollow/{targetUserId}從關(guān)注列表中移除post請(qǐng)求:http://localhost:8001/cli/user/removeFollow/{targetUserId}打開關(guān)注列表get請(qǐng)求:http://localhost:8001/cli/user/followList?page=我的粉絲get請(qǐng)求:http://localhost:8001/cli/user/myFans?page=動(dòng)態(tài)與消息獲取通知數(shù)量get請(qǐng)求:http://localhost:8001/cli/notice/count打開通知列表get請(qǐng)求:http://localhost:8001/cli/notice/list移除一條通知post請(qǐng)求:http://localhost:8001/cli/notice/remove/{id}清空通知列表post請(qǐng)求:http://localhost:8001/admin/login④私信發(fā)起或打開私信post請(qǐng)求:http://localhost:8001/cli/whisper/open/{targetUserId}發(fā)送私信post請(qǐng)求:http://localhost:8001/cli/whisper/send數(shù)據(jù):私信id、對(duì)方的userId、內(nèi)容content打開私信列表get請(qǐng)求:http://localhost:8001/cli/whisper/list?page=從列表中移除私信post請(qǐng)求:http://localhost:8001/cli/whisper/remove/{id}拉黑post請(qǐng)求:http://localhost:8001/cli/whisper/addBlacklist/{targetUserId}黑名單get請(qǐng)求:http://localhost:8001/cli/whisper/blacklist?page=從黑名單中移除post請(qǐng)求:http://localhost:8001/cli/whisper/removeBlacklist/{blacklistId}⑤回復(fù)打開帖子,這是論壇最基本的帖子瀏覽功能get請(qǐng)求:http://localhost:8001/cli/p/{postId}?page=加載樓層回復(fù)數(shù)據(jù),加載二級(jí)回復(fù)get請(qǐng)求:http://localhost:8001/cli/p/reply/open?id=&page=回帖請(qǐng)求,需要登陸后才能回帖post請(qǐng)求:http://localhost:8001/cli/post/reply/send數(shù)據(jù):帖子id、內(nèi)容content回復(fù)層主,二級(jí)回復(fù)也需要登陸post請(qǐng)求:http://localhost:8001/cli/post/storeyReply/send數(shù)據(jù):樓層storeyId、內(nèi)容content⑥舉報(bào)舉報(bào)帖子post請(qǐng)求:http://localhost:8001/cli/post/report數(shù)據(jù):帖子id、舉報(bào)理由reason舉報(bào)樓層post請(qǐng)求:http://localhost:8001/cli/post/reply/report數(shù)據(jù):樓層id、舉報(bào)理由reason舉報(bào)二級(jí)回復(fù)post請(qǐng)求:http://localhost:8001/cli/post/storeyReply/report數(shù)據(jù):二級(jí)回復(fù)id、舉報(bào)理由reason用戶權(quán)益模塊注冊(cè)與改密校驗(yàn)碼發(fā)送請(qǐng)求,這是用于注冊(cè)和修改密碼時(shí)獲取校驗(yàn)碼的請(qǐng)求:get請(qǐng)求:http://localhost:8001/cli/login/sendCheckCode/{mail}注冊(cè)請(qǐng)求,注冊(cè)時(shí)需要校驗(yàn)碼:post請(qǐng)求:http://localhost:8001/cli/login/register請(qǐng)求數(shù)據(jù):郵箱mail、密碼pwd、昵稱userName、校驗(yàn)碼checkCode改密請(qǐng)求,修改密碼、找回密碼的請(qǐng)求,需要配合校驗(yàn)碼進(jìn)行改密:post請(qǐng)求:http://localhost:8001/cli/login/modifyPwd數(shù)據(jù):郵箱mail、新密碼pwd、校驗(yàn)碼checkCode②基本信息用戶個(gè)人信息get請(qǐng)求:http://localhost:8001/cli/user/info修改個(gè)人信息post請(qǐng)求:http://localhost:8001/cli/user/modifyInfo數(shù)據(jù):性別sex、生日birth、來(lái)自from、簡(jiǎn)介intro、簽名show、更改頭像post請(qǐng)求:http://localhost:8001/cli/user/modifyPhoto數(shù)據(jù):頭像url我的發(fā)帖歷史get請(qǐng)求:http://localhost:8001/cli/user/replyHistory?page=我的回復(fù)歷史get請(qǐng)求:http://localhost:8001/cli/user/replyHistory?page=③等級(jí)用戶等級(jí)功能不對(duì)外暴露任何接口。收藏收藏帖子post請(qǐng)求:http://localhost:8001/cli/user/collect/{postId}移除收藏的帖子post請(qǐng)求:http://localhost:8001/cli/user/removeCollection/{postId}帖子收藏列表get請(qǐng)求:http://localhost:8001/cli/user/postCollection?page=刪帖刪除帖子post請(qǐng)求:http://localhost:8001/cli/post/delete/{id}刪除樓層post請(qǐng)求:http://localhost:8001/cli/post/reply/delete/{id}刪除樓中樓post請(qǐng)求:http://localhost:8001/cli/post/storeyReply/delete/{id}⑥信譽(yù)度信譽(yù)度模塊不對(duì)外暴露任何接口。⑦違規(guī)違規(guī)在用戶客戶端不提供任何接口。⑧其他圖片上傳post請(qǐng)求:http://localhost:9001/image/upload數(shù)據(jù):圖片fileName圖片下載get請(qǐng)求:http://localhost:9001/images/{fileName}3.3.2客戶端關(guān)鍵代碼與難點(diǎn)實(shí)現(xiàn)(1)請(qǐng)求攔截由于這是一個(gè)開放性的動(dòng)漫論壇,在設(shè)置請(qǐng)求攔截的時(shí)候,應(yīng)該避免未登錄的游客正常瀏覽被攔截導(dǎo)致無(wú)法看到帖子或其他開放內(nèi)容。系統(tǒng)接口設(shè)計(jì)中,大部分接口屬于需要驗(yàn)證的接口,因此在設(shè)置請(qǐng)求攔截時(shí)我選擇了攔截所有請(qǐng)求,并開放部分接口。關(guān)鍵代碼如下:InterceptorRegistrationregistration=registry.addInterceptor(clientInterceptor);

registration.addPathPatterns("/**");

registration.excludePathPatterns(

"/p/**",//開放性頁(yè)面

"/",//首頁(yè)

"/login/register",//注冊(cè)

"/login/sendCheckCode/*",//發(fā)送郵箱校驗(yàn)碼

"/login",//登錄

"/static/**"http://靜態(tài)資源

);登陸校驗(yàn)在本動(dòng)漫論壇中,屬于前后端分離開發(fā),且后端是微服務(wù)架構(gòu)風(fēng)格,因此傳統(tǒng)的HttpSerevletSsession將無(wú)法繼續(xù)用于存儲(chǔ)臨時(shí)信息。本系統(tǒng)后端token+redis的形式,認(rèn)證用戶登陸,關(guān)鍵代碼如下:userId=JWT.decode(token).getAudience().get(0);

MaptokenCache=redisTemplate.opsForHash().entries(Common.TOKEN+userId);

if(tokenCache.size()==0){

thrownewBusinessException().setType(RequestResultCode.LOGIN_TODO);

}

Stringtime=tokenCache.get("time").toString();

JWTVerifierjwtVerifier=JWT.require(Algorithm.HMAC256(time)).build();

jwtVerifier.verify(token);

redisTemplate.expire(Common.TOKEN+userId,1800,TimeUnit.SECONDS);附加了@TOKEN注解的方法,每次被請(qǐng)求都將執(zhí)行一次校驗(yàn),使用redis臨時(shí)存放token,token有效期為半個(gè)小時(shí),每次請(qǐng)求后刷新有效期。在負(fù)載均衡服務(wù)端使用了請(qǐng)求模板,請(qǐng)求時(shí)將頭部將帶上TOKEN字段。@Bean

publicRequestInterceptorrequestInterceptor(){

returnrequestTemplate->{

ServletRequestAttributesattributes=(ServletRequestAttributes)RequestContextHolder.getRequestAttributes();

if(null!=attributes){

HttpServletRequestrequest=attributes.getRequest();

if(request.getHeader(TOKEN)!=null){

requestTemplate.header(TOKEN,request.getHeader(TOKEN));

}

}

};

}郵箱校驗(yàn)碼郵箱校驗(yàn)碼使用了騰訊提供的qq郵箱服務(wù),配合spring框架提供的郵箱發(fā)送類進(jìn)行驗(yàn)證郵件的發(fā)送。@Autowired

privateJavaMailSenderImplmailSender;驗(yàn)證碼采用即時(shí)生成8位數(shù)字的方式,生成后5分鐘內(nèi)有效。publicStringrandomCode(){

Randomrandom=newRandom();

Stringcode=random.nextDouble()+"";

code=code.substring(code.length()-8);

returncode;

}全局異常捕獲一個(gè)系統(tǒng),使用時(shí),會(huì)不可避免地發(fā)生異常,但是如果異常被清晰地展示到頁(yè)面上,比如404錯(cuò)誤,403錯(cuò)誤,或者后端錯(cuò)誤日志打印等,這是非常不可取的,必須采取措施。本論壇采用了spring提供的一個(gè)全局異常處理功能,配合我所寫的BusinessException自定義運(yùn)行時(shí)異常類,實(shí)現(xiàn)代碼異常時(shí)也能夠給返回有效的信息。全局異常:@ControllerAdvice

publicclassBokiExceptionHandler{...}自定義BusinessException@ResponseBody

@ExceptionHandler(BusinessException.class)

publicResultVOhandleValException(BusinessExceptione){

if(e.getMessage()!=null){

log.warn("原因:"+e.getMessage());

}

if(e.getType()!=null){

(e.getType().getCode()+e.getType().getMsg());

returne.getType().getResult().setData(e.getInfo());

}else{

(RequestResultCode.SERVER_ERROR.getCode()+RequestResultCode.SERVER_ERROR.getMsg());

returnRequestResultCode.SERVER_ERROR.getResult();

}

}用戶等級(jí)的制定用戶等級(jí)的制定參考了較為成熟的百度貼吧,等級(jí)劃分為1到10級(jí),依次需要經(jīng)驗(yàn)值0,100,300,1000,3000,6000,10000,15000,22000,30000,每次發(fā)帖+5點(diǎn)經(jīng)驗(yàn),每次回帖+3經(jīng)驗(yàn),每次二級(jí)回復(fù)+2經(jīng)驗(yàn),發(fā)送成功后進(jìn)行結(jié)算。使用線程進(jìn)行結(jié)算,關(guān)鍵代碼:發(fā)帖經(jīng)驗(yàn)結(jié)算://經(jīng)驗(yàn)+5,告辭

postDao.updateExpById(dto.getUserId(),5);回帖經(jīng)驗(yàn)結(jié)算://經(jīng)驗(yàn)結(jié)算,樓主回復(fù)自己的貼,經(jīng)驗(yàn)+2

if(postDao.findPostByIdAndUser(dto.getPostId(),dto.getUserId())!=0){

postDao.updatePosterSendReply(po);

//非樓主回帖,帖子回帖數(shù)更新,樓主經(jīng)驗(yàn)+1,層主經(jīng)驗(yàn)+3

}else{

postDao.updateReplierSendReply(po);

}二級(jí)回復(fù)經(jīng)驗(yàn)結(jié)算://經(jīng)驗(yàn)結(jié)算,樓主回復(fù)自己的貼,經(jīng)驗(yàn)+2

if(postDao.findPostByIdAndUser(dto.getPostId(),dto.getUserId())!=0){

postDao.updatePosterSendReply(po);

//非樓主回帖,帖子回帖數(shù)更新,樓主經(jīng)驗(yàn)+1,層主經(jīng)驗(yàn)+3

}else{

postDao.updateReplierSendReply(po);

}信譽(yù)度與獎(jiǎng)賞的掛鉤用戶初始信譽(yù)度為100,每天將會(huì)+1,直到150點(diǎn)。當(dāng)用戶信譽(yù)度低于30的時(shí)候?qū)?huì)被封禁,直到信譽(yù)度達(dá)到50點(diǎn)時(shí)解封。每次被管理員刪帖將會(huì)減少10點(diǎn)信譽(yù)度,刪樓將會(huì)減少5點(diǎn)信譽(yù)度,刪除二級(jí)回復(fù)將會(huì)減少5點(diǎn)信譽(yù)度。使用mysql定期事件執(zhí)行任務(wù)。動(dòng)態(tài)與消息的實(shí)現(xiàn)通知的實(shí)現(xiàn)使用了通知生成類,統(tǒng)一管理了通知的生成。publicenumNoticeMessage{

/**

*類型1私信通知

*/

TYPE_1(1,"%s在私信中回復(fù)了你:“%s”。"),

TYPE_2(2,"%s在“%s”%s樓回復(fù)了你:“%s”。"),

TYPE_3(3,"%s在“%s”%s樓@了你。"),

TYPE_4(4,"您的帖子“%s”被管理團(tuán)隊(duì)刪除,原因是%s,您的信譽(yù)值-10。"),

TYPE_5(5,"您的樓層“%s”被管理團(tuán)隊(duì)刪除,原因是%s,您的信譽(yù)值-5。"),

TYPE_6(6,"您的回復(fù)“%s”被管理團(tuán)隊(duì)刪除,原因是%s,您的信譽(yù)值-5。"),

TYPE_7(7,"您關(guān)注的大佬%s發(fā)帖了:“%s”。");

privateIntegertype;

privateStringraw;但是通知生成后可能會(huì)發(fā)送給許多人,不可避免地占用請(qǐng)求時(shí)間,此時(shí)有兩個(gè)實(shí)現(xiàn)思路:方案一、使用線程發(fā)送通知,可能有大量通知需要發(fā)送。方案二、由用戶獲取通知,可能有大量通知需要獲取。鑒于我所設(shè)計(jì)的系統(tǒng)屬于中小型系統(tǒng),因此采取了方案一生成并發(fā)送通知。(8)結(jié)果數(shù)據(jù)類返回?cái)?shù)據(jù)使用統(tǒng)一的數(shù)據(jù)類,其中泛型裝載了返回的數(shù)據(jù)主體。@Data

@Accessors(chain=true)

publicclassResultVO<T>{

privateIntegercode;

privateStringmsg;

privateTdata=null;

}其中的狀態(tài)code和附帶信息由枚舉類RequestResultCode提供,以下為部分代碼:publicenumRequestResultCode{

/**

*數(shù)據(jù)錯(cuò)誤

*/

ERROR_MAIL(2001,"郵箱格式錯(cuò)誤."),

ERROR_DATE(2001,"錯(cuò)誤的日期."),

MAIL_ALREADY_EXIST(1000,"郵箱已被注冊(cè)."),統(tǒng)一的數(shù)據(jù)格式使得請(qǐng)求后獲得的數(shù)據(jù)能夠容易地被處理和分析。3.4管理端子系統(tǒng)詳細(xì)設(shè)計(jì)由于該系統(tǒng)整體上使用了前后端分離的設(shè)計(jì)理念,后端使用springcloud的一些組件以實(shí)現(xiàn)服務(wù)之間的對(duì)接,后端統(tǒng)一數(shù)據(jù)請(qǐng)求接口為負(fù)載均衡ribbon,對(duì)該服務(wù)的請(qǐng)求會(huì)被轉(zhuǎn)發(fā)到對(duì)應(yīng)的客戶端服務(wù)或?qū)?yīng)的管理端服務(wù)。由于使用了請(qǐng)求轉(zhuǎn)發(fā),以及前后端分離,傳統(tǒng)的通過(guò)session存儲(chǔ)當(dāng)前用戶信息(id、userName、sessionId等)將不再生效,因此設(shè)計(jì)分離時(shí)將尋找新的認(rèn)證方式。在使用redis緩存認(rèn)證信息后,管理端的認(rèn)證也能夠通過(guò)用戶客戶端共享,極大方便了管理端的開發(fā)流程。3.4.1管理端后端接口設(shè)計(jì)(1)登錄模塊接口設(shè)計(jì)①登陸登陸請(qǐng)求:post請(qǐng)求:http://localhost:8001/cli/login請(qǐng)求數(shù)據(jù):郵箱mail、密碼pwd論壇總覽模塊數(shù)據(jù)總覽數(shù)據(jù)統(tǒng)計(jì)接口get請(qǐng)求:http://localhost:8001/admin/statistics用戶信息模塊違規(guī)處理帖子舉報(bào)待審核列表get請(qǐng)求:http://localhost:8001/admin/post/report/{type}?page=駁回舉報(bào)post請(qǐng)求:http://localhost:8001/admin/post/report/reject數(shù)據(jù):舉報(bào)類型type、id、執(zhí)行者userId、舉報(bào)通過(guò)post請(qǐng)求:http://localhost:8001/admin/post/report/pass數(shù)據(jù):舉報(bào)類型type、id、執(zhí)行者userId、理由reason發(fā)帖記錄用戶列表,條件查詢get請(qǐng)求:http://localhost:8001/admin/user/list?elem=&maxLevel=&minLevel=&maxCreditDegree=&minCreditDegree=&isBanned=&page=用戶精準(zhǔn)查詢get請(qǐng)求:http://localhost:8001/admin/user/info?idOrMail=用戶發(fā)帖歷史get請(qǐng)求:http://localhost:8001/cli/user/replyHistory?page=用戶回復(fù)歷史get請(qǐng)求:http://localhost:8001/cli/user/replyHistory?page=賞罰模塊刪帖不提供直接刪帖接口,管理員刪帖應(yīng)該通過(guò)舉報(bào)流程。小黑屋封禁用戶post請(qǐng)求:http://localhost:8001/admin/user/ban數(shù)據(jù):目標(biāo)用戶userId、封禁天數(shù)days、解封用戶post請(qǐng)求:http://localhost:8001/admin/user/release/{userId}信譽(yù)度信譽(yù)度不暴露任何接口,而是根據(jù)用戶行為結(jié)算。帖子裝飾帖子加精或降級(jí)post請(qǐng)求:http://localhost:8001/admin/post/upgrade數(shù)據(jù):加精或降級(jí)type、帖子postId帖子置頂post請(qǐng)求:http://localhost:8001/admin/post/setTop數(shù)據(jù):帖子postId、置頂天數(shù)topDays其他晉升或貶職,站長(zhǎng)權(quán)力post請(qǐng)求:http://localhost:8001/admin/user/role/change數(shù)據(jù):用戶id、角色roleId3.4.2管理端關(guān)鍵代碼與難點(diǎn)實(shí)現(xiàn)(1)關(guān)于用戶舉報(bào)審核成功被管理員刪帖的情況,應(yīng)該發(fā)送通知給被刪貼用戶。假如用戶被刪貼卻得不到任何通知,這并不友好。NoticePOpo=newNoticePO()

.setUserId(elem.getTargetUserId())

.setCreator(elem.getFromUserId().toString())

.setNotice(msg.createNotice(elem))

.setTypeId(msg.getType());

//持久化一條通知

noticeDao.insertNotice(po);

//設(shè)置通知數(shù)

setKeyValueByUid(elem.getTargetUserId());管理員刪帖時(shí)應(yīng)該把該帖子下的所有樓層和二級(jí)回復(fù),同時(shí)被舉報(bào)用戶信譽(yù)值應(yīng)該被結(jié)算。--刪帖,連同回復(fù),樓中樓一起刪

UPDATEboki_postSETis_deleted='y',report_status=3,report_reason=#{reason}

WHEREid=#{id}ANDuser_id=#{userId}ANDreport_status=2;

UPDATEboki_replySETis_deleted='y'WHEREpost_id=(

SELECTidFROMboki_postWHEREid=#{id}ANDuser_id=#{userId}ANDreport_status=3

);

UPDATEboki_storey_replybsr,(

SELECTbr.idbridFROMboki_replybr

JOINboki_postbpONbr.post_id=bp.id

WHEREbp.id=#{id}ANDbp.user_id=#{userId}ANDbp.report_status=3

)aSETbsr.is_deleted='y'WHEREbsr.storey_id=a.brid;

--被舉報(bào)者信譽(yù)值結(jié)算-10

UPDATEboki_userSETcredit_degree=credit_degree-10WHEREid=#{userId}ANDrole_id!=3;管理員刪樓時(shí)應(yīng)該連同所包含的樓中樓一起刪除,同時(shí)帖子顯示的回復(fù)數(shù)減少n+1,n表示樓層對(duì)應(yīng)的樓中樓數(shù)。同時(shí)被舉報(bào)用戶信譽(yù)值應(yīng)該被結(jié)算。--刪樓,連同樓中樓一起刪

--帖子回復(fù)數(shù)-(1+n)(n樓中樓數(shù)量)

UPDATEboki_postSETreplies_count=replies_count-(

SELECTCOUNT(1)+1FROMboki_storey_replyWHEREstorey_id=#{id}ANDis_deleted='n'

)WHEREid=(

SELECTpost_idFROMboki_replyWHEREid=#{id}ANDuser_id=#{userId}ANDfloor_no!=1

ANDis_deleted='n'LIMIT1

);

UPDATEboki_replySETis_deleted='y',report_status=3,report_reason=#{reason}

WHEREid=#{id}ANDuser_id=#{userId}ANDfloor_no!=1ANDreport_status=2;

UPDATEboki_storey_replySETis_deleted='y'WHEREstorey_id=(

SELECTidFROMboki_replyWHEREid=#{id}ANDuser_id=#{userId}ANDfloor_no!=1ANDreport_status=3

);

--被舉報(bào)者信譽(yù)值結(jié)算-5

UPDATEboki_userSETcredit_degree=credit_degree-5WHEREid=#{userId}ANDrole_id!=3;管理員刪樓中樓時(shí),所屬的樓層回復(fù)數(shù)減1,所屬的帖子回復(fù)數(shù)減1,被舉報(bào)者信譽(yù)值-5。--刪除樓層回復(fù)

--帖子回復(fù)數(shù)-1

UPDATEboki_postSETreplies_count=replies_count-1WHEREid=(

SELECTbr.post_idFROMboki_replybr

JOINboki_storey_replybsrONbr.id=bsr.storey_id

WHEREbsr.id=#{id}ANDbsr.user_id=#{userId}

);

--樓層回復(fù)數(shù)-1

UPDATEboki_replySETreplies_count=replies_count-1WHEREid=(

SELECTstorey_idFROMboki_storey_replyWHEREid=#{id}ANDuser_id=#{userId}

);

UPDATEboki_storey_replySETis_deleted='y',report_status=3,report_reason=#{reason}

WHEREid=#{id}ANDuser_id=#{userId}ANDreport_status=2;

--被舉報(bào)者信譽(yù)值結(jié)算-5

UPDATEboki_userSETcredit_degree=credit_degree-5WHEREid=#{userId}ANDrole_id!=3;3.5前端服務(wù)器詳細(xì)設(shè)計(jì)由于該系統(tǒng)整體上使用了前后端分離的設(shè)計(jì)理念,前端使用國(guó)內(nèi)較為成熟的VUE框架驚醒開發(fā)工作。選擇VUE,是因?yàn)閂UE具備了上手簡(jiǎn)單,技術(shù)沉淀厚,語(yǔ)法簡(jiǎn)易,沿用了js的數(shù)據(jù)風(fēng)格,配合axios進(jìn)行數(shù)據(jù)請(qǐng)求。另外,VUE的數(shù)據(jù)驅(qū)動(dòng)視圖的理念也非常符合近年來(lái)的web系統(tǒng)開發(fā)理念。前端的開發(fā)工具也有非常多,我在設(shè)計(jì)這個(gè)前端時(shí),使用vscode進(jìn)行開發(fā),它的

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論