Skip to content

TMS-Logistics是一个基于Spring Cloud微服务架构体系的、具备完整物流业务闭环的生产级物流项目系统。

Notifications You must be signed in to change notification settings

isbutch/TMS-Logistics

 
 

Repository files navigation

1、TMS-Logistics

1.1、概述

TMS-Logistics是一个基于Spring Cloud微服务架构体系的、具备完整物流业务闭环的生产级物流项目系统。

1.2、特性

  • 取派件、分段运输转发等核心环节接入高可用任务调度,可定制调度策略,目前支持成本优先、距离优先俩种方式。
  • 多类型(干线,支线,接驳线)、网状线路,支持多维度配置线路,有力缓解疫情等突发原因导致的运输任务积压。
  • 分布式仓储(Redis缓存方式)配合集装箱模式灵活转运订单。
  • MongoDB存储订单信息流,实时追踪订单状态。
  • 司机、快递员等多端点位采集位置上报,运输轨迹一目了然。
  • 公交车模式运输任务,预规划车次计划的基础上可插拔配置不同车型车辆与多样化司机作息安排。
  • 小程序下单、多途径支付、取消,拒收等履约方式、预约取件时间等机制,一切从用户角度出发。
  • 根据地图坐标范围、工作负载,行政机构范围等多特征点智能分配取件、派件作业任务,整体提升运作效率。
  • 线上线下结合,多场景、多系统角色支撑的生产级系统业务编排。

1.3、产品说明

TMS-Logistics类似顺丰速运,是向C端用户提供快递服务的系统。竞品有:顺丰、中通、圆通、京东快递等。 项目产品主要有4端产品:

  • 用户端:基于微信小程序开发,外部客户使用,可以寄件、查询物流信息等。
  • 快递员端:基于安卓开发的手机APP,公司内部的快递员使用,可以接收取派件任务等。
  • 司机端:基于安卓开发的手机APP,公司内部的司机使用,可以接收运输任务、上报位置信息等。
  • 后台系统管理:基于vue开发,PC端使用,公司内部管理员用户使用,可以进行基础数据维护、订单管理、运单管理等。

2、物流行业系统

从广度上来说,物流系统可以理解为由多个子系统组成,这里我们以一般综合型物流系统举例,在整体框架上可以分为仓储系统WMS、运配系统TMS、单据系统OMS和计费系统BMS。

这四大系统本质上解决了物流行业的四大核心问题:怎么存放、怎么运送、怎么跟进、怎么结算。

TMS-Logistics,是TMS运配系统,本质上解决的是怎样运送的问题。

image.png

3、系统架构和技术架构

3.1、系统架构

3.2、技术架构

下图展现了TMS-Logistics使用的主要的技术:

4、功能演示

4.1、需求文档

下面将演示四端的主要功能,更多的功能具体查看各端的需求文档

用户端 https://share.lanhuapp.com/#/invite?sid=qx01hbI7 密码: UxGE
快递员端 https://share.lanhuapp.com/#/invite?sid=qxe42Dya 密码: Nomz
司机端 https://share.lanhuapp.com/#/invite?sid=qX0NEmro 密码: yrzZ
管理端 https://share.lanhuapp.com/#/invite?sid=qX0axVem 密码: fh3i

4.2、功能架构

4.3、业务功能流程

:::info 流程说明:

  • 用户在**【用户端】**下单后,生成订单
  • 系统会根据订单生成**【取件任务】,快递员上门取件后成功后生成【运单】**
  • 用户对订单进行支付,会产生**【交易单】**
  • 快件开始运输,会经历起始营业部、分拣中心、转运中心、分拣中心、终点营业部之间的转运运输,在此期间会有多个**【运输任务】**
  • 到达终点网点后,系统会生成**【派件任务】**,快递员进行派件作业
  • 最后,用户将进行签收或拒收操作 :::

4.4、用户端

功能演示操作视频列表:

下单操作 点击查看
取消订单 点击查看
地址簿 点击查看

image.png image.png image.png

4.5、快递员端

功能演示操作视频列表:

派件操作流程 点击查看
取件操作流程 点击查看
全部取派操作流程 点击查看
搜索操作流程 点击查看
消息操作流程 点击查看

image.png image.png image.png image.png

4.6、司机端

点击查看演示视频 image.png image.png image.png image.png image.png

4.7、后台管理系统

功能演示操作视频列表:

建立机构 点击查看
新建员工 点击查看
绘制作业范围 点击查看
新建线路 点击查看
启用车辆 点击查看

QQ图片20230114151916.pngimage.png image.png image.png image.png image.png image.png image.png image.png image.png

5、服务列表:

服务名称 版本 备注
MySQL 8.0.29 业务数据存储
Redis 7.0.4 用作缓存以及分布式锁
RabbitMQ 3.9.17 需要集成官方的延迟队列插件
Nacos v2.1.0 配置中心与注册中心解决方案
Neo4j 4.4.5 基于图数据库计算运输路线
xxl-job 2.3.0 分布式定时任务框架
MongoDB 4.4 存储轨迹、作业范围等数据
Seata 1.5.2 分布式事务解决方案
Elasticsearch 7.17.5 分布式全文索引解决方案
Skywalking 9.1.0 链路追踪解决方案
Graylog 4.3 分布式日志解决方案
Leaf 1.0.1 美团点评分布式ID生成系统
EagleMap 1.0 黑马程序员自研开源项目 https://eaglemap.itheima.net/
权限管家 1.0.7 黑马程序员自研开源项目 https://gitee.com/itcastopen/itcast-authority
nexus 2.15.1 maven私服
gogs 0.12 git代码管理
Jenkins lts-jdk11 持续集成

6、文档

🎏简介 (itheima.net)

《神领物流-讲义-v1.5》密码:kzcd

7、记录

后端

  • Day1
    1. 项目框架整体搭建
  • Day2
    1. 项目服务整体搭建
  • Day3
    1. 项目依赖和结构配置
  • Day4
    1. 虚拟机重新配置
    2. 熟悉使用权限管家
    3. gateway路由转发和鉴权功能理解
  • Day5
    1. 双token三验证模式,关于token的无状态性,有安全隐患(异地登录),一端刷新refresh_token,另一端第三次校验token时token无效,需要重新登录
    2. 支付模块初步搭建
    3. domain模块搭建
  • Day6
    1. api模块搭建
  • Day7
    1. @EnumValue与通用枚举类结合,可减少魔法值的使用
    2. 支付模块搭建完成,未测试
    3. 网关路由转发和鉴权流程复习
  • Day8
    1. 双token三验证复习,用户端登录功能完成,未测试
  • Day9
    1. 分布式锁的两种实现方案及笔记复习
    2. 交易模块初步搭建
    3. 快递员模块完成
  • Day10
    1. 微服务工程结构规范化
    2. 数据校验和自定义异常
    3. 配置文件阅读
    4. 支付渠道代码阅读完毕
    5. 开始阅读扫码支付代码
  • Day11
    1. 幂等性
    2. 支付方式使用工厂模式(反射+注解)
    3. 理解xxl-job原理及使用
    4. 查询支付状态和退款状态接口,通过xxl-job任务调度定时调用,通过mq将不符合条件的数据通知给其他系统
    5. trade模块已完成
  • Day12
    1. 运费模块已完成
    2. 运费模板的选择使用责任链模式(运费的计算通过模板进行)
  • Day13
    1. 路线规划模块初步搭建
  • Day14
    1. mq模块error三种情况:发送到交换机,但队列未绑定、发送到mq服务器,但交换机不存在、未发送到mq服务器
    2. 发送消息的三种error情况,用日志、数据持久化(后续通过xxl-job重新发送消息)和retry重试机制,消费消息error用ErrorMessageConfig类处理
    3. TMS-logistics-mq模块已完成,TMS-logistics-base模块初步搭建
    4. transport模块通过mq和IService封装实现机构同步,实现OrganService接口完成机构管理
  • Day15
    1. 完成路线管理和路线成本接口
    2. 接入EagleMap API获取时间、距离
    3. web-courier模块和work-service模块初步搭建
  • Day16
    1. 智能调度与整体核心业务理解
    2. 订单转运单(取件成功消息消费、美团leaf生成运单号、业务实现)
    3. 理解美团leaf,号段模式,双buffer优化,IdService
    4. 完善运单服务,使用redis的list结构合并运单
  • Day17
    1. base模块代码理解, 线路 -> 车次 -> 车辆 -> 司机/货物 -> 排班 -> 计划服务
    2. base模块代码阅读完毕
  • Day18
    1. 过滤器属于servlet级别,拦截器属于spring级别,执行顺序:过滤器 -> 拦截器
    2. 白名单登录接口生成token,随后header的AUTHORIZATION设置为token,网关模块的过滤器放行白名单,检验token,鉴权后,向下游微服务的header中添加userInfo和token ,通过路由转发的过滤器将AddRequestHeader=X-Request-From 设置为sl-express-gateway,下游微服务的user拦截器检验userInfo和X-Request-From后,将userInfo存储到ThreadLocal中,同时token拦截器将AuthTemplate实例存放到AuthTemplateThreadLocal
    3. common模块代码阅读完毕
    4. 完成DispatchJob类任务调度将合并运单生成运输任务,TransportTaskMQListener类创建运输任务,生成司机作业单,理解司机入库、出库和回车登记逻辑
    5. driver模块代码阅读完毕,理解车辆计划业务流程
  • Day19
    1. MongoDB实现作业范围的存储,理解service-scope模块代码
  • Day20
    1. 理解取派件逻辑
    2. courier模块和dispatch模块完毕
    3. 物流信息代码理解,解决数据量大(mongodb)和并发高(多级缓存)问题。记录物流信息(mq)(数据实时性要求不高,并发量大,流量削峰)
  • Day21
    1. 理解分布式下多级缓存数据一致性问题
    2. 分别理解缓存击穿(热点key,单点失效(逻辑过期,互斥锁))、缓存雪崩(大量key过期时间相同,集体失效 / Redis服务器宕机(过期时间随机,服务降级,搭建高可用集群))和缓存穿透问题(redis和数据库中都没有(缓存null,布隆过滤器))
    3. 布隆过滤器能够判断一定不存在,而不能用来判断一定存在。布隆过滤器并非缓存,只能判断是否存在,可解决缓存穿透问题(数据不存在,抛出异常)
  • Day22
    1. 分布式日志GrayLog与链路追踪SkyWalking搭建完成
    2. 简单理解短信服务、搜索服务和轨迹服务
  • Day23
    1. 全部代码阅读完毕

About

TMS-Logistics是一个基于Spring Cloud微服务架构体系的、具备完整物流业务闭环的生产级物流项目系统。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Vue 48.3%
  • Java 29.0%
  • SCSS 11.6%
  • JavaScript 10.4%
  • CSS 0.6%
  • Dockerfile 0.1%