# supplier-management **Repository Path**: yzd_org/supplier-management ## Basic Information - **Project Name**: supplier-management - **Description**: 供应商管理系统:基于SpringBoot + Vue,采用前后端分离架构,采用Redis、MongoDB、RabbitMQ、Oracle19c等主流中间件,包括后台、管理端、小程序。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-23 - **Last Updated**: 2025-12-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 供应商管理系统 基于SpringBoot + Vue,前后端分离架构,单体应用部署,支持微信小程序端。 ## 🚀 项目特点 - **现代化技术栈**: SpringBoot 2.7 + Vue 3 + Element Plus - **多端支持**: Web端 + 微信小程序端 - **单体部署**: 前端构建后集成到SpringBoot静态资源,一键部署 - **完整的中间件集成**: Redis缓存、MongoDB日志存储、MinIO文件存储、RabbitMQ消息队列 - **统一的API设计**: RESTful API + 统一响应格式 + API前缀统一管理 - **完善的权限控制**: JWT认证 + 拦截器 - **异步日志处理**: 基于RabbitMQ的异步日志记录 - **API文档**: 集成Knife4j,自动生成API文档 ## 📋 功能模块 ### 🔐 用户管理 - 用户登录/登出 - 用户信息管理(CRUD) - JWT Token认证 - 密码加密存储 ### 🏪 供应商管理 - 供应商信息管理(CRUD) - 供应商Logo上传(MinIO存储) - 供应商状态管理 - 信用等级管理 ### 📊 日志管理 - 操作日志查看 - 登录日志查看 - 异步日志处理 - MongoDB存储 ### 📁 文件管理 - 文件上传/下载 - MinIO对象存储 - 图片格式验证 - 文件大小限制 ### 📱 小程序端 - 原生微信小程序界面 - 用户登录认证 - 供应商信息查看 - 统一API接口集成 - 响应式设计 ## 🛠 技术栈 ### 后端技术 - **框架**: SpringBoot 2.7.15 - **数据库**: Oracle 19.3.0.0 - **ORM**: MyBatis-Plus 3.5.3.1 - **缓存**: Redis - **文档存储**: MongoDB - **文件存储**: MinIO - **消息队列**: RabbitMQ - **API文档**: Knife4j 3.0.3 - **认证**: JWT - **工具库**: Hutool 5.8.16 ### 前端技术 - **框架**: Vue.js 3.3 - **UI库**: Element Plus 2.3 - **路由**: Vue Router 4.2 - **状态管理**: Pinia 2.1 - **HTTP客户端**: Axios 1.4 - **构建工具**: Vite 4.4 ## 📦 快速开始 ### 环境要求 - JDK 11+ (项目使用JDK 11) - Node.js 16+ - Oracle 19.3.0.0+ - Redis 6.0+ - MongoDB 4.4+ - MinIO - RabbitMQ 3.9+ - 微信开发者工具 (小程序开发) ### 数据库初始化 1. 创建Oracle数据库用户: ```sql CREATE USER supplier_demo IDENTIFIED BY supplier_demo; GRANT CONNECT, RESOURCE TO supplier_demo; GRANT CREATE VIEW TO supplier_demo; GRANT UNLIMITED TABLESPACE TO supplier_demo; ``` 2. 执行初始化脚本: ```bash sqlplus supplier_demo/supplier_demo@localhost:1521/xe @sql/init.sql ``` ### 中间件配置 1. **Redis配置** (默认配置) - 地址: localhost:6379 - 无密码 2. **MongoDB配置** - 连接URI: mongodb://localhost:27017/supplier_logs 3. **MinIO配置** - 访问地址: http://localhost:9000 - 用户名/密码: minioadmin/minioadmin 4. **RabbitMQ配置** - 访问地址: localhost:5672 - 用户名/密码: guest/guest ### 构建和运行 #### 方式一:开发模式 1. 启动后端: ```bash # 克隆项目 git clone https://gitcode.com/qq_35385687/supplier-management.git cd supplier-management # 启动SpringBoot应用 (端口:10001) ./mvnw spring-boot:run ``` 2. 启动前端: ```bash cd frontend npm install npm run dev ``` 3. 小程序开发: ```bash # 使用微信开发者工具打开 miniprogram 目录 # 配置AppID和后端API地址 # 编译并预览 ``` 访问: - 前端开发服务器: http://localhost:3000 - 后端API: http://localhost:10001 - API文档: http://localhost:10001/doc.html #### 方式二:生产模式 1. 构建前端: ```bash cd frontend npm install npm run build ``` 2. 启动SpringBoot: ```bash ./mvnw spring-boot:run ``` 访问: http://localhost:10001 ### 默认账户 - **管理员**: 用户名 `admin`, 密码 `123456` - **测试用户**: 用户名 `test`, 密码 `123456` ## 📁 项目结构 ``` supplier-management/ ├── src/main/java/com/demo/supplier/ │ ├── SupplierApplication.java # 启动类 │ ├── config/ # 配置类 │ ├── controller/ # 控制器 │ ├── service/ # 服务层 │ ├── mapper/ # 数据访问层 │ ├── entity/ # 实体类 │ ├── dto/ # 数据传输对象 │ ├── vo/ # 视图对象 │ ├── common/ # 公共组件 │ ├── exception/ # 异常处理 │ ├── interceptor/ # 拦截器 │ └── utils/ # 工具类 ├── src/main/resources/ │ ├── application.yml # 配置文件 │ └── static/ # 静态资源(前端构建产物) ├── frontend/ # Vue前端项目 │ ├── src/ │ │ ├── api/ # API接口 │ │ ├── components/ # 组件 │ │ ├── views/ # 页面 │ │ ├── router/ # 路由 │ │ ├── stores/ # 状态管理 │ │ └── utils/ # 工具函数 │ ├── package.json │ └── vite.config.js ├── miniprogram/ # 微信小程序项目 │ ├── pages/ # 小程序页面 │ │ ├── login/ # 登录页面 │ │ ├── dashboard/ # 首页 │ │ └── profile/ # 个人中心 │ ├── api/ # API接口封装 │ ├── utils/ # 工具函数 │ ├── app.js # 小程序入口 │ ├── app.json # 小程序配置 │ ├── app.wxss # 全局样式 │ └── project.config.json # 项目配置 ├── sql/ # 数据库脚本 ├── pom.xml # Maven配置 └── README.md ``` ## 🔧 配置说明 ### application.yml 主要配置 ```yaml # 服务器配置 server: port: 10001 # 数据库配置 spring: datasource: url: jdbc:oracle:thin:@yzd.server.com:1521:xe username: supplier_demo password: supplier_demo # Redis配置 redis: host: yzd.server.com port: 6379 password: 121665820qq database: 5 # MongoDB配置 data: mongodb: uri: mongodb://yzd.server.com:27017/supplier_logs username: mongo_d3bEj5 password: 121665820qq # RabbitMQ配置 rabbitmq: host: yzd.server.com port: 5672 username: rabbitmq password: 121665820qq virtual-host: /supplier_demo # MinIO配置 minio: endpoint: http://yzd.server.com:9000 access-key: minio secret-key: 121665820qq bucket-name: supplier-files # API统一前缀配置 api: prefix: /api/v1 version: v1 # JWT配置 jwt: secret: supplier-management-jwt-secret-key-2023 expire: 7200 # 2小时 ``` ## 📖 API文档 启动应用后访问: http://localhost:10001/doc.html 主要API端点: - **认证**: `/api/v1/auth/*` - **用户管理**: `/api/v1/users/*` - **供应商管理**: `/api/v1/suppliers/*` - **文件管理**: `/api/v1/files/*` - **日志查看**: `/api/v1/logs/*` ### API前缀统一管理 项目采用统一的API前缀管理方案: - 后端通过 `application.yml` 中的 `api.prefix` 配置 - 前端通过独立的 `api.js` 配置文件 - 小程序通过 `utils/config.js` 配置 - 拦截器路径配置引用统一前缀,避免硬编码 ## 🎯 核心特性 ### 统一响应格式 ```json { "code": 200, "message": "操作成功", "data": {}, "timestamp": "2023-12-01 10:00:00" } ``` ### 分页响应格式 ```json { "code": 200, "message": "查询成功", "data": { "records": [], "total": 100, "current": 1, "size": 10, "pages": 10 } } ``` ### JWT认证流程 1. 用户登录获取Token 2. Token存储在Redis中 3. 请求头携带Bearer Token 4. 拦截器验证Token有效性 ### 异步日志处理 1. 业务操作触发日志记录 2. 日志消息发送到RabbitMQ 3. 消费者异步处理日志 4. 日志存储到MongoDB ## 🚧 开发指南 ### 添加新的API接口 1. 在`entity`包中定义实体类 2. 在`dto`包中定义请求对象 3. 在`vo`包中定义响应对象 4. 在`mapper`包中定义数据访问接口 5. 在`service`包中实现业务逻辑 6. 在`controller`包中定义API接口 ### 前端页面开发 1. 在`src/api`中定义API调用方法 2. 在`src/views`中创建页面组件 3. 在`src/router`中配置路由 4. 使用Element Plus组件库 ### 小程序开发 1. **环境配置**: - 在微信开发者工具中打开 `miniprogram` 目录 - 配置 `project.config.json` 中的 AppID - 修改 `utils/config.js` 中的 `BASE_URL` 为后端地址 2. **页面开发**: - 使用原生小程序组件 - 遵循小程序页面结构 (.js, .wxml, .wxss, .json) - 利用 `utils/request.js` 进行API调用 3. **编译和调试**: - 基础库版本:3.5.0+ - 支持真机预览和调试 ## 🤝 贡献指南 1. Fork项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开Pull Request ## 📝 更新日志 ### v1.1.0 (2023-12-15) - ✨ 新增微信小程序端支持 - 🔧 API前缀统一管理 - 📱 小程序登录和主要功能页面 - 🏗️ 统一的API接口设计 - 🔧 服务器配置调整 (端口:10001) - 📦 前端构建集成优化 ### v1.0.0 (2023-12-01) - ✨ 初始版本发布 - 🎯 完成用户管理模块 - 🏪 完成供应商管理模块 - 📊 完成日志管理模块 - 📁 完成文件管理模块 - 🔐 完成JWT认证体系 - 📖 完成API文档集成 ## 📄 许可证 本项目采用 [MIT License](LICENSE) 许可证。 ## 🙏 致谢 - [SpringBoot](https://spring.io/projects/spring-boot) - [Vue.js](https://vuejs.org/) - [Element Plus](https://element-plus.org/) - [MyBatis-Plus](https://baomidou.com/) - [Knife4j](https://doc.xiaominfo.com/) --- 如有问题或建议,请提交Issue或联系开发团队。 ## 📞联系方式 如有任何问题或建议,请联系项目维护者。 - 个人网站:https://yzd1206.blog.csdn.net - QQ:121665820 ## 🛠️ 推荐工具 如果您正在使用 Hutool 工具库,强烈推荐搭配 `hutool-plus` 使用,这是一个基于 Hutool 的增强工具包,秉承"只做增强不做改变"的设计理念, 为简化开发、提高效率而生。完全兼容 Hutool 原有 API,提供了更多开箱即用的功能模块,特别是在 Spring 生态集成方面做了大量优化工作,让您能够更专注于业务逻辑实现。

🍬Hutool最佳搭档,只做增强不做改变,为简化开发、提高效率而生

### 📚简介 `hutool-plus`是基于[Hutool](https://hutool.cn/)的增强工具包,秉承"Hutool最佳搭档,只做增强不做改变"的设计理念,致力于进一步简化Java开发,提升开发效率。 `hutool-plus`在Hutool的基础上进行了功能增强和扩展,保留了Hutool原有的所有优秀特性,同时增加了更多实用的功能模块,特别是在Spring生态集成方面做了大量工作。 GitCode源码仓库地址:[https://gitcode.com/yzd1206/hutool-plus](https://gitcode.com/yzd1206/hutool-plus) Gitee源码仓库地址:[https://gitee.com/yzd_org/hutool-plus](https://gitee.com/yzd_org/hutool-plus) Maven仓库地址(网页1):[https://repo1.maven.org/maven2/io/github/yzd1206](https://repo1.maven.org/maven2/io/github/yzd1206) Maven仓库地址(网页2):[https://mvnrepository.com/artifact/io.github.yzd1206](https://mvnrepository.com/artifact/io.github.yzd1206) ## ⭐Star Hutool [![Stargazers over time](https://starchart.cc/chinabugotech/hutool.svg)](https://starchart.cc/chinabugotech/hutool)