按摩平台到店核销与上门派单是一套把两种履约方式放进同一条订单链的设计:到店靠一次性六位核销码验证顾客真的来了,上门靠接单时强制指派技师并在服务半径内完成。两者在支付后分叉、在提交完成时合流,中间只差一个「待服务」动作,却带来完全不同的校验规则。
把两种履约放进一条状态链,是这个设计最值得说的部分——它避免了「一套系统写成两套」的常见毛病。
按摩平台到店核销与上门派单是一套什么设计?
是一条主链、两个分支、一个合流点的结构。
主链从下单到接单完全一致:选服务、选时间、选券、支付、商家接单。差异从「待服务」开始:
到店分支:顾客到店 → 出示核销码 → 商家输入或扫码校验 → 订单进入服务中。
上门分支:商家接单时已指派技师 → 技师按预约时间上门 → 商家点击开始服务 → 订单进入服务中。
之后又合流:商家提交完成 → 订单进入待确认 → 顾客确认 → 已完成并进入结算。
分叉只占一个状态,这是关键。 如果两种履约各自维护一套状态机,退款、超时、仲裁这些公共逻辑就要写两遍,任何一处改规则都得改两处,出错概率翻倍。
六位核销码为什么比二维码更合适?
因为核销这个动作最终要靠人念、靠手输。
到店的真实场景是:顾客走进店里,前台正忙,顾客说「我在小程序上订了」,前台问「有码吗」,顾客打开手机念出六位数字,前台在核销页面输入,校验通过。
在这个链条里,二维码的劣势很明显:需要前台掏手机扫、需要顾客屏幕够亮、需要网络和摄像头都正常。而六位数字在任何情况下都能传递——念出来、写在纸上、发微信给前台,都可以。
六位数的另一个好处是校验成本低。六位纯数字有一百万种组合,对一个商户当天几十单的量级来说碰撞概率可以忽略;而输入错误的概率也远低于扫码失败的概率。
核销码必须是一次性的。 校验通过后立即失效,否则同一个码可以被重复使用——顾客自己用一次、再发给朋友用一次,商户无法分辨。这条规则在系统里是硬约束,不是可选项。
核销页面为什么要列出全部待核销订单?
因为顾客找不到码是高频事件,不能让流程卡在这一步。
素材里核销页面同时支持扫码和手动输入,并且列出当前所有待核销的到店订单,可以逐单点击核销。这个「列表」看起来是补充功能,实际是主流程的兜底:
顾客可能记错了时间、可能换了手机、可能根本没收到码(微信消息被折叠)。这时候前台如果能直接看到「本店今天有哪几单待核销」,按订单核销就行,不需要顾客提供任何东西。核销完成后系统会记录操作人与时间。
列表还解决了另一个问题:多单并行。 一个门店中午可能有五桌客人在等,逐个找码效率太低,列表模式让前台可以连续处理。
上门派单对技师有哪些硬约束?
必须已启用,且具备该服务的服务能力,两个条件缺一个都指派不了。
技师档案包括姓名、头像、简介、从业年限,以及为每名技师勾选其能够提供的服务项目。这个勾选不是装饰——上门订单接单时如果要指派技师,系统只允许选择同时满足两个条件的技师:状态为启用、且具备该服务项目的服务能力。
约束在接单环节生效,而不是在派单后校验,这个顺序很重要。如果允许先接单再校验,就会出现「接了单发现没人能做」的僵局:拒绝接单会扣分、不拒绝又完不成。把校验前置到可选范围内,商户根本选不到不合适的技师。
技师可以单独启用或停用,停用后不能再被指派新订单。这个开关的实际用途是排班:技师休假、请假、离职,商户自己关掉就行,不需要平台介入。
服务半径为什么按直线距离算?
因为下单那一刻还没有真实路径,只能用一个计算成本低、结果稳定的近似值。
系统的做法是:顾客选上门服务时填收货地址,系统按经纬度直线距离计算顾客地址与商家的距离,超出商家设定的服务半径就提示超出范围并禁止下单。
直线距离不是最优解,但它是下单时唯一能立刻算出来的距离。真实行驶距离需要调用路径规划接口,有调用成本、有超时风险,而且会随着实时路况变化——顾客下单时算出来是八公里,技师出发时可能变成十二公里。用一个固定的近似值做前置拦截,比用一个精确但易变的值更可靠。
半径值本身由商户自己设定,平台有默认值。这个设计合理:市区门店可能设三公里,郊区门店可能设十五公里,平台统一设一个数没有意义。
实际运营中会遇到的边界情况:顾客地址在半径边缘、地图选点偏移导致实际距离更远。处理方式通常是留一点余量(比如按半径的 1.1 倍判断),或者在商户端允许对边缘订单手动接单。系统卡死在实际距离上,会把一些本可以做的生意挡在门外。
营业状态与资格状态如何叠加拦截?
四个状态各自独立生效,任何一项不满足都在下单或访问环节拦截。
四个状态是:营业状态(营业中/休息中)、服务上下架状态(上架/下架/被平台强制下架)、商家资格状态(有效/到期)、账号封禁状态(正常/封禁)。
拦截点分两类。访问环节:商家资格失效、未通过审核、已被封禁,顾客进商家主页时直接弹提示并阻止浏览。下单环节:商家休息中不能下上门单;服务被下架或强制下架时该项服务不可下单;超出服务半径禁止下单;时段已过或距当前不足半小时不可选。
这些校验会在提交订单时再完整跑一遍。为什么前端已经校验过,提交时还要再校验? 因为页面停留期间数据可能变化——顾客选好地址时商家还在营业,填备注的几分钟里商家切到了休息;或者服务在另一个设备上被平台强制下架。前端校验保证体验,后端校验保证正确性,两者不能省任何一个。
双模式并行会带来什么运维负担?
带来的是「两套履约标准」与「一套评价体系」之间的张力。
到店服务的质量取决于门店环境、接待、技师手法;上门服务的质量还多了一层——技师进到顾客家里,行为规范、着装、沟通都成了评价对象。但系统里的评价是一套一星到五星,不区分模式。
这会导致评分失真:同一家店,到店评分高、上门评分低,混在一起看不出问题在哪。改进方向通常是在评价里带上订单类型,商家主页分开展示或在统计时区分,而不是增加一套平行的评价系统。
另一个负担是技师调度。到店模式下技师在店里等,上门模式下技师在路上跑,两种模式共用同一批技师时,商户必须自己协调「谁在店、谁出外」。系统只保证不把同一个技师指派给两个冲突时段,不负责优化路线与排班。
这也是为什么站内上门家政预约系统源码那类系统会把排班做得更细——家政几乎全是上门,技师的时间就是产能,排班精度直接决定营收;而本套是多商户平台,排班交给商户自己,平台只做约束。
两种模式该先上哪个?
先上单模式跑通,再开第二种,除非你一开始就有两类商户。
如果平台起步时只有到店商户,就先只开到店:核销流程简单、没有半径与派单问题、退款争议也少。等有商户提出上门需求,再打开上门模式,同时把服务半径、技师能力勾选这两块配置补齐。
反过来,如果一开始就是上门为主(比如纯到家的推拿),那到店反而可以晚点开——到店模式看起来简单,实则需要门店配合核销,而很多小门店不愿意多一道操作。
先开哪个不取决于功能难度,取决于你的商户愿不愿意配合那个流程。 系统能做的只是把两条路都留好,走哪条由运营决定。
延伸阅读:按摩平台订单状态流程、上门按摩多商户平台源码、上门家政预约系统源码。