金融供应链(模块三)
区块链技术应用--------金融供应链
背景描述
在供应链金融这个万亿级市场中,区块链正在快速商业化落地,助力产业革新。基于区块链的供应链金融业务的理念是:以源自企业的应收账款为底层资产,通过区块链技术实现债券凭证的转让拆分。其中,在原始资产上链时,通过对应收账款进行审核校验,确认贸易关系和身份真实有效,和保证上链资产的真实可信。再者,债权凭证可基于供应链进行层层拆分与流转,都可完整追溯到最底层资产,以实现核心企业和金融机构对供应商的“信用穿透”。
某公司规划开发一个区块链供应链金融平台,包括核心企业、供应商、银行等角色,通过智能合约代码逐步构建区块链供应链金融平台的基本功能,实现银行向核心企业提供授信并发行数字凭证,企业与企业之间转让数字凭证。此外需要完成区块链供应链金融平台的前后端,实现基本的业务逻辑。
模块三:区块链应用系统开发(30分)
任务3-1:区块链应用前端功能开发
请依据前端系统的开发 模板 在注册组件 Register.vue 文件中增补相应的 登录模块代码 实现 对象系统登录的功能 并通过完善的功能测试
本题目的具体要求如下:
(1) 界面有明确的注册相关提示语
(2) 需要填写的部分有组织名称、区块链地址、组织类型
(3) 页面需要有“返回”按钮,可以跳转到登录页面
(4) 点击“注册”按钮时需要检查区块链地址是否已输入
(5) 注册成功后跳转登录页面
Register.vue:
代码片段1:
<el-row>
<el-col :span="16" :offset="4">
<el-form label-width="100px">
<h3>选手填写部分</h3>
<el-form-item label="组织名称:">
<el-input type="primary" v-model="选手填写部分"></el-input>
</el-form-item>
<el-form-item label="区块链地址:">
<el-input type="primary" v-model="选手填写部分"></el-input>
</el-form-item>
<el-form-item label="组织类型:">
<el-radio-group v-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-row style="padding-bottom:20px">
<el-button type="primary" 选手填写部分>注册</el-button>
<el-button type="primary" 选手填写部分>返回</el-button>
</el-row>
代码片段2:
register: function () {
if (this.address == "") {
alert(选手填写部分)
}else {
let postData = {
orgType: 选手填写部分,
username: 选手填写部分,
address:选手填写部分
}
// 和后端交互
选手填写部分
}
},
代码片段3:
goback: function () {
this.orgType = ''
this.username = ''
this.address = ''
选手填写部分
}
代码解释



2.请基于前端系统的开发模板,在登录组件Login.vue文件中添加对应的登录逻辑代码,实现对后端系统的登录功能,并测试功能完整性(3分):
本题目的具体要求如下:
(1) 界面有明确的登录相关提示语
(2) 需要填写的项有用户地址、组织类型
(3) 页面需要有“注册”按钮,可以跳转注册页面
(4) 点击“登录”按钮时需要检查各个表项是否已输入
(5) 登录成功后跳转首页,路径为“/home”
Login.vue:
代码片段1:
<el-col :span="16" :offset="4">
<el-form label-width="80px">
<h1>供应链金融应用</h1>
<h3>选手填写部分</h3>
<el-form-item label="用户地址:">
<el-input type="primary" v-model="选手填写部分"></el-input>
</el-form-item>
<el-form-item label="组织类型:">
<el-radio-group v-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-row style="margin-bottom: 20px">
<el-button type="primary" 选手填写部分>登录</el-button>
<el-button type="primary" 选手填写部分>注册</el-button>
</el-row> </el-row>
代码片段2:
login: function () {
if (this.address == "") {
alert("选手填写部分")
}else if (this.orgType == "") {
alert("选手填写部分")
}else {
let postData = {
orgType: 选手填写部分,
address: 选手填写部分
}
// 与后端交互
选手填写部分
}
},
代码片段3:
register: function () {
选手填写部分
},
代码解释




3.请基于前端系统的开发模板,在公司组件Company.vue文件中添加对应的逻辑代码,实现对后端系统的公司相关业务功能,并测试功能完整性(2分):
Company.vue:
代码片段1:
<el-row>
<el-col :span="20" :offset="2">
<el-table :data="companyList" style="font-size: 20px">
<el-table-column prop="address" label="账户地址"></el-table-column>
<el-table-column prop="name" label="公司名称"></el-table-column>
<el-table-column prop="amount" label="账户总额"></el-table-column>
<el-table-column label="查看详情">
<template slot-scope="scope">
<el-button type="primary" @click="选手填写部分">查询</el-button>
</template>
</el-table-column>
<el-table-column prop="receiptType" label="转账">
<template slot-scope="scope">
<el-button type="primary" @click="transfer(scope.row)">操作</el-button>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
<el-row>
代码片段2:
<el-dialog title="公司详情" :visible.sync="dialogVisible">
<el-form label-width="100px">
<el-form-item label="账户地址:">
{{选手填写部分 }}
</el-form-item>
<el-form-item label="公司名称:">
{{ 选手填写部分 }}
</el-form-item>
<el-form-item label="账户总额:">
{{ 选手填写部分 }}
</el-form-item>
</el-form>
代码片段3:
detail: function (queryAddress) {
this.dialogVisible = true
let address = 选手填写部分
this.axios.get(`选手填写部分?address=${address}&queryAddress=${queryAddress}`)
.then((response) => {
console.log(response)
if (response.data.code == 200) {
let inAddress = response.data.data.companyVO.address;
let inName = 选手填写部分;
let inAmount = response.data.data.companyVO.amount;
this.companyDetail = {
address: 选手填写部分,
name: 选手填写部分,
amount: 选手填写部分,
senderReceiptList: response.data.data.senderReceiptList,
accepterReceiptList: response.data.data.accepterReceiptList
}
} else {
alert(`请求内容有误, ${response.data.data}`)
}
})
},
代码解释



4.请基于前端系统的开发模板,在银行组件Bank.vue文件中添加对应的逻辑代码,实现对后端系统的银行相关业务功能,并测试功能完整性(2分):
Bank.vue:
代码片段1:
<el-row>
<el-dialog title="交易(发送凭证)页" :visible.sync="transDialogVisible" width="30%">
<el-form label-width="100px">
<el-form-item label="发送账户地址:">
{{选手填写部分}}
</el-form-item>
<el-form-item label="接收账户地址:">
{{选手填写部分}}
</el-form-item>
<el-form-item label="交易额:">
<el-col :span="16" :offset="4">
<el-input type="primary" v-model="选手填写部分"></el-input>
</el-col>
</el-form-item>
<el-form-item label="凭证类型:">
<el-select v-model="选手填写部分" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-form>
<el-row>
<el-button type="primary" size="medium" @click="选手填写部分">确定</el-button>
</el-row>
</el-dialog>
</el-row>
代码片段2:
executeTransaction: function() {
let funcName = "companyToBankReceipt";
if (this.transDetail.amount ==选手填写部分) {
alert('交易额不能为空!')
return
}
if (this.$cookies.get('orgType') == 选手填写部分) {
alert('银行不能给银行发送凭证!')
return
}
if (选手填写部分) {
alert("凭证发送账户和接收账户不能相一致!")
return
}
this.axios.post(`/finance/transaction/${funcName}`, 选手填写部分).then((response) => {
if (response.data.code == 200) {
alert('凭证发送成功')
this.query()
this.transDialogVisible = false
}else {
alert(`凭证发送失败, ${response.data.data}`)
}
})
},
代码解释



任务3-2:区块链应用后端功能开发
1.开发区块链供应链金融应用后端系统中用户功能模块对应的用户注册功能,根据前后代码补充最合适的代码,并测试功能完整性。(4分)
OrgServiceImpl.java:
/** * 注册Service
* RegisterBO registerBO
* */
@Override
public Result<String> register(RegisterBO registerBO) {
if (StrUtil.isEmpty(选手填写部分) ||
StrUtil.isEmpty(选手填写部分) ||
registerBO.getOrgType() == 选手填写部分
) {
return Result.error(ResultVO.PARAM_EMPTY);
}
List funcParam = new ArrayList();
funcParam.add(选手填写部分);
funcParam.add(选手填写部分);
if(registerBO.getOrgType() == 2){
funcParam.add(BigInteger.valueOf(1000));
}
String funcName;
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") > 0
return Result.error(ResultVO.选手填写部分);
}
return Result.success("ok");
}
代码解释


2.开发区块链供应链金融应用中后端系统中用户功能模块对应的用户登录功能,根据前后代码补充最合适的代码,并测试功能完整性。(4分)
OrgServiceImpl.java:
/** * 登录Service
* LoginBO loginBO
**/
@Override
public Result<String> login(@RequestBody LoginBO loginBO) {
if (StrUtil.isEmpty(loginBO.getAddress())
) {
return Result.error(ResultVO.PARAM_EMPTY);
}
List funcParam = new ArrayList();
funcParam.add(选手填写部分);
String funcName;
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())){
return Result.error(ResultVO.选手填写部分);
}
return Result.success("ok");
}
代码解释

3.开发区块链供应链金融应用开发区域中,查询功能模块对应的部分实现了获取完整的企业信息数据集这一操作。为确保该系统的稳定运行和数据安全性的严格验证过程,根据前期编码,补充最为合适的编码,并实施了这一测试。
QueryServiceImpl.java:
/** * 获取所有公司数据,不包含存证详细信息
* */
@Override
public Result listCompany(String userAddress){
String _result = weBASEUtils.funcPost(userAddress,"getAllCompanyAddress",new ArrayList());
try {
JSONArray respArray = 选手填写部分;
String a = respArray.get(0).toString();
JSONArray addressArray = 选手填写部分;
List<CompanyVO> companyList = new ArrayList<>();
for(Object obj: addressArray) {
CompanyVO companyVO = 选手填写部分;
companyList.add(companyVO);
}
return Result.success(选手填写部分);
}catch (Exception e) {
ResultVO resultVO = ResultVO.CONTRACT_ERROR;
resultVO.setData(选手填写部分);
return Result.error(选手填写部分);
}
}
代码解释

4.开发区块链供应链金融应用的后端系统中查询功能模块对应的查询银行凭证列表功能根据前后代码补充最合适的代码,并测试功能完整性。(4分)
QueryServiceImpl.java:
/** * 获取包括银行详情,银行发送凭证列表,银行接收凭证列表
* */
@Override
public Result getBankEntity(String userAddress, String queryAddress){
BankVO bankVO = 选手填写部分;
List<ReceiptVO> senderReceiptList = 选手填写部分;
List<ReceiptVO> accepterReceiptList = 选手填写部分;
BankEntityVO bankEntityVO = new BankEntityVO();
bankEntityVO.setBankVO(选手填写部分);
bankEntityVO.setSenderReceiptList(选手填写部分);
bankEntityVO.setAccepterReceiptList(选手填写部分);
return Result.success(bankEntityVO);
}
代码解释

该开发任务涉及基于区块链技术构建供应链金融系统的核心模块功能。针对现有银行与公司的交易系统中交易功能模块对应的银行间公司交易凭证功能进行补充和完善,以确保系统运行的稳定性和安全性。根据当前代码基础补充最合适的代码并完成功能性测试工作(分数:分)
TransactionServiceImpl.java:
/** * 公司向银行发送凭证(银行转账给公司)
* */
public Result<String> bankToCompanyReceipt(TransactionBO transactionBO) {
选手填写部分;
}
代码解释

在开发区块链供应链金融应用中涉及的核心标准包括交易功能模块对应的功能设计以及特别是针对公司与向公司之间的交易凭证功能进行整合优化以确保前后代码之间实现最合适的兼容性并并且保证系统的功能完整性稳定运行
TransactionServiceImpl.java:
/** * 公司向公司的凭证发送
* */
public Result<String> companyToCompanyReceipt(TransactionBO transactionBO) {
选手填写部分;
}
代码解释

