当前位置: 首页 > news >正文

微服务项目:尚融宝(40)(核心业务流程:申请借款额度(3))

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

一、后端开发

1、定义VO对象

service-core微服务,创建BorrowerVO

@Data
@ApiModel(description="借款人认证信息")
public class BorrowerVO {

    @ApiModelProperty(value = "性别(1:男 0:女)")
    private Integer sex;

    @ApiModelProperty(value = "年龄")
    private Integer age;

    @ApiModelProperty(value = "学历")
    private Integer education;

    @ApiModelProperty(value = "是否结婚(1:是 0:否)")
    private Boolean marry;

    @ApiModelProperty(value = "行业")
    private Integer industry;

    @ApiModelProperty(value = "月收入")
    private Integer income;

    @ApiModelProperty(value = "还款来源")
    private Integer returnSource;

    @ApiModelProperty(value = "联系人名称")
    private String contactsName;

    @ApiModelProperty(value = "联系人手机")
    private String contactsMobile;

    @ApiModelProperty(value = "联系人关系")
    private Integer contactsRelation;

    @ApiModelProperty(value = "借款人附件资料")
    private List<BorrowerAttach> borrowerAttachList;
}

2、定义枚举

BorrowerStatusEnum

数据库设计中对应认证状态status (0:未认证,1:认证中, 2:认证通过, -1:认证失败)

3、controller

service-core中在BorrowerController中定义接口方法

 

@Api(tags = "借款人")
@RestController
@RequestMapping("/api/core/borrower")
@Slf4j
public class BorrowerController {

    @Resource
    private BorrowerService borrowerService;

    @ApiOperation("保存借款人信息")
    @PostMapping("/auth/save")
    public R save(@RequestBody BorrowerVO borrowerVO, HttpServletRequest request) {
        String token = request.getHeader("token");
        Long userId = JwtUtils.getUserId(token);
        borrowerService.saveBorrowerVOByUserId(borrowerVO, userId);
        return R.ok().message("信息提交成功");
    }
}

6、service

接口:BorrowerService 

void saveBorrowerVOByUserId(BorrowerVO borrowerVO, Long userId);

实现:BorrowerServiceImpl 

@Resource
private BorrowerAttachMapper borrowerAttachMapper;

@Resource
private UserInfoMapper userInfoMapper;

@Transactional(rollbackFor = Exception.class)
@Override
public void saveBorrowerVOByUserId(BorrowerVO borrowerVO, Long userId) {

    UserInfo userInfo = userInfoMapper.selectById(userId);

    //保存借款人信息
    Borrower borrower = new Borrower();
    BeanUtils.copyProperties(borrowerVO, borrower);
    borrower.setUserId(userId);
    borrower.setName(userInfo.getName());
    borrower.setIdCard(userInfo.getIdCard());
    borrower.setMobile(userInfo.getMobile());
    borrower.setStatus(BorrowerStatusEnum.AUTH_RUN.getStatus());//认证中
    baseMapper.insert(borrower);

    //保存附件
    List<BorrowerAttach> borrowerAttachList = borrowerVO.getBorrowerAttachList();
    borrowerAttachList.forEach(borrowerAttach -> {
        borrowerAttach.setBorrowerId(borrower.getId());
        borrowerAttachMapper.insert(borrowerAttach);
    });
    
    //更新会员状态,更新为认证中
    userInfo.setBorrowAuthStatus(BorrowerStatusEnum.AUTH_RUN.getStatus());
    userInfoMapper.updateById(userInfo);
}

二、前端整合

pages/user/borrower.vue 脚本

save() {
  // debugger
  this.submitBtnDisabled = true
  this.$axios
    .$post('/api/core/borrower/save', this.borrower)
    .then((response) => {
      this.active = 1
    })
},

 

一、获取借款人状态

1、BorrowerController

@ApiOperation("获取借款人认证状态")
@GetMapping("/auth/getBorrowerStatus")
public R getBorrowerStatus(HttpServletRequest request){
    String token = request.getHeader("token");
    Long userId = JwtUtils.getUserId(token);
    Integer status = borrowerService.getStatusByUserId(userId);
    return R.ok().data("borrowerStatus", status);
}

2、service

接口:BorrowerService

Integer getStatusByUserId(Long userId);

实现:BorrowerServiceImpl 

@Override
public Integer getStatusByUserId(Long userId) {

    QueryWrapper<Borrower> borrowerQueryWrapper = new QueryWrapper<>();
    borrowerQueryWrapper.select("status").eq("user_id", userId);
    List<Object> objects = baseMapper.selectObjs(borrowerQueryWrapper);

    if(objects.size() == 0){
        //借款人尚未提交信息
        return BorrowerStatusEnum.NO_AUTH.getStatus();
    }
    Integer status = (Integer)objects.get(0);
    return status;
}

二、前端开发

pages/user/borrower.vue 脚本

将this.initSelected()在this.getUserInfo()中调用

 methods中添加方法:

//获取借款人信息
getUserInfo() {
    this.$axios
        .$get('/api/core/borrower/auth/getBorrowerStatus')
        .then((response) => {
        this.borrowerStatus = response.data.borrowerStatus
        if (this.borrowerStatus === 0) {
            //未认证
            this.active = 0
            //获取下拉列表
            this.initSelected()
        } else if (this.borrowerStatus === 1) {
            //认证中
            this.active = 1
        } else if (this.borrowerStatus === 2) {
            //认证成功
            this.active = 2
        } else if (this.borrowerStatus === -1) {
            //认证失败
            this.active = 2
        }
    })
}

将 data() 中 active的初始化值设置为null 

 active: null, //步骤

相关文章:

  • 将web前端项目部署到github,在hbuilderx中部署github中的项目、对Github加速
  • Pytorch优化器全总结(二)Adadelta、RMSprop、Adam、Adamax、AdamW、NAdam、SparseAdam
  • MFI不告诉你的秘密
  • 【RocketMq 系列】RocketMq 消息重试机制、死信队列
  • 该从什么角度思考npm、yarn与pnpm的区别
  • 分库分表一:ShardingSphere介绍和入门实战
  • Linux内存管理(三十一):页面回收总结
  • 微信小程序│ 游戏开发 │连连看游戏
  • Python每日一练(牛客数据分析篇新题库)——第34天:数据清洗
  • mysql为什么使用B+树
  • 爬虫学习笔记 -- 实战某电影网(lxml库版)
  • hive on spark下row_number()问题排查
  • 最新面试题:用友OC,美团三面已挂
  • 开发者API管理神器Eolink,比postman好用
  • Mysql - 分库分表
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • FastReport在线报表设计器工作原理
  • java2019面试题北京
  • JavaScript中的对象个人分享
  • Making An Indicator With Pure CSS
  • MQ框架的比较
  • PHP那些事儿
  • React组件设计模式(一)
  • SpringBoot几种定时任务的实现方式
  • SQL 难点解决:记录的引用
  • 从0到1:PostCSS 插件开发最佳实践
  • 解决iview多表头动态更改列元素发生的错误
  • 前端_面试
  • 前端js -- this指向总结。
  • 前端面试之CSS3新特性
  • 前端面试总结(at, md)
  • 使用common-codec进行md5加密
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 说说动画卡顿的解决方案
  • 我建了一个叫Hello World的项目
  • 移动端解决方案学习记录
  • 我们雇佣了一只大猴子...
  • ​queue --- 一个同步的队列类​
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​低代码平台的核心价值与优势
  • $(selector).each()和$.each()的区别
  • (备忘)Java Map 遍历
  • (第27天)Oracle 数据泵转换分区表
  • (附源码)springboot教学评价 毕业设计 641310
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)socket Aio demo
  • (转)可以带来幸福的一本书
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • *Django中的Ajax 纯js的书写样式1
  • .libPaths()设置包加载目录
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET文档生成工具ADB使用图文教程
  • .NET下的多线程编程—1-线程机制概述