2026-08-28 15:06:01 +08:00
|
|
|
package db
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
"log/slog"
|
|
|
|
|
|
|
|
|
|
"bj_power_wms/ent"
|
|
|
|
|
|
|
|
|
|
"golang.org/x/crypto/bcrypt"
|
|
|
|
|
)
|
|
|
|
|
|
2026-09-20 15:38:45 +08:00
|
|
|
// SeedIfEmpty 首次启动/重置后预置「系统运行必需的基础主数据」,不含任何演示业务数据。
|
|
|
|
|
//
|
|
|
|
|
// 生产环境口径(用户裁决 2026-09-20):种子只允许写入系统跑起来所必需的固定主数据,
|
|
|
|
|
// 严禁预置演示物料/演示库存/演示账号等假业务数据。具体:
|
|
|
|
|
// - 管理员账号:admin(初始密码 123456,登录后应立即修改);其余账号由管理员在「账号管理」按需创建、分配角色;
|
2026-09-21 10:48:53 +08:00
|
|
|
//
|
|
|
|
|
// 接驳台主数据已迁 MES(2026-09-21):仓库不再维护 dock 表,也不在此种子写入接驳台。
|
2026-09-20 15:38:45 +08:00
|
|
|
//
|
2026-09-20 18:25:44 +08:00
|
|
|
// 不预置区域/库位:区域是现场库房布局,因项目而异,且「区域维护」页面可增删改,由实施按现场实际建立,不硬编码进种子。
|
2026-09-20 15:38:45 +08:00
|
|
|
// 权限与角色不在此:由 handler.SeedRBAC 幂等初始化(reset-all/seed 命令与 POST /api/rbac/seed 共用同一函数)。
|
2026-08-28 15:06:01 +08:00
|
|
|
func SeedIfEmpty(client *ent.Client) error {
|
|
|
|
|
ctx := context.Background()
|
|
|
|
|
|
2026-09-20 18:25:44 +08:00
|
|
|
// 1. 管理员账号(唯一预置账号;初始密码 123456,登录后应立即修改)
|
2026-08-28 15:06:01 +08:00
|
|
|
users, _ := client.User.Query().Count(ctx)
|
|
|
|
|
if users == 0 {
|
2026-08-29 15:30:25 +08:00
|
|
|
adminHash, _ := bcrypt.GenerateFromPassword([]byte("123456"), bcrypt.DefaultCost)
|
2026-08-28 15:06:01 +08:00
|
|
|
client.User.Create().
|
|
|
|
|
SetUsername("admin").
|
|
|
|
|
SetPassword(string(adminHash)).
|
|
|
|
|
SetRealName("系统管理员").
|
|
|
|
|
SetRole("admin").
|
|
|
|
|
SaveX(ctx)
|
2026-09-20 15:38:45 +08:00
|
|
|
slog.Info("seed: admin user created (admin/123456)")
|
2026-08-28 15:06:01 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
}
|