🎉 初始化项目

This commit is contained in:
2026-03-03 06:05:51 +08:00
commit e1c70fe218
241 changed files with 148285 additions and 0 deletions

112
server/initialize/gorm.go Normal file
View 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)")
}