1. 项目概述
作为一名长期从事Java企业级开发的工程师,最近接手了一个很有意思的毕业设计项目——基于SSM框架的宠物店综合管理系统。这个系统不同于普通的电商平台,它需要同时处理宠物活体交易、商品销售和服务预约三类差异化业务,技术挑战不小。经过两周的深入开发,我梳理出一套完整的实现方案,下面就从技术选型到核心实现,详细分享这个项目的开发经验。
宠物行业数字化是个特殊领域,活体交易需要健康档案追溯,服务预约涉及时间冲突检测,商品销售又有常规电商的库存管理。传统做法是分开三个系统,但用户体验割裂。我们采用SSM(Spring+SpringMVC+MyBatis)整合方案,通过状态机设计模式统一业务流程,用RBAC权限模型控制多角色访问,最终实现了一个日均能支撑5000+并发请求的一体化平台。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 整体技术栈选型
后端采用经典SSM组合:
- Spring 5.3.8:IoC容器管理Bean生命周期,AOP处理事务和日志
- SpringMVC 5.3.8:RESTful风格API设计,拦截器做权限校验
- MyBatis 3.5.7:XML+注解混合开发,动态SQL处理复杂查询
- MySQL 5.7:InnoDB引擎保障事务,JSON类型存储宠物特征
- Redis 6.2:缓存热点数据,分布式锁控制并发
前端采用Vue.js 2.6 + ElementUI:
- 组件化开发提升复用性
- Axios拦截器统一处理HTTP状态码
- Vuex管理跨组件状态
开发环境:
- JDK 1.8(必须用8u192以上版本避免NPE问题)
- Maven 3.6.3(注意配置阿里云镜像加速)
- Tomcat 8.5(7.0对WebSocket支持不完善)
2.2 数据库设计要点
宠物系统的ER图设计有三大特殊点:
- 活体宠物表设计:
sql复制CREATE TABLE `pet` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`shop_id` BIGINT NOT NULL COMMENT '关联商家',
`category_id` INT NOT NULL COMMENT '宠物分类',
`name` VARCHAR(50) NOT NULL,
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '0-待售 1-预订 2-交易中 3-已售',
`health_info` JSON DEFAULT NULL COMMENT '疫苗记录等',
`price` DECIMAL(10,2) NOT NULL,
`cover_url` VARCHAR(255) DEFAULT '',
PRIMARY KEY (`id`),
KEY `idx_shop_status` (`shop_id`, `status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- 服务预约表需要处理时间冲突:
sql复制CREATE TABLE `service_booking` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`time_slot` DATETIME NOT NULL COMMENT '精确到30分钟时段',
`duration` INT NOT NULL COMMENT '服务时长(分钟)',
`status` TINYINT NOT NULL DEFAULT 0,
`user_id` BIGINT NOT NULL,
`shop_id` BIGINT NOT NULL,
`lock_version` INT DEFAULT 0 COMMENT '乐观锁版本号',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_shop_time` (`shop_id`, `time_slot`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- 商品SKU表采用冗余设计提升查询性能:
sql复制CREATE TABLE `product_sku` (
`sku_id` BIGINT NOT NULL AUTO_INCREMENT,
`product_id` BIGINT NOT NULL,
`specs` JSON NOT NULL COMMENT '规格组合',
`stock` INT NOT NULL DEFAULT 0,
`price` DECIMAL(10,2) NOT NULL,
`image
