# flashwarehouse **Repository Path**: exrock/flashwarehouse ## Basic Information - **Project Name**: flashwarehouse - **Description**: 闪仓开源仓库,由于维护问题使用了新的仓库地址 - **Primary Language**: Unknown - **License**: MPL-2.0 - **Default Branch**: master - **Homepage**: https://flashwarehouse.cn - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-08-29 - **Last Updated**: 2026-08-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

FlashWarehouse 闪仓 Logo

FlashWarehouse(闪仓)

免费、开源、支持 PC 与移动端协同的进销存 / 仓库管理系统

项目官网 · 在线使用 · 使用指南 · 项目 Wiki · 问题反馈

MPL-2.0 License Java 8 Spring Boot 2.7.15 Vue 3 uni-app Mobile

> **公开仓库说明** > > 本仓库是经过净化后发布的开源快照,包含 PC 管理端、移动端和 Java 后端,不包含原私有仓库的 Git 历史、生产数据库、用户数据、运行日志、部署口令、签名文件或第三方平台密钥。它适合学习、二次开发和自托管;用于正式生产前,请自行完成安全审计、容量评估、备份与灾难恢复方案。 ## 目录 - [项目简介](#项目简介) - [核心能力](#核心能力) - [技术栈](#技术栈) - [仓库结构](#仓库结构) - [快速开始](#快速开始) - [配置说明](#配置说明) - [构建与测试](#构建与测试) - [生产部署提示](#生产部署提示) - [安全说明](#安全说明) - [常见问题](#常见问题) - [项目 Wiki](#项目-wiki) - [更多文档](#更多文档) - [参与贡献](#参与贡献) - [支持项目](#支持项目) - [开源许可](#开源许可) ## 项目简介 FlashWarehouse 面向门店、仓库、批发零售与中小团队,将商品、采购、销售、库存、合作伙伴、员工权限、报表和打印等日常业务集中到一套系统中。 三个客户端共享同一套后端数据: ```text PC 管理端(Vue 3) ───────┐ ├── Spring Boot API ── MySQL 移动端 / H5(uni-app) ───┘ │ └── 可选 AI / 支付 / 企业微信等集成 ``` 你可以直接访问 [项目官网](https://flashwarehouse.cn) 了解产品,也可以进入 [在线系统](https://jhsc.top) 体验公开服务。自行部署时,请使用自己的域名、数据库、RSA 密钥和第三方服务凭据。 ## 核心能力 | 领域 | 主要能力 | | --- | --- | | 商品 | 商品档案、分类、单位、条码、自定义字段、图片与价格信息 | | 采购 | 询价、采购订单、采购入库、退货、换货与采购统计 | | 销售 | 报价、销售订单、销售出库、退货、换货与销售报表 | | 库存 | 多仓库、实时库存、其他出入库、调拨、盘点与库存预警 | | 往来与财务 | 客户 / 供应商、开票信息、财务科目和业务统计 | | 员工与权限 | 员工管理、角色权限和业务范围控制 | | 打印 | 单据打印、条码 / 二维码和自定义打印模板 | | AI 助手 | 支持用户配置兼容接口、模型选择、业务问答与辅助操作 | | 多端协同 | PC 管理端、移动 H5 与 app-plus 资源共享同一套业务数据 | 部分外部能力(AI、支付宝、企业微信、淘宝等)是可选集成,只有配置对应服务后才会启用。 ## 技术栈 | 部分 | 技术 | | --- | --- | | PC 管理端 | Vue 3、Vue Router、TDesign Vue Next、Axios、ECharts、Vue CLI 5 | | 移动端 | uni-app、Vue 3、Vite 5、uni-ui、uView、ECharts | | 后端 | Java 8、Spring Boot 2.7.15、MyBatis-Plus、Maven | | 数据库 | MySQL 8.0+ | | 数据传输 | RSA 2048、AES-GCM 混合加密能力 | | 接口文档 | OpenAPI / Swagger UI | | 许可 | Mozilla Public License 2.0 | ## 仓库结构 ```text flashwarehouse/ ├── frontend/ # PC 管理端 │ ├── src/ # Vue 页面、组件、路由和请求层 │ ├── public/ # 静态资源 │ ├── patches/ # patch-package 补丁 │ └── .env.example # 公开的前端配置模板 ├── mobile/ # uni-app 移动端 / H5 │ ├── pages/ # 页面 │ ├── utils/ # API、权限、更新和打印工具 │ ├── scripts/ # Android 发布辅助脚本 │ ├── tests/ # 移动端 Node 测试 │ └── .env.example # 公开的移动端配置模板 ├── backend/ # Spring Boot Maven 多模块后端 │ ├── sys/ # 应用启动模块 │ ├── common/ # 公共配置、加密、拦截器和工具 │ ├── warehouse_manager/ # 仓库、采购、销售和库存 │ ├── goods_manager/ # 商品管理 │ ├── finance/ # 财务与合作伙伴 │ ├── staff_manager/ # 员工管理 │ ├── user/ # 用户与权限 │ ├── ai/ # AI 助手 │ ├── taobao/ # 可选电商集成 │ ├── tests/ # API 集成测试 │ ├── create_db.sql # 全新本地数据库初始化脚本 │ └── .env.example # 后端环境变量清单 ├── docs/assets/ # README 资源 └── LICENSE # MPL-2.0 ``` ## 快速开始 ### 1. 环境要求 | 工具 | 建议版本 | 用途 | | --- | --- | --- | | JDK | 8 | 后端编译与运行 | | Maven | 3.8+ | 后端依赖与构建 | | MySQL | 8.0+ | 业务数据库 | | Node.js | 20 LTS(最低 18) | PC 与移动端构建 | | npm | 随 Node.js 安装 | 前端依赖管理 | | OpenSSL | 1.1.1+ / 3.x | 生成独立 RSA 密钥 | | HBuilderX / DCloud 离线环境 | 可选 | 生成 Android / iOS 原生安装包 | ### 2. 克隆仓库 ```bash git clone https://gitee.com/zsjfj/flashwarehouse.git cd flashwarehouse ``` ### 3. 初始化本地数据库 > **危险:** `backend/create_db.sql` 第一条操作是 `DROP DATABASE IF EXISTS wms`。它只适合全新的本地开发数据库,绝对不要对生产库或包含重要数据的实例执行。 ```bash mysql -u root -p < backend/create_db.sql mysql -u root -p wms < backend/migration_ai_conversation.sql ``` 初始化脚本创建的数据库名是 `wms`。后端启动时必须把 `WMS_DB_URL` 指向 `wms`,不要依赖示例文件中的默认库名。建议为应用创建权限受限的独立 MySQL 用户,而不是长期使用 `root`。 `backend/migration_ai_business.sql` 用于旧数据库升级;全新数据库已经包含对应字段和表,不需要重复执行。 ### 4. 生成自己的 RSA 密钥 不要使用网上复制的密钥,也不要把私钥放进仓库。以下命令会在仓库外创建一套 2048 位密钥: ```bash mkdir -p ../flashwarehouse-secrets openssl genpkey -algorithm RSA \ -pkeyopt rsa_keygen_bits:2048 \ -out ../flashwarehouse-secrets/wms-private.pem openssl pkey \ -in ../flashwarehouse-secrets/wms-private.pem \ -pubout \ -out ../flashwarehouse-secrets/wms-public.pem ``` - 私钥只提供给后端环境变量 `WMS_RSA_PRIVATE_KEY`。 - 公钥提供给 PC 构建变量 `VUE_APP_RSA_PUBLIC_KEY`。 - 仓库已忽略常见密钥文件扩展名,但仍应使用系统密钥管理服务保存生产私钥。 ### 5. 启动后端 在仓库根目录设置本地环境变量,然后构建: ```bash export WMS_DB_URL='jdbc:mysql://127.0.0.1:3306/wms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai' export WMS_DB_USERNAME='wms' export WMS_DB_PASSWORD='replace-with-your-local-password' export WMS_RSA_PRIVATE_KEY="$(cat ../flashwarehouse-secrets/wms-private.pem)" cd backend mvn clean package -DskipTests java -jar sys/target/sys-0.0.1-SNAPSHOT.jar ``` 默认 API 地址为 `http://localhost:10086`。启动后可以访问: - Swagger UI:`http://localhost:10086/swagger-ui.html` - OpenAPI JSON:`http://localhost:10086/v3/api-docs` `backend/.env.example` 是变量清单,不会被 Spring Boot 自动加载。请通过终端、IDE Run Configuration、容器编排或密钥管理服务注入变量。 ### 6. 启动 PC 管理端 新开一个终端: ```bash cd flashwarehouse/frontend cp .env.example .env.local npm ci npm run serve ``` 编辑 `frontend/.env.local`,填入与后端私钥配套的公钥: ```dotenv VUE_APP_RSA_PUBLIC_KEY=your-public-key ``` 该变量支持原始 Base64 SPKI,或使用字面量 `\n` 表示换行的 PEM。不要在前端环境变量里放置任何私钥、AI API Key、数据库密码或访问令牌,因为 `VUE_APP_*` 会进入浏览器构建产物。 PC 开发服务默认运行在 `http://localhost:8081`,本地代理会把 `/flash_warehouse` 请求转发至 `http://localhost:10086`。 ### 7. 启动移动端 H5 再开一个终端: ```bash cd flashwarehouse/mobile cp .env.example .env.local npm ci npm run dev:h5 ``` 移动 H5 默认运行在 `http://localhost:5173`。示例配置使用相对路径 `/flash_warehouse`,Vite 开发代理会转发至本地后端。 当前快照的 `mobile/vite.config.js` 尚未去除 `/flash_warehouse` 前缀;如果 H5 请求全部返回 404,本地可把 `VITE_WMS_API_BASE_URL` 改为 `http://127.0.0.1:10086` 并确认 CORS,或按 [移动端 Wiki](docs/wiki/mobile.md#h5-接口全部返回-404) 为代理增加 rewrite。生产环境仍应使用 HTTPS 网关地址。 `npm run build:app` 只生成 app-plus 资源,不会生成可安装、可签名的 APK / IPA。原生安装包仍需要 HBuilderX 或 DCloud 离线打包环境,以及你自己的应用标识、证书和签名配置。 ## 配置说明 ### 后端核心变量 完整清单见 [`backend/.env.example`](backend/.env.example)。 | 变量 | 是否必需 | 说明 | | --- | --- | --- | | `SERVER_PORT` | 否 | API 端口,默认 `10086` | | `WMS_DB_URL` | 是 | MySQL JDBC 地址;全新初始化应指向 `wms` | | `WMS_DB_USERNAME` | 是 | MySQL 用户名 | | `WMS_DB_PASSWORD` | 是 | MySQL 密码 | | `WMS_RSA_PRIVATE_KEY` | 是 | PKCS#8 私钥,支持 Base64 或 PEM | | `WMS_CORS_ALLOWED_ORIGINS` | 生产必配 | 允许访问 API 的精确前端来源 | | `WMS_CORS_ALLOWED_ORIGIN_PATTERNS` | 否 | 需要通配规则时使用,生产环境应尽量收紧 | | `WMS_LOG_PATH` | 否 | 日志目录,默认 `./logs` | | `WMS_GOODS_IMAGE_DIR` | 否 | 商品图片目录,默认 `./data/goods` | | `WMS_AI_UPLOAD_DIR` | 否 | AI 上传文件目录,默认 `./data/ai_uploads` | | `DASHSCOPE_*` | 否 | 默认 AI 提供商;用户也可在可信实例的 UI 中配置兼容接口 | | `WECHAT_*` | 否 | 企业微信集成 | | `ALIPAY_*` | 否 | 支付宝集成;未配置时不要启用相关功能 | | `TAOBAO_APPLICATION_KEY` | 否 | 可选电商集成 | ### 客户端变量 | 文件 / 变量 | 说明 | | --- | --- | | `frontend/.env.local` / `VUE_APP_RSA_PUBLIC_KEY` | 后端私钥对应的公开 RSA 公钥 | | `frontend/.env.local` / `VUE_APP_STORAGE_SEED` | 可选的客户端混淆种子;它不是秘密 | | `mobile/.env.local` / `VITE_WMS_API_BASE_URL` | 移动端 API 公共地址或本地代理路径 | | `mobile/.env.local` / `VITE_WMS_UPDATE_API_URL` | 客户端更新元数据的公共接口 | 所有 `VUE_APP_*` 和 `VITE_*` 变量都会被打入客户端包,只能存放公开信息。 ## 构建与测试 ### PC 管理端 ```bash cd frontend npm run lint npm run build ``` ### 移动端 ```bash cd mobile npm run test:update npm run build:h5 npm run build:app ``` ### 后端 ```bash cd backend mvn clean package -DskipTests ``` 后端 API 集成测试说明位于 [`backend/tests/README.md`](backend/tests/README.md)。这些测试会创建、更新和删除业务数据,但不会删除注册的测试用户;如果设置了 `AI_API_KEY`,Key 会保存到该测试用户,测试中断时 `/tmp/wms-test-state.json` 还可能保留临时账号信息。只能对可销毁的隔离数据库运行,使用专用短期 Key,并在测试后清库、删除状态文件和轮换 Key。在完全理解范围前,不要设置 `ALLOW_NONLOCAL_E2E=true`,更不要对生产环境运行。 ## 生产部署提示 本仓库不包含一键上线到任意服务器的通用脚本。正式部署至少应完成: 1. 使用 HTTPS,并通过 Nginx、Caddy 或网关把 `/flash_warehouse` 转发到后端。 2. 只允许实际使用的前端域名通过 CORS,禁止无约束通配。 3. 通过平台 Secret、容器 Secret 或系统服务环境注入密码和私钥。 4. 为 MySQL 使用最小权限账号,启用定期备份并实际演练恢复。 5. 将 `data/`、上传目录和日志目录放到持久卷,设置容量与权限限制。 6. 使用自己的 RSA 密钥、域名、应用 ID、移动端签名和第三方平台配置。 7. 关闭或限制公网 Swagger,增加访问控制、限流、监控与告警。 8. 在切换生产流量前完成接口、权限、库存变更、支付回调与回滚测试。 ## 安全说明 - 不要提交 `.env`、生产配置、数据库备份、私钥、Token、API Key、支付密钥、签名证书、运行日志或用户上传文件。 - AI API Key 不应写入 PC / 移动端构建变量。仅在你自己部署或明确可信的实例中通过设置界面配置。 - 已经公开过的凭据不能靠删除 Git 文件恢复安全,必须在对应平台轮换或吊销。 - 不要把真实密钥、个人信息或生产日志粘贴到公开 Issue。 - 仓库中的初始化 SQL 和集成测试具有数据修改能力,运行前务必确认目标数据库和 API 地址。 - 公开快照不代表已满足你的行业合规要求;生产使用者需要自行完成依赖、权限、数据保护和合规审计。 如发现安全问题,请优先通过 [官网意见反馈](https://flashwarehouse.cn/zh/contact) 联系维护者,不要先公开利用细节或真实数据。 ## 常见问题 ### 是否永久免费? 源代码按 MPL-2.0 开源,可依许可自行使用、修改和部署。服务器、域名、短信、AI 模型、支付通道及其他第三方服务产生的费用由部署者自行承担。 ### 仓库里有默认账号或生产数据吗? 没有。公开快照不包含生产账号和用户数据,请在自己的实例中注册并初始化业务数据。 ### 为什么前端启动后无法请求后端? 依次检查:后端是否监听 `10086`、数据库是否为 `wms`、RSA 公私钥是否配套、前端代理是否生效,以及 CORS 是否允许当前来源。 ### 为什么没有可直接安装的 APK? 公开仓库提供移动端源码和 app-plus 构建资源,不提供维护者的生产签名。请使用自己的应用标识和签名生成安装包。 ### 可以用于二次开发和商业项目吗? 可以,但必须遵守 MPL-2.0。分发修改过的 MPL 覆盖文件时,需要按许可证要求提供相应源代码和许可声明。 ## 项目 Wiki 使用与部署过程中遇到问题时,请先查看 [Gitee 在线 Wiki](https://gitee.com/zsjfj/flashwarehouse/wikis/Home)。Wiki 的版本化源文件同时保存在 [`docs/wiki/`](docs/wiki/Home.md),按症状整理了数据库、RSA、API/CORS、AI API Key、移动端打包、打印上传、生产部署与安全等排查步骤。 - [故障排查总览](docs/wiki/troubleshooting.md) - [数据库与升级](docs/wiki/database.md) - [PC 前端与 API](docs/wiki/frontend-api.md) - [AI 助手](docs/wiki/ai-assistant.md) - [移动端与打包](docs/wiki/mobile.md) - [打印与文件](docs/wiki/printing-files.md) - [API 集成测试](docs/wiki/integration-tests.md) - [生产部署与安全](docs/wiki/production-security.md) ## 更多文档 > 根 README 与 Wiki 是当前快照的准确信息源。部分子目录 README 保留了历史设计说明,其中的旧端口、部署脚本或配置项可能已经过时;执行前请以实际源码配置和本 Wiki 为准。 - [后端历史设计说明](backend/README.md) - [PC 管理端历史设计说明](frontend/README.md) - [移动端说明](mobile/readme.md) - [Android CI/CD](mobile/docs/ANDROID_CI_CD.md) - [移动端打印模板指南](mobile/PRINT_TEMPLATE_GUIDE.md) - [移动端样式指南](mobile/STYLE_GUIDE.md) - [后端 API 集成测试](backend/tests/README.md) - [后端架构时序图](backend/docs/WMS_Backend_Sequence_Diagrams.drawio) - [PC 架构图](frontend/docs/WMS_PC_Architecture.drawio) - [移动端架构图](mobile/docs/WMS_Mobile_Architecture.drawio) `.drawio` 文件可以使用 [diagrams.net](https://app.diagrams.net/) 或 VS Code 的 Draw.io 插件打开。 ## 参与贡献 欢迎提交 Issue、文档修正和代码改进: 1. Fork 本仓库并从 `master` 创建功能分支。 2. 保持改动范围清晰,不提交生成目录、密钥或个人数据。 3. 根据改动范围运行对应的构建和测试。 4. 在提交说明中写清问题、解决方式、验证结果和兼容性影响。 5. 通过 Gitee Pull Request 提交,并关联相关 Issue。 适合优先贡献的方向包括:部署文档、自动化测试、无障碍体验、国际化、移动端适配、依赖升级和安全加固。 ## 支持项目 如果 FlashWarehouse 对你有帮助,欢迎通过支付宝自愿打赏,支持项目继续维护。打赏完全自愿,不构成购买、投资或服务承诺。

支付宝打赏支持 FlashWarehouse

也可以通过 Star、Issue、文档修正或代码贡献支持项目。 ## 开源许可 本仓库采用 [Mozilla Public License 2.0](LICENSE)(MPL-2.0)。使用、修改或分发前,请阅读许可证全文并遵守相应义务。