diff --git a/global/db.go b/global/db.go deleted file mode 100644 index 069a823..0000000 --- a/global/db.go +++ /dev/null @@ -1,73 +0,0 @@ -package global - -import ( - "WechatGateWay/handle" - "fmt" - "github.com/jinzhu/gorm" - "github.com/spf13/viper" - "log" - "net/url" -) - -func InitDB() *gorm.DB { - driverName := "mysql" - host := viper.GetString("db.MySQLHOST") - port := viper.GetInt("db.MySQLPORT") - database := viper.GetString("db.MySQLDB") - username := viper.GetString("db.MySQLUSER") - password := viper.GetString("db.MySQLPASSWORD") - charset := viper.GetString("db.MySQLCharset") - loc := viper.GetString("db.MySQLLoc") - dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&parseTime=true&loc=%s", - username, - password, - host, - port, - database, - charset, - url.QueryEscape(loc)) - - //dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" - db, err := gorm.Open(driverName, dsn) - //db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) - - if err == nil { - log.Println("Connected to database") - - //db.DB()实现一个连接池 - //设置最大连接数和最大闲置数 - //默认0表示不限制 - db.DB().SetMaxIdleConns(0) - db.DB().SetMaxOpenConns(0) - - //给默认表名加前缀 - gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTableName string) string { - //return "admin_" + defaultTableName + "_test_env" - return "" + defaultTableName + "" - } - - // 全局禁用表名复数 - // 如果设置为true,`User`的默认表名为`user`,使用`TableName`设置的表名不受影响 - // 如果设置为false,`User`的默认表名为`users` - db.SingularTable(false) - - //打开sql日志 - db.LogMode(viper.GetBool("db.GORMLog")) - - //创建表时,添加后缀 - db.Set("grom:table_options", "ENGINE=InnoDB") - - //自动建表 - db.AutoMigrate(&handle.WechatLog{}) - - DB = db - return db - - } else { - log.Println("Connected to database failed") - //log.Println("failed to connect database, err: " + err.Error()) - panic("failed to connect database, err: " + err.Error()) - return nil - } - -} diff --git a/main.go b/main.go index 22d2a57..b99f8db 100644 --- a/main.go +++ b/main.go @@ -5,15 +5,80 @@ import ( "WechatGateWay/handle" "WechatGateWay/third_part" "fmt" + "github.com/jinzhu/gorm" "github.com/robfig/cron" "github.com/spf13/viper" "log" "math/rand" "net/http" + "net/url" "os" "time" ) +func InitDB() *gorm.DB { + driverName := "mysql" + host := viper.GetString("db.MySQLHOST") + port := viper.GetInt("db.MySQLPORT") + database := viper.GetString("db.MySQLDB") + username := viper.GetString("db.MySQLUSER") + password := viper.GetString("db.MySQLPASSWORD") + charset := viper.GetString("db.MySQLCharset") + loc := viper.GetString("db.MySQLLoc") + dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&parseTime=true&loc=%s", + username, + password, + host, + port, + database, + charset, + url.QueryEscape(loc)) + + //dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" + db, err := gorm.Open(driverName, dsn) + //db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) + + if err == nil { + log.Println("Connected to database") + + //db.DB()实现一个连接池 + //设置最大连接数和最大闲置数 + //默认0表示不限制 + db.DB().SetMaxIdleConns(0) + db.DB().SetMaxOpenConns(0) + + //给默认表名加前缀 + gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTableName string) string { + //return "admin_" + defaultTableName + "_test_env" + return "" + defaultTableName + "" + } + + // 全局禁用表名复数 + // 如果设置为true,`User`的默认表名为`user`,使用`TableName`设置的表名不受影响 + // 如果设置为false,`User`的默认表名为`users` + db.SingularTable(false) + + //打开sql日志 + db.LogMode(viper.GetBool("db.GORMLog")) + + //创建表时,添加后缀 + db.Set("grom:table_options", "ENGINE=InnoDB") + + //自动建表 + db.AutoMigrate(&handle.WechatLog{}) + + global.DB = db + return db + + } else { + log.Println("Connected to database failed") + //log.Println("failed to connect database, err: " + err.Error()) + panic("failed to connect database, err: " + err.Error()) + return nil + } + +} + func init() { rand.Seed(time.Now().UnixNano()) // 读取配置文件 @@ -36,7 +101,7 @@ func init() { global.WxCrypt = global.NewWXBizMsgCrypt(global.WechatToken, global.WechatEncodingAesKey, global.WechatCorpId, global.XmlType) third_part.GetRemoteToken() //初始化数据库 - global.DB = global.InitDB() + global.DB = InitDB() defer global.DB.Close() log.Println("数据库初始化成功")