frontend-app-integration.md 3.8 KB

夜市主自配送:商家 App 接入说明

更新日期:2026-10-12。

1. 页面入口与请求

  • 仅夜市主(userType=3)显示“自配送设置”,对旗下摊位统一生效。
  • 页面提供:开关、全天/自定义选择、按星期添加多个时段、保存。
  • 接口沿用 App 现有 baseURL;请求头携带 token,POST 使用 JSON。
  • 业务 code=200 表示成功;失败展示返回的 msg。

2. 读取配置

GET /chanting/store/getMyNightMarketSelfDelivery

无参数,不传门店 ID。返回示例:

{
  "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

自定义请求:

{
  "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" }
  ]
}

全天请求:

{ "enabled": true, "mode": 1, "hours": [] }

关闭请求:

{ "enabled": false, "mode": null, "hours": [] }

成功返回:

{ "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 中。

联调提示:当前商家订单列表会过滤无骑手的自配送单,需后端修正后才能联调完整订单流程;设置页面不受此问题影响。