# 夜市主自配送:商家 App 接入说明 更新日期:2026-10-12。 ## 1. 页面入口与请求 - 仅夜市主(`userType=3`)显示“自配送设置”,对旗下摊位统一生效。 - 页面提供:开关、全天/自定义选择、按星期添加多个时段、保存。 - 接口沿用 App 现有 baseURL;请求头携带 `token`,POST 使用 JSON。 - 业务 `code=200` 表示成功;失败展示返回的 `msg`。 ## 2. 读取配置 `GET /chanting/store/getMyNightMarketSelfDelivery` 无参数,不传门店 ID。返回示例: ```json { "code": 200, "msg": "操作成功", "data": { "enabled": true, "mode": 2, "hours": [ { "dayOfWeek": 1, "startTime": "17:00", "endTime": "22:00" }, { "dayOfWeek": 6, "startTime": "11:00", "endTime": "14:00" }, { "dayOfWeek": 6, "startTime": "17:00", "endTime": "23:00" } ] } } ``` 按 `data` 回显表单。未设置时为 `enabled=false、mode=null、hours=[]`;表单可默认选择全天,但开关保持关闭。 ## 3. 保存配置 `POST /chanting/store/saveMyNightMarketSelfDelivery` | 字段 | 类型 | 说明 | |---|---|---| | enabled | Boolean | true 开启、false 关闭,必填 | | mode | Integer / null | 开启时必填:1 全天、2 自定义;关闭传 null | | hours | Array | 自定义时至少一段;全天/关闭传空数组 | | hours[].dayOfWeek | Integer | 1 周一~7 周日 | | hours[].startTime | String | 开始时间,HH:mm | | hours[].endTime | String | 结束时间,HH:mm | 自定义请求: ```json { "enabled": true, "mode": 2, "hours": [ { "dayOfWeek": 1, "startTime": "17:00", "endTime": "22:00" }, { "dayOfWeek": 6, "startTime": "11:00", "endTime": "14:00" }, { "dayOfWeek": 6, "startTime": "17:00", "endTime": "23:00" } ] } ``` 全天请求: ```json { "enabled": true, "mode": 1, "hours": [] } ``` 关闭请求: ```json { "enabled": false, "mode": null, "hours": [] } ``` 成功返回: ```json { "code": 200, "msg": "操作成功" } ``` 保存成功后重新读取配置。**保存整体覆盖全部时段,不是追加;不传 mdId。** ## 4. 必要规则 - 同一天允许多段,不允许重叠;前一段结束等于后一段开始可以。 - 结束必须晚于开始,不支持跨午夜单段或 `24:00`。 - 自定义模式至少有一段,不要求每天都有时段。 - 开始时间包含、结束时间不包含:`17:00–22:00` 在 17:00 命中、22:00 不命中。 - 关闭或切成全天会清除服务端旧自定义时段。 - 配置只影响之后创建的外卖外送单,旧订单配送方式不变;不用于闪送。 - 页面文字沿用 App 的四语言 i18n。 ## 5. 自配送订单操作 订单 `selfDelivery=1` 时显示“自配送”,不显示等待骑手或联系骑手。摊位主负责接单/出餐,夜市主负责配送。 | 操作 | 接口 | JSON 请求 | |---|---|---| | 开始配送(可选) | POST /system/orderShOprate/selfDeliveryStart | {"id":12345} | | 确认送达 | POST /system/orderShOprate/selfDeliveryComplete | {"id":12345} | `id` 为订单数据库 ID,不是订单号;确认送达可另传字符串 `qsImg` 作为送达凭证。 - 两个操作都要求:有权限的外送自配送单、无骑手归属(`qsId=null`)、无售后、已出餐(`state=2`)。 - 开始配送要求 `deliveryStatus=0`;成功后变为 2(配送中)。 - 确认送达要求 `deliveryStatus=0/2` 且 `payStatus=1`;成功后 `state=3、deliveryStatus=3`。 - 可跳过开始配送直接确认送达。提交中禁用按钮,成功后刷新订单。 - 查询详情:`GET /system/orderShOprate/orderDetail?id=12345`,订单对象在业务 `data` 中。 **联调提示:当前商家订单列表会过滤无骑手的自配送单,需后端修正后才能联调完整订单流程;设置页面不受此问题影响。**