1. 项目背景与市场需求分析
宠物经济近年来呈现爆发式增长,根据《2023年中国宠物行业白皮书》显示,全国城镇宠物(犬猫)主人数已突破7000万,年度消费规模达到2706亿元。其中,宠物寄养服务需求年增长率高达35%,特别是在节假日期间,专业寄养机构往往"一笼难求"。
传统宠物店的笼养式寄养存在几个痛点:
- 空间狭小导致宠物活动受限
- 多宠物混养易引发交叉感染
- 服务人员专业度参差不齐
- 价格偏高(一线城市日均100-300元)
家庭式寄养模式应运而生,其核心优势在于:
- 提供家庭化生活环境,减少宠物应激反应
- 单家庭接待宠物数量有限(通常1-3只)
- 寄养家庭多为有经验的宠物主
- 价格更具竞争力(日均50-150元)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计与技术选型
2.1 整体技术栈
采用前后端分离架构,技术组合如下:
code复制前端:Vue 3 + Element Plus + Axios
后端:Spring Boot 2.7 + MyBatis-Plus + Redis
数据库:MySQL 8.0
部署:Docker + Nginx
2.2 技术选型依据
- Vue 3:组合式API更适合复杂业务组件开发,与Element Plus的表格、表单组件深度集成
- Spring Boot:快速构建微服务架构,Starter机制简化Redis、MySQL等中间件集成
- MyBatis-Plus:提供Lambda表达式查询,避免SQL注入风险
- Redis:缓存热门寄养家庭数据,QPS提升5-8倍
2.3 系统模块划分
code复制├── 用户端
│ ├── 宠物主模块
│ ├── 寄养家庭模块
│ └── 订单中心
├── 管理端
│ ├── 资质审核
│ ├── 纠纷仲裁
│ └── 数据看板
└── 公共服务
├── 即时通讯
├── 支付对接
└── 评价系统
3. 核心业务功能实现
3.1 寄养家庭智能匹配算法
采用多维度加权评分模型:
java复制// 匹配权重配置示例
public class MatchWeight {
private Double distance = 0.3; // 距离权重
private Double price = 0.2; // 价格敏感度
private Double rating = 0.25; // 历史评分
private Double petType = 0.15; // 宠物类型匹配
private Double capacity = 0.1; // 剩余接待能力
}
实现步骤:
- 基于用户LBS获取3公里范围内寄养家庭
- 过滤不符合宠物类型要求的家庭(如不接受烈性犬)
- 按权重公式计算匹配度:
Score = Σ(attribute * weight) - 使用Redis ZSET维护实时排序
3.2 双向评价体系设计
评价维度包括:
-
寄养方评分项:
- 环境整洁度(1-5星)
- 照顾专业度
- 沟通响应速度
- 附加服务(美容、训练等)
-
宠物主评分项:
- 宠物健康状况
- 约定遵守度
- 支付及时性
防刷分机制:
sql复制CREATE TRIGGER prevent_brush_rating
BEFORE INSERT ON ratings
FOR EACH ROW
BEGIN
IF EXISTS (
SELECT 1 FROM orders
WHERE order_id = NEW.order_id
AND user_id = NEW.rater_id
) THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot rate own order';
END IF;
END;
4. 关键问题解决方案
4.1 宠物健康状态跟踪
采用区块链技术存证关键节点:
- 入住时拍摄15秒视频,使用IPFS存储哈希值
- 每日三次健康打卡(体温、饮食、排泄)
- 异常情况自动触发保险流程
4.2 即时通讯实现方案
基于WebSocket的优化策略:
- 消息分级:文字消息直接传输,图片/视频走CDN
- 心跳检测:每30秒发送ping包检测连接
- 离线消息:使用MongoDB存储未读消息
核心配置示例:
yaml复制# Spring WebSocket配置
server:
port: 8080
servlet:
context-path: /api
spring:
websocket:
max-text-message-buffer-size: 8192
max-binary-message-buffer-size: 8192
5. 安全与性能优化
5.1 安全防护措施
-
JWT增强方案:
- 双Token机制(access_token 30分钟过期,refresh_token 7天)
- 指纹绑定防止盗用:
Header.X-Device-Fingerprint
-
敏感操作验证:
java复制@PostMapping("/cancel-order") @RequireSecurityCheck(type = "SMS") public Result cancelOrder(@Valid @RequestBody OrderCancelDTO dto) { // 需通过短信验证码校验 }
5.2 数据库优化实践
- 分表策略:按用户ID哈希分片(16个物理表)
- 索引优化:
sql复制CREATE INDEX idx_geo ON foster_homes( (ST_Distance_Sphere( POINT(longitude, latitude), POINT(?, ?) )) ); - 查询优化:使用Covering Index避免回表
sql复制EXPLAIN SELECT id, name FROM homes WHERE status = 1 AND pet_type = 'DOG' ORDER BY rating DESC LIMIT 10;
6. 部署与监控体系
6.1 CI/CD流程
mermaid复制graph LR
A[代码提交] --> B(Jenkins构建)
B --> C{测试环境}
C -->|通过| D[生产蓝绿部署]
C -->|失败| E[邮件告警]
D --> F[健康检查]
F --> G[流量切换]
6.2 监控指标配置
-
业务指标:
- 订单转化率(UV to Order)
- 匹配成功率(首次匹配达成率)
-
系统指标:
bash复制# Prometheus配置示例 - job_name: 'springboot' metrics_path: '/actuator/prometheus' static_configs: - targets: ['192.168.1.10:8080']
7. 扩展功能展望
- 智能合约支付:寄养费用托管,根据健康打卡自动结算
- AR远程看宠:通过WebRTC实现实时互动
- 宠物行为分析:接入AI摄像头识别异常行为
- 保险自动理赔:对接宠物保险API实现快速理赔
项目开发中遇到的典型问题:
- 地图API选型:最终采用高德地图JS API,因其行政区划数据更准确
- 文件上传优化:使用分片上传+MD5校验,大文件成功率从78%提升至99.6%
- 支付对账:每日凌晨2点跑批处理,自动修复状态不一致订单
