家政上门系统源码:用户端 + 师傅端 + 平台管理后台架构设计方案
一套完整的同城家政上门系统,由用户端、师傅端、平台管理后台三端协同构成。很多源码项目在开发时三端逻辑耦合严重,接口复用率低、状态同步错乱,二次开发时改动成本很高。本文基于SpringBoot+MyBatis-Plus+UniApp技术方案,讲解三端职责划分、后端模块化架构、核心业务流转,附带Java代码示例,适合私有化部署、项目二次开发参考。
整体技术架构与三端职责划分
前端:UniApp承载用户小程序、师傅小程序,一套代码可发布微信、支付宝小程序;平台管理后台使用Vue3+Element Plus。
后端:SpringBoot单体架构,MySQL存储业务主数据,Redis用于GEO位置检索、分布式锁、热点配置缓存;RocketMQ处理工单事件、消息推送、定时巡检;WebSocket负责三端订单状态实时同步;对象存储统一存放资质照片、打卡凭证。
三端职责边界清晰:用户端负责服务浏览、下单、支付、跟踪、评价售后;师傅端负责接单、履约打卡、位置上报、收入提现;平台后台负责基础配置、资质审核、调度干预、财务对账、数据统计。
完整业务链路:用户端提交预约订单并支付 → 后端工单服务生成工单,进入调度池 → 调度引擎匹配师傅,推送消息至师傅端 → 师傅接单履约、打卡上传凭证 → 用户验收评价 → 结算服务生成账单,售后异议走售后工单流程。
用户端小程序核心模块设计
用户端核心围绕预约下单与订单跟踪,包含服务分类、LBS附近服务、预约时段选择、计价预览、优惠券抵扣、订单跟踪、师傅实时位置、评价、售后申请、个人中心。
计价逻辑统一收敛在后端,前端只做预览展示,支持按时长、按面积、线上报价三种模式,适配保洁、家电清洗、维修不同品类。下单时校验地址坐标、预约时段是否可预约,避免无效订单。
订单状态变更通过WebSocket实时推送,WebSocket断开时使用小程序订阅消息兜底通知。
师傅端小程序核心模块设计
师傅端聚焦接单履约与收入管理,包含入驻资质提交、资质审核状态查看、接单开关、抢单大厅、指派工单列表、地图导航、上门围栏打卡、开工完工凭证上传、实时位置上报、收入明细、提现申请。
师傅入驻提交身份证、健康证、技能证书,在后台审核通过后才开放接单权限;打卡模块内置地理围栏校验,只有在用户地址指定半径内才允许签到,同时强制上传现场照片留痕。
位置上报做节流控制,定时+位移双重策略,减少接口请求压力,位置数据写入Redis GEO供调度检索。
@Service
public class StaffCheckInService {
@Autowired
private WorkOrderMapper orderMapper;
@Autowired
private CheckInRecordMapper checkInRecordMapper;
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public ResultDTO checkIn(Long orderId, Long staffId, Double lng, Double lat) {
WorkOrderDO order = orderMapper.selectById(orderId);
if (order == null || !order.getStaffId().equals(staffId)) {
return ResultDTO.fail("工单不属于当前师傅");
}
// 计算距离
double distance = GpsUtil.calcDistance(lng, lat, order.getUserLng(), order.getUserLat());
if (distance > order.getCheckRadius()) {
return ResultDTO.fail("不在打卡范围内,签到失败");
}
CheckInRecordDO record = new CheckInRecordDO();
record.setOrderId(orderId);
record.setStaffId(staffId);
record.setCheckType(1);
record.setLng(lng);
record.setLat(lat);
record.setCheckTime(LocalDateTime.now());
checkInRecordMapper.insert(record);
// 更新工单状态
order.setOrderStatus(OrderStatusEnum.ARRIVED.getCode());
orderMapper.updateById(order);
// 推送状态给用户端
mqProducer.sendOrderStatusNotice(orderId);
return ResultDTO.success("签到成功");
}
}
平台管理后台核心模块设计
后台作为整个系统的管控中心,分为基础配置、师傅管理、工单调度、营销配置、财务结算、售后工单、数据报表七大模块。
基础配置:服务类目、计价模板、打卡半径、佣金比例、优惠券规则;
师傅管理:入驻资料审核、技能标签绑定、资质有效期巡检、黑名单管理;
工单调度:自动派单、人工指派、订单监控、超时工单告警;
财务结算:结算账单、提现审核、佣金冲销、对账导出;
报表模块:订单统计、师傅绩效、营收统计、售后占比。
后台支持RBAC权限隔离,审核人员、财务人员、调度人员权限分开,避免越权操作。

后端核心模块与数据模型设计
后端拆分为用户服务、师傅服务、工单调度服务、计价服务、结算服务、消息服务,模块之间通过领域对象交互,不直接跨模块操作数据库。
工单采用主表+扩展子表模型,主表存储通用字段,保洁、清洗、维修等品类差异化数据放在扩展子表,共用一套状态机,状态流转强制校验,防止非法跳转。
调度引擎前置过滤:师傅审核通过、接单开关开启、档期无冲突、技能标签匹配、在服务半径内;过滤后按距离、好评率、在手订单负载加权打分,支持自动指派、抢单两种模式,长时间无人接单转入人工调度池。
源码落地常见坑点与优化方案
第一,三端共用一套接口,缺少接口权限隔离,师傅端可以查询用户隐私数据;方案:接口增加身份鉴权,区分用户、师傅、管理员角色;
第二,订单状态只靠前端控制,后端没有状态机校验,出现脏数据;方案:后端统一状态流转校验,所有状态变更必须走服务层;
第三,打卡只依赖GPS,GPS漂移造成签到失败;方案:围栏半径按类目配置,搭配图片凭证辅助核验;
第四,WebSocket不稳定,三端订单状态不同步;方案:增加定时拉取校正机制,订阅消息兜底;
第五,结算缺少逆向冲销,售后退款后账目错乱;方案:每一笔佣金变动生成账单,支持冲销回滚。

总结
这套三端家政架构,通过清晰的职责划分,把用户端下单履约、师傅端接单打卡、平台后台管控解耦,后端采用模块化设计,工单、调度、结算、营销能力统一封装,三端共享同一套业务底层。基于SpringBoot+UniApp实现,支持保洁、家电清洗、维修多品类上门业务。项目二次开发时,重点做好接口鉴权、工单状态机管控、打卡凭证留痕、结算流水追溯,保证三端数据同步稳定,减少客诉与对账问题,适合本地家政服务商快速搭建私有化上门服务平台。