需求描述

整体流程图

相关数据库表

获取借款额度

需求

step1:借款人在“借款人信息认证”界面点击“我要借款”

step2:展示借款信息填写页面

后端

controller

BorrowInfoController.java

package com.indi.srb.core.controller.api;@Api(tags = "借款信息")
@RestController
@RequestMapping("/api/core/borrowInfo")
public class BorrowInfoController {@Resourceprivate BorrowInfoService borrowInfoService;@ApiOperation("获取借款额度")@GetMapping("/auth/getBorrowAmount")public R getBorrowAmount(HttpServletRequest request) {String token = request.getHeader("token");Long userId = JwtUtils.getUserId(token);BigDecimal borrowAmount = borrowInfoService.getBorrowAmount(userId);return R.ok().setData("borrowAmount", borrowAmount);}
}

service

BorrowInfoService.java

    BigDecimal getBorrowAmount(Long userId);

BorrowInfoServiceImpl.java

package com.indi.srb.core.service.impl;public class BorrowInfoServiceImpl extends ServiceImpl<BorrowInfoMapper, BorrowInfo> implements BorrowInfoService {@Resourceprivate UserInfoMapper userInfoMapper;@Resourceprivate IntegralGradeMapper integralGradeMapper;@Overridepublic BigDecimal getBorrowAmount(Long userId) {// 获取用户积分UserInfo userInfo = userInfoMapper.selectById(userId);Assert.notNull(userInfo, ResponseEnum.LOGIN_MOBILE_ERROR);Integer integral = userInfo.getIntegral();// 根据积分查询额度QueryWrapper<IntegralGrade> queryWrapper = new QueryWrapper<>();queryWrapper.le("integral_start", integral).ge("integral_end", integral);IntegralGrade integralGrade = integralGradeMapper.selectOne(queryWrapper);if (integralGrade == null) {return new BigDecimal("0");}return integralGrade.getBorrowAmount();}
}

借款入口前端

pages/user/borrower.vue

template

          <NuxtLink to="/user/apply" v-if="borrowerStatus === 2"><el-button style="margin-top:20px;" type="success">我要借款</el-button></NuxtLink>

借款申请前端

template

pages/user/apply.vue

<template><div class="personal-main"><div class="personal-pay"><h3><i>借款申请</i></h3><el-steps :active="active" style="margin: 40px"><el-step title="提交借款信息"></el-step><el-step title="审核"></el-step><el-step title="等待审核结果"></el-step></el-steps><div v-if="active === 0" class="user-borrower"><el-form label-width="120px"><el-form-item label="借款金额"><el-col :span="6"><el-input v-model="borrowInfo.amount" /></el-col><el-col :span="6">&nbsp;&nbsp;您最多可借款{{ borrowAmount }}元</el-col></el-form-item><el-form-item label="期数"><el-select v-model="borrowInfo.period"><el-option :value="1" label="1个月" /><el-option :value="3" label="3个月" /><el-option :value="6" label="6个月" /><el-option :value="9" label="9个月" /><el-option :value="12" label="12个月" /><el-option :value="24" label="24个月" /></el-select></el-form-item><el-form-item label="还款方式"><el-select v-model="borrowInfo.returnMethod"><el-optionv-for="item in returnMethodList":key="item.value":label="item.name":value="item.value"/></el-select></el-form-item><el-form-item label="资金用途"><el-select v-model="borrowInfo.moneyUse"><el-optionv-for="item in moneyUseList":key="item.value":label="item.name":value="item.value"/></el-select></el-form-item><el-form-item label="年利率"><el-col :span="6"><el-input v-model="borrowInfo.borrowYearRate"><template slot="append">%</template></el-input></el-col><el-col :span="8">&nbsp;&nbsp;年利率越高,借款越容易成功。</el-col></el-form-item><el-form-item><el-buttontype="primary":disabled="submitBtnDisabled"@click="save">提交</el-button></el-form-item></el-form><el-alerttitle="您提供的任何信息尚融宝都承诺予以保护,不会挪作他用。"type="warning":closable="false"></el-alert></div><div v-if="active === 1"><div style="margin-top:40px;"><el-alerttitle="您的借款申请已成功提交,请耐心等待"type="warning"show-icon:closable="false">我们将在10分钟内完成审核,审核时间为周一至周五8:00至20:00。</el-alert></div></div><div v-if="active === 2"><div style="margin-top:40px;"><el-alertv-if="borrowInfoStatus === 2"title="您的借款申请审批已通过"type="success"show-icon:closable="false"></el-alert><el-alertv-if="borrowInfoStatus === -1"title="您的借款申请审批未通过"type="error"show-icon:closable="false"></el-alert></div></div></div></div>
</template>

script

pages/user/apply.vue

<script>
export default {data() {return {active: 0, //步骤borrowInfoStatus: null, //审批状态//借款申请borrowInfo: {borrowYearRate: '12',},borrowAmount: 0, //借款额度submitBtnDisabled: false,returnMethodList: [], //还款方式列表moneyUseList: [], //资金用途列表}},// 监听借款金额输入框// 借款人每次借款不能超过借款额度watch: {'borrowInfo.amount'(value) {if (value > this.borrowAmount) {let that = thisthis.$alert('您的借款额度不足!', {type: 'error',callback() {that.borrowInfo.amount = that.borrowAmount},})}},},mounted() {//获取借款额度this.getBorrowAmount()//初始化下拉列表this.initSelected()},methods: {//初始化下拉列表的数据initSelected() {//还款方式列表this.$axios.$get('/api/core/dict/findByDictCode/returnMethod').then((response) => {this.returnMethodList = response.data.dictList})//资金用途列表this.$axios.$get('/api/core/dict/findByDictCode/moneyUse').then((response) => {this.moneyUseList = response.data.dictList})},//获取借款额度getBorrowAmount() {this.$axios.$get('/api/core/borrowInfo/auth/getBorrowAmount').then((response) => {this.borrowAmount = response.data.borrowAmount})},save() {},},
}
</script>

提交借款申请

需求

step3:借款人填写信息并提交

step4:展示等待审核页面

后端实现

实现思路

借款人提交借款要判断借款人账户绑定状态与借款人信息审批状态,只有这两个状态都成立才能借款,这两个状态都在会员表中

目标:将借款申请表单中用户填写的数据保存在borrow_info数据库表中

Controller

BorrowInfoController.java

    @ApiOperation("提交借款申请")@PostMapping("/auth/save")public R save(@RequestBody BorrowInfo borrowInfo, HttpServletRequest request) {String token = request.getHeader("token");Long userId = JwtUtils.getUserId(token);borrowInfoService.saveBorrowInfo(borrowInfo,userId);return R.ok().setMessage("提交成功");}

Service

BorrowInfoService.java

    void saveBorrowInfo(BorrowInfo borrowInfo, Long UserId);

BorrowInfoServiceImpl.java

    @Overridepublic void saveBorrowInfo(BorrowInfo borrowInfo, Long userId) {UserInfo userInfo = userInfoMapper.selectById(userId);// 用户绑没绑定Assert.isTrue(userInfo.getBindStatus() == UserBindEnum.BIND_OK.getStatus(),ResponseEnum.USER_NO_BIND_ERROR);// 用户有没有借款额度Assert.isTrue(userInfo.getBorrowAuthStatus() == BorrowerStatusEnum.AUTH_OK.getStatus(),ResponseEnum.USER_NO_AMOUNT_ERROR);// 借款金额不能超过用户的最大额度BigDecimal borrowAmount = this.getBorrowAmount(userId);Assert.isTrue(borrowAmount.doubleValue() >= borrowInfo.getAmount().doubleValue(),ResponseEnum.USER_AMOUNT_LESS_ERROR);borrowInfo.setUserId(userId);// 年利率转成小数borrowInfo.setBorrowYearRate(borrowInfo.getBorrowYearRate().divide(new BigDecimal(100)));borrowInfo.setStatus(BorrowInfoStatusEnum.CHECK_RUN.getStatus());baseMapper.insert(borrowInfo);}

前端实现

script

pages/user/apply.vue

    //提交借款申请save() {this.submitBtnDisabled = truethis.$axios.$post('/api/core/borrowInfo/auth/save', this.borrowInfo).then((response) => {this.active = 1})},

获取借款状态

需求

未通过

通过

还有提交借款信息、审核,上面都有截图,这里就不放了。

后端

controller

    @ApiOperation("获取借款审批状态")@GetMapping("/getBorrowInfoStatus")public R getBorrowInfoStatus(HttpServletRequest request){String token = request.getHeader("token");Long userId = JwtUtils.getUserId(token);Integer borrowInfoStatus = borrowInfoService.getBorrowInfoStatus(userId);return R.ok().setData("borrowInfoStatus",borrowInfoStatus);}

service

BorrowInfoService.java

    Integer getBorrowInfoStatus(Long userId);

BorrowInfoServiceImpl.java

    @Overridepublic Integer getBorrowInfoStatus(Long userId) {QueryWrapper<BorrowInfo> queryWrapper = new QueryWrapper<>();queryWrapper.select("status").eq("user_id", userId);BorrowInfo borrowInfo = baseMapper.selectOne(queryWrapper);if (borrowInfo == null) {// 借款人未提交借款申请return BorrowInfoStatusEnum.NO_AUTH.getStatus();}return borrowInfo.getStatus();}

前端

template

script

pages/user/apply.vue

  mounted() {this.getBorrowInfoStatus()},methods: {getBorrowInfoStatus() {this.$axios.$get('/api/core/borrowInfo/getBorrowInfoStatus').then((response) => {this.borrowInfoStatus = response.data.borrowInfoStatusif (this.borrowInfoStatus === 0) {this.active = 0// 获取借款额度this.getBorrowAmount()// 获取下拉列表this.initSelected()} else if (this.borrowInfoStatus === 1) {this.active = 1} else {this.active = 2}})},

29. 尚融宝借款申请相关推荐

  1. 28. 尚融宝借款额度审核

    借款人列表 需求 后端实现 controller AdminBorrowerController.java package com.indi.srb.core.controller.admin;@Ap ...

  2. 【金融项目】尚融宝项目(十五)

    29.提现和还款 29.1.提现 29.1.1.需求 放款成功后,借款人可以申请提现. 参考<汇付宝商户账户技术文档>3.15用户申请提现 29.1.2.前端整合 pages/user/w ...

  3. 【金融项目】尚融宝项目(十)

    19.申请借款额度 19.1.需求介绍 19.1.1.借款人申请额度 1.需求描述 平台管理员根据借款人个人信息设置积分,通过积分规则借款人可以获取额度. 2.相关数据库表 19.1.2.具体步骤 s ...

  4. 【金融项目】尚融宝项目(十一)

    21.借款申请 21.1.需求介绍 21.1.1.借款人申请借款 1.需求描述 2.相关数据库表 21.1.2.具体步骤 step1:借款人点击"我要借款" step2:展示借款信 ...

  5. 【金融项目】尚融宝项目(一)

    1.尚融宝项目简介 1.1.前言 尚融宝项目是一个网络借贷信息中介服务平台,为个人投资者.个人融资用户和小微企业提供专业的线上信贷及出借撮合服务. 行业案例:人人贷 https://www.renre ...

  6. 尚融宝01-项目简介

    目录 一.项目简介 (一).项目名称 (二).项目介绍 (三).项目架构 (四).业务流程总结 二.信用贷款平台的类别 (一).银行系 (二).国资系 (三).民营系 三.业务流程 (一).投资人 ( ...

  7. 【金融项目】尚融宝项目(十四)

    27.放款 27.1.需求介绍 27.1.1.平台放款 1.需求描述 标的募资时间到,平台会操作放款或撤标,如果达到放款条件则操作放款 说明:撤标过程与放款过程一致,处理业务相对简单,只是将出借金额返 ...

  8. 【金融项目】尚融宝项目(六)

    11.访问令牌 11.1.单点登录 11.1.1.用户身份认证 11.1.1.1.单一服务器模式 一般过程如下: 用户向服务器发送用户名和密码. 验证服务器后,相关数据(如用户名,用户角色等)将保存在 ...

  9. 【金融项目】尚融宝项目(三)

    5.管理平台前端搭建 5.1.搭建管理平台前端程序 5.1.1.vue-element-admin vue-element-admin是基于element-ui 的一套后台管理系统集成方案. GitH ...

最新文章

  1. ubuntu 下安装nginx
  2. 8.7 程序示例--异常检测-机器学习笔记-斯坦福吴恩达教授
  3. 多除了1次100的FM BAPI_CURRENCY_CONV_TO_INTERN_9
  4. Ajax(5)UpdatePanel的使用方法
  5. Python中使用Redis的批处理工具pipeline(这种方法从底层思考效率还是低于“订阅发布机制”)
  6. c 语言中随机数填充数组,c – 生成唯一随机数的数组
  7. 线上安全大会还能这么玩 ISC 2020首创“3D立体云展馆”
  8. 图像处理常用八大算法
  9. Chrome Inspect调试stetho出现空白的解决方法
  10. springboot引入本地jar包,并且打jar包时包含本地jar
  11. Google深度学习TensorFlow最好的入门文章!
  12. atitit.为什么java体系开发效率这样低的原因and解决
  13. html5移动端单视频播放代码,js移动端视频播放代码
  14. 论坛php 图片上传,图片上传、分享网站
  15. ES mapping
  16. AI 研究助力体育分析
  17. 硬件设计中与门、或门、非门电路详解
  18. Vue 艺术字体下载、设置
  19. c语言中短整形字节,C语言中各种整型类型所占字节数
  20. VVC 算法描述 R2002(VTM 9) IBC部分 机器翻译

热门文章

  1. 直播间炒不起氛围?观众迟迟不下单?千万别忽略了助播的重要性!
  2. 对于年龄偏小的孩子来讲,学习的好坏可能完全取决于家长
  3. 计算机web国二考试题库,全国计算机二级考试练习题库(含答案)
  4. android用户界面组件都是放置在,Android开发工程师第十章 节 用户界面高级组件.ppt...
  5. 狗狗自带餐具能有多可爱
  6. java 中文分词转拼音_Java实现将汉字转化为汉语拼音的方法
  7. 博士申请 | 新加坡科技设计大学段凌杰教授招收人工智能全奖博士生
  8. JS中Math对象的方法
  9. 牢记这一波CAD快捷键,制图速度坐火箭!
  10. 曾舜晞代言全面迸发!海信全面屏哈利手机发布