前端整合
投资
pages/lend/_id.vue
代码语言:javascript复制 //投资
commitInvest() {
//校验用户是否登录
let userInfo = cookie.get('userInfo')
// console.log(typeof userInfo)
// console.log(!userInfo) //true
if (!userInfo) {
window.location.href = '/login'
return
}
//校验当前用户是否是投资人
let userInfoObj = JSON.parse(userInfo)
if (userInfoObj.userType == 2) {
//借款人
this.$message.error('借款人无法投资')
return
}
console.log(this.lend.investAmount)
console.log(this.invest.investAmount)
console.log(this.lend.amount)
//判断标的是否超卖:标的已投金额 本次投资金额 > 标的总金额
if (
this.lend.investAmount Number(this.invest.investAmount) >
this.lend.amount
) {
this.$message.error('标的可投资金额不足')
return
}
//是否是100的整数倍
// console.log(this.invest.investAmount)
// console.log(Number(this.invest.investAmount))
// console.log(typeof Number(this.invest.investAmount))
// return
if (
Number(this.invest.investAmount) === 0 ||
this.invest.investAmount % this.lend.lowestAmount != 0
) {
this.$message.error(`投资金额必须是${this.lend.lowestAmount}的整数倍`)
return
}
//余额的判断
if (this.invest.investAmount > this.account) {
this.$message.error('余额不足,请充值')
return
}
//数据提交
this.$alert(
'<div style="size: 18px;color: red;">您即将前往汇付宝确认标的</div>',
'前往汇付宝资金托管平台',
{
dangerouslyUseHTMLString: true,
confirmButtonText: '立即前往',
callback: (action) => {
console.log('action', action)
if (action === 'confirm') {
this.invest.lendId = this.lend.id
this.$axios
.$post('/api/core/lendItem/auth/commitInvest', this.invest)
.then((response) => {
// console.log(response.data.formStr)
// debugger
document.write(response.data.formStr)
})
}
},
}
)
}
定义回调接口
1、controller
LendItemController中创建回调方法
代码语言:javascript复制@ApiOperation("会员投资异步回调")
@PostMapping("/notify")
public String notify(HttpServletRequest request) {
Map<String, Object> paramMap = RequestHelper.switchMap(request.getParameterMap());
log.info("用户投资异步回调:" JSON.toJSONString(paramMap));
//校验签名 P2pInvestNotifyVo
if(RequestHelper.isSignEquals(paramMap)) {
if("0001".equals(paramMap.get("resultCode"))) {
lendItemService.notify(paramMap);
} else {
log.info("用户投资异步回调失败:" JSON.toJSONString(paramMap));
return "fail";
}
} else {
log.info("用户投资异步回调签名错误:" JSON.toJSONString(paramMap));
return "fail";
}
return "success";
}
2、Service
实现回调的业务
接口:LendItemService
代码语言:javascript复制void notify(Map<String, Object> paramMap);
实现:LendItemServiceImpl
代码语言:javascript复制@Resource
private TransFlowService transFlowService;
@Resource
private UserAccountMapper userAccountMapper;
@Transactional(rollbackFor = Exception.class)
@Override
public void notify(Map<String, Object> paramMap) {
log.info("投标成功");
//获取投资编号
String agentBillNo = (String)paramMap.get("agentBillNo");
boolean result = transFlowService.isSaveTransFlow(agentBillNo);
if(result){
log.warn("幂等性返回");
return;
}
//获取用户的绑定协议号
String bindCode = (String)paramMap.get("voteBindCode");
String voteAmt = (String)paramMap.get("voteAmt");
//修改商户系统中的用户账户金额:余额、冻结金额
userAccountMapper.updateAccount(bindCode, new BigDecimal("-" voteAmt), new BigDecimal(voteAmt));
//修改投资记录的投资状态改为已支付
LendItem lendItem = this.getByLendItemNo(agentBillNo);
lendItem.setStatus(1);//已支付
baseMapper.updateById(lendItem);
//修改标的信息:投资人数、已投金额
Long lendId = lendItem.getLendId();
Lend lend = lendMapper.selectById(lendId);
lend.setInvestNum(lend.getInvestNum() 1);
lend.setInvestAmount(lend.getInvestAmount().add(lendItem.getInvestAmount()));
lendMapper.updateById(lend);
//新增交易流水
TransFlowBO transFlowBO = new TransFlowBO(
agentBillNo,
bindCode,
new BigDecimal(voteAmt),
TransTypeEnum.INVEST_LOCK,
"投资项目编号:" lend.getLendNo() ",项目名称:" lend.getTitle());
transFlowService.saveTransFlow(transFlowBO);
}
3、辅助方法
LendItemServiceImpl
private LendItem getByLendItemNo(String lendItemNo) { QueryWrapper<LendItem> queryWrapper = new QueryWrapper(); queryWrapper.eq("lend_item_no", lendItemNo); return baseMapper.selectOne(queryWrapper); }
上篇链接:
微服务项目:尚融宝(52)(核心业务流程:投标(3))_一个风轻云淡的博客-CSDN博客
https://blog.csdn.net/m0_62436868/article/details/126984370?spm=1001.2014.3001.5501
今日分享
一、计算机系统的基本组成
1、一个完整的计算机系统都由硬件系统和软件系统组成。
2、硬件是指组成一台计算机的各种物理装置,包括运算器、控制器、存储器、输入设备和输出设备五部分,各部分通过总线连接在一起。
3、软件是指在硬件系统上运行的各种程序和相关资料,包括系统软件和应用软件两部分。
二、计算机硬件系统
仅有硬件而没有任何软件支持的计算机称为裸机。硬件是计算机的躯体,软件是计算机的灵魂,二者缺一不可。
第一台计算机ENIAC诞生至今,计算机硬件结构仍是依据冯·诺依曼提出的存储程序工作原理。