![GZ036 區(qū)塊鏈技術應用賽項賽題第2套-2023年全國職業(yè)院校技能大賽擬設賽項賽題_第1頁](http://file4.renrendoc.com/view/4039813a97a46ac6e6423094df337706/4039813a97a46ac6e6423094df3377061.gif)
![GZ036 區(qū)塊鏈技術應用賽項賽題第2套-2023年全國職業(yè)院校技能大賽擬設賽項賽題_第2頁](http://file4.renrendoc.com/view/4039813a97a46ac6e6423094df337706/4039813a97a46ac6e6423094df3377062.gif)
![GZ036 區(qū)塊鏈技術應用賽項賽題第2套-2023年全國職業(yè)院校技能大賽擬設賽項賽題_第3頁](http://file4.renrendoc.com/view/4039813a97a46ac6e6423094df337706/4039813a97a46ac6e6423094df3377063.gif)
![GZ036 區(qū)塊鏈技術應用賽項賽題第2套-2023年全國職業(yè)院校技能大賽擬設賽項賽題_第4頁](http://file4.renrendoc.com/view/4039813a97a46ac6e6423094df337706/4039813a97a46ac6e6423094df3377064.gif)
![GZ036 區(qū)塊鏈技術應用賽項賽題第2套-2023年全國職業(yè)院校技能大賽擬設賽項賽題_第5頁](http://file4.renrendoc.com/view/4039813a97a46ac6e6423094df337706/4039813a97a46ac6e6423094df3377065.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2023年全國職業(yè)院校技能大賽高職組“區(qū)塊鏈技術應用”賽項賽卷(2卷)任務書參賽隊編號:背景描述在供應鏈金融這個萬億級市場中,區(qū)塊鏈正在快速商業(yè)化落地,助力產業(yè)革新?;趨^(qū)塊鏈的供應鏈金融業(yè)務的理念是:以源自企業(yè)的應收賬款為底層資產,通過區(qū)塊鏈技術實現(xiàn)債券憑證的轉讓拆分。其中,在原始資產上鏈時,通過對應收賬款進行審核校驗,確認貿易關系和身份真實有效,和保證上鏈資產的真實可信。再者,債權憑證可基于供應鏈進行層層拆分與流轉,都可完整追溯到最底層資產,以實現(xiàn)核心企業(yè)和金融機構對供應商的“信用穿透”。某公司規(guī)劃開發(fā)一個區(qū)塊鏈供應鏈金融平臺,包括核心企業(yè)、供應商、銀行等角色,通過智能合約代碼逐步構建區(qū)塊鏈供應鏈金融平臺的基本功能,實現(xiàn)銀行向核心企業(yè)提供授信并發(fā)行數(shù)字憑證,企業(yè)與企業(yè)之間轉讓數(shù)字憑證。此外需要完成區(qū)塊鏈供應鏈金融平臺的前后端,實現(xiàn)基本的業(yè)務邏輯。模塊一:區(qū)塊鏈產品方案設計及系統(tǒng)運維(35分)選手完成本模塊的任務后,將任務中設計結果、運行代碼、運行結果等截圖粘貼至客戶端桌面【區(qū)塊鏈技術應用賽\重命名為工位號\模塊一提交結果.docx】中對應的任務序號下。任務1-1:區(qū)塊鏈產品需求分析與方案設計(10分)本環(huán)節(jié)需要依據(jù)項目背景完成需求分析與方案設計,具體要求如下:1.依據(jù)給定供應鏈金融管理系統(tǒng)的業(yè)務架構圖,對考題進行業(yè)務分析,盡可能多的去考慮一個業(yè)務系統(tǒng)所需要的模塊,使用Visio或思維導圖工具展現(xiàn)本系統(tǒng)的基本設計概念和處理流程,要求分為區(qū)塊鏈供應鏈業(yè)務平臺和支撐平臺兩個部分;(4分)2.根據(jù)供應鏈系統(tǒng)設計,在系統(tǒng)中分別包括用戶和憑證票據(jù)管理功能,在融資憑證上鏈過程中需要包括銀行、核心企業(yè)、供應商公司的基本管理功能。根據(jù)描述,設計區(qū)塊鏈系統(tǒng)的總體功能概覽圖。(3分)3.整合上述設計內容,完善“供應鏈金融管理系統(tǒng)概要設計說明書.doc”,具體工作內容如下:將設計內容根據(jù)說明書中模塊需求進行補充,并完善概要設計說明書中的“需求概要”(1分)完善說明書中接口說明部分內容。(2分)任務1-2:區(qū)塊鏈系統(tǒng)部署與運維(15分)圍繞供應鏈金融區(qū)塊鏈平臺部署與運維需求,進行項目相關系統(tǒng)、節(jié)點以及管理工具的部署工作。通過通過監(jiān)控工具完成對網絡、節(jié)點服務的監(jiān)控。最終利用業(yè)務需求規(guī)范,完成系統(tǒng)日志、網絡參數(shù)、節(jié)點服務等系統(tǒng)結構的維護。1.根據(jù)參數(shù)與端口設置要求,部署區(qū)塊鏈系統(tǒng)并驗證;2.根據(jù)參數(shù)與端口設置要求,部署區(qū)塊鏈網絡管理平臺并驗證;3.基于區(qū)塊鏈系統(tǒng)相關管理平臺,按照任務指南實施系統(tǒng)運維工作并驗證。4.基于區(qū)塊鏈系統(tǒng)相關監(jiān)管工具,按照任務指南對區(qū)塊鏈系統(tǒng)進行監(jiān)管。子任務1-2-1:搭建區(qū)塊鏈系統(tǒng)并驗證(4分)基于給定服務器環(huán)境以及軟件(地址“/root/tools”),使用Docker以默認配置安裝單機4節(jié)點的區(qū)塊鏈系統(tǒng),并完成控制臺工具的部署:完成系統(tǒng)搭建配置與啟動。(1分)使用基于Docker命令查看區(qū)塊鏈系統(tǒng)狀態(tài)。(1分)檢查區(qū)塊鏈系統(tǒng)節(jié)點node0連接狀態(tài)輸出。(1分)配置控制臺,管理相關證書并啟動。(1分)子任務1-2-2:區(qū)塊鏈管理平臺部署與驗證(4分)基于給定服務器環(huán)境以及軟件(地址“/root/tools”),按要求部署區(qū)塊鏈管理平臺,具體工作如下:配置Mysql數(shù)據(jù)庫(1分)配置管理平臺連接區(qū)塊鏈系統(tǒng)(1分)使用命令啟動管理平臺服務(1分)驗證管理平臺啟動情況(1分)子任務1-2-3:區(qū)塊鏈系統(tǒng)節(jié)點運維(3分)基于已完成的區(qū)塊鏈系統(tǒng)與管理平臺搭建工作,開展相關節(jié)點運維工作:生成新節(jié)點(node4),啟動并檢查(1分)修改新節(jié)點配置,并查看節(jié)點的nodeid(1分)將新節(jié)點作為觀察節(jié)點加入group1當中,并檢查是否加入成功(1分)子任務1-2-4:區(qū)塊鏈系統(tǒng)管理平臺運維(4分)基于已部署的區(qū)塊鏈系統(tǒng)管理平臺,進行系統(tǒng)相關運維工作:基于管理平臺功能頁面,添加新主機(2分)基于管理平臺功能頁面,修改新節(jié)點(node4)節(jié)點狀態(tài),并監(jiān)控。(2分)任務1-3:區(qū)塊鏈系統(tǒng)測試(10分)設計對區(qū)塊鏈系統(tǒng)的測試流程;結合實際業(yè)務需求,調用部署的智能合約中進行系統(tǒng)測試、性能測試等;根據(jù)業(yè)務需求,分析并且修復給定智能合約中的安全漏洞。利用模擬業(yè)務和測試工具來完成對區(qū)塊鏈系統(tǒng)服務數(shù)據(jù)的測試。1.基于WeBASE的部署腳本完成WeBASE環(huán)境搭建以及搭建結果驗證,最后將執(zhí)行結果截圖保存。(3分)實現(xiàn)WeBASE平臺部署。(1分)實現(xiàn)webase.sgin功能啟動情況驗證。(1分)webase-node-mgr進程啟動情況驗證和瀏覽器驗證。(1分)2.智能合約安全漏洞測試。(7分)有如下智能合約:pragmasolidity^0.7.6;contractTimeLock{mapping(address=>uint)publicbalances;mapping(address=>uint)publiclockTime;functiondeposit()externalpayable{balances[msg.sender]+=msg.value;lockTime[msg.sender]=block.timestamp+1weeks;}functionincreaseLockTime(uint_secondsToIncrease)public{lockTime[msg.sender]+=_secondsToIncrease;}functionwithdraw()public{require(balances[msg.sender]>0,"Insufficientfunds");require(block.timestamp>lockTime[msg.sender],"Locktimenotexpired");uintamount=balances[msg.sender];balances[msg.sender]=0;(boolsent,)=msg.sender.call{value:amount}("");require(sent,"FailedtosendEther");}}contractAttack{TimeLocktimeLock;constructor(TimeLock_timeLock){timeLock=TimeLock(_timeLock);}fallback()externalpayable{}functionattack()publicpayable{timeLock.deposit{value:msg.value}();timeLock.increaseLockTime(type(uint).max+1-timeLock.lockTime(address(this)));timeLock.withdraw();}}如上代碼主要實現(xiàn)功能為規(guī)定了轉賬凍結時間,在凍結時間內用戶不能提取存款的金額。分析智能合約中存在問題,并說明危害。(2分)根據(jù)truffle工具中的代碼文件,編寫測試用例,復現(xiàn)智能合約中存在的漏洞。(3分)創(chuàng)建新的智能合約,修復其中問題,說明修復內容并測試。(2分)
模塊二:智能合約開發(fā)與測試(30分)選手完成本模塊的任務后,將任務中設計結果、運行代碼、運行結果等截圖粘貼至客戶端桌面【區(qū)塊鏈技術應用賽\重命名為工位號\模塊二提交結果.docx】中對應的任務序號下。任務2-1:智能合約設計(5分)根據(jù)區(qū)塊鏈供應鏈金融應用需求分析和方案設計文檔的描述,編寫該區(qū)塊鏈產品的智能合約功能需求文檔,以及設計該智能合約UML圖,具體要求如下:1.編寫區(qū)塊鏈供應鏈金融智能合約功能需求文檔(2分)根據(jù)區(qū)塊鏈供應鏈金融產品項目背景和需求分析,編寫該區(qū)塊鏈供應鏈金融產品的智能合約功能需求文檔;2.完成區(qū)塊鏈供應鏈金融智能合約的設計圖(3分)設計區(qū)塊鏈供應鏈金融智能合約接口,畫出區(qū)塊鏈供應鏈金融智能合約的角色UML用例圖,以及畫出區(qū)塊鏈供應鏈金融各角色智能合約關系的時序圖。任務2-2:智能合約開發(fā)(20分)使用Solidity語言完成智能合約開發(fā)、部署和調用,要求如下:1.供應鏈金融實體信息編碼(6分)
(1)編寫供應鏈金融智能合約的實體接口,完成實體通用數(shù)據(jù)的初始化,實現(xiàn)企業(yè)和票據(jù)實體信息上鏈的功能;(2分)表SupplyChain實體說明名稱類型說明companyNamestring公司名稱companyAddressaddress公司地址creditAssetuint信用資產acceptReceiptIndexuint[]接收的憑證sendReceiptIndexuint[]發(fā)送的憑證senderAddressaddress發(fā)送票據(jù)的地址accepterAddressaddress接收票據(jù)的地址receiptTypeuint8憑證類型transferTypeuint8交易類型amountuint交易數(shù)量
//公司信息結構體structCompany{//①公司名稱//②公司地址//③信用資產//④接收的憑證//⑤發(fā)送的憑證}//數(shù)字發(fā)票收據(jù)信息structReceipt{//⑥發(fā)送票據(jù)的地址//⑦接收票據(jù)的地址//⑧憑證類型//⑨交易類型//⑩交易數(shù)量}(2)編寫企業(yè)上鏈信息接口,實現(xiàn)供應鏈金融的企業(yè)信息上鏈;(2分)functionaddCompany(stringname,addresscompanyAddress)returns(bool){//①實例化公司//②添加公司地址//③將實例化的公司添加到公司映射//④返回添加成功標識}(3)基于給定的智能合約代碼以及注釋,完成銀行向企業(yè)交易的接口函數(shù);(2分)functionbankToCompanyReceipt(addresssenderAddress,addressaccepterAddress,uintamount,uint8receiptType)returns(uint){①判斷接收地址存在②實例化銀行③實例化公司if(keccak256(bank.bankName)==keccak256("")){return404001;}//確認公司存在if(keccak256(panyName)==④){return404002;}if(bank.creditAsset<amount){return500001;}2.供應鏈金融公司與公司接口編碼(6分)
(1)編寫公司與公司之間進行交易的歷史存證上鏈接口,實現(xiàn)公司與公司之間的交易功能;(2分)functioncompanyToCompanyReceipt(①,addressaccepterAddress,uintamount,uint8receiptType)returns(uint){//②接收地址判斷CompanymemorysenderCompany=companyMap[③];Companymemory④=companyMap[accepterAddress];//確認發(fā)送公司存在if(keccak256(senderCompany.⑤)==keccak256("")){return404001;}//確認接收公司存在if(keccak256(accepterCpanyName)==⑥){return404002;}//如果存證接收的公司資產小于存證數(shù)額,那么就不能交易發(fā)送存證if(accepterCompany.creditAsset⑦⑧){return500001;}
(2)編寫創(chuàng)建存證的接口,實現(xiàn)創(chuàng)建存證的功能;(2分)ReceiptmemorynewReceipt=Receipt(①,accepterAddress,receiptType,2,amount);receiptIndex+=1;//記錄存證(存證Map,公司Map對應地址的發(fā)送和接收存證列表)receiptMap[receiptIndex]=②;companyMap[③].sendReceiptIndex.push(receiptIndex);companyMap[accepterAddress].acceptReceiptIndex.push(④);(3)編寫交易金額數(shù)量變化的接口,實現(xiàn)憑證交易雙方資金的變化功能;(2分)companyMap[①].creditAsset②amount;companyMap[③].creditAsset④amount;return200;}3.供應鏈金融公司與銀行交易的接口編碼(4分)
(1)編寫公司與銀行之間進行交易的歷史存證上鏈接口,實現(xiàn)公司與銀行之間的交易功能;(2分)functioncompanyToBankReceipt(addresssenderAddress,①,uintamount,uint8receiptType)returns(uint){②Bankmemorybank=bankMap[senderAddress];CompanymemoryaccepterCompany=companyMap[③];//確認發(fā)送公司存在if(keccak256(bank.bankName)==④){return404001;}//確認接收公司存在if(keccak256(accepterCpanyName)==keccak256("")){return404002;}//如果存證接收的公司資產小于存證數(shù)額,那么就不能交易發(fā)送存證if(accepterCompany.creditAsset<amount){return500001;}
(2)編寫創(chuàng)建存證的接口,實現(xiàn)創(chuàng)建存證的功能;(1分)//創(chuàng)建存證ReceiptmemorynewReceipt=Receipt(senderAddress,accepterAddress,①,3,amount);receiptIndex②1;receiptMap[③]=newReceipt;bankMap[senderAddress].sendReceiptIndex.push(receiptIndex);companyMap[accepterAddress].④;(3)編寫交易金額數(shù)量變化的接口,實現(xiàn)憑證交易雙方資金的變化功能;(1分)bankMap[senderAddress].①②amount;companyMap[accepterAddress].③④amount;return200;}
合約編譯、部署和調用(4分)(1)解決代碼錯誤和警告,正確編譯并部署合約,成功獲取部署的合約地址和abi。(1分)(2)調用食品溯源智能合約的接口,完整驗證業(yè)務流程。(3分)
任務2-3:智能合約測試(5分)編寫智能合約單元測試代碼并完成合約功能測試、性能測試,具體要求如下:1.配置區(qū)塊鏈網絡(1分)啟動Ganache軟件,創(chuàng)建新的Wordspace,配置對外訪問的RPC接口為7545,配置項目的truffle-config.js實現(xiàn)與新建Workspace的連接。2.補充給定基礎代碼中注釋提示的部署邏輯(1分)基于VSCODE加載的Truffle項目,補全位于test文件夾中HelloWorld.js文件預操作的方法。在測試文件中添加預定義的方法(在其他方法啟動前使用)。3.補充代碼中注釋提示的測試邏輯(1分)基于VSCODE加載的Truffle項目,補全位于test文件夾中HelloWorld.js文件,添加測試用例,測試智能合約的get方法。4.測試hello.get()方法(1分)基于VSCODE加載的Truffle項目,補全位于test文件夾中HelloWorld.js文件,添加測試用例,測試智能合約的hello.get()方法。5.測試.should.equal進行對比判斷(1分)基于VSCODE加載的Truffle項目,補全位于test文件夾中HelloWorld.js文件,添加測試用例,測試智能合約的equal字符串比較方法。
模塊三:區(qū)塊鏈應用系統(tǒng)開發(fā)(30分)選手完成本模塊的任務后,將任務中設計結果、運行代碼、運行結果等截圖粘貼至客戶端桌面【區(qū)塊鏈技術應用賽\重命名為工位號\模塊三提交結果.docx】中對應的任務序號下。任務3-1:區(qū)塊鏈應用前端功能開發(fā)(10分)1.請基于前端系統(tǒng)的開發(fā)模板,在注冊組件Register.vue文件中添加對應的注冊邏輯代碼,實現(xiàn)對后端系統(tǒng)的注冊功能,并測試功能完整性(3分):本題目的具體要求如下:界面有明確的注冊相關提示語需要填寫的項有組織名稱、區(qū)塊鏈地址、組織類型頁面需要有“返回”按鈕,可以跳轉到登錄頁面點擊“注冊”按鈕時需要檢查區(qū)塊鏈地址是否已輸入注冊成功后跳轉登錄頁面Register.vue:代碼片段1:<el-row><el-col:span="16":offset="4"><el-formlabel-width="100px"><h3>選手填寫部分</h3><el-form-itemlabel="組織名稱:"><el-inputtype="primary"v-model="選手填寫部分"></el-input></el-form-item><el-form-itemlabel="區(qū)塊鏈地址:"><el-inputtype="primary"v-model="選手填寫部分"></el-input></el-form-item><el-form-itemlabel="組織類型:"><el-radio-groupv-model="orgType"><el-radio:label="1">公司</el-radio><el-radio:label="2">銀行</el-radio></el-radio-group></el-form-item></el-form></el-col></el-row><el-rowstyle="padding-bottom:20px"><el-buttontype="primary"選手填寫部分>注冊</el-button><el-buttontype="primary"選手填寫部分>返回</el-button></el-row>代碼片段2:register:function(){if(this.address==""){alert(選手填寫部分)}else{letpostData={orgType:選手填寫部分,username:選手填寫部分,address:選手填寫部分}//和后端交互選手填寫部分}},代碼片段3:goback:function(){Type=''this.username=''this.address=''選手填寫部分}2.請基于前端系統(tǒng)的開發(fā)模板,在登錄組件Login.vue文件中添加對應的登錄邏輯代碼,實現(xiàn)對后端系統(tǒng)的登錄功能,并測試功能完整性(3分):本題目的具體要求如下:界面有明確的登錄相關提示語需要填寫的項有用戶地址、組織類型頁面需要有“注冊”按鈕,可以跳轉注冊頁面點擊“登錄”按鈕時需要檢查各個表項是否已輸入登錄成功后跳轉首頁,路徑為“/home”Login.vue:代碼片段1:<el-col:span="16":offset="4"><el-formlabel-width="80px"><h1>供應鏈金融應用</h1><h3>選手填寫部分</h3><el-form-itemlabel="用戶地址:"><el-inputtype="primary"v-model="選手填寫部分"></el-input></el-form-item><el-form-itemlabel="組織類型:"><el-radio-groupv-model="選手填寫部分"><el-radio:label="1">公司</el-radio><el-radio:label="2">銀行</el-radio></el-radio-group></el-form-item></el-form></el-col></el-row><el-rowstyle="margin-bottom:20px"><el-buttontype="primary"選手填寫部分>登錄</el-button><el-buttontype="primary"選手填寫部分>注冊</el-button></el-row></el-row>代碼片段2:login:function(){if(this.address==""){alert("選手填寫部分")}elseif(Type==""){alert("選手填寫部分")}else{letpostData={orgType:選手填寫部分,address:選手填寫部分}//與后端交互選手填寫部分}},代碼片段3:register:function(){選手填寫部分},3.請基于前端系統(tǒng)的開發(fā)模板,在公司組件Company.vue文件中添加對應的邏輯代碼,實現(xiàn)對后端系統(tǒng)的公司相關業(yè)務功能,并測試功能完整性(2分):Company.vue:代碼片段1:<el-row><el-col:span="20":offset="2"><el-table:data="companyList"style="font-size:20px"><el-table-columnprop="address"label="賬戶地址"></el-table-column><el-table-columnprop="name"label="公司名稱"></el-table-column><el-table-columnprop="amount"label="賬戶總額"></el-table-column><el-table-columnlabel="查看詳情"><templateslot-scope="scope"><el-buttontype="primary"@click="選手填寫部分">查詢</el-button></template></el-table-column><el-table-columnprop="receiptType"label="轉賬"><templateslot-scope="scope"><el-buttontype="primary"@click="transfer(scope.row)">操作</el-button></template></el-table-column></el-table></el-col></el-row><el-row>代碼片段2:<el-dialogtitle="公司詳情":visible.sync="dialogVisible"><el-formlabel-width="100px"><el-form-itemlabel="賬戶地址:">{{選手填寫部分}}</el-form-item><el-form-itemlabel="公司名稱:">{{選手填寫部分}}</el-form-item><el-form-itemlabel="賬戶總額:">{{選手填寫部分}}</el-form-item></el-form>代碼片段3:detail:function(queryAddress){this.dialogVisible=trueletaddress=選手填寫部分this.axios.get(`選手填寫部分?address=${address}&queryAddress=${queryAddress}`).then((response)=>{console.log(response)if(response.data.code==200){letinAddress=panyVO.address;letinName=選手填寫部分;letinAmount=panyVO.amount;panyDetail={address:選手填寫部分,name:選手填寫部分,amount:選手填寫部分,senderReceiptList:response.data.data.senderReceiptList,accepterReceiptList:response.data.data.accepterReceiptList}}else{alert(`請求內容有誤,${response.data.data}`)}})},4.請基于前端系統(tǒng)的開發(fā)模板,在銀行組件Bank.vue文件中添加對應的邏輯代碼,實現(xiàn)對后端系統(tǒng)的銀行相關業(yè)務功能,并測試功能完整性(2分):Bank.vue:代碼片段1:<el-row><el-dialogtitle="交易(發(fā)送憑證)頁":visible.sync="transDialogVisible"width="30%"><el-formlabel-width="100px"><el-form-itemlabel="發(fā)送賬戶地址:">{{選手填寫部分}}</el-form-item><el-form-itemlabel="接收賬戶地址:">{{選手填寫部分}}</el-form-item><el-form-itemlabel="交易額:"><el-col:span="16":offset="4"><el-inputtype="primary"v-model="選手填寫部分"></el-input></el-col></el-form-item><el-form-itemlabel="憑證類型:"><el-selectv-model="選手填寫部分"placeholder="請選擇"><el-optionv-for="iteminoptions":key="item.value":label="item.label":value="item.value"></el-option></el-select></el-form-item></el-form><el-row><el-buttontype="primary"size="medium"@click="選手填寫部分">確定</el-button></el-row></el-dialog></el-row>代碼片段2:executeTransaction:function(){letfuncName="companyToBankReceipt";if(this.transDetail.amount==選手填寫部分){alert('交易額不能為空!')return}if(this.$cookies.get('orgType')==選手填寫部分){alert('銀行不能給銀行發(fā)送憑證!')return}if(選手填寫部分){alert("憑證發(fā)送賬戶和接收賬戶不能相一致!")return}this.axios.post(`/finance/transaction/${funcName}`,選手填寫部分).then((response)=>{if(response.data.code==200){alert('憑證發(fā)送成功')this.query()this.transDialogVisible=false}else{alert(`憑證發(fā)送失敗,${response.data.data}`)}})},任務3-2:區(qū)塊鏈應用后端功能開發(fā)(20分)1.開發(fā)區(qū)塊鏈供應鏈金融應用中后端系統(tǒng)中用戶功能模塊對應的用戶注冊功能,根據(jù)前后代碼補充最合適的代碼,并測試功能完整性。(4分)OrgServiceImpl.java:/***注冊Service*RegisterBOregisterBO**/@OverridepublicResult<String>register(RegisterBOregisterBO){if(StrUtil.isEmpty(選手填寫部分)||StrUtil.isEmpty(選手填寫部分)||registerBO.getOrgType()==選手填寫部分){returnResult.error(ResultVO.PARAM_EMPTY);}ListfuncParam=newArrayList();funcParam.add(選手填寫部分);funcParam.add(選手填寫部分);if(registerBO.getOrgType()==2){funcParam.add(BigInteger.valueOf(1000));}StringfuncName;if(registerBO.getOrgType()==2){funcName=選手填寫部分;}else{funcName=選手填寫部分;}String_result=weBASEUtils.funcPost(OWNER_ADDRESS,funcName,funcParam);JSONObject_resultJson=JSONUtil.parseObj(_result);if(_resultJson.containsKey("statusOK")==false||_resultJson.getBool("statusOK")!=true){//_resultJson.getInt("code")>0returnResult.error(ResultVO.選手填寫部分);}returnResult.success("ok");}2.開發(fā)區(qū)塊鏈供應鏈金融應用中后端系統(tǒng)中用戶功能模塊對應的用戶登錄功能,根據(jù)前后代碼補充最合適的代碼,并測試功能完整性。(4分)OrgServiceImpl.java:/***登錄Service*LoginBOloginBO**/@OverridepublicResult<String>login(@RequestBodyLoginBOloginBO){if(StrUtil.isEmpty(loginBO.getAddress())){returnResult.error(ResultVO.PARAM_EMPTY);}ListfuncParam=newArrayList();funcParam.add(選手填寫部分);StringfuncName;if(loginBO.getOrgType()==2){funcName=選手填寫部分;}else{funcName=選手填寫部分;}String_result=weBASEUtils.funcPost(選手填寫部分,funcName,funcParam);JSONArray_resultJson=JSONUtil.parseArray(_result);if(StrUtil.isEmpty(_resultJson.get(0).toString())){returnResult.error(ResultVO.選手填寫部分);}returnResult.success("ok");}3.開發(fā)區(qū)塊鏈供應鏈金融應用的后端系統(tǒng)中查詢功能模塊對應的查詢所有公司信息功能,根據(jù)前后代碼補充最合適的代碼,并測試功能完整性。(4分)QueryServiceImpl.java:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農村房屋建房合同范例
- 保姆和家政合同范本
- 兒童樂園實施合同范本
- 前期工程門窗合同范本
- 公地共用合同范本
- 傳媒主播合同范本
- 農業(yè)抵押合同范本
- 義診合作協(xié)議合同范本
- 2025年標準鍵盤行業(yè)深度研究分析報告
- 寫結婚合同范例
- 《行政倫理學教程(第四版)》課件 第7、8章?行政人格、行政組織倫理
- 2024年江蘇蘇??毓杉瘓F有限公司招聘筆試沖刺題(帶答案解析)
- 2023年4月自考00504藝術概論試題及答案含解析
- 美麗的大自然(教案)2023-2024學年美術一年級下冊
- 2024年低壓電工考試題庫(試題含答案)
- 成都特色民俗課件
- 地質勘探行業(yè)分析
- 花城版音樂四下-第四課-認知音樂節(jié)奏(教案)
- 寵物醫(yī)院員工手冊
- 2024年高考英語讀后續(xù)寫高分寶典專題08讀后續(xù)寫肢體動作描寫積累1(詞-句-文)講義
- 商業(yè)與公積金貸款政策
評論
0/150
提交評論