1. 项目概述与背景
去年参与开发了一个宠物服务综合平台,采用SpringBoot+Vue.js技术栈,完整实现了从宠物服务预约到领养管理的全流程数字化。这个项目让我深刻体会到,一个优秀的宠物服务平台不仅需要扎实的技术实现,更要深入理解宠物主和服务商的双向需求。
当前宠物服务行业存在几个典型痛点:服务信息分散在各类平台,用户需要反复切换比价;预约流程繁琐,经常出现电话沟通不畅导致的时间冲突;领养信息真实性难以验证,双方信任成本高。我们的系统正是针对这些问题,通过标准化服务流程、透明化信息展示和便捷的线上操作,为宠物主和服务商搭建了一个高效对接平台。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 整体技术选型
后端采用SpringBoot 2.7 + MyBatis Plus组合,前端使用Vue 3 + Element Plus。这个组合经过多个项目验证,在开发效率和性能之间取得了很好平衡。特别说明几个关键选择:
-
放弃JPA选择MyBatis Plus:虽然JPA开发更快速,但宠物服务涉及复杂的多表关联查询(如预约记录需要联查用户、服务、支付状态),MyBatis Plus的Wrapper条件构造器更适合这种场景。
-
前端采用Pinia状态管理:相比Vuex,Pinia的TypeScript支持更好,在服务预约流程中需要维护复杂的临时状态(如选择的服务项、时间、优惠券等),Pinia的模块化设计让状态管理更清晰。
-
自定义权限控制方案:基于Spring Security的RBAC模型扩展,增加了服务商角色(介于管理员和普通用户之间),通过@PreAuthorize注解实现方法级权限控制。
2.2 数据库设计要点
MySQL表设计中几个值得分享的经验:
- 服务预约表的冗余设计:
sql复制CREATE TABLE `service_order` (
`id` bigint NOT NULL AUTO_INCREMENT,
`service_id` bigint NOT NULL COMMENT '服务ID',
`service_name` varchar(100) NOT NULL COMMENT '冗余存储服务名称',
`user_id` bigint NOT NUL
