物流
2023-08-26 11:10:46 0 举报
物流项目业务全流程
作者其他创作
大纲/内容
运单号采用美团Leaf的号段模式生成的,但我们不能直接说这是本地调用,而应该说这是远程调用单独部署的美团leaf服务,下发了一个ID下来的
营业网点
gateway网关
快递员(courier)微服务
返回session_keyopenid等
封装运单消息并发送到物流信息消息队列中
调度
用户端
other
日志审计
司机App
MQ
生成运单号
省略一系列收件步骤....
携带code、appsecretappid
仓储服务
Skywalking
Neo4j
MongoDB
否
物流信息微服务
...
发送消息调度中心
标准延迟时间:延迟10秒
根据userId生成令牌、续约(刷新)令牌
三方支付平台
幂等性校验运单是否存在
路线微服务
判断是否需要进行调度
其他服务...
web-司机微服务
权限中台
订单延迟队列
微信小程序
wms
运费微服务
工厂模式
IService
存储运单数据
发送消息到MQ:更新运单状态为到达终端网点
规划路线
运单是否需要调度
wx.login()
点击登录
订单是否存在
管理平台
用户微服务
服务范围微服务
发送消息到MQ通知其他系统
小程序授权,获取到手机号临时凭证
这里校验订单、重量、体积、收件人位置的操作,其实就是判断oms订单数据中的订单表(order)、货物信息表(cargo)、订单位置表(location)中的数据是否完整、订单状态是否正常代码中的操作就是在work微服务中远程调用了订单微服务,根据订单id查询出来订单的上述各项信息,进行校验
ElasticSearch
快递员微服务
二级转运中心子类
揽收成功,发送订单数据到MQ
发送消息到MQ:发送运单进行调度
公用(base)微服务
支付
订单转运单流程
短信微服务
运单取派件(work)微服务
机构枚举类
{ \"openid\":\"sdafsd12397ds98f\",“accessToken”:\"访问令牌\
投递消息key=order
执行订单转运单流程
RabbitMQ
调度微服务
运单延迟队列
网关
order
是
base微服务聚合了其他功能,统一对外暴露接口
IService工厂类
静态资源
发送消息接口
订单队列
监听取件成功消息队列
携带phoneCode手机号临时凭证
返回用户信息
根据openid查询用户
判断是否需要调度的依据是:寄收地址是否同一网点是:那就不用调度,直接运单保存并发个派件消息到MQ,由其他系统执行派件逻辑就行了不是:那就规划完整的转运路线
发送消息到MQ:生成派件任务
付款成功
返回手机号
封装结果:微信唯一标识符、令牌、续约(刷新)令牌、是否绑定手机号
支付服务
Nginx 主
微服务组件
运单微服务
监听器
调用路线规划服务,根据寄件网点ID和收件网点ID查询出来完整的转运节点(完整的路线是要经过多个节点的,这一点大家应该都知道了吧?)返回的转运路线中包含所有的节点列表和路线成本,DTO如右图所示:
Nginx 备
结束
快递员App
订单微服务
消息通知
重量、体积、收发件人位置是否存在
发送
web-cnsumer客户端微服务
权限
消费
交换机
订阅
其他微服务
订单服务
返回code
物流信息队列
开始订单转运单核心流程
判断的依据就是起点、终点是否是同一个网点,这一步取的是前面步骤中判断的结果
保存用户信息及手机号
web-快递员微服务
司机微服务
查询支付状态
MySQL
任务调度
一级转运中心子类
wx.request()携带code、phoneCode
轮询支付状态
登录请求直接放行
前端资源
调用Base微服务向MQ中发送消息
Seata
Redis
快递员手机App客户端
公司自研中台
注册中心
运单状态队列
web-客户端微服务
微信开放平台
web-管理平台微服务
轨迹微服务
Sentinel
发送消息到MQ:通知其他系统运单已生成
更新订单支付状态
抛出异常结束流程
开始
HA
支付微服务
Base微服务
运单Service
用户
搜索微服务
0 条评论
下一页