认清现实,放弃幻想,准备等斗争
平台发布标的,出借人充值就可以投资标的


参考《汇付宝商户账户技术文档》3.10满标投资,投资过程与账户绑定、用户充值过程一致

step1:点击标的,进入标的详情页面

step2:输入投资金额,计算获得收益
step3:同意协议,点击立即投资

step4:跳转到汇付宝页面(资金托管接口调用)
step5:汇付宝验证用户交易密码
step6:汇付宝修改账号资金余额(更新user_account记录中的amount的值和freeze_amount的值) 汇付宝新增投资记录(新增user_invest记录)
step7:异步回调
(1)账户金额更改(剩余金额和冻结金额)
(2)修改投资状态(lend_item表中的status)
(3)更新标的信息(lend表中的投资人数和已投金额)
(4)添加交易流水
step8:用户点击“返回平台”,返回尚融宝
展示信息:
1、标的基本信息(标的表 lend)
2、借款人信息(借款人表 borrower)
3、账户余额信息(会员账户表 user_account)
4、根据投资金额计算收益(根据四种还款方式计算)
5、投资记录(投资记录表 lend_item,后续完善)
6、还款记录(还款记录表 lend_return,后续完善)
投标条件:
1、已经登录的会员
2、只有投资人可以投标,借款人不可以投标
3、投标金额必须是100整数倍
4、账号可用余额充足
5、同意投标协议
- @ApiOperation("获取标的信息")
- @GetMapping("/show/{id}")
- public R show(
- @ApiParam(value = "标的id", required = true)
- @PathVariable Long id) {
- Map
lendDetail = lendService.getLendDetail(id); - return R.ok().data("lendDetail", lendDetail);
- }
- @ApiOperation("查询账户余额")
- @GetMapping("/auth/getAccount")
- public R getAccount(HttpServletRequest request){
- String token = request.getHeader("token");
- Long userId = JwtUtils.getUserId(token);
- BigDecimal account = userAccountService.getAccount(userId);
- return R.ok().data("account", account);
- }
接口:UserAccountService
BigDecimal getAccount(Long userId);
实现:UserAccountServiceImpl
- @Override
- public BigDecimal getAccount(Long userId) {
- //根据userId查找用户账户
- QueryWrapper
userAccountQueryWrapper = new QueryWrapper<>(); - userAccountQueryWrapper.eq("user_id", userId);
- UserAccount userAccount = baseMapper.selectOne(userAccountQueryWrapper);
-
- BigDecimal amount = userAccount.getAmount();
- return amount;
- }
pages/lend/_id.vue
- async asyncData({ $axios, params }) {
- let lendId = params.id //通过路由参数获取标的id
-
- //通过lendId获取标的详情信息
- let response = await $axios.$get('/api/core/lend/show/' + lendId)
-
- return {
- lend: response.data.lendDetail.lend, //标的详情
- borrower: response.data.lendDetail.borrower, //借款人信息
- }
- },
- //查询账户余额
- fetchAccount() {
- let userInfo = cookie.get('userInfo')
- if (userInfo) {
- this.$axios
- .$get('/api/core/userAccount/auth/getAccount')
- .then((response) => {
- this.account = response.data.account
- })
- }
- },
- //获取登录人的用户类型
- fetchUserType() {
- let userInfo = cookie.get('userInfo')
- if (userInfo) {
- userInfo = JSON.parse(userInfo)
- this.userType = userInfo.userType
- }
- },