本地生活服务、家政维保、便民洗护、社区服务等行业,普遍包含上门服务和线下到店消费两种核心履约模式。多数传统服务系统仅支持单一业务模式,无法同时兼容用户到店自主消费、员工上门履约的双场景,存在业务区分模糊、订单归类混乱、履约流程不统一、核销机制缺失等问题。单纯的上门派单系统无法支撑门店线下客流核销,而主打到店消费的系统又不具备就近上门调度能力,极大限制了中小服务商家的经营场景。
本次开发的双模式服务系统采用标准化前后端分离架构,针对性解决单一服务模式适配性差的行业短板。后端以SpringBoot为核心服务框架,整合MyBatis-Plus实现数据持久化,依托LBS定位接口实现用户位置解析、门店坐标匹配、服务距离测算、服务范围划定等基础能力。系统核心拆分为上门派单、到店核销两大独立业务模块,两套业务逻辑互不耦合,可独立运行也可联动复用公共数据。上门模式主打用户线上下单、系统就近匹配服务人员、上门履约服务;到店模式主打用户线下到店、线上购券扫码核销、门店自主服务,完整覆盖线下服务类商家的主流经营场景。前端基于UniApp开发微信小程序,统一承载用户下单、门店查询、模式切换、订单管理、扫码核销等功能,适配移动端轻量化操作需求。
LBS定位是双模式业务正常运转的核心基础,也是区分两种服务模式的关键判定依据。对于上门服务场景,系统通过用户实时定位,筛选服务范围内在岗、空闲的工作人员,实现就近派单,缩短服务履约时长;对于到店服务场景,系统通过用户定位与门店坐标比对,判定用户是否到店,辅助完成核销权限校验,杜绝异地虚假核销、违规兑券等问题。相较于普通定位功能,本系统的LBS能力深度贴合服务行业规则,支持自定义服务半径、到店校验距离、上门配送范围,适配不同门店、不同服务类型的差异化配置需求。
上门派单模块专为线下上门履约场景设计,适配家政、维修、保洁、同城便民等服务类型。用户线上选择上门服务类型、填写服务地址、预约服务时间、提交服务订单后,系统自动根据LBS定位数据,结合服务人员在岗状态、服务品类匹配度、距离远近进行综合筛选,智能推送上门订单。同时支持后台人工改派、订单拒单重试、预约时段锁定等功能,解决传统人工派单效率低、距离匹配不合理、服务资源浪费的问题,保障上门服务有序履约。
到店核销模块是线下门店引流的核心功能,适配团购兑券、套餐消费、体验服务等场景。商家可在平台上架各类到店服务套餐、优惠券,用户线上购买后,可前往对应线下门店,通过小程序专属核销码、二维码完成自助核销。系统结合LBS定位做辅助校验,仅用户处于门店指定范围内可正常核销,有效规避恶意套现、异地核销等违规行为。同时支持核销记录留存、批量核销、订单作废、过期失效等基础功能,贴合门店日常运营需求。
用户端小程序操作逻辑简洁清晰,双模式自由切换,适配不同消费场景。用户登录后可自主选择上门服务或到店服务两种模式,上门场景可填写地址、预约时间、提交订单、查看上门人员进度;到店场景可浏览门店套餐、购买优惠券、查询就近门店、到店后一键扫码核销。个人中心统一归集全部订单,区分上门履约订单、到店消费订单,支持查看核销状态、服务进度、历史记录,方便用户统一管理。
管理后台侧重双模式业务精细化管控,适配中小服务商家运营需求。后台支持门店信息配置、LBS服务半径自定义、服务人员管理、在岗状态管控;可分别管理上门订单与到店核销订单,独立统计两类业务的营收数据、订单量、履约率;支持优惠券、到店套餐上下架,核销权限配置、核销记录查询与导出,可根据经营需求灵活开启或调整双模式服务规则,无需改动底层代码。
项目采用开源轻量化技术栈,无付费插件、无复杂中间件依赖,落地与二次开发门槛低。后端基于JDK8、MySQL8.0稳定版本开发,Maven统一管理项目依赖,双模块分层解耦设计,公共定位工具、订单工具全局复用,代码规范性强。前端依托HBuilderX编译打包,搭配微信开发者工具即可完成小程序调试上线,适合社区服务商、本地门店、家政服务团队落地使用,也适合开发者学习双业务场景融合开发思路。
LBS双场景定位校验是系统核心基础方法,可同时适配上门范围校验、到店核销定位校验,一套工具支撑双模块业务,核心Java源码如下:
@Service public class ServiceLbsServiceImpl implements ServiceLbsService { // 统一双模式定位距离校验 @Override public Result checkServiceDistance(Double userLng, Double userLat, Double targetLng, Double targetLat, Integer type) { // type 1:上门服务范围校验 2:到店核销定位校验 double distance = LbsUtil.getDistance(userLng, userLat, targetLng, targetLat); if (type == 1) { // 上门服务默认3公里服务半径 if (distance > 3) { return Result.error("超出上门服务范围,无法下单"); } } else { // 到店核销默认50米校验范围 if (distance > 0.05) { return Result.error("未到门店范围内,暂无法核销"); } } return Result.success("定位校验通过", String.format("当前距离:%.2f公里", distance)); } }该方法实现了双模式差异化定位校验,针对上门服务、到店核销两种场景设置不同的距离阈值,精准适配两类业务的运营规则。工具类统一封装、复用性强,有效减少代码冗余,同时从底层规避超范围下单、异地核销等异常业务行为,保障双模式业务合规运行。
到店核销核心接口实现订单状态校验、定位复核、核销状态更新,是线下交易闭环的关键逻辑,核心业务代码如下:
@RestController @RequestMapping("/api/shop/verify") public class ShopVerifyController { @Autowired private ShopVerifyService verifyService; @PostMapping("/code") public Result verifyCode(@RequestBody VerifyDTO verifyDTO) { // 校验核销码是否存在且未过期 boolean codeValid = verifyService.checkCodeValid(verifyDTO.getVerifyCode()); if (!codeValid) { return Result.error("核销码无效或已过期"); } // 执行门店LBS定位校验 boolean locationPass = verifyService.checkShopLocation(verifyDTO); if (!locationPass) { return Result.error("请前往门店现场核销"); } // 完成核销,更新订单状态 boolean result = verifyService.completeVerify(verifyDTO); return result ? Result.success("核销成功") : Result.error("核销失败,请重试"); } }该接口完成到店核销的全流程校验,先后做核销码合法性校验、门店定位校验,双重校验通过后方可完成核销。有效保障线下到店业务的真实性,杜绝虚假核销、盗刷优惠券等问题,适配门店线下规范化运营需求。
数据库结构完全贴合双模式业务架构,模块区分清晰、数据低耦合。核心包含门店信息表、服务人员表、上门订单表、到店核销订单表、LBS配置表。门店表存储门店坐标、地址、服务规则;人员表记录服务人员在岗状态、服务范围;上门订单表专属存储上门履约类订单数据;核销订单表归集所有到店消费、券码核销数据;LBS配置表统一管理双模式距离阈值、定位参数,方便后台可视化修改。
针对双模式运营场景,系统做了多项精细化适配优化。支持双模式独立开关,商家可单独开启上门服务或到店服务,灵活适配经营节奏;新增订单智能分类统计,自动区分两类订单数据,方便财务对账与运营分析;核销码支持一次性有效、过期自动失效、重复拦截机制,杜绝违规操作;上门派单支持预约时段锁定,避免时段冲突。
整套系统部署流程简单易落地,运维成本极低。部署时只需初始化数据库SQL脚本,在配置文件中填写LBS定位接口密钥,修改数据库连接参数并启动SpringBoot服务,编译UniApp前端源码对接接口,即可快速实现上门派单、到店核销双功能上线,快速搭建适配本地服务商家的双模式运营系统。
系统具备良好的拓展迭代能力,可适配更多细分服务场景。后续可新增服务评价体系、上门服务费阶梯计价、会员专属核销权益、多门店统一管理、订单售后退款等功能,适配家政维保、美容养生、社区便民、洗护服务等多种线下行业。从开发学习角度,项目完整实现了双业务场景架构拆分、LBS差异化校验、核销风控机制开发等实战能力,是本地服务类系统优质学习案例。
总体而言,这套基于SpringBoot+UniApp开发的双模式服务系统,解决了传统本地服务系统业务模式单一、线上线下业务割裂、核销无风控、派单不精准的行业痛点。通过LBS定位能力打通上门派单与到店核销两大核心场景,业务适配性强、架构规范、落地成本低,既可以满足各类线下服务商家的数字化双线运营需求,也能帮助开发者掌握多场景业务拆分、定位风控开发的实战技巧,具备稳定的落地价值与学习价值。