思维导图

统一跳转平台开发记录 - 图1

需求来源及目的

目前端内,涉及到跳转的业务非常多,大家都是依赖一份统一跳转文档,查找对应的跳转参数,然后去后台新建统一跳转,客户端内显示,这样的流程有几个痛点

对于技术人员来说:
———

  1. 文档的维护问题:只有一份wiki文档,人人都可以修改
  2. 文档通知问题:协议更改/删除/版本号变更之后,难以通知到其他人,需要借助微信通知
  3. 编码问题:没有一个统一的编码/解码方法;很多人都直接去在线编码/解码网站,可能会导致解析/生成结果不一致的问题
  4. 发送问题:每次想给自己发一条统一跳转消息时,都要填一堆额外的数据

对于需求方/QA来说:
———

  1. 操作繁琐,需要填很多参数,上传图片等等
  2. 对不熟悉的功能可能还是需要找技术人员询问

    痛点总结

    结合以上痛点,为了简化操作流程,节约时间成本,提升用户体验,一个统一的跳转管理平台变得非常必要,新的平台功能精简后,将具备以下 三个功能
    1,路由协议的增/删/改/查功能,方便开发者/需求方 在开发的时候能快速找到想跳转的位置以及需要传的参数的格式,以及开发人员可以随时对协议进行管理,不用再特地通知
    2,常用统一跳转,这个是重点功能,通过下拉框列出所有可能的统一跳转场景,选择之后,自动展示所需的参数,参数填写完成,点击生成,就可以使用弹窗 显示 编码后的跳转链接 + 二维码,弹窗里有输入uid的功能,点击发送,可以直接发送小总管消息
    3,路由协议的解析/加密,这个主要是提供给技术开发人员的功能,在开发过程中会遇到很多很多的跳转代码,由于进过base64编码,链接可读性非常差,因此提供一个解析功能,用于解析出 陌生的统一跳转代码的含义,以及跳转参数;同时修改参数,可以再次加密

    涉及到的部门

    H5、客户端、服务端、QA、产品/运营、Cocos

    好处

    1,开发人员可以随时对协议 进行管理,不用再特地通知
    2,操作人员 生成/访问/解析 统一跳转链接的时候,能节省不少时间成本
    3,结果的统一性与准确性,避免多种平台/工具所产生/解析的 结果不一致
    4,QA/需求方 即使对技术不熟悉,也可以顺利地给自己发送统一跳转消息

    平台搭建

    原型图地址

    https://modao.cc/app/qmGHakFgPOLg3gbt9mAfjxwlsSvG7jj?simulator_type=device&sticky

    功能

    路由参数管理

  3. 具备 增 / 删 / 改 / 查 等基本功能

  4. 采取 下拉框选择不同的业务场景,底部表格展示当前的action + 所需的参数list
  5. 表格展示 当前路由协议,含义,备注,以及安卓/IOS 版本号控制
  6. 强化责任意识,新增 创建人,创建时间,修改人,最后修改时间,路由修改的流程做到严格把控,有问题也可以即使寻求专人处理


常用统一跳转

新建常用跳转

力求简洁,操作简单,让QA,需求方自己也能独立操作
1,下拉框选择路由(有具体描述,方便区分)
2,根据不同的路由,展示不同的参数区域,填写 + 校验
3,点击生成,会弹出一个弹窗,展示生成的统一跳转链接(可复制)+ 二维码
4,弹窗内包含uid输入框,输入uid之后,就可以直接发送小总管消息到客户端

协议链接编码/解码

1,输入统一跳转代码,点击解析,还原原本的参数;修改部分参数,点击极矮
2,具有代码格式化的功能,点击格式化,弹出窗口,展示格式化后的代码

后台地址

目前数据已经全部都是使用接口调用的协议,由于只是用来在测试环境发送链接,因此,本平台不会有线上版本,只会在测试环境存在

http://testmanager.wb-intra.com/web/front-backstage/#/unclassified/universalJumpManage


技术实现相关

包括字段定义和接口名协商

字段及含义

核心 router 单元数据

路由参数管理

核心数据结构

  1. {
  2. routerName: 'main',
  3. routerId: 0,
  4. desc: 'main 首页相关',
  5. actionName: 'enter',
  6. actionDesc: 'enter 进入首页页面',
  7. routerCode: 'wanba://main/enter',
  8. extraDesc: '',
  9. IOSVersion: '',
  10. AndroidVersion: '',
  11. childParams: [
  12. {
  13. name: 'shareId',
  14. type: 'int',
  15. case: '',
  16. action: '',
  17. desc: '分享的id,如 12345',
  18. IOSVersion: '',
  19. AndroidVersion: '',
  20. childParamsId: 0,
  21. mapValue: ''
  22. }],
  23. // 2020-10-16 新增
  24. createTime: '',
  25. lastOperateTime: '',
  26. creator: '',
  27. lastOperator: ''
  28. }

优化后, 以router为元数据,routerId 为唯一key

常用统一跳转

列表 List 单元

  1. {
  2. jumpCode: 'wanba://shopcenter/enter?_info=eyJhdXRvQ2xvc2UiOiIwIiwidHJhZGVUeXBlIjoiMCJ9', // 统一跳转代码
  3. jumpSceneName: '', // 跳转所属场景
  4. jumpUsage: '1', // 用途
  5. jumpDesc: '', // 备注
  6. jumpCreator: '', // 创建人
  7. jumpCreateTime: '', // 创建时间
  8. jumpSelectedParams: '', // 创建时选择的参数 json字符串
  9. jumpTotalParams: '' // 所选场景的完整router json字符串
  10. },

重新编辑 data

  1. formEditJumpData: {
  2. jumpCode: '', // 统一跳转代码
  3. paramsBefore: '', // 之前的选项 json字符串
  4. paramsTotal: '' // 完整的router数据 json字符串
  5. }

需要的接口

接口比较简单,增删改查

由于之前有一个统一跳转平台,链接如下
http://testmanager.wb-intra.com/web/front-backstage/#/activityConfig/unifyJumpConfig
增删改查的接口,服务端需要改一些接口名和字段

下面列出所必需的 接口和返回的格式

路由参数管理

fe-unifyjump-manager/list

获取所有的统一跳转数据, 返回数据结构如下, action 是适用场景,params是相应的参数解释,这是主要维护的数据,在 统一跳转查询,创建/编辑跳转 的时候,都非常重要

  1. {
  2. code: 0
  3. data: {
  4. list: [
  5. {
  6. routerName: 'main',
  7. routerId: 0,
  8. desc: 'main 首页相关',
  9. actionName: 'enter',
  10. actionDesc: 'enter 进入首页页面',
  11. routerCode: 'wanba://main/enter',
  12. extraDesc: '',
  13. IOSVersion: '',
  14. AndroidVersion: '',
  15. childParams: [
  16. {
  17. name: 'shareId',
  18. type: 'int',
  19. case: '',
  20. action: '',
  21. desc: '分享的id,如 12345',
  22. IOSVersion: '',
  23. AndroidVersion: '',
  24. childParamsId: 0,
  25. mapValue: ''
  26. }]
  27. },
  28. ...
  29. ]
  30. }
  31. max: null
  32. msg: null
  33. success: true
  34. }

fe-unifyjump-manager/add

新建统一跳转类型时,点击保存的接口, 之后我会再次调用 list 接口 刷新主数据, 参数传表单数据

  1. {
  2. code: 0
  3. msg: null
  4. success: true
  5. }

fe-unifyjump-manager/delete

删除某条数据 参数传 routerId

  1. {
  2. code: 0
  3. msg: null
  4. success: true
  5. }

fe-unifyjump-manager/update

编辑统一跳转类型时,点击保存的接口 ,参数传routerId + 新的表单数据

  1. {
  2. "code": 0,
  3. "data": null,
  4. "msg": "编辑成功",
  5. }

fe-unifyjump-manager/search

支持模糊查询,针对路由名称和描述进行查询 参数传想搜索的key

  1. {
  2. code: 0
  3. data: {
  4. list: [
  5. {
  6. routerName: 'main',
  7. routerId: 0,
  8. desc: 'main 首页相关',
  9. actionName: 'enter',
  10. actionDesc: 'enter 进入首页页面',
  11. routerCode: 'wanba://main/enter',
  12. extraDesc: '',
  13. IOSVersion: '',
  14. AndroidVersion: '',
  15. childParams: [
  16. {
  17. name: 'shareId',
  18. type: 'int',
  19. case: '',
  20. action: '',
  21. desc: '分享的id,如 12345',
  22. IOSVersion: '',
  23. AndroidVersion: '',
  24. childParamsId: 0,
  25. mapValue: ''
  26. }]
  27. },
  28. ...
  29. ]
  30. }
  31. max: null
  32. msg: null
  33. success: true
  34. }