package configs import ( "fmt" "github.com/go-redis/redis/v8" _ "github.com/go-sql-driver/mysql" "github.com/spf13/viper" "os" "xorm.io/xorm" ) var ( Config *viper.Viper Engine *xorm.Engine RedisDb *redis.Client ) type User struct { Id int `xorm:"'id'" json:"id"` Username string `xorm:"'username'" json:"username"` Password string `xorm:"'password'" json:"password"` Creation_time int `xorm:"'creation_time'" json:"creation_Time"` Login_time int `xorm:"'login_time'" json:"login_Time"` Status int `xorm:"'status'" json:"status"` Role_id int `xorm:"'role_id'" json:"role_id"` Phone string `xorm:"'phone'" json:"phone"` } type Role struct { Id int `xorm:"'id'" json:"id"` Role_name string `xorm:"'role_name'" json:"role_Name"` } type Role_authority struct { Authority_id int `xorm:"'authority_id'" json:"authority_id"` Role_id int `xorm:"'role_id'" json:"role_id"` } type Authority struct { Id int `xorm:"'id'" json:"id"` Authority_name string `xorm:"'authority_name'" json:"authority_Name"` Authority_path string `xorm:"'authority_path'" json:"authority_Path"` } type MysqlData struct { User `xorm:"extends"` Role `xorm:"extends"` Role_authority `xorm:"extends"` Authority `xorm:"extends"` } func ConfigInit() { //获取项目的执行路径 path, err := os.Getwd() if err != nil { panic(err) } config := viper.New() config.AddConfigPath(path + "\\configs") //设置读取的文件路径 config.SetConfigName("config") //设置读取的文件名 config.SetConfigType("yaml") //设置文件的类型 //尝试进行配置读取 if err := config.ReadInConfig(); err != nil { panic(err) } fmt.Println(fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8", config.Get("mysql.user"), config.Get("mysql.password"), config.Get("mysql.host"), config.Get("mysql.port"), config.Get("mysql.database"))) Engine, err = xorm.NewEngine("mysql", fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8", config.Get("mysql.user"), config.Get("mysql.password"), config.Get("mysql.host"), config.Get("mysql.port"), config.Get("mysql.database"))) Engine.Ping() //连接测试 RedisDb = redis.NewClient(&redis.Options{ Addr: fmt.Sprintf("%s:%s", config.Get("redis.host"), config.Get("redis.port")), // Redis地址 Password: "", // Redis密码,如果没有则为空字符串 DB: 0, // 使用默认DB }) Config = config }