package models import ( "fmt" "time" "github.com/beego/beego/v2/client/orm" beego "github.com/beego/beego/v2/server/web" _ "github.com/go-sql-driver/mysql" ) // User 用户模型 type User struct { Id int `orm:"auto"` TenantId int `orm:"column(tenant_id);default(0)" json:"tenant_id"` Username string Password string Salt string Email string Avatar string Nickname string Status int `orm:"column(status);default(1)" json:"status"` Role int `orm:"column(role);default(0)" json:"role"` DepartmentId int `orm:"column(department_id);null;default(0)" json:"department_id"` PositionId int `orm:"column(position_id);null;default(0)" json:"position_id"` DeleteTime *time.Time `orm:"column(delete_time);null;type(datetime)" json:"delete_time"` LastLoginTime *time.Time `orm:"column(last_login_time);null;type(datetime)" json:"last_login_time"` LastLoginIp string `orm:"column(last_login_ip);null;size(50)" json:"last_login_ip"` } // TableName 设置表名,默认为yz_users func (u *User) TableName() string { return "yz_users" } // Init 初始化数据库(注册所有模型和连接数据库) func Init(version string) { orm.RegisterModel(new(User)) orm.RegisterModel(new(Menu)) orm.RegisterModel(new(ProgramCategory)) orm.RegisterModel(new(ProgramInfo)) orm.RegisterModel(new(FileInfo)) orm.RegisterModel(new(Knowledge)) orm.RegisterModel(new(KnowledgeCategory)) orm.RegisterModel(new(KnowledgeTag)) ormConfig, err := beego.AppConfig.String("orm") if err != nil { panic("无法获取orm配置: " + err.Error()) } if ormConfig == "mysql" { user, err1 := beego.AppConfig.String("mysqluser") pass, err2 := beego.AppConfig.String("mysqlpass") urls, err3 := beego.AppConfig.String("mysqlurls") dbName, err4 := beego.AppConfig.String("mysqldb") if err1 != nil || err2 != nil || err3 != nil || err4 != nil { panic("数据库配置错误") } // 构建连接字符串,添加连接池和性能优化参数 dsn := user + ":" + pass + "@tcp(" + urls + ")/" + dbName + "?charset=utf8mb4&parseTime=True&loc=Local&timeout=10s&readTimeout=30s&writeTimeout=30s" fmt.Println("数据库连接字符串:", dsn) // 注册数据库 err = orm.RegisterDataBase("default", "mysql", dsn) if err != nil { panic("数据库连接失败: " + err.Error()) } // 配置数据库连接池(关键性能优化) dbConn, err := orm.GetDB("default") if err != nil { panic("获取数据库连接失败: " + err.Error()) } // 设置连接池参数 dbConn.SetMaxIdleConns(10) // 设置空闲连接池中连接的最大数量 dbConn.SetMaxOpenConns(100) // 设置打开数据库连接的最大数量 dbConn.SetConnMaxLifetime(time.Hour) // 设置连接可复用的最大时间 fmt.Println("数据库连接成功!") fmt.Printf("当前项目版本: %s\n", version) fmt.Println("数据库连接池配置: MaxIdleConns=10, MaxOpenConns=100, ConnMaxLifetime=1h") } }