🎉 初始化项目
This commit is contained in:
112
server/initialize/gorm.go
Normal file
112
server/initialize/gorm.go
Normal file
@@ -0,0 +1,112 @@
|
||||
package initialize
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"git.echol.cn/loser/ai_proxy/server/global"
|
||||
"git.echol.cn/loser/ai_proxy/server/model/app"
|
||||
"git.echol.cn/loser/ai_proxy/server/model/system"
|
||||
|
||||
"go.uber.org/zap"
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func Gorm() *gorm.DB {
|
||||
switch global.GVA_CONFIG.System.DbType {
|
||||
case "mysql":
|
||||
global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Mysql.Dbname
|
||||
return GormMysql()
|
||||
case "pgsql":
|
||||
global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Pgsql.Dbname
|
||||
return GormPgSql()
|
||||
case "oracle":
|
||||
global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Oracle.Dbname
|
||||
return GormOracle()
|
||||
case "mssql":
|
||||
global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Mssql.Dbname
|
||||
return GormMssql()
|
||||
case "sqlite":
|
||||
global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Sqlite.Dbname
|
||||
return GormSqlite()
|
||||
default:
|
||||
global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Mysql.Dbname
|
||||
return GormMysql()
|
||||
}
|
||||
}
|
||||
|
||||
func RegisterTables() {
|
||||
if global.GVA_CONFIG.System.DisableAutoMigrate {
|
||||
global.GVA_LOG.Info("auto-migrate is disabled, skipping table registration")
|
||||
return
|
||||
}
|
||||
|
||||
db := global.GVA_DB
|
||||
err := db.AutoMigrate(
|
||||
|
||||
// System tables (管理后台表)
|
||||
system.SysApi{},
|
||||
system.SysUser{},
|
||||
|
||||
// App tables (前台应用表)
|
||||
app.AiPreset{},
|
||||
app.AiProvider{},
|
||||
app.AiPresetBinding{},
|
||||
app.AiRequestLog{},
|
||||
)
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("register table failed", zap.Error(err))
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
err = bizModel()
|
||||
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("register biz_table failed", zap.Error(err))
|
||||
os.Exit(0)
|
||||
}
|
||||
global.GVA_LOG.Info("register table success")
|
||||
|
||||
// 初始化默认管理员账号
|
||||
initDefaultAdmin()
|
||||
}
|
||||
|
||||
// initDefaultAdmin 初始化默认管理员账号
|
||||
func initDefaultAdmin() {
|
||||
var count int64
|
||||
err := global.GVA_DB.Model(&system.SysUser{}).Where("username = ?", "root").Count(&count).Error
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("check admin user failed", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
// 如果已存在 root 用户,则跳过
|
||||
if count > 0 {
|
||||
global.GVA_LOG.Info("default admin user already exists, skip initialization")
|
||||
return
|
||||
}
|
||||
|
||||
// 加密密码
|
||||
hashedPassword, err := bcrypt.GenerateFromPassword([]byte("root123"), bcrypt.DefaultCost)
|
||||
if err != nil {
|
||||
global.GVA_LOG.Error("hash password failed", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
// 创建默认管理员账号
|
||||
adminUser := system.SysUser{
|
||||
Username: "root",
|
||||
Password: string(hashedPassword),
|
||||
Nickname: "超级管理员",
|
||||
Email: "admin@example.com",
|
||||
Role: "admin",
|
||||
Status: "active",
|
||||
}
|
||||
|
||||
if err := global.GVA_DB.Create(&adminUser).Error; err != nil {
|
||||
global.GVA_LOG.Error("create default admin user failed", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
global.GVA_LOG.Info("default admin user created successfully (username: root, password: root123)")
|
||||
}
|
||||
Reference in New Issue
Block a user