1. 项目概述:药店管理系统的全栈实践
药店管理系统作为医药零售行业的核心业务支撑平台,需要同时满足药品进销存管理、会员服务、处方审核等多维度需求。这个基于SpringBoot+Vue的全栈项目,采用前后端分离架构实现了药品从采购到销售的全生命周期管理。我在实际开发中发现,这类系统既要符合药品监管的合规性要求,又要兼顾零售业务的高效性,技术选型上需要特别注重数据一致性和操作留痕。
整套系统包含供应商管理、药品入库、库存预警、销售统计、会员积分等12个核心模块,采用Java+MySQL+MyBatis作为后端技术栈,配合Vue.js构建响应式前端界面。特别值得一提的是,我们针对药品批号管理和效期预警开发了专用算法,这是区别于普通零售系统的关键设计点。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构解析
2.1 后端技术栈设计
SpringBoot 2.7作为基础框架,其自动配置特性大幅简化了传统SSM框架的XML配置工作。在数据库交互层,我们选择了MyBatis而非JPA,主要考虑以下因素:
- 需要精细控制复杂药品查询的SQL性能
- 药品批次管理涉及多表关联查询
- 历史数据归档需要定制化存储过程
数据库采用MySQL 8.0,关键配置参数如下:
sql复制# 药品主表结构示例
CREATE TABLE `medicine` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '药品ID',
`batch_no` varchar(32) NOT NULL COMMENT '生产批号',
`barcode` varchar(20) NOT NULL COMMENT '国际条形码',
`expire_date` date NOT NULL COMMENT '有效期至',
`stock_alert` int DEFAULT '50' COMMENT '库存预警值',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_batch` (`batch_no`),
KEY `idx_expire` (`expire_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
2.2 前端技术选型
Vue 3.x组合式API配合TypeScript,大幅提升了前端代码的可维护性。针对药店业务特点,我们重点优化了以下交互场景:
- 药品快速检索:结合拼音首字母和模糊查询
- 处方药销售流程:分步骤表单验证
- 库存看板:ECharts实时可视化
javascript复制// 药品检索组件核心逻辑
const searchMedicines = debounce(async (keyword) => {
if (keyword.length < 2) return
const res = await api.searchMedicines({
keyword,
includeOOS: false /
