技术架构设计
本方案采用前后端分离架构,前端基于UniApp跨平台框架实现多端适配,后端采用Spring Boot+MyBatis-Plus构建RESTful服务,数据库选用MySQL 8.0+Redis 6.2组合方案,支持高并发场景下2000+TPS的吞吐量。核心架构包含:
前端模块
- 源码演示站:j.yunzes.top/er
- 微信小程序原生开发(WXML/WXSS/JS)
- UniApp实现H5/Android/iOS三端同步
- Vant Weapp组件库加速UI开发
- 高德地图SDK集成实现LBS定位
后端服务
java
// Spring Boot后端定位查询示例
@RestController
@RequestMapping("/api/staff")
public class StaffController {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@GetMapping("/nearby")
public List<Staff> findNearby(@RequestParam double lat,
@RequestParam double lng,
@RequestParam int radius) {
return redisTemplate.opsForGeo()
.search("staff:locations",
new Circle(new Point(lng, lat),
new Distance(radius, Metrics.KILOMETERS)))
.stream().map(GeoResult::getContent)
.collect(Collectors.toList());
}
}
核心数据库设计
用户表结构
sql
CREATE TABLE `users` (
`user_id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`openid` VARCHAR(50) UNIQUE NOT NULL COMMENT '微信唯一标识',
`mobile` VARCHAR(11) COMMENT '手机号',
`nickname` VARCHAR(50) NOT NULL,
`avatar_url` VARCHAR(255),
`balance` DECIMAL(10,2) UNSIGNED DEFAULT 0.00,
`create_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
订单表结构
sql
CREATE TABLE `orders` (
`order_id` VARCHAR(24) NOT NULL PRIMARY KEY,
`user_id` INT UNSIGNED NOT NULL,
`service_id` INT UNSIGNED NOT NULL,
`status` ENUM('pending','paid','confirmed','serving','completed','canceled')
DEFAULT 'pending',
`total_amount` DECIMAL(10,2) UNSIGNED NOT NULL,
`address` JSON NOT NULL COMMENT '服务地址(JSON结构)',
`service_time` DATETIME NOT NULL,
FOREIGN KEY (`user_id`) REFERENCES users(`user_id`),
FOREIGN KEY (`service_id`) REFERENCES services(`service_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
核心功能源码实现
智能派单算法
java
// 服务人员匹配度计算
public class StaffMatchingEngine {
private static final double DISTANCE_WEIGHT = 0.4;
private static final double SKILL_WEIGHT = 0.4;
private static final double RATING_WEIGHT = 0.2;
public double calculateMatchScore(Staff staff, Order order) {
double distanceScore = calculateDistanceScore(staff.getLocation(), order.getLocation());
double skillScore = calculateSkillScore(staff.getSkills(), order.getServiceType());
double ratingScore = staff.getAverageRating() / 5.0;
return DISTANCE_WEIGHT * distanceScore
+ SKILL_WEIGHT * skillScore
+ RATING_WEIGHT * ratingScore;
}
}
微信支付集成
javascript
// 小程序端支付调用
wx.requestPayment({
timeStamp: payParams.timeStamp,
nonceStr: payParams.nonceStr,
package: payParams.package,
signType: 'MD5',
paySign: payParams.paySign,
success() {
wx.navigateTo({
url: `/pages/orderDetail/orderDetail?orderId=${orderId}`
})
}
})
多端适配方案
采用UniApp条件编译实现多端兼容:
javascript
// 支付功能多端适配
payOrder(orderId) {
// #ifdef MP-WEIXIN
wx.requestPayment({/* 微信支付参数 */})
// #endif
// #ifdef APP-PLUS
uni.requestPayment({provider: 'alipay', /* 支付宝参数 */})
// #endif
// #ifdef H5
this.h5Payment(orderId)
// #endif
}
地图功能适配
javascript
openMap(lat, lng, name) {
// #ifdef MP-WEIXIN
wx.openLocation({latitude: lat, longitude: lng, name: name})
// #endif
// #ifdef APP-PLUS
plus.maps.openMap({
center: new plus.maps.Point(lat, lng),
title: name
})
// #endif
}
部署与运维
部署流程
- 注册微信小程序获取AppID
- 配置腾讯云服务器(2核4G起)
- 安装Nginx+MySQL+Node.js环境
- 配置SSL证书实现HTTPS
- 代码打包上传至服务器
- 小程序提交审核,APP打包生成APK/IPA
持续部署方案
yaml
# Jenkinsfile示例
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn clean package'
sh 'npm run build'
}
}
stage('Deploy') {
steps {
sshPublisher(
publishers: [
sshPublisherDesc(
configName: 'prod-server',
transfers: [
sshTransfer(
sourceFiles: 'target/*.jar',
removePrefix: 'target/',
remoteDirectory: '/opt/backend'
)
]
)
]
)
}
}
}
}

结语
家政小程序源码的实战探索,不仅是一套技术方案的落地,更是家政行业数字化转型的缩影。通过源码级实现,我们构建了从用户下单到服务评价的全流程闭环:智能派单算法实现30分钟内供需匹配,多端适配技术覆盖微信小程序、H5、APP三端用户场景,Redis+MySQL的数据库组合支撑高并发场景下2000+TPS的吞吐量,而WebSocket实时推送与Nginx负载均衡则确保了服务的流畅与稳定。未来,随着5G、AIoT技术的普及,家政小程序将进一步向智能化、场景化演进:结合智能硬件实现服务过程可视化,通过AI客服提升用户咨询效率,利用大数据预测服务需求实现前置调度。而源码的持续迭代与社区共建,将成为推动行业标准化、服务品质化的核心动力。本实战方案不仅是技术的集成,更是对"高效家政服务生态"的诠释------通过技术赋能,让优质服务触手可及,让行业价值持续增长。