1. 项目背景与核心需求
家政服务行业近年来呈现爆发式增长,传统的电话预约和门店登记方式已经无法满足现代家庭的需求。一个基于Java+Vue的家政服务平台能够解决以下痛点:
- 服务供需信息不对称:客户找不到可靠服务人员,服务人员接单效率低
- 服务过程不透明:从预约到完成缺乏全流程跟踪
- 支付结算不规范:现金交易缺乏保障
- 评价体系缺失:服务质量难以量化评估
这个系统需要实现的核心功能模块包括:
- 用户端:服务浏览、预约、支付、评价
- 服务端:订单管理、人员调度、服务统计
- 管理端:服务人员管理、业务监控、财务对账
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术选型与架构设计
2.1 前后端分离架构
采用SpringBoot+Vue的分离架构方案,主要考虑:
- 前端Vue.js的响应式特性适合频繁交互的家政服务场景
- SpringBoot的快速开发能力能缩短项目周期
- RESTful API接口便于后期扩展移动端应用
技术栈组成:
code复制后端:
- 核心框架:Spring Boot 2.7.x
- 安全框架:Spring Security + JWT
- 持久层:MyBatis-Plus 3.5.x
- 数据库:MySQL 8.0
- 缓存:Redis 6.x
- 消息队列:RabbitMQ 3.9.x(用于异步处理订单状态变更)
前端:
- 核心框架:Vue 3.x + Composition API
- UI组件:Element Plus 2.3.x
- 状态管理:Pinia 2.0.x
- 路由:Vue Router 4.x
- HTTP客户端:Axios 1.3.x
2.2 数据库设计要点
家政服务平台的核心数据模型需要考虑:
- 服务人员多维度信息(技能认证、服务区域等)
- 服务项目的动态定价策略
- 订单状态的完整生命周期记录
关键表结构设计示例:
sql复制CREATE TABLE `service_provider` (
`id` bigint NOT NULL AUTO_INCREMENT,
`real_name` varchar(50) NOT NULL COMMENT '真实姓名',
`id_card` varchar(18) NOT NULL COMMENT '身份证号',
`service_types` json DEFAULT NULL COMMENT '服务类型JSON数组',
`certifications` json DEFAULT NULL COMMENT '资质证书信息',
`geo_range` polygon DEFAULT NULL COMMENT '服务范围地理围栏',
`avg_rating` decimal(3,1) DEFAULT '5.0' COMMENT '平均评分',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_id_card` (`id_card`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `service_order` (
`id` bigint NOT NULL AUTO_INCREMENT,
`order_no` varchar(32) NOT NULL COMMENT '订单编号',
`customer_id` bigint NOT NULL,
`provider_id` bigint DEFAULT NULL,
`service_type` varchar(50) NOT NULL,
`order_status` enum('pending','confirmed','serving','completed','cancelled') NOT NULL DEFAULT 'pending',
`scheduled_time` datetime NOT NULL COMMENT '预约时间',
`actual_start_time` datetime DEFAULT NULL,
`actual_end_time` datetime DEFAULT NULL,
`location` point NOT NULL COMMENT '服务地点坐标',
`dynamic_price` decimal(10,2) NOT NULL COMMENT '最终成交价',
PRIMARY KEY (`id`),
KEY `idx_order_no` (`order_no`),
KEY `idx_customer` (`customer_id`),
KEY `idx_provider` (`provider_id`),
KEY `idx_status` (`order_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3. 核心功能实现细节
3.1 智能派单算法实现
家政服务的核心难点在于如何高效匹配客户需求和服务人员。我们实现了基于多维度加权的智能派单算法:
java复制public class DispatchAlgorithm {
// 权重配置
private static final double DISTANCE_WEIGHT = 0.4;
private static final double RATING_WEIGHT = 0.3;
private static final double PRICE_WEIGHT = 0.2;
private static final double RESPONSE_WEIGHT = 0.1;
public ProviderScore calculateProviderScore(Order order, ServiceProvider provider) {
// 1. 计算距离分(使用Haversine公式计算实际距离)
double distanceScore = calculateDistanceScore(
order.getLocation(),
provider.getLastKnownLocation());
// 2. 计算评分分(标准化处理)
double ratingScore = normalizeRating(provider.getAvgRating());
// 3. 计算价格分(基于服务人员报价与市场均价差异)
double priceScore = calculatePriceScore(
provider.getServicePrice(order.getServiceType()),
getMarketAveragePrice(order.getServiceType()));
// 4. 计算响应分(历史接单响应时间)
double responseScore = calculateResponseScore(
provider.getAvgResponseTime());
// 综合加权得分
double totalScore =
distanceScore * DISTANCE_WEIGHT +
ratingScore * RATING_WEIGHT +
priceScore * PRICE_WEIGHT +
responseScore * RESPONSE_WEIGHT;
return new ProviderScore(provider.getId(), totalScore);
}
// 其他辅助计算方法...
}
3.2 服务状态机设计
订单状态流转是业务核心,我们采用状态模式实现:
java复制public interface OrderState {
void confirm(Order order);
void startService(Order order);
void complete(Order order);
void cancel(Order order);
}
@Component
@Scope("prototype")
public class PendingSta
