81 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package model
 | ||
| 
 | ||
| import (
 | ||
| 	"fmt"
 | ||
| 	"strings"
 | ||
| 	"time"
 | ||
| 
 | ||
| 	"github.com/fonchain_enterprise/fonchain-approval/pkg/m"
 | ||
| 	"github.com/gin-gonic/gin"
 | ||
| 	"gopkg.in/ini.v1"
 | ||
| 	"gorm.io/driver/mysql"
 | ||
| 	"gorm.io/gorm"
 | ||
| 	"gorm.io/gorm/logger"
 | ||
| 	"gorm.io/gorm/schema"
 | ||
| )
 | ||
| 
 | ||
| var DB *gorm.DB
 | ||
| 
 | ||
| var (
 | ||
| 	Db         string
 | ||
| 	DbHost     string
 | ||
| 	DbPort     string
 | ||
| 	DbUser     string
 | ||
| 	DbPassWord string
 | ||
| 	DbName     string
 | ||
| )
 | ||
| 
 | ||
| func init() {
 | ||
| 	//从本地读取环境变量
 | ||
| 	file, err := ini.Load(m.SERVER_CONFIG)
 | ||
| 	if err != nil {
 | ||
| 		fmt.Println(m.ERRORCONFIG, err)
 | ||
| 	}
 | ||
| 	//加载数据库配置
 | ||
| 	LoadMysqlData(file)
 | ||
| 
 | ||
| 	//MySQL数据库
 | ||
| 	path := strings.Join([]string{DbUser, ":", DbPassWord, "@tcp(", DbHost, ":", DbPort, ")/", DbName, "?charset=utf8&parseTime=true&loc=Local"}, "")
 | ||
| 	//连接数据库
 | ||
| 	Database(path)
 | ||
| }
 | ||
| 
 | ||
| func LoadMysqlData(file *ini.File) {
 | ||
| 	Db = file.Section("mysql").Key("Db").String()
 | ||
| 	DbHost = file.Section("mysql").Key("DbHost").String()
 | ||
| 	DbPort = file.Section("mysql").Key("DbPort").String()
 | ||
| 	DbUser = file.Section("mysql").Key("DbUser").String()
 | ||
| 	DbPassWord = file.Section("mysql").Key("DbPassWord").String()
 | ||
| 	DbName = file.Section("mysql").Key("DbName").String()
 | ||
| }
 | ||
| 
 | ||
| func Database(conn string) {
 | ||
| 	var ormLogger logger.Interface
 | ||
| 	if gin.Mode() == "debug" {
 | ||
| 		ormLogger = logger.Default.LogMode(logger.Info)
 | ||
| 	} else {
 | ||
| 		ormLogger = logger.Default
 | ||
| 	}
 | ||
| 	db, err := gorm.Open(mysql.New(mysql.Config{
 | ||
| 		DSN:                       conn,  // DSN data source name
 | ||
| 		DefaultStringSize:         256,   // string 类型字段的默认长度
 | ||
| 		DisableDatetimePrecision:  true,  // 禁用 datetime 精度,MySQL 5.6 之前的数据库不支持
 | ||
| 		DontSupportRenameIndex:    true,  // 重命名索引时采用删除并新建的方式,MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引
 | ||
| 		DontSupportRenameColumn:   true,  // 用 `change` 重命名列,MySQL 8 之前的数据库和 MariaDB 不支持重命名列
 | ||
| 		SkipInitializeWithVersion: false, // 根据版本自动配置
 | ||
| 	}), &gorm.Config{
 | ||
| 		Logger: ormLogger,
 | ||
| 		NamingStrategy: schema.NamingStrategy{
 | ||
| 			SingularTable: true,
 | ||
| 		},
 | ||
| 	})
 | ||
| 	if err != nil {
 | ||
| 		panic(err)
 | ||
| 	}
 | ||
| 	sqlDB, _ := db.DB()
 | ||
| 	sqlDB.SetMaxIdleConns(20)  //设置连接池,空闲
 | ||
| 	sqlDB.SetMaxOpenConns(100) //打开
 | ||
| 	sqlDB.SetConnMaxLifetime(time.Second * 30)
 | ||
| 	DB = db
 | ||
| }
 |