微服务项目:尚融宝(53)(核心业务流程:投标(4))
认清现实,放弃幻想,准备斗争
前端整合
投资
pages/lend/_id.vue
//投资commitInvest() {//校验用户是否登录let userInfo = cookie.get('userInfo')// console.log(typeof userInfo)// console.log(!userInfo) //trueif (!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))// returnif (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.idthis.$axios.$post('/api/core/lendItem/auth/commitInvest', this.invest).then((response) => {// console.log(response.data.formStr)// debuggerdocument.write(response.data.formStr)})}},})}
定义回调接口
1、controller
LendItemController中创建回调方法
@ApiOperation("会员投资异步回调")
@PostMapping("/notify")
public String notify(HttpServletRequest request) {Map<String, Object> paramMap = RequestHelper.switchMap(request.getParameterMap());log.info("用户投资异步回调:" + JSON.toJSONString(paramMap));//校验签名 P2pInvestNotifyVoif(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
void notify(Map<String, Object> paramMap);
实现:LendItemServiceImpl
@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诞生至今,计算机硬件结构仍是依据冯·诺依曼提出的存储程序工作原理。
微服务项目:尚融宝(53)(核心业务流程:投标(4))相关推荐
- 微服务项目:尚融宝(59)(核心业务流程:提现和还款(2))
认清现实,放弃幻想,准备斗争 需求 放款成功后,会生成借款人的还款计划与出借人的回款计划,然后借款人按照还款计划日期操作还款即可. 参考<汇付宝商户账户技术文档>3.14还款扣款,处理业务 ...
- 微服务项目:尚融宝(1)(项目介绍)
从今天开始做一个全栈项目,巩固学完的springcloud,复习之前学过的ssm mp redis MQ等知识点,拿下我的第二个项目 .技术栈中未掌握部署,计划到项目后期部署的时候,再自学一波 放弃幻 ...
- 【金融项目】尚融宝项目(三)
5.管理平台前端搭建 5.1.搭建管理平台前端程序 5.1.1.vue-element-admin vue-element-admin是基于element-ui 的一套后台管理系统集成方案. GitH ...
- 【金融项目】尚融宝项目(十四)
27.放款 27.1.需求介绍 27.1.1.平台放款 1.需求描述 标的募资时间到,平台会操作放款或撤标,如果达到放款条件则操作放款 说明:撤标过程与放款过程一致,处理业务相对简单,只是将出借金额返 ...
- 【金融项目】尚融宝项目(十六)
31.RabbitMQ 31.1.整合Rabbit MQ发送短信 31.1.1.MQ服务器设置 1.访问MQ控制台 http://192.168.100.103:15672 2.创建用户 创建用户 s ...
- 【金融项目】尚融宝项目(十五)
29.提现和还款 29.1.提现 29.1.1.需求 放款成功后,借款人可以申请提现. 参考<汇付宝商户账户技术文档>3.15用户申请提现 29.1.2.前端整合 pages/user/w ...
- 【金融项目】尚融宝项目(十)
19.申请借款额度 19.1.需求介绍 19.1.1.借款人申请额度 1.需求描述 平台管理员根据借款人个人信息设置积分,通过积分规则借款人可以获取额度. 2.相关数据库表 19.1.2.具体步骤 s ...
- 【金融项目】尚融宝项目(四)
6.Alibaba EasyExcel 6.1.EasyExcel简介 6.1.1.Excel导入导出的应用场景 6.1.1.1.数据导入 减轻录入工作量 6.1.1.2.数据导出 统计信息归档 6. ...
- 【金融项目】尚融宝项目(六)
11.访问令牌 11.1.单点登录 11.1.1.用户身份认证 11.1.1.1.单一服务器模式 一般过程如下: 用户向服务器发送用户名和密码. 验证服务器后,相关数据(如用户名,用户角色等)将保存在 ...
最新文章
- 怎么查看linux是不是as7u4,Linux下搭建Android开发环境
- 链表--只知道当前节点指针删除当前节点
- gitlab上传文件到group_gitlab恢复备份数据
- 从源码深处体验Spring核心技术--基于注解的IOC初始化
- 学习ActiveMQ(一):安装与启动
- GCD 代码以及GCD思想
- 70个具有商业实战性的精品Android源码
- Atitit.研发管理--提升效率--软件开发方法DSM总结o99
- java heapdump 分析工具_Java Heap dump文件分析工具jhat简介
- 文字转语音软件真人发声(声音自然有感情)
- python差异性分析_能用SPSS进行差异显著性分析吗
- Proteus8.9 VSM Studio PIC编译器仿真PIC16F887A_系列a02_PIC_GPS数据接受反馈HTC仿真
- nginx 499状态码
- Vue的ESLint-stylelint-prettier联合配置
- 【dbv】使用dbv工具检验数据文件是否有坏块
- 学习笔记—Vue项目启动时卡在98% after emitting CopyPlugin的问题解决
- 职场上35岁以上的人都去哪了?
- c语言开机自启动 linux_Linux开机启动程序rc.local
- php网站mercury安装,mercury无线路由器怎么安装 mercury无线路由器安装方法
- 时尚圈元宇宙,时尚圈和元宇宙的碰撞会带来怎样的火花?时尚圈元宇宙,时尚圈和元宇宙的碰撞会带来怎样的火花?