• 微服务项目:尚融宝(37)(核心业务流程:用户绑定(2))


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

    前端整合

    pages/user/bind.vue

    1. commitBind() {
    2. this.$alert(
    3. '
      您即将前往汇付宝绑定账号
      '
      ,
    4. '前往汇付宝资金托管平台',
    5. {
    6. dangerouslyUseHTMLString: true,
    7. confirmButtonText: '立即前往',
    8. callback: (action) => {
    9. if (action === 'confirm') {
    10. this.$axios
    11. .$post('/api/core/userBind/auth/bind', this.userBind)
    12. .then((response) => {
    13. document.write(response.data.formStr)
    14. })
    15. }
    16. },
    17. }
    18. )
    19. },

    四、测试

    1、登录

    使用借款人账号登录

    2、测试

    访问 http://127.0.0.1:3000/user/bind

    3、结果

    尚融宝数据库中创建了user_bind记录

    汇付宝数据库中创建了user_bind 和 user_account两条数据记录

    一、绑定步骤总结

    step1:用户在个人中心点击 “立即开通”  (http://localhost:3000/user/bind)

    step2:尚融宝展示账户绑定页面

     

    step3:用户填写基本信息(注意:身份证必须是尚未开户),点击“开户”按钮

    step4:尚融宝后台创建用户绑定信息(新建user_bind记录)

    step5:跳转到汇付宝页面(资金托管接口调用)

     

    step7:汇付宝创建绑定账号(新建user_bind和user_account记录)

    step8:异步回调:

    尚融宝user_bind表更新bind_code字段、status字段

    尚融宝user_info表更新 bind_code字段、name字段、idCard字段、bind_status字段

    step9:用户点击“返回平台”,返回尚融宝

     

    二、尚融宝回调接口

    1、controller

    UserBindController中创建回调方法

    1. @ApiOperation("账户绑定异步回调")
    2. @PostMapping("/notify")
    3. public String notify(HttpServletRequest request) {
    4. Map<String, Object> paramMap = RequestHelper.switchMap(request.getParameterMap());
    5. log.info("用户账号绑定异步回调:" + JSON.toJSONString(paramMap));
    6. //校验签名
    7. if(!RequestHelper.isSignEquals(paramMap)) {
    8. log.error("用户账号绑定异步回调签名错误:" + JSON.toJSONString(paramMap));
    9. return "fail";
    10. }
    11. //修改绑定状态
    12. userBindService.notify(paramMap);
    13. return "success";
    14. }

    2、service

    接口:UserBindService

    void notify(Map<String, Object> paramMap);

    实现:UserBindServiceImpl 

    1. @Resource
    2. private UserInfoMapper userInfoMapper;
    3. @Override
    4. @Transactional(rollbackFor = Exception.class)
    5. public void notify(Map<String, Object> paramMap) {
    6. String bindCode = (String)paramMap.get("bindCode");
    7. //会员id
    8. String agentUserId = (String)paramMap.get("agentUserId");
    9. //根据user_id查询user_bind记录
    10. QueryWrapper<UserBind> userBindQueryWrapper = new QueryWrapper<>();
    11. userBindQueryWrapper.eq("user_id", agentUserId);
    12. //更新用户绑定表
    13. UserBind userBind = baseMapper.selectOne(userBindQueryWrapper);
    14. userBind.setBindCode(bindCode);
    15. userBind.setStatus(UserBindEnum.BIND_OK.getStatus());
    16. baseMapper.updateById(userBind);
    17. //更新用户表
    18. UserInfo userInfo = userInfoMapper.selectById(agentUserId);
    19. userInfo.setBindCode(bindCode);
    20. userInfo.setName(userBind.getName());
    21. userInfo.setIdCard(userBind.getIdCard());
    22. userInfo.setBindStatus(UserBindEnum.BIND_OK.getStatus());
    23. userInfoMapper.updateById(userInfo);
    24. }

     

  • 相关阅读:
    HTTP基础知识
    vim使用教程图文教程(零基础超详细)
    大学各个专业介绍
    信息学奥赛一本通:2031:【例4.17】四位完全平方数
    【图像分类】【深度学习】【Pytorch版本】ResNet模型算法详解
    关于生命周期的面试题vue
    零信任网络:一种全新的网络安全架构
    OPNET Modeler 软件的简单介绍与使用
    Gitlab迁移方案
    【机器学习可解释性】1.模型洞察的价值
  • 原文地址:https://blog.csdn.net/m0_62436868/article/details/126844944