• 微服务项目:尚融宝(45)(核心业务流程:借款申请(2))


    认清现实,放弃幻想,准备斗争

    一、后端实现

    1、实现思路

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

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

    2、枚举

    BorrowInfoStatusEnum

       NO_AUTH(0, "未提交"),
        CHECK_RUN(1, "审核中"),
        CHECK_OK(2, "审核通过"),
        CHECK_FAIL(-1, "审核不通过"),
        ;

     状态(0:未提交,1:审核中, 2:审核通过, -1:审核不通过)

    3、Controller

    BorrowInfoController

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

    4、Service

    接口:BorrowInfoService

    void saveBorrowInfo(BorrowInfo borrowInfo, Long userId);

    实现:BorrowInfoServiceImpl 

    1. @Override
    2. public void saveBorrowInfo(BorrowInfo borrowInfo, Long userId) {
    3. //获取userInfo的用户数据
    4. UserInfo userInfo = userInfoMapper.selectById(userId);
    5. //判断用户绑定状态
    6. Assert.isTrue(
    7. userInfo.getBindStatus().intValue() == UserBindEnum.BIND_OK.getStatus().intValue(),
    8. ResponseEnum.USER_NO_BIND_ERROR);
    9. //判断用户信息是否审批通过
    10. Assert.isTrue(
    11. userInfo.getBorrowAuthStatus().intValue() == BorrowerStatusEnum.AUTH_OK.getStatus().intValue(),
    12. ResponseEnum.USER_NO_AMOUNT_ERROR);
    13. //判断借款额度是否足够
    14. BigDecimal borrowAmount = this.getBorrowAmount(userId);
    15. Assert.isTrue(
    16. borrowInfo.getAmount().doubleValue() <= borrowAmount.doubleValue(),
    17. ResponseEnum.USER_AMOUNT_LESS_ERROR);
    18. //存储数据
    19. borrowInfo.setUserId(userId);
    20. //百分比转成小数
    21. borrowInfo.setBorrowYearRate( borrowInfo.getBorrowYearRate().divide(new BigDecimal(100)));
    22. borrowInfo.setStatus(BorrowInfoStatusEnum.CHECK_RUN.getStatus());
    23. baseMapper.insert(borrowInfo);
    24. }

    二、前端

    提交借款申请

    pages/user/apply.vue

    1. //提交借款申请
    2. save() {
    3. // this.submitBtnDisabled = true
    4. this.$axios
    5. .$post('/api/core/borrowInfo/auth/save', this.borrowInfo)
    6. .then((response) => {
    7. this.active = 1
    8. })
    9. },

    今日分享

    晶体管

    第二代计算机采用的主要元件是晶体管,称为晶体管计算机。计算机软件有了较大发展,程序语言也出现了Fortran,Cobol计算机高级语言,采用了监控程序,这是操作系统的雏形。

    主要特点:

    1、体积小,可靠性增强,寿命延长。

    2、运算速度快。

    3、提高了操纵系统适应性。

    4、容量提高。

    5、应用领域扩大。

  • 相关阅读:
    Hybrid app混合开发的一些经验和总结
    java多线程-线程间通信
    JDBC---操作数据库实现CRUD
    056:mapboxGL中layer的layout,paint,filter的属性值表达式说明总结
    CSS 圆形的时钟秒针状的手柄绕中心点旋转的效果
    netty数据缓冲区之ChannelOutboundBuffer
    Hadoop的第二个核心组件:MapReduce框架第一节
    Python 文本语义识别,文本转化为图数据库,文本摘要图展示,文本结构化为图谱
    vue缓存当前路由(在输入框中输入信息后,跳转其他路由再回来,仍可看到刚刚输入的内容等)
    localStorage和session storage
  • 原文地址:https://blog.csdn.net/m0_62436868/article/details/126913554