Series Article

供应链代码实现清单

本文用于把课件中的业务与技术点,和当前项目代码做最终对照。
状态说明:已实现 表示代码中已有可运行的核心实现;核心已实现 表示主流程完成,外部平台或生产化能力使用模拟或简化实现;规划项 表示课件中属于部署、运维、前端或生产接入内容,当前后端代码不作为必须实现范围。

总体结论

从 Day01 到 Day08,项目已经形成了一个比较完整的跨境电商 SaaS 柔性供应链后端系统,覆盖系统架构、供应商、采购、仓储、商品、订单、物流、财务、BI、权限安全、SaaS 租户运营等核心业务。

项目中的模块划分如下:

业务范围代码模块
公共能力supplychain-common/supplychain-common-coresupplychain-common/supplychain-common-oss
网关supplychain-gateway
系统与权限supplychain-system
供应商 SRMsupplychain-supplier
采购 PMSsupplychain-purchase
仓储 WMSsupplychain-warehouse
商品 PIMsupplychain-product
订单 OMSsupplychain-order
物流 TMSsupplychain-logistics
财务与 BIsupplychain-finance
数据库脚本sql/01_schema.sqlsql/13_security_saas_day08_schema.sql
远程配置nacos-config/commonnacos-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-coreRPageResult已实现接口返回格式统一,前端只需要按固定结构处理成功、失败、分页等结果。
统一异常处理BusinessExceptionResultCode、全局异常处理器已实现业务异常和系统异常统一转换为标准响应,避免每个 Controller 重复 try-catch。
MyBatis-Plus 基础能力BaseEntity、多租户插件、自动填充、逻辑删除、乐观锁已实现基础字段、租户隔离、审计字段和版本控制统一处理,减少重复代码。
Nacos 配置中心nacos-config/commonnacos-config/extension已实现本地配置只保留启动必要项,业务配置、数据库、Redis、OSS、MQ 等抽到远程配置,方便多环境管理。
网关统一入口supplychain-gateway已实现所有微服务通过网关访问,网关负责路由、认证透传、限流等统一入口能力。
数据库初始化脚本sql/01_schema.sqlsql/02_init_data.sql已实现基础系统表和初始化数据已沉淀为 SQL,方便本地和测试环境快速搭建。

Day02 供应商管理系统 SRM

课件技术点代码实现位置实现状态面试说明
供应商 CRUDsupplychain-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.sqlsql/04_supplier_init_data.sql已实现供应商相关表、配置表、风险事件表等脚本已统一管理。

Day03 采购管理系统 PMS

课件技术点代码实现位置实现状态面试说明
采购申请supplychain-purchase已实现支持采购申请创建、提交、审批、查询和状态流转。
采购需求自动生成PMS 自动补货 XXL-JOB + WMS 库存预警 Feign已实现定时任务按分片拉取 WMS 库存预警,根据安全库存、在途库存、补货倍数计算建议采购量,自动生成采购申请,并复用去重逻辑避免重复采购。
采购申请去重PurchaseRequisitionDuplicateChecker已实现创建采购申请前检查同租户、同仓库、同 SKU 是否已有足够进行中的采购申请或采购单,防止重复采购。
采购申请分级审批PurchaseApprovalPolicy已实现提交采购申请时按金额自动判断审批层级,小额自动通过,中额走采购经理,大额走财务经理,避免所有申请都走同一个审批链路。
询价管理采购询价相关 Controller/Service已实现支持向供应商询价、记录报价、比较历史价格和供应商表现。
询价比价综合评分PurchaseInquiryScoreCalculator已实现报价对比不只看价格,而是综合价格、交期、供应商评级计算总分,并给出推荐报价。
采购订单Purchase Order 相关接口已实现采购订单覆盖创建、审批、取消、状态更新等核心流程。
采购订单状态机PurchaseOrderStateMachine已实现采购订单按草稿、待确认、已确认、发货中、部分到货、全部到货、已对账、已结清、已取消流转,避免前端绕过业务动作直接改状态。
采购入库联动 WMSPurchase 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.sqlsql/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 TokenRedis Refresh Token 轮换已实现Access Token 到期后可通过 Refresh Token 续期,刷新时做轮换避免长期复用。
RBAC 权限模型用户、角色、菜单、权限表与 Service已实现用户绑定角色,角色绑定菜单和权限码,接口通过权限注解控制访问。
权限缓存Redis 权限缓存已实现登录后或访问时缓存用户权限,角色变更后清理缓存。
数据权限@DataScopeDataScopeAspect已实现列表查询根据用户数据范围自动追加查询条件。
多租户隔离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已实现权限、安全、租户运营相关表结构已落地。

项目亮点

  1. 业务完整:从供应商准入、采购、仓储、订单、物流、财务、BI 到权限和 SaaS 运营,形成完整供应链闭环。
  2. 架构完整:使用 Spring Cloud 微服务架构,模块之间通过 OpenFeign 同步调用、RocketMQ 异步解耦。
  3. 一致性处理:采购入库、库存联动、财务应付等跨服务强一致场景使用 Seata 分布式事务。
  4. 性能优化:库存、权限、报表、物流渠道等高频数据使用 Redis 缓存,库存扣减使用分布式锁控制并发。
  5. 定时任务:资质到期、供应商评分、物流轨迹、汇率刷新、平台订单拉取等任务使用 XXL-JOB 分片执行。
  6. 安全体系:登录认证、Refresh Token、RBAC、数据权限、套餐限制、租户写保护、操作日志都已形成公共能力。
  7. 可扩展性:OSS、通知、物流平台、平台订单等外部能力都通过 Starter、适配器或事件模型实现,便于后续替换真实第三方服务。