- 添加 migrate、seed、reset-all 命令行子命令 - 实现管理员密码门禁机制保护敏感操作 - 添加数据库表结构迁移和种子数据初始化功能 - 实现清空并重建全部表的 reset-all 功能 - 重构种子数据只包含系统必需基础数据,移除演示数据 - 添加 RBAC 权限角色初始化的命令行支持 - 配置命令行密码验证和操作日志记录功能
100 lines
4.4 KiB
Go
100 lines
4.4 KiB
Go
package config
|
||
|
||
import (
|
||
"strconv"
|
||
|
||
"github.com/zeromicro/go-zero/rest"
|
||
)
|
||
|
||
// PostgresConfig PostgreSQL 连接配置(go-zero 按 json tag + 字段名小写匹配 yaml)
|
||
type PostgresConfig struct {
|
||
Host string `json:",default=127.0.0.1"`
|
||
Port int `json:",default=5432"`
|
||
User string `json:",default=postgres"`
|
||
Password string `json:",default=postgres"`
|
||
DBName string `json:",default=bj_power_wms"`
|
||
SSLMode string `json:",default=disable"`
|
||
}
|
||
|
||
type AuthConfig struct {
|
||
AccessSecret string `json:",default=Hardman_2026"`
|
||
// AccessExpire 会话闲置窗口(秒):滑动续签下 = 距最后一次请求多久后需要重新登录
|
||
AccessExpire int64 `json:",default=3600"`
|
||
}
|
||
|
||
// InternalConfig 项目间内部 API 配置
|
||
type InternalConfig struct {
|
||
Token string `json:",default=Hardman_2026"` // 写死的项目间 API token(X-API-TOKEN)
|
||
}
|
||
|
||
// MesConfig 下游 MES 服务对接(备料/台账需取工单与 BOM)
|
||
type MesConfig struct {
|
||
BaseURL string `json:",default=http://127.0.0.1:8888"` // MES 服务地址
|
||
Token string `json:",default=Hardman_2026"` // 调 MES 内部接口的 X-API-TOKEN
|
||
}
|
||
|
||
// AgvConfig 海康 AGV(RCS-2000) 调度系统对接
|
||
// 未配置 appKey/appSecret/RCS 地址 或 EnableMock=true 时,使用 mock 客户端(模拟下发成功/到位),便于离线联调。
|
||
type AgvConfig struct {
|
||
EnableMock bool `json:",default=true"` // 是否模拟(未接真实 RCS 前保持 true)
|
||
BaseURL string `json:",default=http://127.0.0.1:1010/rcs/rtas"` // RCS 服务前缀,如 http://10.10.10.10:1010/rcs/rtas
|
||
AppKey string `json:",default=unset"` // RCS 颁发给业务系统的应用标识
|
||
AppSecret string `json:",default=unset"` // RCS 应用私钥
|
||
CarrierCode string `json:",default=DEFAULT"` // 默认载具/托盘编号(选填)
|
||
PollInterval int `json:",default=10"` // 任务状态轮询间隔(秒)
|
||
}
|
||
|
||
// WebConfig 前端静态资源托管配置(原库房客户端 8891 已合并进主服务)
|
||
type WebConfig struct {
|
||
OpenBrowser bool `json:",default=true"` // 本机开发时启动后自动打开浏览器;服务器部署设为 false
|
||
}
|
||
|
||
// CliConfig 命令行敏感操作门禁密码(migrate/reset-all/seed 需输入,独立于后台登录账号密码)。
|
||
// 与 MES 对齐:DDL/删库等高危操作一律显式触发 + 密码校验,绝不随服务启动自动执行。
|
||
type CliConfig struct {
|
||
AdminPassword string `json:",default=Hardman_2026"`
|
||
}
|
||
|
||
// AttachmentConfig 附件存储 / 归档 / 磁盘监控配置(etc/*.yaml 的 Attachment 段)。
|
||
// 落盘约定:<RootDir>/年/月/日/<文件类型大写>/<uuid>.<ext>,库内只存相对路径。
|
||
type AttachmentConfig struct {
|
||
RootDir string `json:",default=attachments"` // 附件根目录(年/月/日/文件类型/uuid.ext)
|
||
// 单文件上限(字节),按文件类型(大写,如 PROCESS_PDF)可配;未列出的类型用 DefaultMaxSize
|
||
MaxSize map[string]int64 `json:",optional"`
|
||
DefaultMaxSize int64 `json:",default=20971520"` // 默认 20MB
|
||
LocalRetentionYears int `json:",default=1"` // 本地保留年数(早于此的年份可归档)
|
||
DiskWarnPercent int `json:",default=20"` // 剩余空间低于该百分比 → 告警
|
||
DiskCriticalPercent int `json:",default=10"` // 剩余空间低于该百分比 → 提示清理/归档
|
||
DiskCheckHour int `json:",default=7"` // 每天几点执行磁盘检测(默认 07:00)
|
||
ArchiveDir string `json:",optional"` // 外部备份目录(NAS/移动硬盘);为空则归档仅标记不动文件
|
||
}
|
||
|
||
type Config struct {
|
||
rest.RestConf
|
||
Postgres PostgresConfig
|
||
Auth AuthConfig
|
||
Internal InternalConfig
|
||
Redis RedisConf
|
||
Mes MesConfig
|
||
Agv AgvConfig
|
||
Web WebConfig
|
||
Attachment AttachmentConfig
|
||
Cli CliConfig
|
||
}
|
||
|
||
// RedisConf Redis 连接配置
|
||
type RedisConf struct {
|
||
Host string `json:",default=127.0.0.1:6379"`
|
||
Type string `json:",default=node"`
|
||
}
|
||
|
||
// DSN 返回 PostgreSQL 连接串
|
||
func (p PostgresConfig) DSN() string {
|
||
return "host=" + p.Host +
|
||
" port=" + strconv.Itoa(p.Port) +
|
||
" user=" + p.User +
|
||
" password=" + p.Password +
|
||
" dbname=" + p.DBName +
|
||
" sslmode=" + p.SSLMode
|
||
}
|