ERP-WMS-MES 一体化系统 — 项目详解 & 编译说明
一、项目总览
这是一个 Go 单体工程,同时构建出 3 个交付物:
- Go 版本:1.25.0(toolchain go1.25.12)
- 版本号:统一由 VERSION 文件管理(当前1.0.1)
- 模块名:erp-wms-system
二、项目目录结构
c:\cx\MWE\ ├── main.go ← Server 端入口(gin HTTP 服务) ├── tray.go ← Server 端系统托盘 + 窗口管理 ├── config_dialog.go ← Server 端配置对话框 ├── database_backup.go ← Server 端数据库备份 ├── install_wizard.go ← Server 端安装向导 ├── mysql_service.go ← MySQL 服务启停 ├── server_manager.go ← Server 端进程管理 ├── router/router.go ← Gin 路由注册(admin/basic/erp/wms/mes/print/report/dashboard) ├── VERSION ← 版本号(共用) ├── go.mod / go.sum ← Go 模块定义 │ ├── controller/ ← 服务端控制器(9 大分组 ~30 文件) │ ├── admin/ ← 管理员:登录/会话/2FA/IP过滤/消息/调度器/安全仪表盘/系统更新 │ ├── basic/ ← 基础数据:审批/附件/公司/打印模板/导入 │ ├── dashboard/ ← 仪表盘统计 │ ├── erp/ ← ERP:采购/销售/委外/合同/财务/退货 │ ├── mes/ ← MES:BOM/工艺/工单/质检/领料/设备 │ ├── print/ ← 打印:模板/预览/元素 │ ├── report/ ← 报表 │ └── wms/ ← WMS:仓库/库位/入库/出库/盘点/批次/库存/移库 │ ├── middleware/ ← Gin 中间件 │ ├── api_sign.go ← API 签名验证 │ ├── global_rate_limit.go ← 全局限流 │ ├── ip_filter.go ← IP 黑白名单 │ ├── session.go ← 会话验证 │ └── sensitive_verify.go ← 敏感词校验 │ ├── database/ ← GORM 模型 + DB 连接 ├── config/ ← 配置加载 + 字段加密 + config.yaml ├── cache/ ← Redis 缓存 + 本地缓存 ├── security/ ← AES/RSA 加密 + TOTP 两步验证 ├── util/ ← 工具集:响应/签名/分页/上传/GeoIP/密码策略/日志脱敏 ├── initializer/ ← 启动初始化:清理临时 + 种子数据 ├── scheduler/ ← 定时任务调度器 ├── logger/ ← 日志封装 ├── deploy/ ← 部署脚本 + init_db.sql ├── cmd/api_validate/ ← API 验证小工具 ├── testflow/ ← 业务流程测试(采购单) │ ├── desktop/ ← Windows 桌面客户端(Walk GUI) │ ├── main.go ← 客户端入口:登录 → showMainWindow() │ ├── mainwindow.go ← 主窗口:侧边栏 + 顶栏 + 状态栏 + TabWidget │ ├── tray.go ← 托盘 + 窗口配置 + 最大化异步处理 │ ├── common/ ← UI 基础库:theme/table/dialog/pagination/pinyin/search... │ ├── modules/ ← 业务 Tab 模块(~55 文件) │ │ ├── module.go ← 模块注册 + 导航节点 + 单例 DashboardModule │ │ ├── dashboard_page.go ← 工作台仪表盘 │ │ ├── admin/ basic/ erp/ finance/ mes/ wms/ ← 6 大业务分组 │ │ ├── ai_assistant.go approval_*.go twofa_settings.go ← 独立模块 │ ├── services/ ← HTTP Client 层(~45 文件):base.go 统一请求/签名/会话 │ ├── models/ ← 客户端轻量 DTO │ ├── config/buttons.json ← 按钮栏静态配置 │ ├── manifest.xml ← Windows 资源清单(DPI 感知) │ ├── rsrc.syso ← 编译进 exe 的 Win32 资源(图标/清单) │ └── *.json ← 运行时配置(列布局/登录/窗口位置) │ ├── miniprogram/ ← 微信小程序 │ ├── pages/ ← home/login/erp/wms/mes/mine/admin/basic │ └── utils/ ← api/request/cache/scan/nav/session/format/queue │ ├── bin/ ← 发布目录(server exe + desktop exe) ├── .bat 脚本 ← 运维脚本(见编译说明) └── rsrc.syso / manifest.xml / mi_icon.ico ← Server 端 Win32 资源
三、编译说明
3.1 前置要求
- Go 1.25+(go.mod 声明go 1.25.0)
- Windows 环境(Walk 依赖 Win32 API)
- MySQL 运行中(Server 启动时连接)
- Redis(可选,缓存层)
3.2 编译命令
编译桌面客户端
build_client.bat
等价于:
go build -o "desktop\erp-wms-desktop.exe" -ldflags "-H=windowsgui -X main.AppVersion=1.0.1" ./desktop
- -H=windowsgui:隐藏控制台窗口(纯 GUI 程序)
- -X main.AppVersion=1.0.1:从 VERSION 注入版本号
- 产物:desktop/erp-wms-desktop.exe→ 自动复制到bin/erp-wms-desktop.exe
编译服务端
build_server.bat
等价于:
go build -o "bin\erp-wms-server.exe" -ldflags "-s -w -H=windowsgui -X main.AppVersion=1.0.1" .
- -s -w:去除调试符号(减小体积)
- -H=windowsgui:以 GUI 模式运行(带托盘)
- 产物:bin/erp-wms-server.exe
- 编译后 VERSION 自动 +1(patch 位递增)
手动编译(PowerShell)
cd c:\cx\MWE $version = (Get-Content VERSION -Raw).Trim() # 客户端 go build -o "desktop\erp-wms-desktop.exe" -ldflags "-H=windowsgui -X main.AppVersion=$version" ./desktop # 服务端 go build -o "bin\erp-wms-server.exe" -ldflags "-s -w -H=windowsgui -X main.AppVersion=$version" .
3.3 运行 & 部署
3.4 默认登录
- 账号:admin
- 密码:admin123
3.5 微信小程序
使用微信开发者工具打开miniprogram/目录,修改 miniprogram/config/index.js 中的 API 地址后上传。
MP3 source for DJ's music.
Full access to music library [url=https://sceneflac.blogspot.com]download FLAC[/url] download FLAC[/url]
Download music from a private FTP, music videos, labels. [url=https://www.0daymusic.org] NEW music[/url]
Dance/House/Techno/Trance/Rap/Rock/Metal/Folk/Latin/Pop/Hardstyle
Best regards
Donald