# Quickstart: 闪送订单状态变更消息推送 **Date**: 2026-09-17 | **Spec**: [spec.md](spec.md) ## 前置条件 - JDK 21 构建(本机用 `C:\Users\qmj\.jdks\graalvm-jdk-21.0.7`,仅命令内临时设置 `JAVA_HOME`/`PATH`,不改全局)。 - 无需数据库变更、无需新增 i18n key;服务端部署后即生效。 ## 自动验证(单测) ```bash # 仓库根目录,Git Bash export JAVA_HOME="C:/Users/qmj/.jdks/graalvm-jdk-21.0.7" export PATH="$JAVA_HOME/bin:$PATH" mvn -pl ruoyi-admin -am test -Dtest='FlashDeliveryNotificationServiceTest,FlashDeliveryApplicationServiceTest' ``` 预期:全部通过。覆盖点: - 三类履约事件(抢单/取件/送达)成功时调用对应用户推送;操作失败(条件更新 0 行)不推送。 - 用户/平台取消且 `riderId` 非空时调用骑手推送;`riderId` 为空跳过。 - 排除事件(complete、cancelExpiredScheduledOrder、加小费)零推送调用。 ## 手动端到端验证(联调环境) 1. 用户 App(寄件人)与骑手 App 各登录一个测试账号;骑手账号具备闪送(FLASH)配送资质。 2. 寄件人创建立即单(货到付款或沙箱支付),记下 `orderNo`。 3. 骑手在任务列表抢单 → 寄件人应收到「骑手已接单,NO:{orderNo}」推送,消息中心出现对应记录。 4. 骑手提交取件凭证 → 寄件人收到「骑手配送中,NO:{orderNo}」。 5. 骑手提交送达凭证(含 PIN 时输入 PIN)→ 寄件人收到「骑手已送达,NO:{orderNo}」。 6. 另起一单:骑手接单后由寄件人取消 → 骑手收到「订单已取消,NO:{orderNo}」;寄件人不收到取消推送。 7. 再起一单:骑手接单后由平台后台取消 → 骑手收到取消推送。 8. 反例:待接单状态直接平台取消(无人接单)→ 无任何骑手推送。 9. 反例:等待超过自动完成时限(或平台手动完成)→ 用户无「已完成」推送(FR-010)。 10. 切换寄件人 App 语言(vi/en/tw/zh)重复第 3 步 → 推送文案语言随之变化。 ## 判定 - 第 3~7 步全部按期收到、第 8~9 步确实无推送、第 10 步语言正确 → 特性验证通过(对应 spec SC-001~SC-003)。 - 推送期间人为停掉推送云函数 → 订单操作仍全部成功(SC-004 零传导)。