【保洁公司转型】传统派单靠吼、结算靠纸?基于Spring Boot的家政系统源码助你快速上线接单App

博主介绍:

所有项目都配有从入门到精通的安装教程,可二开,提供核心代码讲解,项目指导。

项目配有对应开发文档、解析等

项目都录了发布和功能操作演示视频;

项目的界面和功能都可以定制,包安装运行!!!

如果需要联系我,可以在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());
}

五、部署三步走

  1. 环境准备:安装JDK 11、MySQL 8、Redis、Nginx

  2. 导入数据库 :执行 init.sql创建表结构和初始数据

  3. 启动服务 :运行 start.sh一键启动后端,前端打包后放入Nginx目录

六、软件截图展示

用户端

商家端

员工端

管理端