项目概述
本项目是一个基于SpringBoot的仓库管理系统,旨在为企业提供高效、可靠的仓库管理解决方案。系统采用现代化的技术架构,实现了仓库管理的核心功能,包括库存管理、出入库管理、供应商管理、客户管理等模块。
目录
技术栈

后端技术
- SpringBoot 2.x:快速开发框架
- Spring MVC:Web层框架
- MyBatis-Plus:ORM框架,简化数据库操作
- MySQL 8.0:关系型数据库
- Redis:缓存数据库,提升系统性能
- Spring Security:安全认证框架
- JWT:JSON Web Token,用于用户认证
- Swagger:API文档生成工具
- Maven:项目构建工具
前端技术
- Vue.js 3.x:前端框架
- Element Plus:UI组件库
- Axios:HTTP客户端
- Vue Router:路由管理
- Vuex:状态管理
- Webpack:模块打包工具
开发工具
- IntelliJ IDEA:Java开发IDE
- Visual Studio Code:前端开发IDE
- Navicat:数据库管理工具
- Postman:API测试工具
- Git:版本控制工具
系统功能模块
1. 用户管理模块

2. 系统管理模块

3. 人资中心

4. 基础数据管理模块

5. 进货管理模块

6. 销售管理模块

7. 零售管理模块

8. 会员中心模块

9. 报表统计模块

10. 绩效管理模块

系统架构设计
整体架构
系统采用前后端分离的架构设计,前端通过RESTful API与后端进行数据交互。整体架构分为四层:
- 表现层:Vue.js前端应用,负责用户界面展示和交互
- 应用层:SpringBoot后端服务,处理业务逻辑
- 数据访问层:MyBatis-Plus,负责数据库操作
- 数据存储层:MySQL数据库和Redis缓存
数据库设计
系统数据库设计遵循第三范式,主要包含以下核心表:
- 用户表:存储系统用户信息
- 角色表:存储角色信息
- 权限表:存储权限信息
- 仓库表:存储仓库基本信息
- 商品表:存储商品信息
- 库存表:存储实时库存信息
- 入库单表:存储入库记录
- 出库单表:存储出库记录
- 供应商表:存储供应商信息
- 客户表:存储客户信息
快速开始
环境准备
- JDK 1.8+:确保已安装Java开发环境
- MySQL 8.0+:安装并启动MySQL数据库
- Redis 5.0+:安装并启动Redis服务
- Node.js 14+:前端开发环境
- Maven 3.6+:项目构建工具
后端部署步骤
1. 数据库初始化
-- 创建数据库
CREATE DATABASE IF NOT EXISTS warehouse_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 使用数据库
USE warehouse_db;
-- 执行项目中的SQL脚本初始化表结构
-- 脚本位置:/src/main/resources/sql/init.sql
2. 配置文件修改
修改 application.yml 配置文件:
spring:
datasource:
url: jdbc:mysql://localhost:3306/warehouse_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
redis:
host: localhost
port: 6379
password:
database: 0
timeout: 3000ms
# JWT配置
jwt:
secret: your_jwt_secret_key_here
expiration: 86400000 # 24小时
header: Authorization
3. 项目构建与运行
# 克隆项目
git clone https://gitee.com/ordinary-world3/warehouse.git
# 进入项目目录
cd warehouse
# 使用Maven构建项目
mvn clean package
# 运行项目
java -jar target/warehouse-1.0.0.jar
前端部署步骤
1. 安装依赖
# 进入前端目录
cd warehouse-frontend
# 安装依赖
npm install
2. 配置修改
修改 src/config/index.js 中的API地址:
export default {
baseURL: 'http://localhost:8080/api', // 后端API地址
timeout: 10000,
// 其他配置...
}
3. 运行前端
# 开发环境运行
npm run serve
# 生产环境构建
npm run build
API接口文档
系统使用Swagger生成API文档,启动后端服务后访问:
- Swagger UI: http://localhost:8080/swagger-ui.html
- API文档JSON: http://localhost:8080/v2/api-docs
主要API接口
认证相关接口
POST /api/auth/login- 用户登录POST /api/auth/register- 用户注册POST /api/auth/logout- 用户登出POST /api/auth/refresh- 刷新Token
用户管理接口
GET /api/users- 获取用户列表GET /api/users/{id}- 获取用户详情POST /api/users- 创建用户PUT /api/users/{id}- 更新用户DELETE /api/users/{id}- 删除用户
商品管理接口
GET /api/products- 获取商品列表GET /api/products/{id}- 获取商品详情POST /api/products- 创建商品PUT /api/products/{id}- 更新商品DELETE /api/products/{id}- 删除商品
库存管理接口
GET /api/inventories- 获取库存列表GET /api/inventories/{id}- 获取库存详情POST /api/inventories- 创建库存记录PUT /api/inventories/{id}- 更新库存POST /api/inventories/check- 库存盘点
出入库管理接口
GET /api/inbound-orders- 获取入库单列表GET /api/outbound-orders- 获取出库单列表POST /api/inbound-orders- 创建入库单POST /api/outbound-orders- 创建出库单PUT /api/inbound-orders/{id}/status- 更新入库单状态PUT /api/outbound-orders/{id}/status- 更新出库单状态
系统特性
1. 高性能设计
- 使用Redis缓存热点数据,减少数据库压力
- 数据库查询优化,建立合适的索引
- 异步处理耗时操作,提升响应速度
- 连接池配置优化,提高并发处理能力
2. 高安全性
- 基于Spring Security和JWT的认证授权
- 密码加密存储(BCrypt算法)
- SQL注入防护
- XSS攻击防护
- CSRF防护
- 接口访问权限控制
3. 高可用性
- 数据库主从复制配置
- Redis哨兵模式部署
- 服务监控和告警
- 日志记录和审计
- 数据备份和恢复机制
4. 易扩展性
- 模块化设计,便于功能扩展
- 微服务架构支持
- 前后端分离,便于独立部署
- 支持多租户架构
- 支持国际化
开发规范
代码规范
- 命名规范:遵循Java命名规范,使用驼峰命名法
- 注释规范:类、方法、复杂逻辑需要添加注释
- 日志规范:使用SLF4J记录日志,合理设置日志级别
- 异常处理:统一异常处理,避免直接抛出原始异常
数据库规范
- 表名规范:使用小写字母和下划线,如
user_info - 字段规范:使用小写字母和下划线,如
user_name - 索引规范:为查询频繁的字段建立索引
- 外键规范:合理使用外键约束
API设计规范
- RESTful风格:使用HTTP方法表示操作类型
- 版本控制:API路径包含版本号,如
/api/v1/users - 响应格式:统一响应格式,包含状态码、消息和数据
- 错误处理:统一的错误码和错误信息
部署指南
生产环境部署
1. 服务器要求
- 操作系统:CentOS 7+/Ubuntu 18.04+
- 内存:8GB以上
- 存储:100GB以上
- 网络:公网IP,开放80/443端口
2. 环境配置
# 安装Java
yum install java-1.8.0-openjdk-devel
# 安装MySQL
yum install mysql-server
# 安装Redis
yum install redis
# 安装Nginx
yum install nginx
# 安装Node.js
curl -sL https://rpm.nodesource.com/setup_14.x | bash -
yum install nodejs
3. 应用部署
# 创建应用目录
mkdir -p /opt/warehouse
cd /opt/warehouse
# 上传应用文件
# 后端jar包:warehouse-1.0.0.jar
# 前端dist目录:dist/
# 配置systemd服务
vim /etc/systemd/system/warehouse.service
[Unit]
Description=Warehouse Management System
After=network.target
[Service]
Type=simple
User=warehouse
WorkingDirectory=/opt/warehouse
ExecStart=/usr/bin/java -jar warehouse-1.0.0.jar
Restart=always
[Install]
WantedBy=multi-user.target
# 启动服务
systemctl daemon-reload
systemctl start warehouse
systemctl enable warehouse
4. Nginx配置
server {
listen 80;
server_name your-domain.com;
# 前端静态文件
location / {
root /opt/warehouse/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
# 后端API代理
location /api {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 静态资源缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
故障排除
常见问题
1. 数据库连接失败
问题描述:应用启动时提示数据库连接失败
解决方案:
- 检查MySQL服务是否启动:
systemctl status mysqld - 检查数据库连接配置:
application.yml中的数据库URL、用户名、密码 - 检查防火墙设置:
firewall-cmd --list-ports - 检查MySQL用户权限:
GRANT ALL PRIVILEGES ON warehouse_db.* TO 'username'@'%';
2. Redis连接失败
问题描述:应用启动时提示Redis连接失败
解决方案:
- 检查Redis服务是否启动:
systemctl status redis - 检查Redis配置:
redis.conf中的bind和protected-mode设置 - 检查防火墙设置:
firewall-cmd --add-port=6379/tcp
3. 前端无法访问后端API
问题描述:前端页面可以打开,但无法调用后端接口
解决方案:
- 检查Nginx配置中的proxy_pass地址
- 检查后端服务是否正常运行:
systemctl status warehouse - 检查跨域配置:后端CORS配置是否正确
- 检查网络连通性:
curl http://localhost:8080/api/health
4. 内存溢出
问题描述:应用运行一段时间后内存占用过高
解决方案:
- 调整JVM参数:
-Xms512m -Xmx1024m - 检查内存泄漏:使用jmap、jstat工具分析
- 优化数据库查询:避免全表扫描,使用分页查询
- 优化缓存策略:合理设置缓存过期时间
性能优化建议
1. 数据库优化
- 为频繁查询的字段建立索引
- 避免使用SELECT *,只查询需要的字段
- 使用分页查询,避免一次性查询大量数据
- 定期清理历史数据,保持表体积合理
- 使用数据库连接池,合理配置连接数
2. 缓存优化
- 合理设置缓存过期时间
- 使用多级缓存策略
- 缓存热点数据,如用户信息、商品信息
- 使用缓存预热机制
- 监控缓存命中率
3. 代码优化
- 避免在循环中执行数据库操作
- 使用批量操作代替单条操作
- 合理使用异步处理
- 优化算法复杂度
- 减少不必要的对象创建
4. 前端优化
- 使用CDN加速静态资源加载
- 压缩JavaScript和CSS文件
- 使用图片懒加载
- 减少HTTP请求数量
- 使用浏览器缓存
未来规划
短期计划(1-3个月)
- 增加移动端适配
- 集成第三方登录(微信、支付宝)
- 增加数据导入导出功能
- 优化报表生成性能
- 增加消息通知功能
中期计划(3-6个月)
- 支持微服务架构改造
- 增加AI智能预测功能
- 集成物联网设备管理
- 支持多语言国际化
- 增加工作流引擎
长期计划(6-12个月)
- 支持云原生部署
- 增加区块链溯源功能
- 集成大数据分析平台
- 支持AR/VR仓库管理
- 构建开发者生态
贡献指南
如何贡献
- Fork本仓库到自己的账户
- 创建功能分支:
git checkout -b feature/your-feature - 提交更改:
git commit -m 'Add some feature' - 推送到分支:
git push origin feature/your-feature - 提交Pull Request
代码提交规范
- feat:新功能
- fix:修复bug
- docs:文档更新
- style:代码格式调整
- refactor:代码重构
- test:测试相关
- chore:构建过程或辅助工具变动
问题反馈
- 使用GitHub Issues提交问题
- 提供详细的问题描述和复现步骤
- 附上相关日志和截图
- 标注问题优先级和影响范围
许可证
本项目采用MIT许可证,详情请参阅LICENSE文件。
联系方式
- 项目地址:https://gitee.com/ordinary-world3/warehouse
- 问题反馈:https://gitee.com/ordinary-world3/warehouse/issues
致谢
感谢所有为本项目做出贡献的开发者,特别感谢以下开源项目:
- Spring Boot
- MyBatis-Plus
- Vue.js
- Element Plus
- 以及其他所有依赖的开源项目
最后更新:2026年6月
版本:v1.0.0
作者:ordinary-world3

991

被折叠的 条评论
为什么被折叠?



