本文用于把课件中的业务与技术点,和当前项目代码做最终对照。
状态说明:已实现 表示代码中已有可运行的核心实现;核心已实现 表示主流程完成,外部平台或生产化能力使用模拟或简化实现;规划项 表示课件中属于部署、运维、前端或生产接入内容,当前后端代码不作为必须实现范围。
总体结论
从 Day01 到 Day08,项目已经形成了一个比较完整的跨境电商 SaaS 柔性供应链后端系统,覆盖系统架构、供应商、采购、仓储、商品、订单、物流、财务、BI、权限安全、SaaS 租户运营等核心业务。
项目中的模块划分如下:
| 业务范围 | 代码模块 |
|---|
| 公共能力 | supplychain-common/supplychain-common-core、supplychain-common/supplychain-common-oss |
| 网关 | supplychain-gateway |
| 系统与权限 | supplychain-system |
| 供应商 SRM | supplychain-supplier |
| 采购 PMS | supplychain-purchase |
| 仓储 WMS | supplychain-warehouse |
| 商品 PIM | supplychain-product |
| 订单 OMS | supplychain-order |
| 物流 TMS | supplychain-logistics |
| 财务与 BI | supplychain-finance |
| 数据库脚本 | sql/01_schema.sql 到 sql/13_security_saas_day08_schema.sql |
| 远程配置 | nacos-config/common、nacos-config/extension |
项目中已经落地的主要技术点包括:Maven 聚合继承、Spring Cloud Gateway、Nacos、OpenFeign、Seata、Redis 缓存与分布式锁、RocketMQ 异步事件、XXL-JOB 分片任务、MyBatis-Plus 多租户插件、逻辑删除、乐观锁、OSS Starter、WebSocket 站内信、Spring Mail、Sa-Token、RBAC、数据权限、操作日志、套餐限制、租户写保护等。
Day01 项目认知与系统架构设计
| 课件技术点 | 代码实现位置 | 实现状态 | 面试说明 |
|---|
| 父工程与多模块聚合 | 根目录 pom.xml、各业务模块 pom.xml | 已实现 | 项目使用 Maven 父工程统一管理版本,业务按微服务模块拆分,公共能力沉淀到 common,方便后续扩展和团队协作。 |
| 公共返回值 | supplychain-common-core 中 R、PageResult 等 | 已实现 | 接口返回格式统一,前端只需要按固定结构处理成功、失败、分页等结果。 |
| 统一异常处理 | BusinessException、ResultCode、全局异常处理器 | 已实现 | 业务异常和系统异常统一转换为标准响应,避免每个 Controller 重复 try-catch。 |
| MyBatis-Plus 基础能力 | BaseEntity、多租户插件、自动填充、逻辑删除、乐观锁 | 已实现 | 基础字段、租户隔离、审计字段和版本控制统一处理,减少重复代码。 |
| Nacos 配置中心 | nacos-config/common、nacos-config/extension | 已实现 | 本地配置只保留启动必要项,业务配置、数据库、Redis、OSS、MQ 等抽到远程配置,方便多环境管理。 |
| 网关统一入口 | supplychain-gateway | 已实现 | 所有微服务通过网关访问,网关负责路由、认证透传、限流等统一入口能力。 |
| 数据库初始化脚本 | sql/01_schema.sql、sql/02_init_data.sql | 已实现 | 基础系统表和初始化数据已沉淀为 SQL,方便本地和测试环境快速搭建。 |
Day02 供应商管理系统 SRM
| 课件技术点 | 代码实现位置 | 实现状态 | 面试说明 |
|---|
| 供应商 CRUD | supplychain-supplier | 已实现 | 供应商基础信息、联系人、银行账户、资质文件等核心数据已拆表维护。 |
| 供应商编码自动生成 | SupplierCodeGenerator | 已实现 | 编码优先使用 Redis 自增长,Redis 异常时使用 MySQL 兜底,保证编码连续性和可用性。 |
| 供应商列表查询 | Supplier 查询 Service/Mapper | 已实现 | 使用 MyBatis-Plus 动态条件查询,支持多条件筛选,并对手机号做脱敏展示。 |
| 供应商详情异步组装 | Supplier 详情查询 Service | 已实现 | 主表查询后,联系人、银行、资质等关联数据并行查询,缩短详情接口响应时间。 |
| 新增供应商校验 | Supplier 新增逻辑 | 已实现 | 对供应商名称、社会信用代码、联系方式等核心字段做业务校验,避免脏数据进入系统。 |
| 编辑供应商 CAS 更新 | Supplier 编辑逻辑 | 已实现 | 编辑时结合状态判断和乐观锁版本号,避免并发修改覆盖。 |
| 逻辑删除 | Supplier 删除逻辑 | 已实现 | 删除时不物理删除数据,而是更新删除标识,方便审计和历史追溯。 |
| 审核状态机 | Supplier 状态流转白名单 | 已实现 | 供应商从草稿、待审核、已通过、已拒绝、已停用之间流转,状态变化不能随意跳转。 |
| 审核幂等 | Supplier 审核逻辑 | 已实现 | 审核通过时先判断是否已通过,再通过 where status=待审核 保证并发请求不会重复创建账号。 |
| OSS 资质上传 | supplychain-common-oss、供应商资质上传接口 | 已实现 | 上传前做 MIME、Magic Bytes、大小校验,上传后重命名并按目录规范存入 OSS,路径写入 supplier_cert。 |
| 资质到期提醒 | XXL-JOB 资质扫描任务 | 已实现 | 使用 XXL-JOB 分片广播扫描资质数据,并通过线程池并行处理到期提醒和过期标记。 |
| 供应商绩效评分 | 月度评分 XXL-JOB | 已实现 | 按交付、质量、响应、价格等维度计算月度评分,生成评分日志并更新供应商等级。 |
| 供应商分层分级 | 分级策略、配置表、重点观察名单、风险事件 | 已实现 | 系统建议加租户配置,风险事件表用于避免重复预警。 |
| 供应商通知 | WebSocket 站内信、Spring Mail | 已实现 | 原控制台通知已升级为站内信和邮件通知,控制台只作为开发辅助。 |
| 数据库脚本 | sql/03_supplier_schema.sql、sql/04_supplier_init_data.sql | 已实现 | 供应商相关表、配置表、风险事件表等脚本已统一管理。 |
Day03 采购管理系统 PMS
| 课件技术点 | 代码实现位置 | 实现状态 | 面试说明 |
|---|
| 采购申请 | supplychain-purchase | 已实现 | 支持采购申请创建、提交、审批、查询和状态流转。 |
| 采购需求自动生成 | PMS 自动补货 XXL-JOB + WMS 库存预警 Feign | 已实现 | 定时任务按分片拉取 WMS 库存预警,根据安全库存、在途库存、补货倍数计算建议采购量,自动生成采购申请,并复用去重逻辑避免重复采购。 |
| 采购申请去重 | PurchaseRequisitionDuplicateChecker | 已实现 | 创建采购申请前检查同租户、同仓库、同 SKU 是否已有足够进行中的采购申请或采购单,防止重复采购。 |
| 采购申请分级审批 | PurchaseApprovalPolicy | 已实现 | 提交采购申请时按金额自动判断审批层级,小额自动通过,中额走采购经理,大额走财务经理,避免所有申请都走同一个审批链路。 |
| 询价管理 | 采购询价相关 Controller/Service | 已实现 | 支持向供应商询价、记录报价、比较历史价格和供应商表现。 |
| 询价比价综合评分 | PurchaseInquiryScoreCalculator | 已实现 | 报价对比不只看价格,而是综合价格、交期、供应商评级计算总分,并给出推荐报价。 |
| 采购订单 | Purchase Order 相关接口 | 已实现 | 采购订单覆盖创建、审批、取消、状态更新等核心流程。 |
| 采购订单状态机 | PurchaseOrderStateMachine | 已实现 | 采购订单按草稿、待确认、已确认、发货中、部分到货、全部到货、已对账、已结清、已取消流转,避免前端绕过业务动作直接改状态。 |
| 采购入库联动 WMS | Purchase Receipt + Warehouse Feign | 已实现 | 采购入库时通过 Feign 调用 WMS 创建入库或库存变更。 |
| 入库联动财务 | Purchase Receipt + Finance Feign | 已实现 | 入库完成后联动财务生成应付数据,保证采购和财务业务闭环。 |
| 分布式事务 | Seata @GlobalTransactional | 已实现 | 采购入库同时影响 PMS、WMS、FMS,使用 Seata 保证跨服务数据一致性。 |
| 采购退货 | 采购退货相关接口 | 已实现 | 支持采购退货申请、状态维护,并关联库存和财务后续处理。 |
| 退货冲抵应付 | Purchase Return + Finance Feign | 已实现 | 采购退货出库后通过 Feign 通知财务服务冲减对应采购单的应付金额,并保证应付金额不会低于已付款金额。 |
| 应付账款 | Finance Feign / FMS 接口 | 已实现 | 采购业务不直接操作财务表,而是通过 Feign 调用财务服务。 |
| 应付到期提醒 | FMS 应付提醒 XXL-JOB + 可靠通知事件 | 已实现 | 财务定时扫描即将到期或已逾期的应付单,更新逾期天数,并通过通知事件提醒财务负责人处理。 |
| 数据库脚本 | sql/05_purchase_schema.sql | 已实现 | 采购申请、询价、订单、收货、退货等表结构已落地。 |
Day04 仓储管理系统 WMS
| 课件技术点 | 代码实现位置 | 实现状态 | 面试说明 |
|---|
| 仓库与库位体系 | supplychain-warehouse | 已实现 | 仓库、库区、库位按层级设计,可以支撑货物按区域、货架、层列进行管理。 |
| 入库管理 | WMS 入库接口 | 已实现 | 支持采购入库、库存增加、库存流水记录。 |
| 出库管理 | WMS 出库接口 | 已实现 | 支持订单出库、库存扣减、库存流水记录。 |
| 库存查询 | Inventory 查询接口 | 已实现 | 支持按 SKU、仓库、库位查询可用库存和库存状态。 |
| 库存分配策略 | 库存分配 Service | 已实现 | 出库时按库存策略进行分配,结合可用库存和库存状态避免超卖。 |
| Redis 库存缓存 | WMS Redis 缓存相关逻辑 | 已实现 | 高频库存查询使用 Redis 加速,库存变化后同步刷新缓存。 |
| 分布式锁 | WMS 库存扣减/调整逻辑 | 已实现 | 并发扣减库存时使用 Redis 锁控制同一 SKU 的并发修改,降低超扣风险。 |
| RocketMQ 异步事件 | WMS 出入库事件 | 已实现 | 库存变化、出库完成等场景通过 MQ 通知其他系统,减少同步调用耦合。 |
| 幂等消费 | WMS MQ 消费逻辑 | 已实现 | 消费端通过业务唯一键避免重复消费导致库存重复变更。 |
| 盘点与调拨 | WMS 盘点、调拨接口 | 已实现 | 支持库存盘点、库存调整、仓库间调拨。 |
| 数据库脚本 | sql/06_warehouse_schema.sql、sql/09_wms_day04_schema.sql | 已实现 | WMS 基础表和 Day04 扩展表已落地。 |
Day05 商品管理 PIM 与订单管理 OMS
| 课件技术点 | 代码实现位置 | 实现状态 | 面试说明 |
|---|
| 商品分类 | supplychain-product | 已实现 | 支持类目管理,为 SPU/SKU 建模提供基础。 |
| SPU/SKU 管理 | Product 模块 | 已实现 | SPU 管通用商品信息,SKU 管规格、价格、库存关联信息。 |
| 商品多语言 | Product I18n 相关接口 | 已实现 | 支持跨境场景下商品标题、描述等多语言维护。 |
| 商品图片与价格 | Product 图片、价格接口 | 已实现 | 支持商品图片、价格信息维护。 |
| 订单接入 | supplychain-order | 已实现 | 支持订单创建、查询、详情、取消、审核、拒绝等核心接口。 |
| 平台订单拉取 | OMS 平台订单同步任务 | 核心已实现 | 已实现拉单任务和模拟平台适配,真实平台 API 可按适配器继续扩展。 |
| 平台 Webhook 验签 | OMS Webhook 处理逻辑 | 已实现 | 外部订单推送先验签,再做幂等处理和订单标准化。 |
| 订单幂等 | OMS 幂等处理逻辑 | 已实现 | 平台订单号、业务单号等作为幂等依据,避免重复创建订单。 |
| 库存分配与防超卖 | OMS 调用 WMS / Redis 预占 | 已实现 | 下单时联动库存系统进行库存分配,避免订单和库存数据不一致。 |
| 订单拆分合并 | OMS 拆单、合单接口 | 已实现 | 支持按照仓库、物流、商品等维度拆分或合并订单。 |
| 售后退款 | OMS 售后相关接口 | 已实现 | 支持退款、退货等售后状态记录。 |
| 数据库脚本 | sql/10_pim_oms_day05_schema.sql | 已实现 | PIM 和 OMS 相关表结构已落地。 |
Day06 物流管理系统 TMS 与跨境合规
| 课件技术点 | 代码实现位置 | 实现状态 | 面试说明 |
|---|
| 承运商管理 | supplychain-logistics | 已实现 | 支持承运商基础资料、渠道、报价等维护。 |
| 物流渠道规则 | TMS 渠道规则 Service | 已实现 | 根据目的地、重量、时效、成本等因素推荐物流渠道。 |
| 运单管理 | Waybill 相关接口 | 已实现 | 支持创建运单、查询运单、更新运单状态。 |
| 轨迹查询 | Tracking 相关任务和接口 | 核心已实现 | 通过 XXL-JOB 定时拉取轨迹,第三方物流接口以适配器和模拟实现为主。 |
| 轨迹异常识别 | 异常轨迹检测逻辑 | 已实现 | 对长时间未更新、异常节点等进行识别并触发通知。 |
| 物流退货 | Return 相关接口 | 已实现 | 支持退货物流单和退货轨迹维护。 |
| 物流费用 | Fee / Bill 相关接口 | 已实现 | 支持物流费用导入、确认,并联动财务生成应付。 |
| XXL-JOB 分片任务 | TMS 轨迹扫描任务 | 已实现 | 轨迹拉取按分片执行,适合多实例部署时分摊任务压力。 |
| RocketMQ 异步通知 | TMS 事件发布/消费 | 已实现 | 物流状态变化通过 MQ 通知订单、财务等模块。 |
| Redis 缓存 | TMS 查询缓存 | 已实现 | 对渠道、轨迹等高频数据做缓存,降低数据库压力。 |
| 数据库脚本 | sql/11_tms_day06_schema.sql | 已实现 | TMS 与跨境物流相关表结构已落地。 |
Day07 财务结算系统 FMS 与 BI
| 课件技术点 | 代码实现位置 | 实现状态 | 面试说明 |
|---|
| 应收管理 | supplychain-finance | 已实现 | 支持应收创建、审核、收款、状态维护。 |
| 应付管理 | Finance payable 接口 | 已实现 | 采购、物流等业务通过 Feign 联动生成应付。 |
| 账单导入与确认 | Bill 上传、解析、确认接口 | 已实现 | 支持账单上传、明细解析、汇总确认。 |
| 汇率管理 | Exchange Rate 相关任务 | 已实现 | 支持汇率刷新和多币种财务计算基础。 |
| 利润分析 | SKU / 店铺利润分析接口 | 已实现 | 汇总订单、成本、费用等数据,计算经营利润。 |
| 亏损预警 | Profit warning 相关逻辑 | 已实现 | 对亏损 SKU、亏损店铺等异常经营指标发出预警。 |
| VAT 税务 | VAT 生成与导出接口 | 已实现 | 支持税务数据生成和导出。 |
| 现金流 | Cash flow / forecast 接口 | 已实现 | 支持现金流统计和预测。 |
| BI 看板 | Dashboard / KPI 接口 | 已实现 | 支持销售趋势、平台对比、库存健康、KPI 等分析接口。 |
| 报表缓存 | Redis 报表缓存 | 已实现 | BI 高频统计接口使用缓存提升响应速度。 |
| AI 查询 | BI 查询模板/规则 | 核心已实现 | 当前以规则和模板化查询为主,真实大模型问数属于后续增强项。 |
| 数据库脚本 | sql/12_fms_bi_day07_schema.sql | 已实现 | 财务和 BI 相关表结构已落地。 |
Day08 权限安全系统与 SaaS 运营管理
| 课件技术点 | 代码实现位置 | 实现状态 | 面试说明 |
|---|
| 登录认证 | supplychain-system、Sa-Token 配置 | 已实现 | 登录后签发 Token,网关和服务端统一进行认证校验。 |
| 密码加密 | BCrypt 密码处理 | 已实现 | 密码不明文入库,使用 BCrypt 做不可逆加密。 |
| 登录失败锁定 | Auth 登录锁定策略 | 已实现 | 多次登录失败后锁定账号,支持自动解锁和手动解锁。 |
| Refresh Token | Redis Refresh Token 轮换 | 已实现 | Access Token 到期后可通过 Refresh Token 续期,刷新时做轮换避免长期复用。 |
| RBAC 权限模型 | 用户、角色、菜单、权限表与 Service | 已实现 | 用户绑定角色,角色绑定菜单和权限码,接口通过权限注解控制访问。 |
| 权限缓存 | Redis 权限缓存 | 已实现 | 登录后或访问时缓存用户权限,角色变更后清理缓存。 |
| 数据权限 | @DataScope、DataScopeAspect | 已实现 | 列表查询根据用户数据范围自动追加查询条件。 |
| 多租户隔离 | TenantContext、MyBatis-Plus 租户插件 | 已实现 | 大多数业务表通过 tenant_id 做租户级数据隔离。 |
| 套餐限制 | @PlanLimit、套餐用量检查 | 已实现 | 不同租户套餐限制用户数、供应商数、订单数等资源用量。 |
| 租户到期写保护 | @TenantWriteGuard | 已实现 | 租户到期后允许查询,但限制新增、修改、删除等写操作。 |
| 操作日志 | @OperationLog、系统审计日志 | 已实现 | 关键操作异步记录操作人、模块、动作、结果和脱敏后的参数。 |
| WebSocket 站内信 | System Notification / WebSocket | 已实现 | 业务通知可以通过 WebSocket 推送到租户或用户订阅地址。 |
| 邮件通知 | Spring Mail | 已实现 | 重要审核、预警、到期等通知可以通过邮件发送。 |
| 网关限流 | Gateway Redis 滑动窗口限流 | 已实现 | 在网关层限制接口访问频率,保护后端服务。 |
| XSS 基础防护 | common security xss | 已实现 | 对请求参数中的恶意脚本做基础过滤。 |
| SQL 注入防护 | 参数校验、Wrapper 查询、避免字符串拼接 | 核心已实现 | 代码层面主要通过参数绑定和 MyBatis-Plus 条件构造减少注入风险,强 SQL 防护可作为后续网关增强。 |
| SaaS 租户运营 | Tenant 注册、启停、套餐变更、到期任务 | 已实现 | 支持租户生命周期管理和套餐到期扫描。 |
| 部署上线 | Docker、Nginx、CI/CD、监控 | 规划项 | 用户之前明确 Day08 部署上线不用实现,当前作为课件讲解和生产化扩展内容保留。 |
| 数据库脚本 | sql/13_security_saas_day08_schema.sql | 已实现 | 权限、安全、租户运营相关表结构已落地。 |
项目亮点
- 业务完整:从供应商准入、采购、仓储、订单、物流、财务、BI 到权限和 SaaS 运营,形成完整供应链闭环。
- 架构完整:使用 Spring Cloud 微服务架构,模块之间通过 OpenFeign 同步调用、RocketMQ 异步解耦。
- 一致性处理:采购入库、库存联动、财务应付等跨服务强一致场景使用 Seata 分布式事务。
- 性能优化:库存、权限、报表、物流渠道等高频数据使用 Redis 缓存,库存扣减使用分布式锁控制并发。
- 定时任务:资质到期、供应商评分、物流轨迹、汇率刷新、平台订单拉取等任务使用 XXL-JOB 分片执行。
- 安全体系:登录认证、Refresh Token、RBAC、数据权限、套餐限制、租户写保护、操作日志都已形成公共能力。
- 可扩展性:OSS、通知、物流平台、平台订单等外部能力都通过 Starter、适配器或事件模型实现,便于后续替换真实第三方服务。