- 新增默认管理员自动初始化逻辑,系统启动时检查并创建超级管理员账号 - 支持通过配置文件自定义账号信息(优先级:配置文件 > 代码默认值) - 新增 CreateSystemAccount 方法用于系统内部账号创建 - 新增默认管理员配置项和常量定义 - 更新 README.md 添加默认账号使用说明 - 归档 OpenSpec 变更提案及完整文档 相关文件: - internal/bootstrap/admin.go: 管理员初始化逻辑 - internal/service/account/service.go: 系统账号创建方法 - pkg/config/config.go: 默认管理员配置结构 - pkg/constants/constants.go: 默认值常量定义 - docs/add-default-admin-init/功能说明.md: 完整功能文档
76 lines
2.2 KiB
Go
76 lines
2.2 KiB
Go
package bootstrap
|
||
|
||
import (
|
||
pkgGorm "github.com/break/junhong_cmp_fiber/pkg/gorm"
|
||
"go.uber.org/zap"
|
||
)
|
||
|
||
// BootstrapResult Bootstrap 初始化结果
|
||
type BootstrapResult struct {
|
||
Handlers *Handlers
|
||
Middlewares *Middlewares
|
||
}
|
||
|
||
// Bootstrap 初始化所有业务组件并返回 Handlers 和 Middlewares
|
||
// 这是应用启动时的主入口,负责编排所有组件的初始化流程
|
||
//
|
||
// 初始化顺序:
|
||
// 1. 初始化 Store 层(数据访问)
|
||
// 2. 注册 GORM Callbacks(数据权限过滤等)- 需要 AccountStore
|
||
// 3. 初始化 Service 层(业务逻辑)
|
||
// 4. 初始化默认超级管理员(如果不存在)
|
||
// 5. 初始化 Middleware 层(中间件)
|
||
// 6. 初始化 Handler 层(HTTP 处理)
|
||
//
|
||
// 参数:
|
||
// - deps: 基础依赖(DB, Redis, Logger)
|
||
//
|
||
// 返回:
|
||
// - *BootstrapResult: 包含 Handlers 和 Middlewares
|
||
// - error: 初始化错误
|
||
func Bootstrap(deps *Dependencies) (*BootstrapResult, error) {
|
||
// 1. 初始化 Store 层
|
||
stores := initStores(deps)
|
||
|
||
// 2. 注册 GORM Callbacks(需要 AccountStore 来查询下级 ID)
|
||
if err := registerGORMCallbacks(deps, stores); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
// 3. 初始化 Service 层
|
||
services := initServices(stores, deps)
|
||
|
||
// 4. 初始化默认超级管理员(降级处理:失败不中断启动)
|
||
if err := initDefaultAdmin(deps, services); err != nil {
|
||
deps.Logger.Error("初始化默认超级管理员失败", zap.Error(err))
|
||
}
|
||
|
||
// 5. 初始化 Middleware 层
|
||
middlewares := initMiddlewares(deps)
|
||
|
||
// 6. 初始化 Handler 层
|
||
handlers := initHandlers(services, deps)
|
||
|
||
return &BootstrapResult{
|
||
Handlers: handlers,
|
||
Middlewares: middlewares,
|
||
}, nil
|
||
}
|
||
|
||
// registerGORMCallbacks 注册 GORM Callbacks
|
||
func registerGORMCallbacks(deps *Dependencies, stores *stores) error {
|
||
// 注册数据权限过滤 Callback(使用 ShopStore 来查询下级店铺 ID)
|
||
if err := pkgGorm.RegisterDataPermissionCallback(deps.DB, stores.Shop); err != nil {
|
||
return err
|
||
}
|
||
|
||
// 注册自动添加创建&更新人 Callback
|
||
if err := pkgGorm.RegisterSetCreatorUpdaterCallback(deps.DB); err != nil {
|
||
return err
|
||
}
|
||
|
||
// TODO: 在此添加其他 GORM Callbacks
|
||
|
||
return nil
|
||
}
|