家政源码:APP+小程序预约上门支持多城市接入的O2O服务系统_家政系统源码
随着我国城市化进程的加速和居民生活水平的提高,家政服务已从“奢侈品”转变为“必需品”。在此背景下,APP+小程序预约上门支持多城市接入的O2O服务系统应运而生,成为家政行业数字化转型的核心载体。家政O2O服务系统通过线上平台整合线下服务资源,实现“用户在线预约—服务人员上门服务—平台全程监管”的闭环流程。
源码及演示:j.yunzes.top/er
一、家政O2O服务系统的核心架构设计
1.1系统整体架构
一套成熟的家政O2O服务系统需采用“前端多样化+后端一体化+数据分层存储”的架构设计,确保多终端协同、高并发承载和数据安全可靠。
前端层:包含原生APP(iOS/Android)、微信小程序、H5网页版,满足不同用户的使用习惯。其中,APP侧重高频用户的深度服务(如会员管理、服务记录),小程序主打轻量化预约(如临时下单、附近服务),H5则用于活动推广和跨平台兼容。
后端层:基于微服务架构拆分核心模块(用户服务、订单服务、支付服务、服务者管理等),通过API网关实现接口统一调度。采用Spring Cloud Alibaba技术栈(服务注册与发现、配置中心、熔断降级)保障系统稳定性,支持每秒1000+订单的并发处理。
数据层:分为关系型数据库(MySQL)存储用户信息、订单数据等结构化数据;缓存数据库(Redis)存储热点数据(如服务者位置、实时订单状态);搜索引擎(Elasticsearch)实现服务精准检索;数据仓库(Hive)用于用户行为分析和业务报表生成。
1.2技术选型与优势
二、APP+小程序端核心功能模块详解
2.1用户端(C端)功能设计
用户端是连接消费者与服务的核心入口,需以“简化操作、提升体验”为设计原则,涵盖从需求发起至服务完成的全流程功能。
注册与登录模块
// 前端(小程序端)Page({ data: { username: \'\', password: \'\' }, handleRegister() { const { username, password } = this.data; wx.request({ url: \'https://your-api-domain.com/api/register\', method: \'POST\', data: { username, password }, success(res) { if (res.data.success) { wx.showToast({ title: \'注册成功\', icon: \'success\' }); wx.navigateTo({ url: \'/pages/login/login\' }); } else { wx.showToast({ title: res.data.message, icon: \'none\' }); } } }); }});// 后端(Node.js + Express)const express = require(\'express\');const bodyParser = require(\'body-parser\');const app = express();app.use(bodyParser.json());const users = []; // 模拟数据库app.post(\'/api/register\', (req, res) => { const { username, password } = req.body; if (users.find(u => u.username === username)) { return res.json({ success: false, message: \'用户名已存在\' }); } users.push({ username, password }); res.json({ success: true, message: \'注册成功\' });});app.listen(3000, () => console.log(\'Server running on port 3000\'));
服务浏览与筛选模块
按服务类型分类(保洁清洗、家电维修、母婴护理、养老陪护等),每个类别下细分二级服务(如保洁包含日常保洁、深度保洁、开荒保洁);
多维度筛选功能:价格区间、服务者评分、距离远近、服务经验(年限),结合LBS定位显示3公里内可接单的服务人员。
预约与下单模块
// 前端(小程序端)Page({ data: { serviceId: \'\', appointmentTime: \'\', address: \'\' }, handleSubmitOrder() { const { serviceId, appointmentTime, address } = this.data; const token = wx.getStorageSync(\'token\'); wx.request({ url: \'https://your-api-domain.com/api/orders\', method: \'POST\', header: { \'Authorization\': `Bearer ${token}` }, data: { serviceId, appointmentTime, address }, success(res) { if (res.data.success) { wx.showToast({ title: \'下单成功\', icon: \'success\' }); wx.navigateTo({ url: \'/pages/orders/orders\' }); } else { wx.showToast({ title: res.data.message, icon: \'none\' }); } } }); }});// 后端(Node.js + Express)const orders = []; // 模拟数据库app.post(\'/api/orders\', (req, res) => { const { serviceId, appointmentTime, address } = req.body; const token = req.headers.authorization?.split(\' \')[1]; // 实际应用中应验证token orders.push({ serviceId, appointmentTime, address, status: \'pending\' }); res.json({ success: true, message: \'下单成功\' });});
订单跟踪模块
// 前端(小程序端)Page({ data: { orders: [] }, onLoad() { this.fetchOrders(); }, fetchOrders() { const token = wx.getStorageSync(\'token\'); wx.request({ url: \'https://your-api-domain.com/api/orders\', method: \'GET\', header: { \'Authorization\': `Bearer ${token}` }, success: (res) => { this.setData({ orders: res.data.orders }); } }); }});// 后端(Node.js + Express)app.get(\'/api/orders\', (req, res) => { const token = req.headers.authorization?.split(\' \')[1]; // 实际应用中应验证token并查询数据库 res.json({ orders });});
实时显示订单状态(待接单、服务中、待支付、已完成),服务人员出发时推送行程提醒;
服务地图:可视化展示服务人员实时位置,预计到达时间精确至10分钟内。
评价与售后模块
// 前端(小程序端)Page({ data: { orderId: \'\', rating: 5, comment: \'\' }, handleSubmitReview() { const { orderId, rating, comment } = this.data; const token = wx.getStorageSync(\'token\'); wx.request({ url: \'https://your-api-domain.com/api/reviews\', method: \'POST\', header: { \'Authorization\': `Bearer ${token}` }, data: { orderId, rating, comment }, success(res) { if (res.data.success) { wx.showToast({ title: \'评价成功\', icon: \'success\' }); } else { wx.showToast({ title: res.data.message, icon: \'none\' }); } } }); }});// 后端(Node.js + Express)const reviews = []; // 模拟数据库app.post(\'/api/reviews\', (req, res) => { const { orderId, rating, comment } = req.body; const token = req.headers.authorization?.split(\' \')[1]; // 实际应用中应验证token reviews.push({ orderId, rating, comment }); res.json({ success: true, message: \'评价成功\' });});
服务完成后,用户可对服务态度、专业度、效率等维度评分(1-5星),支持图文评价;
售后维权通道:若服务未达标准,可申请返工、退款或投诉,平台在24小时内响应处理。
2.2服务者端(B端)功能设计
服务者端需满足服务人员高效接单、规范服务的需求,同时强化平台对服务过程的监管能力。
身份认证与技能管理
// 前端(小程序端,服务者认证页面)Page({ data: { name: \'\', idCard: \'\', skills: [] // 技能数组,如[\'保洁\', \'月嫂\'] }, handleSubmitCertification() { const { name, idCard, skills } = this.data; const token = wx.getStorageSync(\'workerToken\'); // 服务者token wx.request({ url: \'https://your-api-domain.com/api/workers/certify\', method: \'POST\', header: { \'Authorization\': `Bearer ${token}` }, data: { name, idCard, skills }, success(res) { if (res.data.success) { wx.showToast({ title: \'认证提交成功\', icon: \'success\' }); } else { wx.showToast({ title: res.data.message, icon: \'none\' }); } } }); }});// 后端(Node.js + Express)const workers = []; // 模拟服务者数据库app.post(\'/api/workers/certify\', (req, res) => { const { name, idCard, skills } = req.body; const token = req.headers.authorization?.split(\' \')[1]; // 实际应用中应验证token并存储认证信息 workers.push({ name, idCard, skills, status: \'pending-review\' }); res.json({ success: true, message: \'认证提交成功\' });});
接单与日程管理
// 前端(小程序端,服务者接单页面)Page({ data: { availableOrders: [] // 可接订单列表 }, onLoad() { this.fetchAvailableOrders(); }, fetchAvailableOrders() { const token = wx.getStorageSync(\'workerToken\'); wx.request({ url: \'https://your-api-domain.com/api/orders/available\', method: \'GET\', header: { \'Authorization\': `Bearer ${token}` }, success: (res) => { this.setData({ availableOrders: res.data.orders }); } }); }, handleAcceptOrder(orderId) { const token = wx.getStorageSync(\'workerToken\'); wx.request({ url: `https://your-api-domain.com/api/orders/${orderId}/accept`, method: \'POST\', header: { \'Authorization\': `Bearer ${token}` }, success(res) { if (res.data.success) { wx.showToast({ title: \'接单成功\', icon: \'success\' }); wx.navigateBack(); } else { wx.showToast({ title: res.data.message, icon: \'none\' }); } } }); }});// 后端(Node.js + Express)app.get(\'/api/orders/available\', (req, res) => { const token = req.headers.authorization?.split(\' \')[1]; // 查询待接订单(实际应用中需结合服务者位置、技能等筛选) const availableOrders = orders.filter(o => o.status === \'pending\'); res.json({ orders: availableOrders });});app.post(\'/api/orders/:orderId/accept\', (req, res) => { const { orderId } = req.params; const token = req.headers.authorization?.split(\' \')[1]; // 更新订单状态为“已接单” const orderIndex = orders.findIndex(o => o.id === orderId); if (orderIndex !== -1) { orders[orderIndex].status = \'accepted\'; orders[orderIndex].workerId = \'worker-id-from-token\'; // 从token中解析服务者ID res.json({ success: true, message: \'接单成功\' }); } else { res.json({ success: false, message: \'订单不存在\' }); }});
自动推送附近订单(基于LBS定位),服务者可设置接单范围(3-10公里)和接单时段;
日程日历:清晰显示已接单、待服务、已完成订单,支持手动调整服务时间(需用户确认)。
服务过程管理
// 后端(Node.js + Express,管理员API)// 用户列表app.get(\'/api/admin/users\', (req, res) => { // 实际应用中需验证管理员token res.json({ users }); // 返回所有用户});// 服务者列表app.get(\'/api/admin/workers\', (req, res) => { res.json({ workers }); // 返回所有服务者});// 审核服务者认证app.post(\'/api/admin/workers/:workerId/review\', (req, res) => { const { workerId } = req.params; const { approved } = req.body; // true或false const workerIndex = workers.findIndex(w => w.id === workerId); if (workerIndex !== -1) { workers[workerIndex].status = approved ? \'approved\' : \'rejected\'; res.json({ success: true, message: \'审核完成\' }); } else { res.json({ success: false, message: \'服务者不存在\' }); });});
到达现场后需扫描用户订单二维码签到,离开时生成服务清单(包含服务内容、耗时);
紧急求助功能:遇突发情况可一键联系平台客服,客服介入协调处理。
管理端是平台运营的核心控制台,需实现对用户、服务者、订单、城市的全链路管理,同时提供数据驱动的决策支持。
用户与服务者管理
用户画像分析:按地域、消费频次、偏好服务类型生成用户标签,辅助精准营销;
服务者分级体系:根据服务评分、接单量、投诉率将服务者分为普通、铜牌、银牌、金牌,不同等级对应不同接单优先级和抽成比例。
订单与财务管理
// 后端(Node.js + Express,订单与财务API)// 订单列表(带状态筛选)app.get(\'/api/admin/orders\', (req, res) => { const { status } = req.query; // 如\'pending\', \'completed\' let filteredOrders = orders; if (status) { filteredOrders = orders.filter(o => o.status === status); } res.json({ orders: filteredOrders });});// 财务统计(示例:已完成订单总收入)app.get(\'/api/admin/finance/summary\', (req, res) => { const completedOrders = orders.filter(o => o.status === \'completed\'); const totalIncome = completedOrders.reduce((sum, order) => sum + order.price, 0); res.json({ totalIncome, completedOrderCount: completedOrders.length });});// 服务者收入结算app.post(\'/api/admin/workers/:workerId/settle\', (req, res) => { const { workerId } = req.params; const { amount, settlementDate } = req.body; // 实际应用中需更新服务者账户余额并记录结算历史 res.json({ success: true, message: \'结算成功\' });});
订单实时监控:异常订单(如超时未接单、用户投诉)自动标红,提醒运营人员处理;
财务对账系统:自动核对平台收入、服务者分成、优惠券抵扣金额,生成月度财务报表。
城市运营管理
多城市开关控制:支持手动开通/关闭特定城市服务,新城市上线时可设置试运营期(如首月免平台抽成);
区域化配置:不同城市可独立设置服务价格、优惠券活动、热门服务推荐。
数据中心
核心数据看板:日活用户、订单量、客单价、复购率等关键指标实时更新;
趋势分析:按周/月/季度展示业务增长曲线,支持多城市数据对比,为运营策略调整提供依据。
三、多城市接入的技术实现与运营逻辑
3.1多城市接入的技术架构
支持多城市运营是家政O2O系统的核心竞争力之一,其技术实现需解决“数据隔离、资源调度、本地化适配”三大问题。
数据隔离方案
采用“数据库分库分表”策略:按城市ID拆分订单表、服务者表,如北京订单存储在db_beijing库,上海订单存储在db_shanghai库;
配置中心(Nacos)实现城市级参数隔离:不同城市的服务定价、抽成比例、活动规则独立配置,修改时无需重启系统。
服务资源调度机制
服务者归属地管理:服务者注册时绑定城市,默认仅接收归属地订单,跨城市接单需手动开启权限(平台审核);
动态负载均衡:当某城市订单量激增时(如节假日),系统自动从邻近城市调度空闲服务者,通过加价激励(如额外补贴10%)提升跨城接单意愿。
本地化适配功能
方言支持:APP/小程序内置方言语音播报(如粤语、四川话),服务者可根据城市设置默认语言;
区域服务特色:如北方城市冬季增加“地暖清洗”,南方城市夏季主推“空调深度清洁”,系统根据城市标签自动调整服务列表排序。
3.2多城市运营的核心策略
技术架构为多城市运营提供基础支撑,而运营策略则决定了平台在不同城市的渗透效率。
城市分级运营
按经济水平和市场需求将城市分为核心城市(如北上广深)、二线城市(如省会城市)、下沉市场(三四线城市);
核心城市:重服务质量,通过高薪招募资深服务者,设置较高准入门槛;
下沉市场:重价格优势,推出低价套餐(如99元3小时保洁),简化服务流程以降低成本。
本地化推广渠道
线上:与本地生活平台(如美团、大众点评)合作引流,投放抖音、快手本地生活广告;
线下:在社区、超市、菜市场张贴海报,开展“新用户首单免费”地推活动,联合物业举办服务体验日。
区域化供应链建设
在重点城市建立服务者培训中心,统一服务标准(如保洁工具套装、服务流程SOP);
与本地供应商合作:如家电维修所需的配件、保洁所用的清洁剂,本地化采购可降低物流成本30%以上。
结语
家政O2O服务系统的出现,不仅重构了家政行业的服务链条,更推动了“线上预约+线下服务”的深度融合。对于创业者而言,选择一套成熟的APP+小程序源码,可快速搭建平台,抢占万亿级家政市场;对于传统家政企业,通过系统实现数字化转型,是突破增长瓶颈的必然选择。未来,随着技术的不断迭代和用户需求的升级,家政O2O系统将向“更智能、更精准、更安全”的方向发展,成为家庭生活服务的核心入口。抓住这一趋势,无论是技术研发者还是行业从业者,都将在这场家政服务的数字化革命中迎来新的机遇。


