基于SSM框架的宠物医疗美容服务平台 - 源码深度解析
在宠物经济蓬勃发展的当下,传统宠物服务机构面临着信息化转型的迫切需求。手工记录、电话预约等传统管理模式已无法满足现代宠物医疗美容机构对效率和服务质量的要求。信息孤岛、预约冲突、服务记录分散等问题严重制约了机构的运营效率和服务体验。
为此,我们设计并实现了"PetCare智能服务平台"—一套集医疗服务和美容护理于一体的综合性管理平台。本文将深入解析该平台的技术架构、数据库设计和核心功能实现。
系统架构与技术栈
SSM框架组合的优势
PetCare平台采用经典的SSM(Spring + Spring MVC + MyBatis)框架组合,构建了稳定可靠的企业级应用架构:
- Spring框架作为系统核心,通过IoC容器统一管理业务对象的生命周期和依赖关系,利用AOP切面编程实现事务管理、日志记录和安全控制等横切关注点的统一处理
- Spring MVC负责Web请求的分发和处理,采用清晰的分层架构:
- 控制器层:处理用户请求和响应
- 服务层:封装核心业务逻辑
- 数据访问层:负责数据库操作
- MyBatis作为持久层框架,通过灵活的XML配置和注解方式实现对象关系映射,既保留了SQL的灵活性,又简化了数据库操作
技术栈详情
- 后端框架:SSM(Spring 5.x + Spring MVC + MyBatis 3.x)
- 构建工具:Maven 3.6+
- 前端技术:HTML5 + CSS3 + JavaScript + jQuery
- 数据库:MySQL 5.7(支持事务处理和行级锁定)
- 服务器:Tomcat 8.5+
数据库设计亮点
公告信息表设计分析
CREATE TABLE `news` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`news_name` varchar(200) DEFAULT NULL COMMENT '公告名称',
`news_types` int(11) DEFAULT NULL COMMENT '公告类型',
`news_photo` varchar(200) DEFAULT NULL COMMENT '公告图片',
`insert_time` timestamp NULL DEFAULT NULL COMMENT '公告时间',
`news_content` text DEFAULT NULL COMMENT '公告详情',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='公告信息表'
设计亮点分析:
- 使用自增主键确保数据唯一性,避免主键冲突
news_types字段采用整型存储,便于建立字典表关联,提高查询效率news_content使用TEXT类型,支持大容量内容存储,满足富文本需求- 时间字段使用timestamp类型,自动处理时区转换,确保时间一致性
- 表引擎选择InnoDB,支持事务处理和行级锁定,保证数据ACID特性
物品挂失表设计优化
CREATE TABLE `wupinguashi` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`wupinguashi_name` varchar(200) DEFAULT NULL COMMENT '物品名称',
`shiwuzhaoling_types` int(11) DEFAULT NULL COMMENT '物品类型',
`status_types` int(11) DEFAULT NULL COMMENT '物品状态',
`wupinguashi_photo` varchar(200) DEFAULT NULL COMMENT '物品图片',
`wupinguashi_time` timestamp NULL DEFAULT NULL COMMENT '丢失时间',
`yonghu_id` int(11) DEFAULT NULL COMMENT '用户ID',
`wupinguashi_dizhi` varchar(200) DEFAULT NULL COMMENT '丢失地址',
`wupinguashi_content` text DEFAULT NULL COMMENT '详情描述',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='物品挂失表'
设计优化特点:
- 状态类型字段(
status_types)实现完整的工作流管理,支持物品从丢失、寻找中到找回的状态全生命周期追踪 - 用户ID字段(
yonghu_id)建立与用户表的外键关联,便于查询用户相关的所有挂失记录 - 地址字段长度经过精心设计,既满足存储需求又避免空间浪费
- 支持图片存储,便于用户上传物品照片,提高找回概率

核心功能实现
用户权限管理模块
系统采用基于角色的访问控制(RBAC)模型,通过Admin实体类实现精细化的管理员信息管理:
package com.entity;
import com.util.VeDate;
/**
* 管理员实体类
* 实现管理员信息的封装和业务逻辑处理
*/
public class Admin {
// 采用"前缀+时间戳"的ID生成策略,确保全局唯一性
private String adminid = "A" + VeDate.getStringId();
private String username;
private String password; // 存储时进行MD5加密处理
private String realname;
private String contact;
private String addtime;
public String getAdminid() {
return adminid;
}
public void setAdminid(String adminid) {
this.adminid = adminid;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
// 其他getter/setter方法...
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
// 密码加密处理
this.password = MD5Util.encode(password);
}
}
安全特性:
- 密码字段在存储时进行MD5加密处理,增强系统安全性
- ID生成策略确保每个管理员账号的唯一性
- 支持真实姓名和联系方式管理,便于内部管理

服务预约管理
预约功能通过服务订单表实现业务流程的完整追踪,包含服务选择、时间安排、状态更新等关键环节:
@Service
@Transactional
public class PetServiceOrderService {
@Autowired
private PetServiceOrderMapper orderMapper;
/**
* 创建服务预约订单
* 包含时间冲突检测和业务验证
*/
public boolean createOrder(PetServiceOrder order) {
// 验证时间冲突,避免同一时间段重复预约
if (checkTimeConflict(order.getServiceTime(), order.getPetServiceCenterId())) {
throw new BusinessException("该时间段已被预约,请选择其他时间");
}
// 设置订单初始状态为待确认
order.setStatus(OrderStatus.PENDING);
order.setCreateTime(new Date());
// 生成订单编号
order.setOrderNo(generateOrderNo());
return orderMapper.insert(order) > 0;
}
/**
* 检查时间冲突
* 查询同一服务中心同一时间段的预约记录
*/
private boolean checkTimeConflict(Date serviceTime, Integer centerId) {
return orderMapper.selectConflictOrders(serviceTime, centerId) > 0;
}
/**
* 生成唯一订单编号
*/
private String generateOrderNo() {
return "PS" + System.currentTimeMillis() +
String.format("%04d", new Random().nextInt(9999));
}
}
业务逻辑亮点:
- 完整的时间冲突检测机制,避免预约重叠
- 订单状态机管理,支持待确认、已确认、进行中、已完成等状态流转
- 唯一的订单编号生成策略,便于追踪和管理

公告信息管理
公告模块支持富文本编辑和图片上传,通过NewsController实现完整的CRUD操作:
@Controller
@RequestMapping("/news")
public class NewsController {
@Autowired
private NewsService newsService;
@Autowired
private FileService fileService;
/**
* 添加公告信息
* 支持图片上传和富文本内容
*/
@PostMapping("/add")
@ResponseBody
public Result addNews(@Valid News news,
@RequestParam(value = "file", required = false) MultipartFile file) {
try {
// 处理图片上传
if (file != null && !file.isEmpty()) {
String imagePath = fileService.uploadImage(file);
news.setNewsPhoto(imagePath);
}
// 设置发布时间
news.setInsertTime(new Date());
news.setCreateTime(new Date());
// 保存公告信息
newsService.addNews(news);
return Result.success("公告发布成功");
} catch (Exception e) {
logger.error("公告发布失败", e);
return Result.error("公告发布失败:" + e.getMessage());
}
}
/**
* 获取公告列表(分页查询)
*/
@GetMapping("/list")
public String getNewsList(Model model,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size) {
// 设置分页参数
PageHelper.startPage(page, size);
// 查询公告列表
List<News> newsList = newsService.getNewsList();
// 封装分页信息
PageInfo<News> pageInfo = new PageInfo<>(newsList);
model.addAttribute("newsList", newsList);
model.addAttribute("pageInfo", pageInfo);
return "news/list";
}
// 其他方法:更新公告、删除公告、查看详情等...
}
功能特性:
- 完整的图片上传和处理机制,支持多种图片格式
- 富文本编辑器集成,支持格式化内容编辑
- 分页查询优化,提高大数据量下的查询性能
- 完整的异常处理机制,保证系统稳定性
通过以上技术实现,PetCare智能服务平台为宠物医疗美容机构提供了完整的信息化管理解决方案,显著提升了服务效率和管理水平。