1. 项目概述
这个基于微信小程序的宠物服务预约系统,是我去年为一个连锁宠物店开发的线上服务平台。核心功能包括宠物美容预约、宠物用品商城、健康咨询等模块,后端采用SpringBoot框架,前端使用微信小程序技术栈。系统上线后帮助门店客流量提升了35%,特别在节假日高峰期有效分流了线下排队压力。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 后端技术选型
采用SpringBoot 2.7 + MyBatis Plus组合,数据库使用MySQL 8.0。选择这套技术栈主要基于:
- SpringBoot的自动配置特性快速搭建微服务
- MyBatis Plus提供的强大CRUD操作简化开发
- MySQL事务支持确保订单数据的完整性
java复制// 典型控制器示例
@RestController
@RequestMapping("/api/appointment")
public class AppointmentController {
@Autowired
private AppointmentService appointmentService;
@PostMapping
public Result create(@Valid @RequestBody AppointmentDTO dto) {
return Result.success(appointmentService.create(dto));
}
}
2.2 微信小程序前端
使用微信原生框架+ColorUI组件库开发,主要考虑:
- 原生框架性能优于第三方框架
- ColorUI提供美观的宠物行业适用组件
- 直接调用微信支付等原生API更稳定
javascript复制// 预约页面逻辑示例
Page({
data: {
date: '',
serviceTypes: []
},
onLoad() {
this.loadServiceTypes()
},
loadServiceTypes() {
wx.request({
url: 'https://api.example.com/services',
success: res => {
this.setData({serviceTypes: res.data})
}
})
}
})
3. 核心功能实现
3.1 预约系统设计
采用分段式时间槽管理,每个美容师每天分为:
- 08:00-12:00(4个时段)
- 14:00-18:00(4个时段)
- 19:00-21:00(2个时段)
数据库设计关键表:
sql复制CREATE TABLE `appointment` (
`id` bigint NOT NULL AUTO_INCREMENT,
`pet_id` bigint NOT NULL,
`staff_id` bigint NOT NULL,
`service_type` varchar(50) NOT NULL,
`time_slot` datetime NOT NULL,
`status` tinyint DEFAULT '0' COMMENT '0-待确认 1-已预约 2-已完成 3-已取消',
PRIMARY KEY (`id`),
KEY `idx_time_slot` (`time_slot`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3.2 宠物用品商城
实现要点:
- 商品SKU管理系统
- 基于Redis的库存扣减
- 微信支付接入
库存扣减关键代码:
java复制public boolean reduceStock(Long productId, int quantity) {
String key = "product_stock:" + productId;
long value = redisTemplate.opsForValue().increment(key, -quantity);
if (value < 0) {
// 库存不足回滚
redisTemplate.opsForValue().increment(key, quantity);
return false;
}
return true;
}
4. 关键技术难点
4.1 高并发预约处理
采用分布式锁解决超卖问题:
java复制public boolean lockTimeSlot(Long staffId, LocalDateTime slotTime) {
String lockKey = "lock:appointment:" + staffId + ":" + slotTime;
return redisTemplate.opsForValue()
.setIfAbsent(lockKey, "1", 30, TimeUnit.SECONDS);
}
4.2 微信消息推送
通过订阅消息实现预约提醒:
java复制public void sendAppointmentReminder(Appointment appointment) {
WxMaSubscribeMessage message = new WxMaSubscribeMessage();
message.setTemplateId("预约提醒模板ID");
message.setToUser(appointment.getOpenid());
message.addData(new WxMaSubscribeMessage.MsgData("thing1", appointment.getServiceType()));
message.addData(new WxMaSubscribeMessage.MsgData("time2",
appointment.getTimeSlot().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))));
wxMaService.getMsgService().sendSubscribeMsg(message);
}
5. 部署与运维
5.1 服务器配置
推荐配置:
- 2核4G云服务器(高峰期可弹性扩容)
- JDK17 + Tomcat9
- Redis6哨兵模式
- MySQL主从架构
5.2 监控方案
- SpringBoot Actuator健康检查
- Prometheus + Grafana监控面板
- 微信小程序错误日志收集
yaml复制# application.yml部分配置
management:
endpoints:
web:
exposure:
include: "*"
metrics:
export:
prometheus:
enabled: true
6. 开发经验总结
-
微信小程序审核注意:
- 虚拟支付需走IAP通道
- 服务类目选择"宠物生活"
- 用户隐私协议必须完善
-
性能优化点:
- 预约列表接口添加二级缓存
- 商品图片使用CDN加速
- 启用MySQL查询缓存
-
实际运营数据:
- 平均预约耗时从15分钟降至3分钟
- 用户复购率达42%
- 高峰期并发量约300QPS
这套系统经过三个月的迭代开发,目前已在12家门店稳定运行。最大的收获是深入理解了宠物服务行业的特殊需求,比如需要特别设计宠物品种选择器、疫苗记录关联等功能。对于想进入宠物行业的开发者,建议重点关注服务标准化和用户体验优化这两个方向。
