博主介绍:
所有项目都配有从入门到精通的安装教程,可二开,提供核心代码讲解,项目指导。
项目配有对应开发文档、解析等
项目都录了发布和功能操作演示视频;项目的界面和功能都可以定制,包安装运行!!!
如果需要联系我,可以在CSDN在文章末尾或者个人简介可以获取联系方式
一、为什么你需要这套源码?
市面上家政系统动辄上万,且二次开发困难。我的这套系统:
✅开箱即用:导入数据库、修改配置即可运行
✅功能完整:覆盖用户端、服务端、管理端全流程
✅代码规范:注释清晰,方便二次定制
✅技术支持:购买后提供一对一答疑
二、系统功能全景图
2.1 用户端(小程序/H5)
服务分类浏览(保洁、保姆、月嫂、家电清洗等)
在线预约下单(选择时间、地址、备注)
订单实时跟踪(状态推送通知)
服务评价与投诉
优惠券领取与使用
2.2 服务人员端(App)
抢单/派单模式切换
服务打卡(开始/结束)
收入提现(绑定微信/支付宝)
工作日程管理
2.3 管理后台(Web)
订单审核与调度
人员入驻审核
财务对账报表
数据看板(日活、转化率、客单价)
三、技术架构一览
层级 | 技术选型 |
|---|---|
前端用户端 | Uni-app(一套代码多端适配) |
前端管理端 | Vue 3 + Element Plus |
后端 | Spring Boot 2.7 + MyBatis-Plus |
数据库 | MySQL 8.0 + Redis |
文件存储 | 阿里云OSS / 本地存储 |
消息推送 | WebSocket + 短信接口 |
部署 | Docker + Nginx |
四、核心业务逻辑实现
4.1 自动派单算法
@Component public class AutoDispatchStrategy { /** * 根据距离、评分、空闲状态自动匹配最优服务人员 */ public Worker matchBestWorker(OrderRequest request) { // 1. 筛选附近5公里内空闲人员 List<Worker> candidates = workerMapper.selectAvailable( request.getLng(), request.getLat(), 5000); // 2. 按综合评分排序(评分权重60%,接单量权重40%) candidates.sort((a, b) -> Double.compare(b.getScore() * 0.6 + b.getOrderCount() * 0.4, a.getScore() * 0.6 + a.getOrderCount() * 0.4)); // 3. 返回最优人员 return candidates.isEmpty() ? null : candidates.get(0); } }4.2 订单超时自动取消
@Component public class OrderTimeoutHandler { @Scheduled(fixedRate = 60000) // 每分钟检查一次 public void cancelTimeoutOrders() { LocalDateTime deadline = LocalDateTime.now().minusMinutes(30); List<Order> timeoutOrders = orderMapper.selectList( new LambdaQueryWrapper<Order>() .eq(Order::getStatus, 0) // 待接单 .lt(Order::getCreateTime, deadline)); timeoutOrders.forEach(order -> { order.setStatus(-1); // 已取消 order.setCancelReason("超时未接单,系统自动取消"); orderMapper.updateById(order); // 发送通知给用户 notificationService.sendCancelNotice(order.getUserId()); }); } }4.3 微信支付集成
@PostMapping("/createPay") public Result<String> createPayment(@RequestBody PayRequest request) { // 调用微信统一下单API WxPayUnifiedOrderRequest wxRequest = new WxPayUnifiedOrderRequest(); wxRequest.setOutTradeNo(request.getOrderNo()); wxRequest.setTotalFee(request.getAmount().multiply(new BigDecimal("100")).intValue()); wxRequest.setBody("家政服务 - " + request.getServiceName()); wxRequest.setSpbillCreateIp(IpUtil.getClientIp()); wxRequest.setNotifyUrl(payConfig.getNotifyUrl()); wxRequest.setTradeType("JSAPI"); WxPayUnifiedOrderResult result = wxPayService.unifiedOrder(wxRequest); return Result.success(result.getPrepayId()); }五、部署三步走
环境准备:安装JDK 11、MySQL 8、Redis、Nginx
导入数据库:执行
init.sql创建表结构和初始数据启动服务:运行
start.sh一键启动后端,前端打包后放入Nginx目录