Date: 2026-09-08 | 前置:data-model.md 的 SQL 已由开发者手动执行、测试库可用、应用可启动(JAVA_HOME=C:\Users\qmj\.jdks\graalvm-jdk-21.0.7)。
记住项目验证纪律:
mvn compile通过 ≠ 可部署。改完 mapper XML 需python -c "import xml.etree.ElementTree as ET; ET.parse(...)"校验;核心链路变更需启动冒烟。本功能无 mapper XML 变更(新表走 MyBatis-Plus BaseMapper),冒烟以接口级验证为准。
# ruoyi-admin 下运行 SelfDeliveryUtil 测试
mvn -pl ruoyi-admin test -Dtest=SelfDeliveryUtilTest
预期全绿,覆盖:
# 普通商家保存(token 为商家登录 token)
curl -X POST http://localhost:8080/chanting/store/saveMdSelfDeliveryHours \
-H "token: <商家token>" -H "Content-Type: application/json" \
-d '{"mdId":<门店id>,"enabled":true,"mode":2,"hours":[{"dayOfWeek":5,"startTime":"18:00","endTime":"21:00"}]}'
# 读取核对
curl "http://localhost:8080/chanting/store/getMdSelfDeliveryHours?mdId=<门店id>" -H "token: <商家token>"
预期:保存成功;读回一致。再用摊位主 token 对摊位 mdId 保存 → 拒绝("摊位配送方式由夜市主统一设置")。用夜市主 token 对夜市主门店行保存 → 成功,旗下摊位 getMdSelfDeliveryHours 返回夜市配置。
SELECT self_delivery FROM pos_order WHERE dd_id='...' → 1GET /system/orderQsOprate/orderList?tab=newTask → 列表无此单GET /system/orderQsOprate/acceptOrder?id=<订单id> → 拒绝(非自配送可接单的报错)时段设 18:00-21:00;下午 15:00 下单预约当天 19:00 送达(delryTime)→ self_delivery=1;预约次日 12:00 → self_delivery=0。
对一笔 self_delivery=1 的已支付单,用商家 token:
curl -X POST http://localhost:8080/system/orderShOprate/acceptOrder?id=<id> -H "token: <商家token>"
curl -X POST http://localhost:8080/system/orderShOprate/dispatchOrder?id=<id> -H "token: <商家token>" # 出餐
curl -X POST http://localhost:8080/system/orderShOprate/selfDeliveryComplete -H "token: <商家token>" \
-H "Content-Type: application/json" -d '{"id":<id>}'
预期:
state=3, delivery_status=3, sd_time 非空SELECT * FROM user_billing WHERE dd_id='<ddId>' AND type='5' → 一条,user_id=sh_id、amount=freight 全额、divvy=0type='0' AND user_id=sh_id(商品分成)照常存在订单已判 self_delivery=1 后,关闭门店自配送开关 → 该单仍按自配送流转(selfDeliveryComplete 可用);之后的新单 self_delivery=0 进骑手池。