
简介上门家政系统本质上是服务交易、人员调度与履约跟踪的三层结构。一套完整的开源解决方案需打通用户端、师傅端与管理后台并依赖订单状态机处理预约、派单、验收等复杂时序。基于ThinkPHP 6.0MySQLRedis的成熟技术栈系统不仅部署门槛低还支持前后端分离与灵活二次开发非常适合中小企业快速搭建本地O2O家政平台。本文从实际部署出发涵盖环境配置、安装流程、功能拆解及派单算法扩展等工程实践为自建上门家政系统提供完整参考。 拿到这套 likshop 的上门家政系统开源版源码我第一时间就装起来跑了一遍。这类系统市面上不少但真正能把“用户端 师傅端 管理后台”三端打通还愿意把源码全部开放出来的确实不多见。今天这篇就围绕这套开源版的实际部署、功能拆解、运营思路和二次开发要点完整梳理一遍给正在选型或者准备自建上门家政平台的你一个参考。1. 系统整体设计与业务拆解1.1 家政平台的核心业务逻辑上门家政不是一个简单的“商品买卖”生意它本质上是服务交易 人员调度 履约跟踪的三层结构。用户买的是一个“上门服务”的承诺平台要解决的核心问题则是怎么让用户快速下单、平台怎么派单给师傅、师傅怎么接单履约、最后怎么完成结算。likeshop家政版在这套逻辑上的设计做得比较完整。它和普通电商系统最大的区别在于商品服务项目是虚拟交付的履约过程高度依赖线下人工。所以系统必须同时处理服务时长、上门地址、预约时间、服务人员指派、验收确认这些电商里不存在的“时序状态”。likeshop把整个订单流转设计成了待付款 → 待派单 → 待服务 → 服务中/待验收 → 已完成 → 已评价每一个状态之间都有明确的触发动作这给后续的运营管理留了非常好的抓手。1.2 三端架构与技术选型这套系统的技术栈很有意思它采用的是经典的ThinkPHP 6.0 MySQL 5.7 Redis组合前后端分离后端提供 API 接口前端分三套用户端支持公众号/H5/小程序、师傅端独立小程序、管理后台Vue 2 Element UI。整体是 PHP 生态里非常成熟稳健的方案。选型上ThinkPHP 在国内开发者群体中有大量现成案例和经验积累部署要求不高虚拟主机都能跑当然实际建议上云服务器遇到问题检索资料也容易。管理后台用 Vue 做前后端分离意味着你可以直接替换成 Vue 3 或者改造成 React 项目灵活性很不错。这种架构的取舍对中小企业或者个人创业者来说非常实际——省钱、稳定、好招人维护出问题了能找到人兜底。1.3 开源版与商业版的差异判断很多人关心开源版是不是“阉割版”我实测下来觉得可以放心。核心交易链路是完整的服务项目管理、下单、支付、派单、师傅接单、订单核销、售后申请、评价系统该有的都有。商业版主要多出来的部分是营销插件比如分销裂变、邻里拼团这类推广工具、多门店/多城市管理这类高并发扩展场景以及官方技术支持和授权服务。对于单城市起盘的创业团队来说开源版足够支持你把业务跑起来。我自己部署后的感受是代码注解清晰模块化程度高没有加密文件没有后门逻辑这类“拿来就能用”的开源项目在国内 PHP 生态里算真良心了。2. 核心业务功能模块与运营价值2.1 用户端下单路径的转化率设计用户端的核心不是功能多而是下单路径短。likeshop 的用户端首页设计是标准的“分类入口 推荐服务 营销位”结构用户从打开小程序到创建一个订单正常只需要 3 步选服务 → 填地址和时间 → 支付。这个路径是经过大量电商验证过的标准设计。我重点看了一下服务详情页它的评价体系不是简单的打分而是支持图文评价、标签评价如“准时”、“专业”、“态度好”这些结构化标签数据会沉淀为服务项目的信任背书对下单转化率影响很大。另外服务规格如按小时收费、按次收费支持自定义配置运营人员可以在后台随时调整不需要发版更新小程序这是很细致的设计。2.2 师傅端接单工具的核心体验师傅端小程序的使用体验直接决定服务供给端的稳定likeshop 在这块做得比较顺手。师傅端支持三种接单模式后台强制派单平台指派后师傅只能接受、抢单大厅师傅自己抢、后台代派后台手工指定这种灵活的派单策略适配不同阶段的运营需求。师傅端还包含完整的钱包体系收入明细、提现申请、提现记录一目了然。这个设计很关键师傅的信任是靠“看得见的钱”累积的提现流程如果在管理员后台确认后能快速到账师傅的配合度会高很多。另外师傅端和服务单关联的地图导航功能也很实用免去了跳转第三方 App 的环节师傅用起来省心。2.3 管理后台多维度管控与数据呈现管理后台才是整个系统的中枢神经。它涵盖了会员管理、订单管理、服务项目管理、师傅管理、财务管理、营销中心、内容管理、设置中心等完整模块。实际看一下订单管理它支持按订单号、用户手机号、师傅姓名、订单状态、时间范围等多条件组合筛选对日常运营处理客诉是刚需功能。财务模块包含支付流水、退款记录、提现申请、对账单等每一笔钱都走系统记录财务对账时能省大量人工。数据看板方面首页仪表盘会呈现当日新增用户、新增订单、营收总额、转化率等核心指标决策层不用折腾报表工具打开后台即可了解整体经营概况。3. 部署环境要求与源码获取3.1 软硬件环境要求说明在实际部署之前务必对照一下环境要求避免装到一半发现 PHP 版本不兼容或者缺少扩展重新折腾。我这套部署在 2核4G 的云服务器上标准 Linux 环境跑起来毫无压力依赖项推荐配置/版本说明操作系统CentOS 7.9 / Ubuntu 20.04生产环境务必用 64 位 LinuxPHP7.4 - 8.0PHP 8.1 可能遇到兼容警告建议用 7.4 最稳MySQL5.7.x8.0 也可以但需注意连接驱动兼容Redis5.x必须开启用于缓存和 token 管理Nginx1.18用于 Web 服务器与反向代理服务器配置CPU 2核 / 内存 4G / 带宽 3M以上单城市运营足够支撑注意PHP 需要安装 fileinfo、redis、bcmath、pdo_mysql、openssl、mbstring 等扩展缺失会导致安装过程中频繁报错。宝塔面板可以在 PHP 扩展管理中一键安装非常省事。3.2 获取开源版源码源码获取是正规渠道去 Gitee、GitHub 搜索 likeshop 或 likeshop 家政版即可找到公开仓库。克隆或下载 zip 包即可。源码目录结构大致如下解压后一目了然server后端 API 服务端代码ThinkPHP 6.0 框架admin管理后台前端Vue 项目需要编译user用户端前端目前主要是 uni-app 项目可编译成 H5/小程序smash师傅端小程序前端原生小程序或 uni-app 格式看版本迭代doc部署文档与接口文档如果你只是快速体验直接看 server 目录里是否带 install 安装向导。likeshop 一贯的设计是提供 Web 安装程序浏览器访问后按步骤填写数据库信息即可自动配置不需要手动改 .env 文件配数据库连接这个对新手实在是太友好了。3.3 源码目录结构与二次开发入口后端代码按模块划分清晰application 目录下按业务模块区分api、admin、common 等common 里放公共逻辑和服务层。二次开发时主要改两个地方一是 controller 层接收参数和返回结果二是 service 层处理业务逻辑。这里命名规范到位每个方法都有注释几乎没有“拼代码式堆砌”的坏味道。前端项目文件结构也很规整如图片资源放在 static 目录、公共组件在 components 目录、业务页面在 pages 目录下按模块划分。如果你是第一次看这套代码建议从“创建订单”的业务链路入手用户端提交订单 → API 层接收 → 订单服务层创建记录 → 生成支付单 → 调起支付 → 回调更新状态 → 后台派单给师傅 → 师傅接单。一条链路走下来基本上就掌握了整套系统的核心脉络。4. 从零到一详细安装部署实操4.1 准备服务器与基础环境宝塔面板我这次以宝塔面板为例Linux 面板的最大优势是操作直观适合不熟悉命令行的读者。服务器系统选择 CentOS 7.9安装宝塔面板后在“软件商店”里安装 Nginx 1.18、MySQL 5.7、PHP 7.4、Redis 5.x。装完后记得在 PHP 设置里安装必要的扩展# 在宝塔PHP管理中确认以下扩展已启用 fileinfo、redis、bcmath、pdo_mysql、openssl、mbstring、curl、gd然后给 PHP 调整几个函数禁用项exec、shell_exec 等函数如果被禁用有些操作会失败建议在“禁用函数”里移除这些限制尤其安装向导需要写文件。另外还要设置 PHP 的putenv、proc_open函数可用否则依赖 composer 的组件可能运行异常。4.2 上传源码并配置站点源码下载后解压把 server、admin、user 等目录想办法混到一个站点目录下。如果你打算“后端 用户端”用同一个域名跑参考路径规划站点根目录/www/wwwroot/你的域名后端 API把 server 目录内容直接放站点根目录让入口文件public/index.php对应域名根路径用户端 H5把 user 目录编译后的 dist 文件放到站点根目录下的h5子目录管理后台把 admin 编译后的 dist 文件放到站点根目录下的admin子目录说句实话这样混放后续维护会有点乱我个人更建议后端和前端分开配置子域名api.你的域名指到后端、admin.你的域名指到管理后台、h5.你的域名指到用户端各走各的伪静态规则排查问题时定位会更快。4.3 配置 Nginx 伪静态与运行目录后端代码的运行目录必须指向public否则 ThinkPHP 的入口文件暴露会带来安全隐患。Nginx 的配置核心部分如下server { listen 80; server_name api.你的域名; root /www/wwwroot/你的域名/server/public; index index.php index.html; location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s$1 last; } } location ~ \.php(.*)$ { fastcgi_pass unix:/tmp/php-cgi-74.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 禁止访问隐藏文件 location ~ /\. { deny all; } }这里的关键是把fastcgi_pass改成你 PHP 版本对应的 socket 路径宝塔装的每个 PHP 版本 socket 不同可以用find /tmp -name *.sock查看确认。配好后访问http://api.你的域名/install应该能看到安装向导。4.4 安装向导与后台初始化访问安装向导后按步骤操作检查环境确认目录权限可写一般给755或775即可配置数据库创建数据库和用户把信息填进去设置管理员账号密码完成安装系统会自动写入.env文件并生成数据表安装完成后务必删除install目录或重命名为install_bak防止被恶意重复安装覆盖数据库。然后访问管理后台地址用刚才设置的管理员账号登录第一件事是去“系统设置”里把站点名称、客服电话、默认头像等基础信息改掉再配置支付方式和短信服务商。4.5 用户端与师傅端小程序打包发布用户端和师傅端如果是 uni-app 项目需要安装 HBuilderX或使用命令行工具导入项目代码然后配置小程序 appid 和请求接口地址在代码中的 config 或 env 文件里修改BASE_URL。打包步骤在 HBuilderX 中打开 uni-app 项目修改/common/config.js或对应配置文件里的接口域名点击“运行”调试确认功能正常点击“发行” → “小程序-微信”生成微信小程序包用微信开发者工具打开生成的包上传并提交审核注意小程序要求接口域名必须 HTTPS且已在微信公众平台配置服务器域名白名单。开发测试阶段可以用内网穿透工具上线前一定要换成正式 HTTPS 域名。5. 二次开发与系统扩展指南5.1 新增服务类目与计费规则上线前最重要的配置项是服务项目管理。比如你要做保洁、家电清洗、保姆月嫂等分类每个分类下设置具体服务项如日常保洁、深度保洁、擦玻璃然后配置计费方式按次计费、按时长计费、还是按面积计费。这套系统的服务规格设计得挺灵活它把规格当成一种“属性组合”比如“服务时长2小时/4小时/8小时”对应不同价格或者“服务人数1人/2人”。多规格价格设计很关键因为家政服务价格往往不是单一价格而是一个价格区间得当的规格配置直接影响后续订单金额核算和师傅分成比例。5.2 派单策略与自动调度逻辑如果你不想用人工派单可以参考我做的二次开发思路利用 Redis 做一个简单的自动派单队列。基本逻辑是新订单创建且支付完成后触发一个事件脚本把订单写入 Redis 队列然后根据订单地址和师傅的当前定位师傅端可以上报经纬度在指定半径内寻找可接单师傅优先推送给评分高、距离近、订单完成率高的师傅师傅端收到弹窗规定时间内没接自动推给下一位。这里不需要复杂的 GIS 服务直接用 MySQL 的ST_Distance_Sphere函数或 Haversine 公式一算即可实现数据量在千级师傅以内完全够用。// 简单的距离计算函数 function haversineDistance($lat1, $lng1, $lat2, $lng2) { $earthRadius 6371; // 千米 $dLat deg2rad($lat2 - $lat1); $dLng deg2rad($lng2 - $lng1); $a sin($dLat/2) * sin($dLat/2) cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($dLng/2) * sin($dLng/2); $c 2 * atan2(sqrt($a), sqrt(1-$a)); return $earthRadius * $c; }把这段逻辑封装成服务层方法在订单支付回调里触发调用再通过队列异步执行就能实现基础版自动调度。如果你要更复杂的抢单、指派、转单等策略也能在这套逻辑上继续扩展。5.3 营销模块扩展优惠券与次卡家政行业复购率是生命线。开源版自带基础的优惠券功能如果想让用户更“黏”可以继续扩展次卡/储值卡模块用户一次性购买“10次保洁套餐”享受一定折扣后续预约直接扣减次数。这需要添加一张次卡表、用户次卡关联表在订单费用计算时优先判断是否有对应次卡可用核销成功后扣减余额。这类功能建议优先走“服务层扩展”而不是改控制器因为订单创建、支付回调、退款这几个环节都要联动判断次卡状态逻辑集中在 service 层管理会减少很多坑。5.4 对接外部系统短信通知与企业微信提醒为了提升订单响应的及时性还可以接入短信服务阿里云/腾讯云以及企业微信群机器人。订单派单成功、用户付款成功、师傅接单等关键节点触发通知。实现方式在对应的事件监听器里增加一个通知行为通过 Guzzle HTTP 客户端调用外部 API 发送消息。由于源码用的是 ThinkPHP 的事件机制这块改造非常顺手不需要破坏原有订单流程。6. 常见问题与排查技巧实录6.1 安装过程中最常见的 4 个报错报错[ERR] 2002 Connection refusedMySQL 没启动或者数据库地址填错。宝塔上检查 MySQL 是否运行中确认 socket 连接是否正常。报错mkdir(): Permission denied目录权限不够。到宝塔把这站点目录的权限改为www:www归属永许读写即可。报错Please install the fileinfo extensionPHP 缺少 fileinfo 扩展。在宝塔软件商店的 PHP 扩展管理中一键安装重启后生效。报错Class Redis not foundPHP 没装 Redis 扩展。同上在 PHP 扩展管理中安装 redis 扩展。6.2 用户端/管理后台登录无限跳转这是我部署时踩过的坑。如果后台能打开但登录成功后跳转回登录页大概率是.env配置里的域名和自己访问的域名不一致导致回跳地址错误、cookie 无法正确写入。打开.env确认domain配置项填的是当前访问的完整域名不要带路径改完清一下浏览器缓存和 cookie 再试。6.3 支付回调失败订单状态不更新支付回调用的是异步通知模式很多情况是服务器防火墙 / 安全组没放行微信支付/支付宝回调的请求来源或者回调地址是 http 而被支付平台拒绝。处理步骤确认服务器安全组放行 80/443 端口卸载宝塔面板的防盗链和 Nginx 防火墙对回调地址的拦截在支付配置中确认回调域名是外网可访问的 HTTPS 地址查看后台日志runtime/log/目录下的日志文件搜索notify关键信息6.4 定时任务不触发或订单超时未关闭这套系统的订单超时关闭、师傅接单超时标记等操作依赖队列和定时任务。宝塔环境必须手动配置计划任务cd /www/wwwroot/你的域名/server php think timer start --daemon把这条命令加到宝塔计划任务里选择“Shell脚本”执行周期选择“N分钟”建议 1 分钟并保证 Redis 服务正常运行。如果你在 Linux 上直接用 crontab也要注意添加后重启 crond 服务否则不会生效。6.5 小程序上传图片失败小程序端上传图片失败多是小程序后台没配置“uploadFile 合法域名”或者接口返回了非标准 JSON。另外检查 PHP 上传限制是否过小建议在宝塔 PHP 配置里把upload_max_filesize改成 20Mpost_max_size改成 50M重启 PHP 生效。6.6 优化建议慢查询与缓存设置国内服务器带宽一般不会很大如果用户量上来记得提前做两件事第一MySQL 开启慢查询日志掌握哪些 SQL 拖慢接口响应第二把首页的服务分类、推荐服务列表这类“读多写少”的数据加入 Redis 缓存有效期设置 5-10 分钟能明显降低数据库压力。另外如果发现某个接口响应异常慢优先看是不是没有用到索引尤其是订单表、师傅位置表的查询字段建立联合索引后提升会很明显。这套系统的表结构设计还算规范加索引一般不会引起副作用。7. 部署上线前的上线检查清单上线前的系统配置和检测项我整理了一份自检清单建议逐条过一遍检查项操作说明状态HTTPS 证书小程序域名必须 HTTPS免费证书可用未配置/已配置服务商接口配置好微信支付/支付宝支付、短信服务未配置/已配置定时任务配置好订单超时任务测试跑通未配置/已配置后台基础信息完成站点名称、客服联系方式、服务时间设置未配置/已配置服务项目管理设置好分类、服务项、计费规格、图片素材未配置/已配置师傅入驻添加测试师傅账号确认师傅端接单流程未配置/已配置数据库备份策略设置每日自动备份到 OSS/本地未配置/已配置灰度测试先小范围真实订单走一遍全流程未配置/已配置这条清单每一项都别偷懒。尤其是支付配置和短信如果等到上线后才发现回调不通面对的是真实用户抱怨代价就大了。8. 我对这套系统的综合评估与总结likeshop 上门家政系统开源版这套源码从技术设计、代码质量、功能完整性到部署友好度在 PHP 开源项目里都属于上乘水准。我自己的体验是它对中小团队非常友好一套源码从零起步能在一个星期内把可用版本部署上线这在“时间就是金钱”的创业早期是非常大的优势。它当然不是万能方案。如果你是想做全国性的超级平台、要接入复杂 ERP/财务系统、要支撑几十万日活的流量这套系统的 PHP 单体架构可能需要较大改造甚至重写。但如果你是在一个城市深耕先跑通业务模型再逐步扩展它作为起步抓手完全够用。关于二次开发的方向我也观察到很多团队在用它的过程中走出了特色路线有人重点改造了“会员储值 家庭档案”模块做长期客户运营有人接入了电子合同和保险服务提升客单价还有人打通了本地生活平台做引流。这说明系统底子好、扩展面广能支撑不同业务形态的演化。说白了工具再好真正决定业务成败的还是运营。这套系统给了你一个扎实的数字化底座能不能把服务口碑做起来把师傅团队管好把用户留存做上去就要靠你在线下花真功夫了。希望这篇文章能帮你少走一些弯路快速把平台跑起来。本文还有配套的精品资源点击获取