我们重新打磨了上门服务系统:支持动态定价、自动分单与全行业模板,开发者视角聊聊这次更新
摘要:从一次凌晨的线上问题说起——这套系统现在支持动态定价、自动分单和行业模板切换,还能按距离、时段、技师等级自定义派单规则。后端用Go重写了调度引擎,前端升级了多端适配。
凌晨三点,我被一个用户的电话吵醒
对方说他App里保洁阿姨接单后一直显示“前往中”,实际人却没动。调试发现:分单逻辑里距离权重算错了,导致就近的技师拿不到单,远的反而抢到。这个问题在推拿行业不明显——技师通常待在一个点;但保洁阿姨是流动的,距离误差一放大,体验就崩了。
从那次之后,我决定把调度引擎重写一遍。现在的版本支持动态分单:基于实时GPS距离、技师忙闲状态、历史好评率,甚至时段(比如晚7点以后优先派给离家近的技师)。全部规则在后台可视化配置,不用改一行代码。
动态定价不是噱头,是真能解决冲突
以前价格都是写死的,但每个城市消费水平不同,同一套价格在北京和三线城市根本跑不动。我见过一个二线城市老板手动给每个技师调价,累到崩溃。新版加了动态定价引擎:按基础价+距离加价+时段溢价+高峰系数自动计算。举个例子,上海暴雨天,空调维修订单可以自动上浮30%,系统派单时也会优先推给愿意接的技师。老板只需要在后台设好上限和系数,剩下的交给系统。
行业模板,一套源码切所有上门场景
这套系统最早是给推拿行业做的,后来有客户拿去做保洁、美甲、家教,甚至陪诊。我发现他们改得最多的就是计价规则——推拿按时间计费,家政按面积,维修按项目。于是我把计价器抽象成可配置的:按次、按时长、按距离、按人数、按物品数量,还能组合阶梯价。现在上线一个新的上门服务,后台选个模板,改几个参数,半小时搞定。
顺便说一句,首页装修也彻底重做了。之前很多客户说想把自己的品牌风格做进去,但UniApp的组件定制麻烦。现在拖拽式DIY,支持自定义轮播、宫格、瀑布流模块,配色和字体也能全局改。我见过一个做宠物上门的美女老板,把页面改成粉色加猫爪图标,三天跑了200单。
技术细节:Go+GORM+UniApp,但核心是稳定性
后端一直用Go,Gin框架+GORM,MySQL存储。这次更新把订单状态机重构成有限状态模型,每步都有幂等校验,防止重复扣款。前端UniApp一套代码编译到H5、小程序和App,但踩了无数坑——比如微信小程序支付回调延迟,我们加了本地通知轮询和服务器补偿机制。
还有一个容易被忽略的点:技师工作台的定位上报。之前用H5的Geolocation API,Android机经常漂移。现在改成强制高德SDK,并且支持室内辅助定位(比如写字楼可以手动选楼层)。所有定位数据实时同步到后台,老板可以盯着地图看技师动线。
更新日志(挑几个你们可能感兴趣的)
- 分单引擎:支持距离优先、评分优先、轮询、抢单4种模式,可组合权重
- 动态定价:基础价+距离加价+时段溢价+高峰系数,全局或按城市配置
- 行业模板:内置推拿、保洁、美甲、维修、陪诊5套默认计价规则,一键切换
- 首页DIY:拖拽装配,支持自定义样式、模块排序、数据源绑定
- 技师端升级:新增“服务拍照”水印与时间戳,防止纠纷
- 后台性能优化:订单列表从秒级加载降到200ms以内(千万级数据测试通过)
这次更新前后花了三个月,中间踩的坑足够再写一篇文章。明天准备发版,老客户直接免费升级。如果你也想试试,私有化部署版3888,全源码版18888。有问题找我就行——程序员不擅长销售,但擅长解决问题。
