計算機科學與技術-基于SpringBoot的辦公設備采購平臺的設計與實現(xiàn)_第1頁
計算機科學與技術-基于SpringBoot的辦公設備采購平臺的設計與實現(xiàn)_第2頁
計算機科學與技術-基于SpringBoot的辦公設備采購平臺的設計與實現(xiàn)_第3頁
計算機科學與技術-基于SpringBoot的辦公設備采購平臺的設計與實現(xiàn)_第4頁
計算機科學與技術-基于SpringBoot的辦公設備采購平臺的設計與實現(xiàn)_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第1章緒論1.1課題研究的目的和意義到了如今的2020年,在全世界已經(jīng)出現(xiàn)了大大小小的網(wǎng)絡平臺,現(xiàn)在在中國人均都有一臺電腦,一部手機,大WEB時代已經(jīng)到來,已經(jīng)深入了人們的點點滴滴。隨著"互聯(lián)網(wǎng)+"在各個銷售領域的應用發(fā)展,企業(yè)辦公設備采購平臺還于"藍海"階段,公司治力于設備領域傳統(tǒng)銷售模式中已經(jīng)多年,苦于沒有很好的交互平臺工具,來把業(yè)務做成規(guī)模。從創(chuàng)立采購平臺的出發(fā)點,首先是要滿足企業(yè)對多品種多品牌設備的采購的需求,其次借助平臺的客戶資源,持續(xù)的營造自有品牌和推進高價值品牌產(chǎn)品銷量。從宏觀角度分析,從經(jīng)濟上消費水平在往優(yōu)質高端趨勢升級,在技術角度上互聯(lián)網(wǎng)技術和移動支付技術逐漸趨于成熟,從社會角度上線上采購平臺突破解決企業(yè)與企業(yè)之間傳統(tǒng)的采購方式,彌補采購商采購過程中出現(xiàn)的諸多問題。在這種成熟的經(jīng)濟、技術、社會條件下,有必要開發(fā)一個辦公設備采購平臺來提供更高效的更高效的采購方式,從采購商線上定制方案,線下供應商一對一跟進業(yè)務,承運商配送設備,都是從線上反饋采購的進度,使得采購的過程透明化,提高采購商的采購體驗和提高了更好的采購服務。本課題主要研究與開發(fā)辦公設備采購平臺,來解決企業(yè)辦公設備采購所遇到的痛點。企業(yè)通過B2B企業(yè)與企業(yè)之間進行交易的商業(yè)模式,通過線上的網(wǎng)絡平臺或網(wǎng)站與客戶緊密聯(lián)系在一起。通過軟件的便捷性,彌補了線下的采購業(yè)務的諸多問題,為客戶提供了更好的服務,從而促進了企業(yè)的業(yè)務發(fā)展。為了解決消費者對產(chǎn)品的“即想要即得到”的快速認知體驗,因此線上的圍繞消費者360度的采購平臺對消息者來說就顯得重要了1.2國內外研究現(xiàn)狀在國內隨著互聯(lián)網(wǎng)技術的進步,淘寶、天貓、京東平臺的慢慢出現(xiàn),線上購物已經(jīng)成為人們所喜愛的購物方式,線下交易則受到了越來越大的挑戰(zhàn)。因此線下交易也將結合了線上交易,形成了B2B模式,把兩者緊密的結合起來,兩者的出現(xiàn)讓購物變得便捷。從之前的京東模式和淘寶模式到現(xiàn)在的線上線下結合,服務商也在全國各地有了自己的倉庫,讓商品流通更加便利,也能讓客戶方便購物,資金能夠迅速流轉,帶動了經(jīng)濟的發(fā)展。在國外,在金融危機的大背景下,傳統(tǒng)實體業(yè)也逐漸走向電子采購,減少了企業(yè)采購成本,采購商方式也逐漸多元化。1.3本課題研究的方法和技術路線本論文在撰寫過程中主要運用了以下兩種研究方法:調查法,從市場調研、行業(yè)相關人士咨詢中所搜集到的大量資料進行分析、綜合、歸納,從而得過詳細的需求。文獻研究法,根據(jù)調查文獻以及書籍等途徑來獲取相關資料以此來獲取系統(tǒng)開發(fā)的需求。研究的技術路線:確定辦公設備采購平臺的需求和主要的功能,以及市場調研相關資料收集。主要通過行業(yè)的相關人士對采購行業(yè)深入了解,深入探討采購的過程,與傳統(tǒng)采購行業(yè)的痛點從而來確定系統(tǒng)的主要功能模塊。確定后需求與功能。應該制定具體的開發(fā)計劃,確定系統(tǒng)的架構以及相對應的技術方案。設計與實施階段。確定完開發(fā)計劃與系統(tǒng)設計之后,就開始進行模塊開發(fā)、數(shù)據(jù)庫建模、設計,功能測試。上線與維護階段。功能開發(fā)完畢,開始解決上線過程中所存在的不足之處并及時修復,保持系統(tǒng)的穩(wěn)定性。

第2章系統(tǒng)調研和需求分析2.1系統(tǒng)調研在開發(fā)采購系統(tǒng)之前,首先通過分析國內采購平臺的現(xiàn)狀與發(fā)展趨勢,以及查詢相關的文獻資料和咨詢采購行業(yè)的相關人士與其討論采購過程中所遇到的問題,可以通過實現(xiàn)哪些具體的功能可以解決他們現(xiàn)存在的問題,通過上述的相關調研之后就可以把控需求過程,確定系統(tǒng)的需求,再進行相關需求評審,分析需求是否可以支撐采購平臺。接著進行了技術調研,分析現(xiàn)階段市面上成熟的采購平臺以及實現(xiàn)的技術架構,通過網(wǎng)上資料查找實現(xiàn)采購平臺的相關技術,以及基于什么技術可以支撐采購平臺。2.2可行性分析1.經(jīng)濟可行性經(jīng)濟可行性分析主要是對軟件的成本價值進行估算,已經(jīng)平臺對市場使用價值的估算。本項目的研發(fā),會提高企業(yè)之間辦公設備采購的效率,減少企業(yè)的人力成本,讓采購過程透明化,高效化。2.技術可行性技術可行性分析包括分析可得到的硬件和支撐軟件在功能以及性能上等各方面能否滿足系統(tǒng)的要求。本項目采用SpringBoot的微服務架構,有較高的可維護性和能提供團隊的開發(fā)效率,其應用也可以實現(xiàn)獨立部署,容錯率較低,微服務架構也易于擴展,可部署微服務集群。成熟的技術也使得平臺構建容易很多。而且開發(fā)人員需要有成熟的開發(fā)經(jīng)驗,熟練的服務器運能能力,基本的排查錯誤能力,且能對軟件的性能能夠測試進而進行優(yōu)化。3.運行可行性應用層采用多容器部署應用,使得項目穩(wěn)定運行,網(wǎng)絡層采用Nginx負載均衡,客戶端請求會按策略算法分發(fā)到各個容器,提高系統(tǒng)的吞吐量和性能,實現(xiàn)了高可用、高容災。數(shù)據(jù)庫采用主從復制策略,實現(xiàn)數(shù)據(jù)的異地備份,保證了數(shù)據(jù)安全性。4.法律可行性政府鼓勵扶持企業(yè)發(fā)展,加快互聯(lián)網(wǎng)平臺建設、構建應用服務體系。同時項目所用的服務器、域名進行備案,承當相應法律風險。5.操作可行性因為針對的是企業(yè)用戶,使用人群是30到40歲之間,所以平臺需要界面簡潔,且用戶體驗度要高,操作便捷,能符合大部分用戶的使用習慣。2.3系統(tǒng)的需求分析2.3.1系統(tǒng)基本情況狀況本系統(tǒng)采用B/S架構,采購商使用移動設備訪問系統(tǒng),業(yè)務功能都集中在服務端處理,客戶端與服務端通過接口形式進行數(shù)據(jù)交互,提高了系統(tǒng)的可維護性。本系統(tǒng)用戶主要是兩類:采購商管理員管理員的要求:管理員擁有創(chuàng)建需求,審核需求,生成報價單的功能;需求創(chuàng)建訂單,審核訂單,完善訂單信息,打印送貨單。上架商品,審核商品,品牌管理,承運商管理,商品類目管理。具體的解釋如下:創(chuàng)建需求:管理員可以在后臺為采購商根據(jù)其企業(yè)的采購需求創(chuàng)建需求。審核需求:管理員可以在后臺審核采購商或業(yè)務員提交的采購需求是否合理。生成報價單:管理員審核通過采購需求之后為選購的商品設定成交價,可以生成報價單并導出。需求創(chuàng)建訂單:管理員審核通過的采購需求可以為采購商創(chuàng)建采購訂單審核訂單:采購商挑選完要采購的商品之后為采購名單創(chuàng)建訂單,或管理員審核通過的采購需求之后,管理員進行審核訂單的操作。完善訂單信息:管理員審核通過的訂單,進行完善訂單的采購商的付款憑證、電子發(fā)票、付款途徑、財務稅號、承運商等信息。打印送貨單:訂單的配送階段,可以進行打印送貨單的操作。上架商品:管理員進行市場調研之后為采購商定制的商品進行上架的操作,設置商品名稱、貨品進貨價、分銷價、集采價、市場價,以及起訂量等信息。審核商品:上架完商品之后,商品的價格不是適合市場價格或不適合市場需求,可以進行駁回商品的操作,反之可以審核通過商品,審核通過的商品會在移動端前臺上架,采購商對商品進行采購的操作。采購商的要求:采購商擁有采購商申請、采購商登錄、搜索采購商品、加入采購清單、生成采購訂單、發(fā)布采購需求的操作。具體的解釋如下:1、采購商申請:采購商進行采購賬號申請的操作,需要完善真實姓名、企業(yè)名稱、企業(yè)規(guī)模、所在部門、企業(yè)地址、手機號碼、營業(yè)執(zhí)照、開票資料等信息。2、采購商登錄:采購商根據(jù)賬號以及密碼進行賬號登錄的操作,登錄成功之后可進行商品加入采購清單,創(chuàng)建采購訂單、發(fā)布采購需求等操作。3、搜索采購商品:采購商在移動端導航欄對所要采購的商品的進行搜索的操作。4、加入采購清單:在采購商瀏覽完心儀的商品之后對商品進行加入購物清單的操作,在購物清單里面可以臨時存放商品、修改采購商品的數(shù)量、刪除采購商品等操作。5、生成采購訂單:采購商把要采購的商品加入采購清單之后,可為采購清單生成采購訂單,在移動端可查看訂單的實時狀態(tài)。6、發(fā)布采購清單:采購商根據(jù)企業(yè)的采購需求進行采購清單的發(fā)布操作,需要填寫人均采購預算,發(fā)放人數(shù),方案需求,心愿品項等信息。2.3.2業(yè)務流程分析系統(tǒng)業(yè)務主要分為管理員模塊和采購商模塊的業(yè)務。管理員業(yè)務流程圖如圖2-1所示,首先管理員根據(jù)采購商的需求為采購商創(chuàng)建需求清單,然后進行采購需求的審核,檢驗采購的商品是否符合采購需求,審核通過的采購清單與采購商洽談完可以為采購的商品設置商品成交價,可以生成報價單并導出,接下來為清單清單創(chuàng)建采購訂單。然后生成采購商的訂單之后,管理員需要進行訂單的操作操作,若審核通過,則需要完善采購商的開票信息、付款憑證、承運商等信息,之后就進行訂單的配送階段,可以預覽或導出送貨單提交至承運商進行送貨。管理員根據(jù)市場需求為采購平臺上架采購商所需要的商品,上架之后需要進行商品的審核操作,如果商品價格等因素不符合市場要求,可進行商品駁回的操作,反之審核通過商品會在采購平臺上架,采購商可對上架的商品進行采購的操作。圖2-1管理員業(yè)務流程圖采購商業(yè)務流程圖如圖2-2所示,首先采購商需要申請賬號,申請成功之后采購商進行賬號登錄的操作,采購商可以在導航欄進行采購商品的檢索,對心儀的采購商品加入購物清單,購物清單可以修改采購商品的數(shù)量、刪除采購商品等操作,然后采購商挑選完采購的商品之后,可以在購物清單生成采購訂單,在移動端可以查看訂單的實時狀態(tài)。采購商根據(jù)其采購需求可以進行發(fā)布采購清單需求。圖2-2采購商業(yè)務流程圖2.3.3系統(tǒng)用例分析管理員用例分析:如圖2-3所示,管理員具有創(chuàng)建需求、挑選需求產(chǎn)品、審核需求、生成報價單、需求創(chuàng)建訂單、審核訂單、完善訂單信息、打印送貨單、上架商品、審核商品功能。圖2-3管理員用例圖采購商用例分析:如圖2-4所示,采購商具有采購商申請、采購商登錄、搜索采購商品、加入采購清單、生成采購訂單和發(fā)布采購清單的功能。圖2-4采購商用例圖2.3.4系統(tǒng)數(shù)據(jù)流分析(1)采購商申請采購商注冊賬號:采購商填寫賬號、手機號碼、真實姓名、企業(yè)名稱、企業(yè)規(guī)模、所在部門、企業(yè)地址等信息,系統(tǒng)會校驗游客信息合法性,校驗成功之后,會在數(shù)據(jù)庫產(chǎn)生一條采購商的記錄,如圖2-5所示:圖2-5采購商申請數(shù)據(jù)流圖(2)采購商登錄采購商登錄:采購商在登錄界面填寫賬號、密碼,系統(tǒng)校驗賬號、密碼是否匹配,匹配成功之后就登錄成功,反之反饋給錯誤信息給用戶重新填寫,如圖2-6所示:圖2-6采購商登錄數(shù)據(jù)流圖(3)采購商采購數(shù)據(jù)流如圖2-7所示,采購商通過搜索的商品挑選適合企業(yè)采購的商品,然后加入采購清單系統(tǒng)會產(chǎn)生采購清單記錄,或發(fā)布采購需求,系統(tǒng)會產(chǎn)生采購需求訂單,然后在采購清單或從采購需求兩種途徑都可以生成采購訂單,系統(tǒng)會產(chǎn)生采購訂單的記錄。圖2-7采購商采購數(shù)據(jù)流圖(4)管理員數(shù)據(jù)流管理員可為采購商創(chuàng)建采購需求,創(chuàng)建成功之后,系統(tǒng)會產(chǎn)生需求記錄,然后管理員需要審核采購需求,審核通過或審核失敗,會更新采購需求的狀態(tài),生成報價單需要查詢采購需求的信息,然后執(zhí)行生成報價單的動作。管理員可以從需求生成訂單,然后審核訂單,系統(tǒng)會更新訂單的狀態(tài),完善訂單信息,系統(tǒng)會更新訂單相應信息,打印送貨單系統(tǒng)會查詢訂單的信息然后執(zhí)行打印的操作。管理員可以在后臺上架商品,新增的商品處于待審核狀態(tài),系統(tǒng)會新增一條商品的記錄,執(zhí)行審核商品的動作,如果商品審核成功,會更新商品上架的狀態(tài),審核失敗商品則改為審核失敗的狀態(tài),系統(tǒng)會更新商品的狀態(tài)信息,如圖2-8所示:圖2-8管理員數(shù)據(jù)流圖

第3章系統(tǒng)總體設計3.1系統(tǒng)體系結構本采購系統(tǒng)的系統(tǒng)結構是按照自上而下的結構設計的。系統(tǒng)分為采購商與管理員兩個部分,首先是管理員上傳采購商品,審核采購商商品進行上架、上架商品,審核成功之后上架到采購平臺,采購商可以在采購平臺申請成為采購商,在采購平臺搜索合適的商品,發(fā)布采購需求或管理員為采購商定制需求,管理員會在后臺審核需求,為采購需求定制適合采購商的商品,然后可以生成報價單發(fā)送給客戶,需求進而轉換成訂單,或采購商可以根據(jù)自身需要在采購平臺把合適的商品加入采購清單然后自助下單,管理員需要審核采購訂單,完善訂單的財務信息、配送信息,最后打印打送貨單,訂單成交,如圖3-1所示:圖3-1系統(tǒng)體系結構圖3.2系統(tǒng)功能模塊設計3.2.1管理員主要功能模塊本管理員模塊可分為以下功能模塊,如圖3-2、圖3-3和圖3-4所示,具體為:1、新建采購需求:管理員根據(jù)采購商的采購預算、采購需求,在后臺為采購商新建采購需求。2、挑選需求產(chǎn)品:管理員可以為采購需求定制采購商所需要的采購商品。3、審核采購需求:管理員為采購商新建的采購需求或采購商發(fā)布的采購需求,為采購商挑選后合適的采購商品之后,審核采購需求的操作,審批成功之后采購需求才生效。4、生成報價單:審核通過的采購需求,管理員可以生成報價單,可以預覽和導出報價單。5、需求生成訂單:審核成功之后的采購需求可以生成采購訂單。圖3-2采購需求功能結構圖6、審核采購訂單:管理員從采購需求生成訂單或采購商從采購平臺自助下單的采購訂單,管理員需要進行審核,審核成功之后采購訂單才會生效。7、完善訂單信息:生效的訂單需要完善訂單的承運商、財務、支付等信息。8、打印送貨單:完善好訂單信息之后,管理員可以進行預覽送貨單與導出的操作。圖3-3采購訂單功能結構圖9、上架商品:管理員經(jīng)過市場調研選擇適合采購商的產(chǎn)品,在后臺進行上架商品的操作。10、審核商品:管理員上架完產(chǎn)品之后需要對上架的商品審核的操作,審核通過的商品才可以在采購平臺展示。圖3-4采購商品功能結構圖3.2.2采購商主要功能模塊本采購商模塊可分為以下功能模塊,如圖3-5所示,具體為:1、采購商申請:采購商在采購之前,進行采購商申請的操作,需要填寫企業(yè)名稱、企業(yè)規(guī)模、部門名稱、企業(yè)地址、真實姓名、手機號碼。2、采購商登錄:采購商根據(jù)申請的賬號進行登錄。3、搜索商品:采購商可以在導航欄對關鍵字進行檢索,系統(tǒng)會返回匹配度較高的商品給采購商。4、商品加入采購清單:采購商根據(jù)自身的采購需求挑選完商品之后可以把商品放入采購清單。5、采購商下單:采購商在確認采購清單符合自身的采購需求之后,可以在平臺自助下單。6、發(fā)布采購需求:采購商可以根據(jù)采購預算、發(fā)放人數(shù)、選購的要求、心愿品項發(fā)布需求,管理員會根據(jù)采購商的采購需求為采購商定制合適的商品。圖3-5采購商功能結構圖3.3數(shù)據(jù)結構設計3.3.1系統(tǒng)實體關系描述1、全局E-R圖全局E-R圖包含采購商品、商品貨品、商品分類、采購清單、需求需求、采購需求商品、采購訂單商品、采購訂單。如圖3-6所示:圖3-6全局E-R圖2、采購商實體關系圖采購商實體包括采購商名稱、企業(yè)名稱、手機號碼、部門名稱、企業(yè)地址、企業(yè)規(guī)模。采購商實體E-R圖如圖3-7所示:圖3-7采購商實體E-R圖3、采購商品實體關系圖采購商品實體包括商品名稱、品牌編號、商品描述、商品關鍵字、商品狀態(tài)。采購商品實體E-R圖如圖3-8所示:圖3-8采購商品實體E-R圖4、商品貨品實體關系圖商品貨品實體包括商品編號、商品進貨價、商品分銷價、商品集采價、商品市場價、商品起訂量、商品庫存。商品貨品實體E-R圖如圖3-9所示:圖3-9商品貨品實體E-R圖5、采購清單實體關系圖采購清單實體包括采購商編號、商品編號、貨品編號、商品價格、采購數(shù)量。采購清單實體E-R圖如3-10圖所示:圖3-10采購清單實體E-R圖6、商品分類實體關系圖商品分類實體包括=分類名稱、分類圖片、分類父級編號。商品分類實體E-R圖如圖3-11所示:圖3-11商品分類實體E-R圖7、采購需求實體關系圖采購需求實體包括采購預算、發(fā)放人數(shù)、特殊要求、心愿單、采購商編號、狀態(tài)。采購需求實體E-R圖如圖3-12所示:圖3-12采購需求實體實體E-R圖8、采購需求商品實體關系圖采購需求商品實體包括采購采購商編號、商品編號、貨品編號、采購需求編號、商品價格、采購數(shù)量、采購價格。采購需求實體E-R圖如3-13圖所示:圖3-13采購需求商品實體E-R圖9、采購訂單實體關系圖采購訂單實體包括采購商編號、訂單編號、訂單狀態(tài)、訂單費用、付款時間、送貨時間、承運商編號。采購訂單實體E-R圖如圖3-14所示:圖3-14采購訂單商品實體實體E-R圖10、采購訂單商品實體關系圖采購訂單實體包括訂單編號、商品編號、采購數(shù)量、商品價格。采購訂單商品實體E-R圖如圖3-15所示:圖3-15采購訂單商品實體實體E-R圖3.3.2數(shù)據(jù)表設計1、采購商表采購商user表用來存儲采購商的基本信息。采購商表結構如表3-1所示:表3-1采購商表屬性類型大小約束備注IDvarchar11主鍵編號usernamevarchar50Notnull用戶賬號passwordvarchar50Notnull登錄密碼gendertinyint3Notnull性別:0未知,1男,1女birthdaydate0Notnull生日last_login_timedatetime50Notnull最近一次登錄時間user_leveltinyint3Notnull0普通用戶,1VIP用戶,2高級VIP用戶mobilevarchar20Notnull手機號碼real_namevarchar50Notnull真實姓名departmentvarchar255Notnull部門addressvarchar255Notnull企業(yè)地址enterprise_scalevarchar255Notnull公司規(guī)模corporate_namevarchar255Notnull企業(yè)名稱2、管理員表管理員admin表用來存儲管理員的基本信息。管理員表結構如表3-2所示:表3-2管理員表屬性類型大小約束備注IDvarchar11主鍵編號usernamevarchar63Notnull管理員賬號passwordvarchar50Notnull登錄密碼real_namevarchar50Notnull真實姓名mobilevarchar255Notnull手機號碼last_login_ipvarchar63Notnull最近一次登錄IP地址avatarvarchar255Notnull頭像圖片3、搜索歷史表搜索歷史表search_history表用來存儲采購商的搜索歷史。采購商表結構如表3-3所示:表3-3搜索歷史表屬性類型大小約束備注IDvarchar11主鍵編號user_idint11Notnull用戶編號keywordvarchar63Notnull搜索關鍵字fromvarchar63Notnull搜索來源,如pc、wx、appmobilevarchar255Notnull手機號碼add_timedatetime0Notnull搜索時間4、訂單操作表訂單操作表order_operate_log表用來存儲管理員操作訂單的記錄。訂單操作表結構如表3-4所示:表3-4訂單操作表屬性類型大小約束備注IDvarchar11主鍵編號operator_idint11Notnull操作員編號operator_namevarchar63Notnull操作員名稱operatevarchar63Notnull操作typetinyint3Notnull操作類型type_idint11Notnull訂單編號ipvarchar255Notnull操作者Ip地址5、訂單商品表訂單商品表order_goods表用來存儲采購訂單商品的記錄。訂單商品表結構如表3-5所示:表3-5訂單商品表屬性類型大小約束備注IDvarchar11主鍵編號order_idint11Notnull訂單IDgoods_idint11Notnull商品IDgoods_namevarchar127Notnull商品名稱goods_snvarchar63Notnull商品編號numberint11Notnull貨品的購買數(shù)量specificationsvarchar1000Notnull商品規(guī)格6、采購訂單表采購訂單表order表用來存儲采購訂單的記錄。采購訂單表結構如表3-6所示:表3-6采購訂單表屬性類型大小約束備注IDvarchar11主鍵編號user_idint11Notnull采購商IDorder_snvarchar255Notnull訂單編號order_statussmallint6Notnull訂單狀態(tài)consigneevarchar63Notnull收貨人名稱addressvarchar255Notnull收貨地址mobilevarchar63Notnull收貨人手機號碼messagevarchar512Notnull訂單留言order_pricedecimal10Notnull訂單費用actual_pricedecimal10Notnull實付費用ship_timedatetime0Notnull發(fā)貨時間confirm_timedatetime0Notnull確認收貨時間end_timedatetime0Notnull訂單結束時間demand_idint11Notnull需求idbusiness_licensevarchar255Notnull營業(yè)執(zhí)照billing_informationvarchar255Notnull開票資料logistics_vouchervarchar255Notnull物流憑證logistics_picvarchar255Notnull物流單order_typeint11Notnull訂單類型operator_idint11Notnull操作人編號operator_namevarchar255Notnull操作人姓名carrier_idint11Notnull承運商編號7、商品貨品表商品貨品表good_product表用來存儲采購商品貨品的記錄。商品貨品表結構如表3-7所示:表3-7商品貨品表屬性類型大小約束備注IDint11主鍵編號goods_idint11Notnull商品IDbuying_pricedecimal10Notnull貨品進貨價distribution_pricedecimal10Notnull貨品分銷價sale_pricedecimal10Notnull貨品集采價retail_pricedecimal10Notnull貨品市場價numint11Notnull起訂量numberint11Notnull貨品庫存urlvarchar255Notnull貨品圖片8、采購商品表采購商品表goods表用來存儲采購商品貨品的記錄。采購商品表結構如表3-8所示:表3-8采購商品表屬性類型大小約束備注IDint11主鍵編號goods_snvarchar63Notnull商品IDnamevarchar20Notnull商品名稱category_idint11Notnull類目IDbrand_idint11Notnull品牌IDgalleryvarchar255Notnull輪播圖brieftext0Notnull商品簡介numberint11Notnull貨品庫存urlvarchar255Notnull貨品圖片is_on_saleint11Notnull是否上架pic_urlvarchar255Notnull商品圖片statusint11Notnull商品狀態(tài)0:審核中1:上架9、采購需求表采購需求表demand表用來存儲采購購需求的記錄。購需求表結構如表3-9所示:表3-9采購需求表屬性類型大小約束備注IDint11主鍵編號budgetdecimal10Notnull采購預算peopleint11Notnull發(fā)放人數(shù)demandvarchar255Notnull特殊要求wishvarchar255Notnull心愿單user_idint11Notnull采購商編號update_timedatetime0Notnull更新時間10、采購需求商品表采購需求表demand_goods表用來存儲管理員為采購商需求定制的商品的記錄。采購需求商品結構如表3-10所示:表3-10采購需求商品表屬性類型大小約束備注IDint11主鍵編號user_idint11Notnull采購商iddemand_idint11Notnull需求idproduct_idint11Notnull商品貨品IDgoods_idint11Notnull商品IDpricedecimal11Notnull采購價格numbersmallint5Notnull采購數(shù)量pic_urlvarchar255Notnull商品圖片11、商品類目表類目表category表用來存儲管采購商品的類目的記錄。商品類目表結構如表3-11所示:表3-11商品類目表屬性類型大小約束備注IDint11主鍵編號nameint11Notnull類目名稱pic_urlvarchar255Notnull類目圖片pidint11Notnull父類目ID12、采購清單表采購清單表cart表用來存儲采購清單的記錄。采購清單表結構如表3-12所示:表3-12采購清單表屬性類型大小約束備注IDint11主鍵編號user_idint11Notnull采購商idgoods_idint11Notnull商品IDproduct_idint11Notnull貨品IDpricedecimal10Notnull貨品價格numberint11Notnull采購數(shù)量pic_urlvarchar255Notnull貨品圖片13、承運商表承運商carrier表用來存儲承運商的記錄。承運商結構如表3-13所示:表3-13承運商表屬性類型大小約束備注IDint11主鍵編號namevarchar255Notnull承運商名稱principalvarchar255Notnull負責人名稱product_idint11Notnull貨品IDpricedecimal10Notnull貨品價格areavarchar255Notnull地區(qū)addressvarchar255Notnull地址14、品牌商表品牌商brand表用來存儲品牌商的記錄。品牌商結構如表3-14所示:表3-14品牌商表屬性類型大小約束備注IDint11主鍵編號namevarchar255Notnull品牌商名稱descvarchar255Notnull品牌商簡介pic_urlvarchar255Notnull品牌商圖片

第4章系統(tǒng)詳細設計4.1系統(tǒng)開發(fā)技術簡介項目基于前后臺分離架構,完全剝離了前端與后端,界面通過VUE進行渲染,數(shù)據(jù)通過接口進行交互,業(yè)務層分為采購商管理、采購需求管理、訂單管理、商品類目、承運商管理、商品管理、品牌管理、管理員管理、權限管理,持久化數(shù)據(jù)儲存在MySQL數(shù)據(jù)庫中,緩存存儲在分布式緩存Redis,商品的索引數(shù)據(jù)存儲在ElasticSearch分片上,圖片掛載在云存儲,項目運行在CentOS7.2云服務器上。圖4-1技術架構圖1.Java簡介Java是一種面向對象的開發(fā)語言,具有性能高、安全性高、面向對象、支持多平臺、開源、版本API迭代迅速等諸多優(yōu)點,適合企業(yè)應用的開發(fā)、B/S架構系統(tǒng)的開發(fā)。2.Spring簡介Spring的出現(xiàn)極大的簡化了軟件開發(fā)的復雜性,它以控制反轉和面向切片編程為內核使得系統(tǒng)開發(fā)的模塊更集中、更具有獨立性且其具有比較好的兼容性能較好的兼容其他優(yōu)秀的框架。3.運行環(huán)境采購平臺在運行環(huán)境是JDK1.8,部署在X86架構的CentOS7.2服務器上,部署的容器是ApacheTomcat9.22,tomcat容器部署的內存是2G,應用緩存存儲在存儲Redis上,商品緩存存儲在ElasticSearch分片上,能極大的提升應用的性能,應用的靜態(tài)資源存儲在公網(wǎng)的云存儲上,提高了采購商訪問平臺的速度。4.2系統(tǒng)功能實現(xiàn)4.2.1采購需求模塊采購需求作為采購系統(tǒng)的核心,供應商可以根據(jù)采購商的采購商需求,為其定制適合采購商的需求產(chǎn)品,供應商會根據(jù)采購商的采購預算以及心愿產(chǎn)品等為其定制采購清單,審核采購需求清單,審核通過的需求清單生成報價單發(fā)送給采購商,最后采購需求清單生成采購訂單。(1)采購商發(fā)布需求采購商可以結合自身的采購需求,在平臺發(fā)布填寫采購預算、發(fā)放人數(shù)、特殊要求、心愿品項。填寫的時候會校驗填寫的信息是否為空。填寫完成發(fā)布需求之后會返回上一個界面。采購商發(fā)布采購需求如下圖4-2所示:圖4-2發(fā)布需求圖(2)管理員新建采購需求管理員可以為采購商新建采購需求,需要填寫采購商的人均采購商預算、發(fā)放人數(shù)、特殊的要求、心愿品項分類、采購商用戶、需求登錄以及采購需求備注。如圖4-3所示圖4-3管理員新建采購需求校驗采購需求是否符合要求的代碼:privateObjectvalidate(MallDemanddemand){//預算if(null==demand.getBudget()){returnResponseUtil.badArgument();}...returnnull;}(3)管理員挑選采購需求產(chǎn)品管理員創(chuàng)建完采購需求之后,可以根據(jù)采購商需求挑選需求產(chǎn)品??梢愿鶕?jù)商品名稱、商品分類搜索商品,挑選完商品之后可以選擇采購商品的數(shù)量以及采購商的成交價,管理員還可以查看商品的毛利。圖4-4選擇商品圖4-5管理員挑選需求產(chǎn)品(4)審核采購需求采購商挑選完產(chǎn)品之后,采購需求處于審核中的狀態(tài),需要勾選該需求之后,點擊審核通過,采購需求狀態(tài)就變成審核通過的狀態(tài)。如圖4-6所示:圖4-6管理員挑選需求產(chǎn)品如下圖所示,需要校驗需求的信息是否完整以及校驗挑選的商品是否有庫存,如果校驗通過才會把需求的狀態(tài)改為審核通過。List<MallDemand>demands=demandService.findByIds(ids);//修改狀態(tài)demands.forEach(mallDemand->{List<MallDemandCart>demandCarts=demandCartService.findByDemandId(mallDemand.getId());if(CollectionUtils.isEmpty(demandCarts)){thrownewBusinessException(mallDemand.getUserRealName()+"的需求清單編號["+mallDemand.getId()+"]商品為空,請完善信息");}else{//不為空,判斷是否有庫存demandCarts.forEach(mallDemandCart->{IntegerproductId=mallDemandCart.getProductId();MallGoodsProductproduct=productService.findById(productId);IntegerremainNumber=product.getNumber()-mallDemandCart.getNumber();if(remainNumber<0){thrownewBusinessException("需求采購清單的商品貨品數(shù)量大于庫存量,請重新選擇數(shù)量");}});}});demandService.updateStatus(status,demands);(5)生成報價單審核通過的采購需求可以進行報價單的預覽與下載操作。如圖4-7所示:圖4-7生成報價單如下圖所示,查詢采購需求的信息以及采購采購需求的產(chǎn)品通過預覽的方式顯示,或下載到本地查看,預覽是使用POI技術,將查詢出來的采購需求數(shù)據(jù)通過html格式輸出,并顯示到前端界面。Map<String,Object>map=newHashMap<String,Object>();TemplateExportParamsparams=newTemplateExportParams(newClassPathResource(PathUtils.PATH+"template/delivery.xlsx").getPath());map.put("list",demandPOIS);map.put("corporateName",mallDemand.getUserCompany());map.put("time",DateTimeUtil.getDateTimeDisplayString(LocalDateTime.now()));Workbookworkbook=ExcelExportUtil.exportExcel(params,map);Stringhtml=ExcelXorHtmlUtil.toAllHtml(workbook);returnResponseUtil.ok(html);下載也是通過POI技術,將查詢出來的采購需求數(shù)據(jù)寫入字節(jié)流,并執(zhí)行下載的操作。Map<String,Object>map=newHashMap<String,Object>();TemplateExportParamsparams=newTemplateExportParams(newClassPathResource(PathUtils.PATH+"template/quotation.xlsx").getPath());map.put("list",demandPOIS);map.put("corporateName",mallDemand.getUserCompany());map.put("time",DateTimeUtil.getDateTimeDisplayString(LocalDateTime.now()));Workbookworkbook=ExcelExportUtil.exportExcel(params,map);ByteArrayOutputStreamos=newByteArrayOutputStream();try{workbook.write(os);Stringdate=DateUtils.format(newDate(),DateUtils.DATE_TIME_PATTERN);newDownloadUtils().download(os,response,date+"卓薈需求報表."+EasyPoiUtils.EXCEL_XLS);}catch(IOExceptione){e.printStackTrace();}returnnull;(6)需求生成訂單管理員為采購商的采購需求或采購商在采購平臺發(fā)布的采購需求,可以為采購需求生成訂單,需要填寫訂單的支付方式、支付期限、電子合同、選擇采購商收貨地址、送貨時間、送貨備注、訂單備注之后,就可以生成采購訂單。如圖4-8、4-9所示:圖4-8需求生成訂單圖4-9需求創(chuàng)建訂單4.2.2訂單模塊訂單模塊屬于業(yè)務銷售的一部分,客戶可從采購平臺自助下單,或管理員從采購需求生成采購訂單,訂單會經(jīng)過管理員審核訂單、完善訂單物流、財務信息、預覽送貨單過程。(1)采購商下單采購商可以在采購清單界面結算采購商品,選擇收貨地址與支付方式,即可自助下單。如圖4-10所示:圖4-10采購商下單圖下單的時候存在一個技術問題:在高并發(fā)的情況下如何保證解決訂單編號重復。一般通過UUID算法保證編號全局唯一,或通過雪花算法,或通過Redis原子遞增,本項目是使用當前時間+隨機數(shù)+用戶編號的方式生成訂單編號,生成時會判斷訂單編號是否存在,若存在會重新生成保證訂單唯一性。publicintcountByOrderSn(IntegeruserId,StringorderSn){MallOrderExampleexample=newMallOrderExample();example.or().andUserIdEqualTo(userId).andOrderSnEqualTo(orderSn).andDeletedEqualTo(false);return(int)MallOrderMapper.countByExample(example);}publicStringgenerateOrderSn(IntegeruserId){DateTimeFormatterdf=DateTimeFormatter.ofPattern("yyyyMMdd");Stringnow=df.format(LocalDate.now());StringorderSn=now+userId+getRandomNum(6);while(countByOrderSn(userId,orderSn)!=0){orderSn=now+userId+getRandomNum(6);}returnorderSn;}為解決采購平臺未付款訂單占庫存的問題,采購平臺會每半小時查詢未支付的訂單,將訂單占庫存的商品,并添加訂單商品添加相對應的庫存并取消訂單。@Scheduled(fixedDelay=30*60*1000)@TransactionalpublicvoidcheckOrderUnpaid(){("系統(tǒng)開啟任務檢查訂單是否已經(jīng)超期自動取消訂單");List<MallOrder>orderList=orderService.queryUnpaid();for(MallOrderorder:orderList){LocalDateTimeadd=order.getAddTime();LocalDateTimenow=LocalDateTime.now();LocalDateTimeexpired=add.plusMinutes(30);if(expired.isAfter(now)){continue;}//設置訂單已取消狀態(tài)order.setOrderStatus(OrderUtil.STATUS_AUTO_CANCEL);order.setEndTime(LocalDateTime.now());if(orderService.updateWithOptimisticLocker(order)==0){thrownewRuntimeException("更新數(shù)據(jù)已失效");}//商品貨品數(shù)量增加IntegerorderId=order.getId();List<MallOrderGoods>orderGoodsList=orderGoodsService.queryByOid(orderId);for(MallOrderGoodsorderGoods:orderGoodsList){IntegerproductId=orderGoods.getProductId();MallGoodsProductproduct=productService.findById(productId);Shortnumber=orderGoods.getNumber();if(productService.addStock(productId,number)==0){thrownewRuntimeException("商品貨品庫存增加失敗");}}("訂單ID="+order.getId()+"已經(jīng)超期自動取消訂單");}}(2)需求生成訂單管理員為采購商的采購需求或采購商在采購平臺發(fā)布的采購需求,可以為采購需求生成訂單,需要填寫訂單的支付方式、支付期限、電子合同、選擇采購商收貨地址、送貨時間、送貨備注、訂單備注之后,就可以生成采購訂單。如圖4-11、4-12所示:圖4-11需求生成訂單圖4-12需求創(chuàng)建訂單下單的時候需要判斷采購商品的貨品數(shù)量是否大于庫存量,以及通過庫存限制條件方式來扣減庫存避免高并發(fā)場景下的“超賣”現(xiàn)象。for(MallCartcheckGoods:checkedGoodsList){IntegerproductId=checkGoods.getProductId();MallGoodsProductproduct=productService.findById(productId);IntegerremainNumber=product.getNumber()-checkGoods.getNumber();if(remainNumber<0){thrownewRuntimeException("下單的商品貨品數(shù)量大于庫存量");}if(productService.reduceStock(productId,checkGoods.getNumber())==0){thrownewRuntimeException("商品貨品庫存減少失敗");}}更新數(shù)據(jù)庫減庫存的時候,對貨品的庫存限制條件的SQL代碼實現(xiàn)<updateid="reduceStock"parameterType="map">updatemall_goods_productsetnumber=number-#{num,jdbcType=INTEGER},update_time=now()whereid=#{id,jdbcType=INTEGER}andnumber>=#{num,jdbcType=INTEGER}</update>(3)審核采購訂單管理員從采購需求生成的訂單或采購商自助下單的訂單,管理員可以進行審核訂單,訂單才會生效,訂單的狀態(tài)變?yōu)閷徍送ㄟ^的狀態(tài)。如圖4-13所示:圖4-13審核采購訂單審核訂單狀態(tài)的時候,使用數(shù)據(jù)庫的樂觀鎖,每次更新訂單狀態(tài)前先根據(jù)訂單的更新時間查詢一下訂單信息,然后執(zhí)行更新語句并且更新訂單更新時間publicintupdateWithOptimisticLocker(MallOrderorder){LocalDateTimepreUpdateTime=order.getUpdateTime();order.setUpdateTime(LocalDateTime.now());returnorderMapper.updateWithOptimisticLocker1(preUpdateTime,order);}<updateid="updateWithOptimisticLocker1"parameterType="map">updatemall_order<set><iftest="order.id!=null">id=#{order.id,jdbcType=INTEGER},</if><iftest="order.orderStatus!=null">order_status=#{order.orderStatus,jdbcType=SMALLINT},</if></set>whereid=#{order.id,jdbcType=INTEGER}andupdate_time=#{lastUpdateTime,jdbcType=INTEGER}</update>(4)完善訂單信息管理員審核成功完訂單之后,需要填寫采購商的財務稅務號、承運商、財務信息,完善完相關信息之后,訂單的狀態(tài)會變?yōu)榇l(fā)貨。如圖4-14、4-15所示:圖4-14完善稅務號、承運商信息圖4-15完善財務信息(5)預覽送貨單采購訂單處于待發(fā)貨狀態(tài),管理員可以預覽送貨單并下載。如圖4-16所示:圖4-16預覽打印送貨單4.2.3供應管理模塊(1)商品上架管理員可以在后臺進行商品的上架操作。需要填寫商品的名稱、分類、圖片、價格、規(guī)格等信息。圖4-17商品上架圖4-18商品上架(2)商品審核管理員在進行商品上架的操作之后,商品處于待審核狀態(tài)。管理員需要進行審核通過和駁回商品的操作,審核通過的商品會在采購平臺出現(xiàn),反之駁回商品則會下在采購平臺下架。圖4-19商品審核通過獲取前端的多選框的值,以及商品狀態(tài),實現(xiàn)批量上架、下架的功能。publicObjectreview(@RequestBodyStringbody){Integerstatus=JacksonUtil.parseInteger(body,"status");List<Integer>ids=JacksonUtil.parseIntegerList(body,"ids");List<MallGoods>goods=adminGoodsService.findByIds(ids);//修改為上架狀態(tài)adminGoodsService.updateStatus(status,goods);returnResponseUtil.ok();}4.2.4采購商模塊采購商可以在采購平臺申請以及登錄操作。(1)采購商申請采購商在采購之前,必須得先進行采購商賬號的申請,需要填寫用戶名、密碼、手機、真實姓名、企業(yè)名稱、企業(yè)規(guī)模、所在部門、企業(yè)地址信息。填寫的時候會校驗信息填寫的準確性,校驗手機號碼,注冊成功之后會返回登錄界面。采購商申請如下圖4-20所示:圖4-20采購商申請圖(2)采購商登錄采購商在申請完賬號之后,填寫賬號、密碼進行登錄,登錄成功之后可以進行采購商品的選購、搜索、自助下單。所圖4-21所示:圖4-21采購商登錄圖(3)搜索商品采購商在導航欄上對關鍵字進行搜索,系統(tǒng)會返回匹配度較高的商品給采購商。如圖4-22所示:圖4-22搜索采購商品為實現(xiàn)通過關鍵字實現(xiàn)商品的快速檢索,項目采用了基于Lucene底層的分布式全文搜索引擎ElasticSearch極大加快了搜索速度。首先需要構建搜索字段以及聚合字段,對返回的結果做分頁以及排序,最終解析結果返回給前端publicSearchResultsearch(SearchRequestsearchRequest){...NativeSearchQueryBuilderqueryBuilder=newNativeSearchQueryBuilder();//通過sourceFilter字段過濾只要我們需要的數(shù)據(jù)queryBuilder.withSourceFilter(newFetchSourceFilter(newString[]{"id","name","skus","goodsSn","price","picUrl"},null));//分頁和排序searchWithPageAndSort(queryBuilder,searchRequest);//基本搜索條件QueryBuilderbasicQuery=buildBasicQuery(searchRequest);queryBuilder.withQuery(basicQuery);//對分類和品牌聚合StringcategoryAggName="categoryAgg";queryBuilder.addAggregation(AggregationBuilders.terms(categoryAggName).field("category3Id"));//查詢,獲取結果AggregatedPage<Goods>result=template.queryForPage(queryBuilder.build(),Goods.class);//解析聚合結果Aggregationsaggs=result.getAggregations();//解析分類聚合List<MallCategory>categories=handleCategoryAgg(aggs.get(categoryAggName));//解析分頁結果longtotal=result.getTotalElements();inttotalPage=result.getTotalPages();List<Goods>items=result.getContent();returnnewSearchResult(total,totalPage,items,categories,brands,specs);}(4)商品加入采購清單采購商選購完產(chǎn)品之后,可以將采購商品加入采購清單。如圖4-23、4-24所示:圖4-23采購商品加入采購清單圖4-24采購清單圖

第5章系統(tǒng)的測試5.1測試目的和意義1、通過系統(tǒng)的功能測試,檢驗需求是否能滿足規(guī)定的需求以及能否達到預期的效果。2、通過性能測試檢驗是否符合采購平臺的健壯性。3、通過界面測試檢驗是否符合人性化的交互效果。5.2測試方法系統(tǒng)采用自下往上的測試方法,先進行模塊的單元測試,將功能模塊集成在一起測試,驗證模塊的正確性以及接口的準確性,接著針對整個系統(tǒng)進行系統(tǒng)測試,上線部署完之后,經(jīng)過驗收測試,最后在軟件的維護階段進行回歸測試,防止產(chǎn)生新的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論