基于SpringBoot的在线药品销售与库存管理平台 - 源码深度解析

JavaJavaScriptHTMLCSSSpringboot框架MavenMySQL
2026-02-0713 浏览

文章摘要

本项目是一款基于SpringBoot框架构建的在线药品销售与库存管理平台,旨在解决传统药品零售行业依赖人工记录、信息孤岛严重以及运营效率低下的核心痛点。平台通过数字化的业务流程,将药品销售、库存追踪与数据报表深度整合,为药品经营者提供了一个统一、实时、精准的业务操作中枢,有效避免了因库存信息不透明导...

基于SpringBoot的在线药品销售与库存管理平台 - 源码深度解析

在传统药品零售行业,依赖人工记录、信息孤岛严重以及运营效率低下是长期存在的痛点。药品作为特殊商品,其管理涉及严格的批次追踪、有效期监控和库存精准控制,任何环节的失误都可能导致经济损失或安全隐患。为了解决这些问题,我们设计并实现了一个企业级药品流通管理平台,该平台通过数字化的业务流程,将药品销售、库存追踪与数据报表深度整合,为药品经营者提供了统一、实时、精准的业务操作中枢。

系统架构与技术栈

该平台基于SpringBoot框架构建,严格遵循约定优于配置原则,采用经典的MVC分层架构。后端技术栈包括Spring Boot 2.x、Spring Data JPA、Spring Security和MySQL数据库,前端采用HTML、CSS、JavaScript技术栈,构建了响应式的用户界面。

在架构设计上,控制层(Controller)负责接收前端请求并进行参数验证;业务逻辑层(Service)封装了复杂的药品销售逻辑与库存计算规则;数据持久层(Repository)基于Spring Data JPA与数据库进行交互,通过实体类映射实现对象关系映射。

// 数据源配置示例
spring.datasource.url=jdbc:mysql://www.csbishe.cn:3306/boot_drugscsys?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.username=boot_drugscsys
spring.datasource.password=boot_drugscsys

# MyBatis mapper配置
mybatis.mapper-locations=classpath:mappers/*.xml

平台集成了Spring Security框架进行权限控制,确保不同角色的员工(如店员与管理员)只能访问其权限范围内的功能模块。这种分层架构不仅保证了代码的可维护性,还通过模块化设计实现了功能的高度可扩展性。

数据库设计亮点

员工表(t_employees)设计分析

员工表的设计体现了企业级应用的数据完整性要求。表结构采用自增主键uid作为唯一标识,通过usernamephone字段确保账号唯一性。权限控制方面,permissions字段采用整型枚举值(0-老板,1-员工)实现角色分级。

CREATE TABLE `t_employees` (
  `uid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `username` varchar(20) NOT NULL COMMENT '用户名',
  `password` char(32) NOT NULL COMMENT '密码',
  `salt` char(36) DEFAULT NULL COMMENT '盐值',
  `gender` int(11) DEFAULT NULL COMMENT '性别,0-女性,1-男性',
  `age` int(4) DEFAULT NULL COMMENT '年龄',
  `phone` varchar(20) NOT NULL COMMENT '电话',
  `email` varchar(50) NOT NULL COMMENT '邮箱',
  `avatar` varchar(50) DEFAULT NULL COMMENT '头像',
  `cardBank` varchar(50) DEFAULT NULL COMMENT '开户行',
  `card` varchar(20) DEFAULT NULL COMMENT '银行账户',
  `is_delete` int(11) DEFAULT 0 COMMENT '是否删除,0-未删除,1-已删除',
  `permissions` int(4) DEFAULT NULL COMMENT '权限,0-老板,1-员工',
  `created_user` varchar(20) DEFAULT NULL COMMENT '创建执行人',
  `created_time` datetime DEFAULT NULL COMMENT '创建时间',
  `modified_user` varchar(20) DEFAULT NULL COMMENT '修改执行人',
  `modified_time` datetime DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='员工表'

安全设计方面,密码存储采用MD5加盐哈希机制,salt字段使用36位字符确保密码安全性。软删除机制通过is_delete字段实现,避免数据永久丢失。审计字段(created_timemodified_time等)完整记录了数据生命周期。

药品表(t_drug)业务逻辑设计

药品表的设计充分考虑药品管理的特殊性,包含完整的药品信息体系和库存管理机制。

CREATE TABLE `t_drug` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '药品id',
  `drugName` varchar(20) NOT NULL COMMENT '药品名',
  `barCode` varchar(15) NOT NULL COMMENT '条形码',
  `referred` varchar(32) NOT NULL COMMENT '简称',
  `specifications` varchar(20) NOT NULL COMMENT '规格',
  `unit` varchar(20) NOT NULL COMMENT '单位',
  `origin` varchar(150) NOT NULL COMMENT '产地',
  `approvalNumber` varchar(100) NOT NULL COMMENT '批准文号',
  `pleasedTo` float NOT NULL COMMENT '进货价',
  `salesPrice` float NOT NULL COMMENT '售货价',
  `inventory` int(11) NOT NULL COMMENT '库存',
  `totalSales` int(11) NOT NULL COMMENT '销售总量',
  `drugNote` varchar(500) NOT NULL COMMENT '药品备注',
  `category_id` int(11) NOT NULL COMMENT '药品类别id',
  `is_delete` int(11) DEFAULT 0 COMMENT '是否删除,0-未删除,1-已删除',
  `created_user` varchar(20) DEFAULT NULL COMMENT '创建执行人',
  `created_time` datetime DEFAULT NULL COMMENT '创建时间',
  `modified_user` varchar(20) DEFAULT NULL COMMENT '修改执行人',
  `modified_time` datetime DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
  KEY `F_category_drug` (`category_id`),
  CONSTRAINT `F_category_drug` FOREIGN KEY (`category_id`) REFERENCES `t_drug_category` (`categoryId`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci

关键设计亮点包括:

  • 条形码唯一性约束barCode字段确保药品标识的唯一性,支持扫码枪快速录入
  • 价格体系完善:分别记录进货价(pleasedTo)和销售价(salesPrice),便于利润计算
  • 库存实时追踪inventory字段与销售表联动,实现库存实时更新
  • 分类管理:通过外键关联药品类别表,支持分类统计和分析

销售表(t_drug_sales)事务一致性设计

销售表的设计重点保障交易数据的一致性和完整性。

CREATE TABLE `t_drug_sales` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '销售id',
  `documentNo` varchar(32) DEFAULT NULL COMMENT '销售单据号',
  `inventoryQuantity` int(11) DEFAULT NULL COMMENT '销售数量',
  `price` float DEFAULT NULL COMMENT '单价',
  `inventory` float DEFAULT NULL COMMENT '销售金额',
  `storageTime` datetime DEFAULT NULL COMMENT '销售时间',
  `drugName` varchar(20) NOT NULL COMMENT '药品编号',
  `customer_id` int(11) NOT NULL COMMENT '客户id',
  `is_delete` int(11) DEFAULT 0 COMMENT '是否删除,0-未删除,1-已删除',
  `created_user` varchar(20) DEFAULT NULL COMMENT '创建执行人',
  `created_time` datetime DEFAULT NULL COMMENT '创建时间',
  `modified_user` varchar(20) DEFAULT NULL COMMENT '修改执行人',
  `modified_time` datetime DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
  KEY `F_customer_sales` (`customer_id`),
  CONSTRAINT `F_customer_sales` FOREIGN KEY (`customer_id`) REFERENCES `t_customer` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='药品销售表'

该表通过外键约束确保客户信息的有效性,单据号(documentNo)设计支持复杂的销售业务流程。时间戳字段为销售数据分析提供基础,金额字段采用float类型满足精确计算需求。

核心功能实现

统一的异常处理机制

平台通过基类控制器实现了统一的异常处理机制,确保系统健壮性和用户体验一致性。

@ExceptionHandler(ServiceExcepti
本文关键词
SpringBoot药品销售库存管理源码解析Spring Security

上下篇

上一篇
没有更多文章
下一篇
没有更多文章