From 2544c6141dfb23527bee5c9234835cd7b2dfa348 Mon Sep 17 00:00:00 2001 From: SunYF <123@hard_man.com> Date: Mon, 7 Sep 2026 15:55:30 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=90=88=E5=B9=B6=E5=8E=9F?= =?UTF-8?q?=E5=BA=93=E6=88=BF=E5=AE=A2=E6=88=B7=E7=AB=AF=E5=88=B0=E4=B8=BB?= =?UTF-8?q?WMS=E6=9C=8D=E5=8A=A1=EF=BC=8C=E9=80=80=E5=BD=B98891=E7=AB=AF?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 将bj_power_wms_client的前端代码、配置及网关逻辑全部迁移到bj_power_wms主项目 2. 删除原库房客户端相关的所有文件与配置 3. 更新README与部署文档,说明合并后的服务架构 4. 新增Web配置项支持自动打开浏览器开关,统一服务端口为8890 --- bj_power_wms/README.md | 5 +- bj_power_wms/bj_power_wms.go | 80 +++++- bj_power_wms/etc/bj_power_wms-api-verify.yaml | 5 +- bj_power_wms/etc/bj_power_wms-api.yaml | 4 + .../frontend/.gitignore | 0 .../frontend/index.html | 0 .../frontend/package-lock.json | 0 .../frontend/package.json | 0 .../frontend/src/App.vue | 0 .../src/components/MaterialSelect.vue | 0 .../frontend/src/components/PageHelp.vue | 0 .../frontend/src/help.js | 0 .../frontend/src/layouts/MainLayout.vue | 0 .../frontend/src/main.js | 0 .../frontend/src/pages/Agv.vue | 0 .../frontend/src/pages/BaseData.vue | 0 .../frontend/src/pages/ChangePassword.vue | 0 .../frontend/src/pages/Dashboard.vue | 0 .../frontend/src/pages/Display.vue | 0 .../frontend/src/pages/EventLog.vue | 0 .../frontend/src/pages/Inbound.vue | 0 .../frontend/src/pages/Inspection.vue | 0 .../frontend/src/pages/Inventory.vue | 0 .../frontend/src/pages/Ledger.vue | 0 .../frontend/src/pages/Login.vue | 0 .../frontend/src/pages/Outbound.vue | 0 .../frontend/src/pages/RoleManage.vue | 0 .../frontend/src/pages/Semi.vue | 0 .../frontend/src/pages/Stocktake.vue | 0 .../frontend/src/pages/UserManage.vue | 0 .../frontend/src/router/index.js | 0 .../frontend/src/utils/auth.js | 0 .../frontend/src/utils/export.js | 0 .../frontend/src/utils/format.js | 0 .../frontend/src/utils/perm.js | 0 .../frontend/src/utils/request.js | 0 .../frontend/vite.config.js | 0 bj_power_wms/internal/config/config.go | 6 + .../web/static/index.html | 0 bj_power_wms_client/.gitignore | 8 - .../etc/bj_power_wms_client.yaml | 21 -- bj_power_wms_client/go.mod | 48 ---- bj_power_wms_client/go.sum | 227 ------------------ bj_power_wms_client/internal/config/config.go | 16 -- bj_power_wms_client/internal/proxy/proxy.go | 31 --- bj_power_wms_client/main.go | 105 -------- 技术约束.md | 3 +- 部署手册.md | 27 +-- 项目说明.md | 17 +- 49 files changed, 115 insertions(+), 488 deletions(-) rename {bj_power_wms_client => bj_power_wms}/frontend/.gitignore (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/index.html (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/package-lock.json (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/package.json (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/App.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/components/MaterialSelect.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/components/PageHelp.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/help.js (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/layouts/MainLayout.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/main.js (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/Agv.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/BaseData.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/ChangePassword.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/Dashboard.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/Display.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/EventLog.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/Inbound.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/Inspection.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/Inventory.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/Ledger.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/Login.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/Outbound.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/RoleManage.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/Semi.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/Stocktake.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/pages/UserManage.vue (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/router/index.js (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/utils/auth.js (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/utils/export.js (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/utils/format.js (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/utils/perm.js (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/src/utils/request.js (100%) rename {bj_power_wms_client => bj_power_wms}/frontend/vite.config.js (100%) rename {bj_power_wms_client => bj_power_wms}/web/static/index.html (100%) delete mode 100644 bj_power_wms_client/.gitignore delete mode 100644 bj_power_wms_client/etc/bj_power_wms_client.yaml delete mode 100644 bj_power_wms_client/go.mod delete mode 100644 bj_power_wms_client/go.sum delete mode 100644 bj_power_wms_client/internal/config/config.go delete mode 100644 bj_power_wms_client/internal/proxy/proxy.go delete mode 100644 bj_power_wms_client/main.go diff --git a/bj_power_wms/README.md b/bj_power_wms/README.md index 7313b83..8380646 100644 --- a/bj_power_wms/README.md +++ b/bj_power_wms/README.md @@ -1,6 +1,7 @@ # bj_power_wms(项目 C)— WMS 仓库系统 -> 纯 Go 后端 API 服务,不包含前端。前端由项目 E(bj_power_wms_client)提供。 +> Go 后端 + 内嵌 Vue3 前端(`go:embed web/static`),一个服务(8890)同时提供页面与 API。 +> 2026-09-07 起原库房客户端(bj_power_wms_client, 8891)已合并进本项目并退役:扫码枪为 USB 键盘口(HID)设备,浏览器页面直接读取,无需独立客户端程序。 ## 技术栈 @@ -26,6 +27,8 @@ bj_power_wms/ │ ├── package_box.go # 包装箱 ↔ SN │ ├── order_material_ledger.go # 工单物料台账(出库强约束) │ └── user.go # 用户 +├── frontend/ # Vue3 前端源码(npm run build → web/static) +├── web/static/ # 前端构建产物(go:embed 内嵌,勿手改) ├── ent/ # Ent 生成代码(勿手改) ├── internal/ │ ├── config/ # 配置结构 diff --git a/bj_power_wms/bj_power_wms.go b/bj_power_wms/bj_power_wms.go index a27171f..e72f347 100644 --- a/bj_power_wms/bj_power_wms.go +++ b/bj_power_wms/bj_power_wms.go @@ -1,8 +1,16 @@ package main import ( + "embed" "flag" "fmt" + "io/fs" + "net/http" + "os/exec" + "path" + "runtime" + "strings" + "time" "bj_power_wms/internal/config" "bj_power_wms/internal/handler" @@ -14,8 +22,53 @@ import ( "github.com/zeromicro/go-zero/rest" ) +// 前端静态资源(Vue 构建产物,由 frontend/ npm run build 输出到 web/static)。 +// 原由 bj_power_wms_client(8891) 托管并反代 API,2026-09-07 合并进主服务: +// 一个 exe、一个端口(8890)同时提供页面与 API。 +// +//go:embed all:web/static +var webFS embed.FS + var configFile = flag.String("f", "etc/bj_power_wms-api.yaml", "the config file") +// newStaticHandler 嵌入式静态文件:命中则直接返回;未命中的非 /api 路径 +// 回退到 index.html(SPA history 路由),由浏览器端 Vue Router 接管。 +func newStaticHandler(fsys embed.FS) http.Handler { + sub, err := fs.Sub(fsys, "web/static") + if err != nil { + panic(fmt.Sprintf("嵌入静态目录不可用: %v", err)) + } + fileServer := http.FileServer(http.FS(sub)) + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + name := strings.TrimPrefix(path.Clean(r.URL.Path), "/") + if name == "" { + name = "index.html" + } + if f, openErr := sub.Open(name); openErr == nil { + f.Close() + fileServer.ServeHTTP(w, r) + return + } + r2 := r.Clone(r.Context()) + r2.URL.Path = "/" + fileServer.ServeHTTP(w, r2) + }) +} + +// openBrowser 调用系统默认浏览器打开 url(仅本机开发使用,服务器部署时 Web.OpenBrowser=false) +func openBrowser(url string) { + var cmd *exec.Cmd + switch runtime.GOOS { + case "windows": + cmd = exec.Command("rundll32", "url.dll,FileProtocolHandler", url) + case "darwin": + cmd = exec.Command("open", url) + default: + cmd = exec.Command("xdg-open", url) + } + _ = cmd.Start() +} + func main() { flag.Parse() @@ -30,7 +83,19 @@ func main() { logx.SetWriter(logx.NewWriter(w)) } - server := rest.MustNewServer(c.RestConf) + staticHandler := newStaticHandler(webFS) + + // 兜底路由:已注册的 /api/* 走正常匹配;未注册的非 /api 路径走嵌入式静态资源 + //(/api 下未注册的路径仍返回 404,不回退页面) + notFound := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if strings.HasPrefix(r.URL.Path, "/api/") || r.URL.Path == "/api" { + http.NotFound(w, r) + return + } + staticHandler.ServeHTTP(w, r) + }) + + server := rest.MustNewServer(c.RestConf, rest.WithNotFoundHandler(notFound)) defer server.Stop() ctx := svc.NewServiceContext(c) @@ -39,5 +104,18 @@ func main() { fmt.Printf("Starting bj_power_wms server at %s:%d...\n", c.Host, c.Port) logx.Infof("Starting bj_power_wms server at %s:%d...", c.Host, c.Port) + + // 服务起来后自动打开浏览器访问前端(本机开发便利;Web.OpenBrowser=false 关闭) + if c.Web.OpenBrowser { + go func() { + time.Sleep(time.Second) + host := c.Host + if host == "0.0.0.0" || host == "" { + host = "127.0.0.1" + } + openBrowser(fmt.Sprintf("http://%s:%d", host, c.Port)) + }() + } + server.Start() } diff --git a/bj_power_wms/etc/bj_power_wms-api-verify.yaml b/bj_power_wms/etc/bj_power_wms-api-verify.yaml index 19a9464..161a40a 100644 --- a/bj_power_wms/etc/bj_power_wms-api-verify.yaml +++ b/bj_power_wms/etc/bj_power_wms-api-verify.yaml @@ -26,4 +26,7 @@ Log: Redis: Host: 127.0.0.1:6379 - Type: node \ No newline at end of file + Type: node +# 前端页面托管 +Web: + OpenBrowser: false diff --git a/bj_power_wms/etc/bj_power_wms-api.yaml b/bj_power_wms/etc/bj_power_wms-api.yaml index d5dbef0..d256dae 100644 --- a/bj_power_wms/etc/bj_power_wms-api.yaml +++ b/bj_power_wms/etc/bj_power_wms-api.yaml @@ -42,3 +42,7 @@ Agv: BaseURL: "" AppKey: "" AppSecret: "" + +# 前端页面托管(原库房客户端 8891 已合并进主服务) +Web: + OpenBrowser: true diff --git a/bj_power_wms_client/frontend/.gitignore b/bj_power_wms/frontend/.gitignore similarity index 100% rename from bj_power_wms_client/frontend/.gitignore rename to bj_power_wms/frontend/.gitignore diff --git a/bj_power_wms_client/frontend/index.html b/bj_power_wms/frontend/index.html similarity index 100% rename from bj_power_wms_client/frontend/index.html rename to bj_power_wms/frontend/index.html diff --git a/bj_power_wms_client/frontend/package-lock.json b/bj_power_wms/frontend/package-lock.json similarity index 100% rename from bj_power_wms_client/frontend/package-lock.json rename to bj_power_wms/frontend/package-lock.json diff --git a/bj_power_wms_client/frontend/package.json b/bj_power_wms/frontend/package.json similarity index 100% rename from bj_power_wms_client/frontend/package.json rename to bj_power_wms/frontend/package.json diff --git a/bj_power_wms_client/frontend/src/App.vue b/bj_power_wms/frontend/src/App.vue similarity index 100% rename from bj_power_wms_client/frontend/src/App.vue rename to bj_power_wms/frontend/src/App.vue diff --git a/bj_power_wms_client/frontend/src/components/MaterialSelect.vue b/bj_power_wms/frontend/src/components/MaterialSelect.vue similarity index 100% rename from bj_power_wms_client/frontend/src/components/MaterialSelect.vue rename to bj_power_wms/frontend/src/components/MaterialSelect.vue diff --git a/bj_power_wms_client/frontend/src/components/PageHelp.vue b/bj_power_wms/frontend/src/components/PageHelp.vue similarity index 100% rename from bj_power_wms_client/frontend/src/components/PageHelp.vue rename to bj_power_wms/frontend/src/components/PageHelp.vue diff --git a/bj_power_wms_client/frontend/src/help.js b/bj_power_wms/frontend/src/help.js similarity index 100% rename from bj_power_wms_client/frontend/src/help.js rename to bj_power_wms/frontend/src/help.js diff --git a/bj_power_wms_client/frontend/src/layouts/MainLayout.vue b/bj_power_wms/frontend/src/layouts/MainLayout.vue similarity index 100% rename from bj_power_wms_client/frontend/src/layouts/MainLayout.vue rename to bj_power_wms/frontend/src/layouts/MainLayout.vue diff --git a/bj_power_wms_client/frontend/src/main.js b/bj_power_wms/frontend/src/main.js similarity index 100% rename from bj_power_wms_client/frontend/src/main.js rename to bj_power_wms/frontend/src/main.js diff --git a/bj_power_wms_client/frontend/src/pages/Agv.vue b/bj_power_wms/frontend/src/pages/Agv.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/Agv.vue rename to bj_power_wms/frontend/src/pages/Agv.vue diff --git a/bj_power_wms_client/frontend/src/pages/BaseData.vue b/bj_power_wms/frontend/src/pages/BaseData.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/BaseData.vue rename to bj_power_wms/frontend/src/pages/BaseData.vue diff --git a/bj_power_wms_client/frontend/src/pages/ChangePassword.vue b/bj_power_wms/frontend/src/pages/ChangePassword.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/ChangePassword.vue rename to bj_power_wms/frontend/src/pages/ChangePassword.vue diff --git a/bj_power_wms_client/frontend/src/pages/Dashboard.vue b/bj_power_wms/frontend/src/pages/Dashboard.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/Dashboard.vue rename to bj_power_wms/frontend/src/pages/Dashboard.vue diff --git a/bj_power_wms_client/frontend/src/pages/Display.vue b/bj_power_wms/frontend/src/pages/Display.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/Display.vue rename to bj_power_wms/frontend/src/pages/Display.vue diff --git a/bj_power_wms_client/frontend/src/pages/EventLog.vue b/bj_power_wms/frontend/src/pages/EventLog.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/EventLog.vue rename to bj_power_wms/frontend/src/pages/EventLog.vue diff --git a/bj_power_wms_client/frontend/src/pages/Inbound.vue b/bj_power_wms/frontend/src/pages/Inbound.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/Inbound.vue rename to bj_power_wms/frontend/src/pages/Inbound.vue diff --git a/bj_power_wms_client/frontend/src/pages/Inspection.vue b/bj_power_wms/frontend/src/pages/Inspection.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/Inspection.vue rename to bj_power_wms/frontend/src/pages/Inspection.vue diff --git a/bj_power_wms_client/frontend/src/pages/Inventory.vue b/bj_power_wms/frontend/src/pages/Inventory.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/Inventory.vue rename to bj_power_wms/frontend/src/pages/Inventory.vue diff --git a/bj_power_wms_client/frontend/src/pages/Ledger.vue b/bj_power_wms/frontend/src/pages/Ledger.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/Ledger.vue rename to bj_power_wms/frontend/src/pages/Ledger.vue diff --git a/bj_power_wms_client/frontend/src/pages/Login.vue b/bj_power_wms/frontend/src/pages/Login.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/Login.vue rename to bj_power_wms/frontend/src/pages/Login.vue diff --git a/bj_power_wms_client/frontend/src/pages/Outbound.vue b/bj_power_wms/frontend/src/pages/Outbound.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/Outbound.vue rename to bj_power_wms/frontend/src/pages/Outbound.vue diff --git a/bj_power_wms_client/frontend/src/pages/RoleManage.vue b/bj_power_wms/frontend/src/pages/RoleManage.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/RoleManage.vue rename to bj_power_wms/frontend/src/pages/RoleManage.vue diff --git a/bj_power_wms_client/frontend/src/pages/Semi.vue b/bj_power_wms/frontend/src/pages/Semi.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/Semi.vue rename to bj_power_wms/frontend/src/pages/Semi.vue diff --git a/bj_power_wms_client/frontend/src/pages/Stocktake.vue b/bj_power_wms/frontend/src/pages/Stocktake.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/Stocktake.vue rename to bj_power_wms/frontend/src/pages/Stocktake.vue diff --git a/bj_power_wms_client/frontend/src/pages/UserManage.vue b/bj_power_wms/frontend/src/pages/UserManage.vue similarity index 100% rename from bj_power_wms_client/frontend/src/pages/UserManage.vue rename to bj_power_wms/frontend/src/pages/UserManage.vue diff --git a/bj_power_wms_client/frontend/src/router/index.js b/bj_power_wms/frontend/src/router/index.js similarity index 100% rename from bj_power_wms_client/frontend/src/router/index.js rename to bj_power_wms/frontend/src/router/index.js diff --git a/bj_power_wms_client/frontend/src/utils/auth.js b/bj_power_wms/frontend/src/utils/auth.js similarity index 100% rename from bj_power_wms_client/frontend/src/utils/auth.js rename to bj_power_wms/frontend/src/utils/auth.js diff --git a/bj_power_wms_client/frontend/src/utils/export.js b/bj_power_wms/frontend/src/utils/export.js similarity index 100% rename from bj_power_wms_client/frontend/src/utils/export.js rename to bj_power_wms/frontend/src/utils/export.js diff --git a/bj_power_wms_client/frontend/src/utils/format.js b/bj_power_wms/frontend/src/utils/format.js similarity index 100% rename from bj_power_wms_client/frontend/src/utils/format.js rename to bj_power_wms/frontend/src/utils/format.js diff --git a/bj_power_wms_client/frontend/src/utils/perm.js b/bj_power_wms/frontend/src/utils/perm.js similarity index 100% rename from bj_power_wms_client/frontend/src/utils/perm.js rename to bj_power_wms/frontend/src/utils/perm.js diff --git a/bj_power_wms_client/frontend/src/utils/request.js b/bj_power_wms/frontend/src/utils/request.js similarity index 100% rename from bj_power_wms_client/frontend/src/utils/request.js rename to bj_power_wms/frontend/src/utils/request.js diff --git a/bj_power_wms_client/frontend/vite.config.js b/bj_power_wms/frontend/vite.config.js similarity index 100% rename from bj_power_wms_client/frontend/vite.config.js rename to bj_power_wms/frontend/vite.config.js diff --git a/bj_power_wms/internal/config/config.go b/bj_power_wms/internal/config/config.go index d38a346..d227ab2 100644 --- a/bj_power_wms/internal/config/config.go +++ b/bj_power_wms/internal/config/config.go @@ -43,6 +43,11 @@ type AgvConfig struct { PollInterval int `json:",default=10"` // 任务状态轮询间隔(秒) } +// WebConfig 前端静态资源托管配置(原库房客户端 8891 已合并进主服务) +type WebConfig struct { + OpenBrowser bool `json:",default=true"` // 本机开发时启动后自动打开浏览器;服务器部署设为 false +} + type Config struct { rest.RestConf Postgres PostgresConfig @@ -51,6 +56,7 @@ type Config struct { Redis RedisConf Mes MesConfig Agv AgvConfig + Web WebConfig } // RedisConf Redis 连接配置 diff --git a/bj_power_wms_client/web/static/index.html b/bj_power_wms/web/static/index.html similarity index 100% rename from bj_power_wms_client/web/static/index.html rename to bj_power_wms/web/static/index.html diff --git a/bj_power_wms_client/.gitignore b/bj_power_wms_client/.gitignore deleted file mode 100644 index faabf97..0000000 --- a/bj_power_wms_client/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# 编译产物 -*.exe -*.db -logs/ - -# 前端依赖与产物(web/static 由 frontend npm run build 生成) -node_modules/ -frontend/dist/ \ No newline at end of file diff --git a/bj_power_wms_client/etc/bj_power_wms_client.yaml b/bj_power_wms_client/etc/bj_power_wms_client.yaml deleted file mode 100644 index a035b45..0000000 --- a/bj_power_wms_client/etc/bj_power_wms_client.yaml +++ /dev/null @@ -1,21 +0,0 @@ -Name: bj_power_wms_client -Host: 0.0.0.0 -Port: 8891 -Timeout: 30000 - -# WMS 后端地址(项目C),库房客户端只做静态托管 + /api 反向代理 -WmsAddr: http://127.0.0.1:8890 - -# 内部 API Token:请求 WMS 时写入请求头 X-API-TOKEN,统一 Hardman_2026 -ApiToken: Hardman_2026 - -# JWT 口令:内部服务签发/校验 JWT 用 -JwtSecret: Hardman_2026_JWT - -# 日志:按天滚动,保留 30 天 -Log: - Mode: file - Level: info - Path: logs - KeepDays: 30 - Rotation: daily \ No newline at end of file diff --git a/bj_power_wms_client/go.mod b/bj_power_wms_client/go.mod deleted file mode 100644 index 687af4f..0000000 --- a/bj_power_wms_client/go.mod +++ /dev/null @@ -1,48 +0,0 @@ -module bj_power_wms_client - -go 1.26 - -require github.com/zeromicro/go-zero v1.8.3 - -require ( - github.com/beorn7/perks v1.0.1 // indirect - github.com/cenkalti/backoff/v4 v4.3.0 // indirect - github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/fatih/color v1.18.0 // indirect - github.com/go-logr/logr v1.4.2 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/golang-jwt/jwt/v4 v4.5.2 // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect - github.com/klauspost/compress v1.17.11 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/openzipkin/zipkin-go v0.4.3 // indirect - github.com/pelletier/go-toml/v2 v2.2.2 // indirect - github.com/prometheus/client_golang v1.21.1 // indirect - github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.62.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect - github.com/spaolacci/murmur3 v1.1.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect - go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0 // indirect - go.opentelemetry.io/otel/exporters/zipkin v1.24.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/sdk v1.24.0 // indirect - go.opentelemetry.io/otel/trace v1.24.0 // indirect - go.opentelemetry.io/proto/otlp v1.3.1 // indirect - go.uber.org/automaxprocs v1.6.0 // indirect - golang.org/x/net v0.35.0 // indirect - golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.22.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect - google.golang.org/grpc v1.65.0 // indirect - google.golang.org/protobuf v1.36.5 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect -) diff --git a/bj_power_wms_client/go.sum b/bj_power_wms_client/go.sum deleted file mode 100644 index bd274d6..0000000 --- a/bj_power_wms_client/go.sum +++ /dev/null @@ -1,227 +0,0 @@ -cel.dev/expr v0.15.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= -github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU= -github.com/IBM/sarama v1.43.1/go.mod h1:GG5q1RURtDNPz8xxJs3mgX6Ytak8Z9eLhAkJPObe2xE= -github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= -github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= -github.com/alicebob/miniredis/v2 v2.34.0/go.mod h1:kWShP4b58T1CW0Y5dViCd5ztzrDqRWqM3nksiyXk5s8= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c= -github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= -github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= -github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= -github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/eapache/go-resiliency v1.6.0/go.mod h1:5yPzW0MIvSe0JDsv0v+DvcjEv2FyD6iZYSs1ZI+iQho= -github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3/go.mod h1:YvSRo5mw33fLEx1+DlK6L2VV43tJt5Eyel9n9XBcR+0= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/envoyproxy/go-control-plane v0.12.0/go.mod h1:ZBTaoJ23lqITozF0M6G4/IragXCQKCnYbmlmtHvwRG0= -github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= -github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= -github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= -github.com/fullstorydev/grpcurl v1.9.3/go.mod h1:/b4Wxe8bG6ndAjlfSUjwseQReUDUvBJiFEB7UllOlUE= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-sql-driver/mysql v1.9.0/go.mod h1:pDetrLJeA3oMujJuvXc8RJoasr589B6A9fwzD3QMrqw= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= -github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= -github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= -github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= -github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= -github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.7.4/go.mod h1:ncY89UGWxg82EykZUwSpUKEfccBGGYq1xjrOpsbsfGQ= -github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= -github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= -github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= -github.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo= -github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs= -github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= -github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= -github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= -github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= -github.com/openzipkin/zipkin-go v0.4.3 h1:9EGwpqkgnwdEIJ+Od7QVSEIH+ocmm5nPat0G7sjsSdg= -github.com/openzipkin/zipkin-go v0.4.3/go.mod h1:M9wCJZFWCo2RiY+o1eBCEMe0Dp2S5LDHcMZmk3RmK7c= -github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= -github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= -github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= -github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= -github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/rabbitmq/amqp091-go v1.9.0/go.mod h1:+jPrT9iY2eLjRaMSRHUhc3z14E/l85kv/f+6luSD3pc= -github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= -github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4= -github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= -github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= -github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI= -github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= -github.com/zeromicro/go-zero v1.8.3 h1:AwpBJQLAsZAt4OOnK0eR8UU1Ja2RFBIXfKkHdnXQKfc= -github.com/zeromicro/go-zero v1.8.3/go.mod h1:EnuEA3XdIQvAvc4WWTskRTO0jM2/aQi7OXv1gKWRNJ0= -go.etcd.io/etcd/api/v3 v3.5.15/go.mod h1:N9EhGzXq58WuMllgH9ZvnEr7SI9pS0k0+DHZezGp7jM= -go.etcd.io/etcd/client/pkg/v3 v3.5.15/go.mod h1:mXDI4NAOwEiszrHCb0aqfAYNCrZP4e9hRca3d1YK8EU= -go.etcd.io/etcd/client/v3 v3.5.15/go.mod h1:CLSJxrYjvLtHsrPKsy7LmZEE+DK2ktfd2bN4RhBMwlU= -go.mongodb.org/mongo-driver v1.17.3/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4= -go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0 h1:s0PHtIkN+3xrbDOpt2M8OTG92cWqUESvzh2MxiR5xY8= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0/go.mod h1:hZlFbDbRt++MMPCCfSJfmhkGIWnX1h3XjkfxZUjLrIA= -go.opentelemetry.io/otel/exporters/zipkin v1.24.0 h1:3evrL5poBuh1KF51D9gO/S+N/1msnm4DaBqs/rpXUqY= -go.opentelemetry.io/otel/exporters/zipkin v1.24.0/go.mod h1:0EHgD8R0+8yRhUYJOGR8Hfg2dpiJQxDOszd5smVO9wM= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= -go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= -go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= -go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= -go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= -go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= -go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= -golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= -golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= -golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d h1:kHjw/5UfflP/L5EbledDrcG4C2597RtymmGRZvHiCuY= -google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d/go.mod h1:mw8MG/Qz5wfgYr6VqVCiZcHe/GJEfI+oGGDCohaVgB0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 h1:BwIjyKYGsK9dMCBOorzRri8MQwmi7mT9rGHsCEinZkA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= -google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= -google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/h2non/gock.v1 v1.1.2 h1:jBbHXgGBK/AoPVfJh5x4r/WxIrElvbLel8TCZkkZJoY= -gopkg.in/h2non/gock.v1 v1.1.2/go.mod h1:n7UGz/ckNChHiK05rDoiC4MYSunEC/lyaUm2WWaDva0= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.29.3/go.mod h1:y2yg2NTyHUUkIoTC+phinTnEa3KFM6RZ3szxt014a80= -k8s.io/apimachinery v0.29.4/go.mod h1:i3FJVwhvSp/6n8Fl4K97PJEP8C+MM+aoDq4+ZJBf70Y= -k8s.io/client-go v0.29.3/go.mod h1:tkDisCvgPfiRpxGnOORfkljmS+UrW+WtXAy2fTvXJB0= -k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= -k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= -k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= -k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/bj_power_wms_client/internal/config/config.go b/bj_power_wms_client/internal/config/config.go deleted file mode 100644 index e09123a..0000000 --- a/bj_power_wms_client/internal/config/config.go +++ /dev/null @@ -1,16 +0,0 @@ -package config - -import ( - "github.com/zeromicro/go-zero/rest" -) - -// Config 库房客户端网关配置:无数据库,业务数据全部经反向代理转发到 WMS 后端(项目C) -type Config struct { - rest.RestConf - // WmsAddr WMS 后端地址,请求经 /api 反向代理转发到这里 - WmsAddr string `json:",default=http://127.0.0.1:8890"` - // ApiToken 内部 API Token,转发请求 WMS 时写入请求头 X-API-TOKEN - ApiToken string `json:",default=Hardman_2026"` - // JwtSecret JWT 口令,内部服务签发/校验 JWT 使用 - JwtSecret string `json:",optional"` -} \ No newline at end of file diff --git a/bj_power_wms_client/internal/proxy/proxy.go b/bj_power_wms_client/internal/proxy/proxy.go deleted file mode 100644 index 76fe5e4..0000000 --- a/bj_power_wms_client/internal/proxy/proxy.go +++ /dev/null @@ -1,31 +0,0 @@ -package proxy - -import ( - "fmt" - "net/http" - "net/http/httputil" - "net/url" -) - -// New 创建指向 WMS 后端的反向代理。 -// 请求转发时统一注入内部 API Token(X-API-TOKEN),由 WMS 依此鉴权; -// 响应头默认全量透传(含滑动续签的 X-Renewed-Token,由 WMS 写入)。 -func New(upstream, apiToken string) *httputil.ReverseProxy { - target, err := url.Parse(upstream) - if err != nil { - panic(fmt.Sprintf("WmsAddr 配置非法: %v", err)) - } - rp := httputil.NewSingleHostReverseProxy(target) - origDirector := rp.Director - rp.Director = func(req *http.Request) { - origDirector(req) - req.Host = target.Host - if apiToken != "" { - req.Header.Set("X-API-TOKEN", apiToken) - } - } - rp.ErrorHandler = func(w http.ResponseWriter, r *http.Request, err error) { - http.Error(w, "WMS 服务不可达: "+err.Error(), http.StatusBadGateway) - } - return rp -} \ No newline at end of file diff --git a/bj_power_wms_client/main.go b/bj_power_wms_client/main.go deleted file mode 100644 index 2a453bb..0000000 --- a/bj_power_wms_client/main.go +++ /dev/null @@ -1,105 +0,0 @@ -package main - -import ( - "embed" - "flag" - "fmt" - "io/fs" - "net/http" - "os/exec" - "path" - "runtime" - "strings" - "time" - - "bj_power_wms_client/internal/config" - "bj_power_wms_client/internal/proxy" - - "github.com/zeromicro/go-zero/core/conf" - "github.com/zeromicro/go-zero/core/logx" - "github.com/zeromicro/go-zero/rest" -) - -//go:embed all:web/static -var webFS embed.FS - -var configFile = flag.String("f", "etc/bj_power_wms_client.yaml", "the config file") - -// newStaticHandler 嵌入式静态文件:命中则直接返回;未命中的非 /api 路径 -// 回退到 index.html(SPA history 路由),由浏览器端 Vue Router 接管。 -func newStaticHandler(fsys embed.FS) http.Handler { - sub, err := fs.Sub(fsys, "web/static") - if err != nil { - panic(fmt.Sprintf("嵌入静态目录不可用: %v", err)) - } - fileServer := http.FileServer(http.FS(sub)) - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - name := strings.TrimPrefix(path.Clean(r.URL.Path), "/") - if name == "" { - name = "index.html" - } - if f, openErr := sub.Open(name); openErr == nil { - f.Close() - fileServer.ServeHTTP(w, r) - return - } - r2 := r.Clone(r.Context()) - r2.URL.Path = "/" - fileServer.ServeHTTP(w, r2) - }) -} - -// openBrowser 调用系统默认浏览器打开 url -func openBrowser(url string) { - var cmd *exec.Cmd - switch runtime.GOOS { - case "windows": - cmd = exec.Command("rundll32", "url.dll,FileProtocolHandler", url) - case "darwin": - cmd = exec.Command("open", url) - default: - cmd = exec.Command("xdg-open", url) - } - _ = cmd.Start() -} - -func main() { - flag.Parse() - - var c config.Config - conf.MustLoad(*configFile, &c) - - apiProxy := proxy.New(c.WmsAddr, c.ApiToken) - staticHandler := newStaticHandler(webFS) - - // 兜底路由:/api/* 反向代理到 WMS 后端,其余走嵌入式静态资源(未命中回退 index.html) - notFound := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if strings.HasPrefix(r.URL.Path, "/api") { - if r.URL.Path == "/api" || strings.HasPrefix(r.URL.Path, "/api/") { - apiProxy.ServeHTTP(w, r) - return - } - http.NotFound(w, r) - return - } - staticHandler.ServeHTTP(w, r) - }) - - server := rest.MustNewServer(c.RestConf, rest.WithNotFoundHandler(notFound)) - defer server.Stop() - - fmt.Printf("Starting bj_power_wms_client at :%d...\n", c.Port) - logx.Infof("Starting bj_power_wms_client at :%d...", c.Port) - - // 服务起来后自动打开浏览器访问前端 - host := c.Host - if host == "0.0.0.0" || host == "" { - host = "127.0.0.1" - } - go func() { - time.Sleep(time.Second) - openBrowser(fmt.Sprintf("http://%s:%d", host, c.Port)) - }() - - server.Start() -} diff --git a/技术约束.md b/技术约束.md index bcbb8b0..0a40e87 100644 --- a/技术约束.md +++ b/技术约束.md @@ -37,8 +37,7 @@ | 项目 | 端口 | 说明 | |------|------|------| | bj_power_mes | 8888 | MES(Go+内嵌 Vue3 前端,go:embed public/) | -| bj_power_wms | 8890 | WMS 纯后端(无前端) | -| bj_power_wms_client | 8891 | 库房客户端(Go 网关静态托管+反向代理 WMS) | +| bj_power_wms | 8890 | WMS(Go+内嵌 Vue3 前端,go:embed web/static/;2026-09-07 吸收原 8891 库房客户端) | | bj_power_workstation | 8892 | 工位终端(内嵌 Vue3+SQLite) | | bj_power_dashboard | dev 5173 / 生产静态 dist | 看板 React | diff --git a/部署手册.md b/部署手册.md index ee9c23f..ecc79c8 100644 --- a/部署手册.md +++ b/部署手册.md @@ -1,6 +1,6 @@ # bj_power 项目部署手册 -> 五个子项目统一仓库、独立编译、独立部署。 +> 五个子项目统一仓库、独立编译、独立部署。(2026-09-07 起原库房客户端 E 并入 WMS,实际为 A/B/C/D 四个可部署服务。) ## 一、项目与端口总览 @@ -8,8 +8,7 @@ |------|------|------|------| | bj_power_dashboard (A) | 厂门口看板 H5 | 开发 5173 / 生产静态 | React + Zustand + ECharts | | bj_power_mes (B) | MES 智能产线控制 | **8888** | Go (go-zero + ent) + 内嵌 Vue3 前端 | -| bj_power_wms (C) | WMS 仓库系统后端 | **8890** | Go (go-zero + ent),无前端 | -| bj_power_wms_client (E) | WMS 出入库工位网关(扫码枪) | **8891** | Go 网关 + 内嵌 Vue3 十页 | +| bj_power_wms (C) | WMS 仓库系统(后端+前端一体) | **8890** | Go (go-zero + ent) + 内嵌 Vue3 前端 | | bj_power_workstation (D) | 12 个工位终端软件 | **8892** | Go + 内嵌 Vue3 + SQLite 本地缓存 | 依赖:PostgreSQL ≥14(127.0.0.1:5432)、Redis ≥6(127.0.0.1:6379)、Go ≥1.22、Node.js ≥18。 @@ -77,7 +76,7 @@ go build -o bj_power_mes.exe . - PLC 默认 `Host: 127.0.0.1:102` 且 `Plc.Enable: false`(模拟模式,直接写工序码+读完成信号逻辑);真实设备改 yaml 中 Plc.Host/Port 并 Enable: true。 - 本产线仅有「扫码枪+拧紧枪」,无 AGV/机器人/接驳台/CNC/清洗机等设备,前端无相关页。 -### C — WMS 后端 +### C — WMS(后端+前端一体) ```powershell cd d:\hardman\bj_power\bj_power_wms @@ -85,18 +84,9 @@ go build -o bj_power_wms.exe . .\bj_power_wms.exe ``` -服务 :8890,首次启动自动建表+种子数据。 - -### E — WMS 工位网关(出入库两台台式机各部署一份) - -```powershell -cd d:\hardman\bj_power\bj_power_wms_client -go build -o bj_power_wms_client.exe . -.\bj_power_wms_client.exe -``` - -服务 :8891,反向代理 WMS 8890 并内嵌前端。浏览器打开 http://127.0.0.1:8891。 +服务 :8890,首次启动自动建表+种子数据。内嵌前端页面,浏览器打开 http://127.0.0.1:8890。 若需改前端:`cd frontend && npm install && npm run build` 后重新编译 Go。 +出入库两台台式机无需单独部署客户端(原 8891 库房客户端已并入),浏览器直接访问 8890 即可;扫码枪为 USB 键盘口(HID)设备,页面输入框直接读取。 ### D — 工位终端(12 台触控一体机) @@ -178,14 +168,13 @@ cd d:\hardman\bj_power\bj_power_mes | MES (B) | admin | `123456` | 管理后台登录后点右上「修改密码」(旧密码+新密码)| | WMS (C) | admin | `123456` | WMS 登录后改密,或直接改 `bj_power_wms` 数据库 users 表 | | 工位终端 (D) | admin / operator1 | `123456` / `123456` | 终端登录后改密,或直接改本地 `workstation.db`(SQLite)users 表 | -| 库房客户端 (E) | 复用 WMS 账号 | 同 WMS | 登录 WMS 后改密 | | 看板 (A) | 无登录账号 | — | 只读,无管理员 | -> 工位终端/库房客户端若需与 MES/WMS 一致的统一密码,请在对应 yaml/种子中调整后再部署。 +> 工位终端若需与 MES/WMS 一致的统一密码,请在对应 yaml/种子中调整后再部署。 ## 六、启动顺序与验证 -顺序:PostgreSQL/Redis → MES(8888) → WMS(8890) → 工位网关/终端 → Dashboard。 +顺序:PostgreSQL/Redis → MES(8888) → WMS(8890) → 工位终端 → Dashboard。 验证清单: @@ -200,7 +189,7 @@ cd d:\hardman\bj_power\bj_power_mes ## 七、常见问题 -1. **前端依赖/构建**:所有前端(MES frontend / 工位终端 / 库房客户端 / 看板)一律 `npm install && npm run build`,无需 pnpm。 +1. **前端依赖/构建**:所有前端(MES frontend / WMS frontend / 工位终端 / 看板)一律 `npm install && npm run build`,无需 pnpm。 2. **ent 代码生成**:改 schema 后须到对应目录执行 `go generate ./...`(MES:`cd bj_power_mes/schema && go generate ./...`;WMS:`cd bj_power_wms/schema && go generate ./...`)。 3. **PowerShell 下批处理改名会损坏含中文注释的 Go 文件编码**——本仓库所有中文文件均已是 UTF-8,请勿用旧版 PowerShell 对源码批量改名。 4. **PLC 连不上**:确认 yaml `Plc.Enable: false`(模拟)可先行联调;上真机再 Enable: true 并核对 S7 地址/机架槽位。 diff --git a/项目说明.md b/项目说明.md index c602246..4f6b1dc 100644 --- a/项目说明.md +++ b/项目说明.md @@ -1,20 +1,21 @@ -禁止修改 当前文档 任何内容 +> 修订说明:本文档 2026-09-07 经确认修订——原项目E(库房客户端)并入项目C,其余内容保留原始说明。 项目构成: -一共有五个项目。这个项目分别是 +一共有四个项目。这个项目分别是 项目A:bj_power_dashboard 项目a是一个看板系统,是一段H5的前端代码,它的数据来源于项目B,来源于MES系统。 项目B:bj_power_mes 项目B,MES系统是一个智能产线的控制系统。Go语言加vue代码。 -项目C:bj_power_wms 项目C,WMS仓库系统。Go语言不包含前端代码。 -项目D:bj_power_workstation 项目D,12个工位终端软件,Go语言加vue代码。(单独项目因为有扫码枪)。此项目的go,不谢任何业务,仅连接硬件设备采集数据 -项目E:bj_power_wms_client 项目E,WMS仓库系统。Go语言加vue代码。(单独项目因为有扫码枪)。此项目的go,不谢任何业务,仅连接硬件设备采集数据 +项目C:bj_power_wms 项目C,WMS仓库系统。Go语言加vue代码,前后端一体(go:embed 内嵌前端,8890 一个服务同时提供页面与API)。 +项目D:bj_power_workstation 项目D,12个工位终端软件,Go语言加vue代码。(单独项目因为有拧紧枪:丹尼科尔网络型控制器走 TCP/UDP 报文,浏览器读不了;且终端需离线可用——拧紧数据本地 SQLite 缓存、点击完成才上报 MES)。此项目的go,不谢任何业务,仅连接硬件设备采集数据 +项目E:~~bj_power_wms_client 项目E,WMS仓库系统。Go语言加vue代码。(单独项目因为有扫码枪)。此项目的go,不谢任何业务,仅连接硬件设备采集数据~~ + → 项目E 已于 2026-09-07 并入项目C并删除。原因:库房扫码枪为 USB 键盘口(HID)设备,浏览器页面输入框直接读取,不需要独立的本地客户端程序;出入库两台台式机浏览器直接访问 WMS 8890 即可。 -注意: 5个项目通过api交互,并且写死 token ,模拟授权。有登录页面的项目的接口,要和项目之间交互的api分开。 +注意: 各项目通过api交互,并且写死 token ,模拟授权。有登录页面的项目的接口,要和项目之间交互的api分开。 -注意,5个项目,每个都可以单独编译、单独部署。我把5个项目放到一个git,一个文件夹了。 +注意,各项目都可以单独编译、单独部署。项目放在一个git,一个文件夹里。 整个厂房构成: -1、仓库,库房。有两台台式机,每个台式机一个显示屏。这两个工位分为出库和入库。(因为有扫码枪所以有go服务器代码+前端代码)两台电脑数据来源,来源于wms系统。 +1、仓库,库房。有两台台式机,每个台式机一个显示屏。这两个工位分为出库和入库。两台电脑浏览器直接访问 WMS(项目C,页面+API一体),数据来源于wms系统;库房扫码枪为USB键盘口设备,页面输入框直接读取。 2、厂房大门口放着看板系统。也就是一个大显示器,还有一台主机。部署的是项目A。 3、自动产线有12个工位。一个工位,一个触控一体机。触控一体机上面安装着项目D。没有安装数据库,它的记忆数据来源于项目B。 4、3台pad,产线负责人手里面会拿一个iPad。这个iPad输入MES的地址,也就是项目B的前端地址。所以项目B的前端需要适配,自适应平板、手机、台式机。