Переглянути джерело

数据库连接初始化代码重构

重构了数据库连接初始化逻辑,优化了达梦数据库的连接配置。更新了全局变量以支持新的数据库连接处理方式,提升了代码的可维护性和可读性。

引入了新的日志处理机制,优化了数据库连接池的配置。通过重新组织数据库连接逻辑,提高了数据库操作的效率和可靠性。
Roc 7 місяців тому
батько
коміт
36a190a94e

+ 100 - 0
global/dm.go

@@ -0,0 +1,100 @@
+package global
+
+import (
+	_ "dm"
+	dm "dmgorm2"
+	"eta_gn/eta_api/utils"
+	"fmt"
+	"gorm.io/gorm"
+	"gorm.io/gorm/logger"
+	"io"
+	"log"
+	"os"
+	"time"
+
+	_ "github.com/go-sql-driver/mysql"
+)
+
+// 达梦数据库初始化
+func InitDm() {
+	dmSqlMap := make(map[string]*gorm.DB)
+
+	//开启日志
+	logWriter := io.MultiWriter(utils.Binlog) //binlog日志,记录到文件中去
+	if utils.RunMode == `debug` {             // 测试环境,默认输出在控制台,不需要的话,可以注释if里面下面的这行
+		logWriter = io.MultiWriter(utils.Binlog, os.Stdout)
+	}
+	newLogger := logger.New(log.New(logWriter, "\r\n", log.LstdFlags), logger.Config{
+		SlowThreshold:             200 * time.Millisecond, //慢sql :200ms
+		LogLevel:                  logger.Info,            //记录的日志类型,info代表所有信息都记录
+		IgnoreRecordNotFoundError: true,                   //是否忽略找不到数据错误信息(只是日志记录记录成err还是普通的输出的区别,并不影响业务代码中的:找不到数据行error)
+		Colorful:                  true,                   //是否颜色输出
+	})
+
+	// 默认库
+	connectDm(utils.MYSQL_URL, "default", newLogger, dmSqlMap, true)
+
+	// 报告库
+	connectDm(utils.MYSQL_URL_RDDP, "rddp", newLogger, dmSqlMap, false)
+	// 手工数据库
+	connectDm(utils.MYSQL_URL_EDB, "edb", newLogger, dmSqlMap, false)
+	// 指标库
+	connectDm(utils.MYSQL_URL_DATA, "data", newLogger, dmSqlMap, false)
+	// 钢联库
+	connectDm(utils.MYSQL_URL_GL, "gl", newLogger, dmSqlMap, false)
+
+	// 用户主库
+	if utils.MYSQL_WEEKLY_URL != `` && (utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeSandbox || utils.BusinessCode == utils.BusinessCodeDebug) {
+		// 用户主库
+		connectDm(utils.MYSQL_WEEKLY_URL, "weekly", newLogger, dmSqlMap, false)
+	}
+
+	if utils.MYSQL_AI_URL != "" {
+		// AI库
+		connectDm(utils.MYSQL_AI_URL, "ai", newLogger, dmSqlMap, false)
+	}
+
+	//全局赋值数据库链接
+	DmSQL = dmSqlMap
+
+}
+
+// 达梦数据库连接
+func connectDm(dsn, aliasName string, newLogger logger.Interface, dmSqlMap map[string]*gorm.DB, isDefault bool) {
+	if dsn == `` {
+		return
+	}
+	//dsn := "dm://SYSDBA:SYSDBA001@8.136.199.33:30236?schema=\"eta_master\""
+	//dsn := "dm://ETA:Han6258199118%60@localhost:5236?schema=ECOLOGY_TARGET"
+	db, err := gorm.Open(dm.Open(dsn), &gorm.Config{
+		Logger: newLogger,
+	})
+	if err != nil {
+		//global.LOG.Errorf("mysql 启动异常,数据库:default;Err:", err)
+		panic(fmt.Errorf("mysql 启动异常,数据库:%s;Err:%s", aliasName, err))
+	}
+
+	//创建连接池
+	sqlDB, err := db.DB()
+	if err != nil {
+		//global.LOG.Errorf("mysql 创建连接池失败,数据库:default;Err:", err)
+		panic(fmt.Errorf("mysql 创建连接池失败,数据库:%s;Err:%s", aliasName, err))
+	}
+
+	dmSqlMap[aliasName] = db
+
+	//默认数据库连接
+	if isDefault {
+		DEFAULT_DmSQL = db
+	}
+
+	// SetMaxIdleConns 设置空闲连接池中连接的最大数量
+	sqlDB.SetMaxIdleConns(50)
+
+	// SetMaxOpenConns 设置打开数据库连接的最大数量。
+	sqlDB.SetMaxOpenConns(100)
+
+	// SetConnMaxLifetime 设置了连接可复用的最大时间。
+	sqlDB.SetConnMaxLifetime(10 * time.Minute)
+
+}

+ 12 - 0
global/global.go

@@ -0,0 +1,12 @@
+package global
+
+import (
+	_ "dm"
+	_ "github.com/go-sql-driver/mysql"
+	"gorm.io/gorm"
+)
+
+var (
+	DmSQL         map[string]*gorm.DB //数据库连接配置
+	DEFAULT_DmSQL *gorm.DB            //默认数据库连接配置
+)

+ 0 - 2
go.mod

@@ -33,7 +33,6 @@ require (
 	github.com/mojocn/base64Captcha v1.3.6
 	github.com/nosixtools/solarlunar v0.0.0-20211112060703-1b6dea7b4a19
 	github.com/olivere/elastic/v7 v7.0.32
-	github.com/op/go-logging v0.0.0-20160315200505-970db520ece7
 	github.com/pdfcpu/pdfcpu v0.8.0
 	github.com/qiniu/qmgo v1.1.8
 	github.com/rdlucklib/rdluck_tools v1.0.3
@@ -49,7 +48,6 @@ require (
 	go.mongodb.org/mongo-driver v1.15.0
 	golang.org/x/net v0.21.0
 	gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
-	gorm.io/driver/mysql v1.5.7
 	gorm.io/gorm v1.25.12
 )
 

+ 0 - 5
go.sum

@@ -449,8 +449,6 @@ github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAl
 github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs=
 github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw=
 github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
-github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88=
-github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
 github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b h1:FfH+VrHHk6Lxt9HdVS0PXzSXFyS2NbZKXv33FYPol0A=
 github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b/go.mod h1:AC62GU6hc0BrNm+9RK9VSiwa/EUe1bkIeFORAMcHvJU=
 github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
@@ -914,9 +912,6 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C
 gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo=
-gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
-gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
 gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8=
 gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
 honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

+ 7 - 0
main.go

@@ -2,6 +2,8 @@ package main
 
 import (
 	"eta_gn/eta_api/controllers"
+	"eta_gn/eta_api/global"
+	"eta_gn/eta_api/models"
 	"eta_gn/eta_api/services/alarm_msg"
 	"fmt"
 	"runtime"
@@ -23,6 +25,11 @@ func main() {
 	}
 	go services.Task()
 
+	// 初始化达梦连接
+	global.InitDm()
+	// 初始化表数据入库
+	models.AfterInitTable()
+
 	// 异常处理
 	web.ErrorController(&controllers.ErrorController{})
 

+ 4 - 2
models/api_uri.go

@@ -1,5 +1,7 @@
 package models
 
+import "eta_gn/eta_api/global"
+
 type ApiUriTest struct {
 	ApiUri         string `gorm:"column:api_uri"`
 	ParentUri      string `gorm:"column:parent_uri"`
@@ -15,7 +17,7 @@ type ApiUriTest struct {
 }
 
 func GetApiUriTest() (items []*ApiUriTest, err error) {
-	err = DEFAULT_DmSQL.Raw("SELECT * FROM api_uri_test").Find(&items).Error
+	err = global.DEFAULT_DmSQL.Raw("SELECT * FROM api_uri_test").Find(&items).Error
 	//o := orm.NewOrmUsingDB("weekly")
 	//sql := ` SELECT * FROM api_uri_test `
 	//_, err = o.Raw(sql).QueryRows(&items)
@@ -23,7 +25,7 @@ func GetApiUriTest() (items []*ApiUriTest, err error) {
 }
 
 func UpdateApiUriTest(api string, menuId int) (err error) {
-	err = DEFAULT_DmSQL.Exec("UPDATE sys_menu SET api = ? where menu_id = ?", api, menuId).Error
+	err = global.DEFAULT_DmSQL.Exec("UPDATE sys_menu SET api = ? where menu_id = ?", api, menuId).Error
 	//o := orm.NewOrm()
 	//sql := ` UPDATE sys_menu SET api = ? where menu_id = ?`
 	//_, err = o.Raw(sql, api, menuId).Exec()

+ 13 - 12
models/business_conf.go

@@ -1,6 +1,7 @@
 package models
 
 import (
+	"eta_gn/eta_api/global"
 	"eta_gn/eta_api/utils"
 	"fmt"
 	"html"
@@ -87,7 +88,7 @@ func (m *BusinessConf) PrimaryId() string {
 }
 
 func (m *BusinessConf) Create() (err error) {
-	err = DEFAULT_DmSQL.Create(m).Error
+	err = global.DEFAULT_DmSQL.Create(m).Error
 	//o := orm.NewOrm()
 	//id, err := o.Insert(m)
 	//if err != nil {
@@ -101,14 +102,14 @@ func (m *BusinessConf) CreateMulti(items []*BusinessConf) (err error) {
 	if len(items) == 0 {
 		return
 	}
-	err = DEFAULT_DmSQL.CreateInBatches(items, len(items)).Error
+	err = global.DEFAULT_DmSQL.CreateInBatches(items, len(items)).Error
 	//o := orm.NewOrm()
 	//_, err = o.InsertMulti(len(items), items)
 	return
 }
 
 func (m *BusinessConf) Update(cols []string) (err error) {
-	err = DEFAULT_DmSQL.Select(cols).Updates(m).Error
+	err = global.DEFAULT_DmSQL.Select(cols).Updates(m).Error
 	//o := orm.NewOrm()
 	//_, err = o.Update(m, cols...)
 	return
@@ -116,7 +117,7 @@ func (m *BusinessConf) Update(cols []string) (err error) {
 
 func (m *BusinessConf) Del() (err error) {
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	err = DEFAULT_DmSQL.Exec(sql, m.Id).Error
+	err = global.DEFAULT_DmSQL.Exec(sql, m.Id).Error
 	//o := orm.NewOrm()
 	//sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
 	//_, err = o.Raw(sql, m.Id).Exec()
@@ -125,7 +126,7 @@ func (m *BusinessConf) Del() (err error) {
 
 func (m *BusinessConf) GetItemById(id int) (item *BusinessConf, err error) {
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	err = DEFAULT_DmSQL.Raw(sql, id).Find(&item).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, id).Find(&item).Error
 	//o := orm.NewOrm()
 	//sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
 	//err = o.Raw(sql, id).QueryRow(&item)
@@ -134,7 +135,7 @@ func (m *BusinessConf) GetItemById(id int) (item *BusinessConf, err error) {
 
 func (m *BusinessConf) GetItemByCondition(condition string, pars []interface{}) (item *BusinessConf, err error) {
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
-	err = DEFAULT_DmSQL.Raw(sql, pars).Find(&item).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, pars).Find(&item).Error
 	//o := orm.NewOrm()
 	//sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
 	//err = o.Raw(sql, pars).QueryRow(&item)
@@ -143,7 +144,7 @@ func (m *BusinessConf) GetItemByCondition(condition string, pars []interface{})
 
 func (m *BusinessConf) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = DEFAULT_DmSQL.Raw(sql, pars).Scan(&count).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, pars).Scan(&count).Error
 	//o := orm.NewOrm()
 	//sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
 	//err = o.Raw(sql, pars).QueryRow(&count)
@@ -161,7 +162,7 @@ func (m *BusinessConf) GetItemsByCondition(condition string, pars []interface{},
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	err = DEFAULT_DmSQL.Raw(sql, pars).Find(&items).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, pars).Find(&items).Error
 	//o := orm.NewOrm()
 	//_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
@@ -178,7 +179,7 @@ func (m *BusinessConf) GetPageItemsByCondition(condition string, pars []interfac
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	err = DEFAULT_DmSQL.Raw(sql, pars, startSize, pageSize).Find(&items).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, pars, startSize, pageSize).Find(&items).Error
 	//o := orm.NewOrm()
 	//_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return
@@ -193,7 +194,7 @@ func GetBusinessConf() (list map[string]string, err error) {
 	//sql := `SELECT * FROM business_conf`
 	//_, err = o.Raw(sql).QueryRows(&items)
 	sql := `SELECT * FROM business_conf`
-	err = DEFAULT_DmSQL.Raw(sql).Find(&items).Error
+	err = global.DEFAULT_DmSQL.Raw(sql).Find(&items).Error
 	if err != nil {
 		return
 	}
@@ -216,7 +217,7 @@ type BusinessConfUpdate struct {
 
 // UpdateBusinessConfMulti 批量修改配置
 func UpdateBusinessConfMulti(items []BusinessConfUpdate) (err error) {
-	tx := DEFAULT_DmSQL.Begin()
+	tx := global.DEFAULT_DmSQL.Begin()
 	for _, v := range items {
 		err = tx.Exec("UPDATE business_conf SET conf_val = ? WHERE conf_key = ?", v.ConfVal, v.ConfKey).Error
 		if err != nil {
@@ -245,7 +246,7 @@ func UpdateBusinessConfMulti(items []BusinessConfUpdate) (err error) {
 
 func GetBusinessConfByKey(key string) (item *BusinessConf, err error) {
 	sql := fmt.Sprintf(`SELECT * FROM business_conf WHERE conf_key = ? LIMIT 1`)
-	err = DEFAULT_DmSQL.Raw(sql, key).First(&item).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, key).First(&item).Error
 	//o := orm.NewOrm()
 	//sql := fmt.Sprintf(`SELECT * FROM business_conf WHERE conf_key = ? LIMIT 1`)
 	//err = o.Raw(sql, key).QueryRow(&item)

+ 10 - 9
models/business_conf_operation_record.go

@@ -1,6 +1,7 @@
 package models
 
 import (
+	"eta_gn/eta_api/global"
 	"fmt"
 	"strings"
 	"time"
@@ -30,7 +31,7 @@ func (m *BusinessConfOperationRecord) Create() (err error) {
 	//	return
 	//}
 	//m.Id = int(id)
-	err = DEFAULT_DmSQL.Create(m).Error
+	err = global.DEFAULT_DmSQL.Create(m).Error
 	return
 }
 
@@ -40,14 +41,14 @@ func (m *BusinessConfOperationRecord) CreateMulti(items []*BusinessConfOperation
 	}
 	//o := orm.NewOrm()
 	//_, err = o.InsertMulti(len(items), items)
-	err = DEFAULT_DmSQL.CreateInBatches(items, len(items)).Error
+	err = global.DEFAULT_DmSQL.CreateInBatches(items, len(items)).Error
 	return
 }
 
 func (m *BusinessConfOperationRecord) Update(cols []string) (err error) {
 	//o := orm.NewOrm()
 	//_, err = o.Update(m, cols...)
-	err = DEFAULT_DmSQL.Select(cols).Updates(m).Error
+	err = global.DEFAULT_DmSQL.Select(cols).Updates(m).Error
 	return
 }
 
@@ -56,7 +57,7 @@ func (m *BusinessConfOperationRecord) Del() (err error) {
 	//sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
 	//_, err = o.Raw(sql, m.Id).Exec()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	err = DEFAULT_DmSQL.Exec(sql, m.Id).Error
+	err = global.DEFAULT_DmSQL.Exec(sql, m.Id).Error
 	return
 }
 
@@ -65,7 +66,7 @@ func (m *BusinessConfOperationRecord) GetItemById(id int) (item *BusinessConfOpe
 	//sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
 	//err = o.Raw(sql, id).QueryRow(&item)
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	err = DEFAULT_DmSQL.Raw(sql, id).First(&item).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, id).First(&item).Error
 	return
 }
 
@@ -74,7 +75,7 @@ func (m *BusinessConfOperationRecord) GetItemByCondition(condition string, pars
 	//sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
 	//err = o.Raw(sql, pars).QueryRow(&item)
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
-	err = DEFAULT_DmSQL.Raw(sql, pars).First(&item).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, pars).First(&item).Error
 	return
 }
 
@@ -83,7 +84,7 @@ func (m *BusinessConfOperationRecord) GetCountByCondition(condition string, pars
 	//sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
 	//err = o.Raw(sql, pars).QueryRow(&count)
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
-	err = DEFAULT_DmSQL.Raw(sql, pars).Scan(&count).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, pars).Scan(&count).Error
 	return
 }
 
@@ -98,7 +99,7 @@ func (m *BusinessConfOperationRecord) GetItemsByCondition(condition string, pars
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	err = DEFAULT_DmSQL.Raw(sql, pars).Find(&items).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, pars).Find(&items).Error
 	//sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
 	//o := orm.NewOrm()
 	//_, err = o.Raw(sql, pars).QueryRows(&items)
@@ -118,6 +119,6 @@ func (m *BusinessConfOperationRecord) GetPageItemsByCondition(condition string,
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
 	//o := orm.NewOrm()
 	//_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
-	err = DEFAULT_DmSQL.Raw(sql, pars, startSize, pageSize).Find(&items).Error
+	err = global.DEFAULT_DmSQL.Raw(sql, pars, startSize, pageSize).Find(&items).Error
 	return
 }

+ 19 - 18
models/chart_permission.go

@@ -1,6 +1,7 @@
 package models
 
 import (
+	"eta_gn/eta_api/global"
 	"eta_gn/eta_api/utils"
 	"fmt"
 	"time"
@@ -53,7 +54,7 @@ type ChartPermissionItem struct {
 func (c *ChartPermission) Update(cols []string) (err error) {
 	//o := orm.NewOrmUsingDB("rddp")
 	//_, err = o.Update(c, cols...)
-	err = DmSQL["rddp"].Select(cols).Updates(c).Error
+	err = global.DmSQL["rddp"].Select(cols).Updates(c).Error
 	return
 }
 
@@ -88,7 +89,7 @@ type PermissionMoveReq struct {
 func (c *ChartPermission) SetEnabled(id, enabled int) (err error) {
 	//o := orm.NewOrmUsingDB("rddp")
 	//to, err := o.Begin()
-	to := DmSQL["rddp"].Begin()
+	to := global.DmSQL["rddp"].Begin()
 	if err != nil {
 		return
 	}
@@ -122,7 +123,7 @@ func (c *ChartPermission) Create() (err error) {
 	//	return
 	//}
 	//c.ChartPermissionId = int(id)
-	err = DmSQL["rddp"].Create(c).Error
+	err = global.DmSQL["rddp"].Create(c).Error
 	return
 }
 
@@ -132,7 +133,7 @@ func (c *ChartPermission) SetIsPublic(ids []int, parentId, isPublic int) (err er
 	//sql := `update chart_permission set is_public=? WHERE parent_id = ?  and  chart_permission_id IN (` + utils.GetOrmInReplace(len(ids)) + `)`
 	//_, err = o.Raw(sql, isPublic, parentId, ids).Exec()
 	sql := `update chart_permission set is_public=? WHERE parent_id = ?  and  chart_permission_id IN (` + utils.GetOrmInReplace(len(ids)) + `)`
-	err = DmSQL["rddp"].Exec(sql, isPublic, parentId, ids).Error
+	err = global.DmSQL["rddp"].Exec(sql, isPublic, parentId, ids).Error
 	return
 }
 
@@ -142,7 +143,7 @@ func (c *ChartPermission) UpdateClassifyNameByParentId(parentId int, classifyNam
 	//sql := `update chart_permission set classify_name=? WHERE parent_id = ?`
 	//_, err = o.Raw(sql, classifyName, parentId).Exec()
 	sql := `update chart_permission set classify_name=? WHERE parent_id = ?`
-	err = DmSQL["rddp"].Exec(sql, classifyName, parentId).Error
+	err = global.DmSQL["rddp"].Exec(sql, classifyName, parentId).Error
 	return
 }
 
@@ -152,7 +153,7 @@ func (c *ChartPermission) SetEnabledByParentId(parentId, enabled int) (err error
 	//sql := ` UPDATE chart_permission SET enabled =?  WHERE parent_id = ?`
 	//_, err = o.Raw(sql, enabled, parentId).Exec()
 	sql := ` UPDATE chart_permission SET enabled =?  WHERE parent_id = ?`
-	err = DmSQL["rddp"].Exec(sql, enabled, parentId).Error
+	err = global.DmSQL["rddp"].Exec(sql, enabled, parentId).Error
 	return
 }
 
@@ -162,7 +163,7 @@ func (c *ChartPermission) SetEnabledByChartPermissionId(chartPermissionId, enabl
 	//sql := ` UPDATE chart_permission SET enabled =?  WHERE chart_permission_id = ?`
 	//_, err = o.Raw(sql, enabled, chartPermissionId).Exec()
 	sql := ` UPDATE chart_permission SET enabled =?  WHERE chart_permission_id = ?`
-	err = DmSQL["rddp"].Exec(sql, enabled, chartPermissionId).Error
+	err = global.DmSQL["rddp"].Exec(sql, enabled, chartPermissionId).Error
 	return
 }
 
@@ -172,7 +173,7 @@ func (c *ChartPermission) GetItemById(chartPermissionId int) (item *ChartPermiss
 	//sql := `select * from chart_permission WHERE chart_permission_id = ?`
 	//err = o.Raw(sql, chartPermissionId).QueryRow(&item)
 	sql := `select * from chart_permission WHERE chart_permission_id = ?`
-	err = DmSQL["rddp"].Raw(sql, chartPermissionId).First(&item).Error
+	err = global.DmSQL["rddp"].Raw(sql, chartPermissionId).First(&item).Error
 	return
 }
 
@@ -182,7 +183,7 @@ func (c *ChartPermission) GetItemsByCondition(condition string, pars []interface
 	//sql := `select * from chart_permission WHERE 1=1 ` + condition + ` order by sort asc, chart_permission_id asc`
 	//_, err = o.Raw(sql, pars).QueryRows(&items)
 	sql := `select * from chart_permission WHERE 1=1 ` + condition + ` order by sort asc, chart_permission_id asc`
-	err = DmSQL["rddp"].Raw(sql, pars).Find(&items).Error
+	err = global.DmSQL["rddp"].Raw(sql, pars).Find(&items).Error
 	return
 }
 
@@ -192,7 +193,7 @@ func (c *ChartPermission) GetItemByCondition(condition string, pars []interface{
 	//sql := `select * from chart_permission WHERE 1=1 ` + condition
 	//err = o.Raw(sql, pars).QueryRow(&item)
 	sql := `select * from chart_permission WHERE 1=1 ` + condition
-	err = DmSQL["rddp"].Raw(sql, pars).First(&item).Error
+	err = global.DmSQL["rddp"].Raw(sql, pars).First(&item).Error
 	return
 }
 
@@ -207,7 +208,7 @@ func UpdateChartPermissionSortByParentId(parentId, chartPermissionId, nowSort in
 	}
 	//o := orm.NewOrmUsingDB("rddp")
 	//_, err = o.Raw(sql, parentId, productId, nowSort).Exec()
-	err = DmSQL["rddp"].Exec(sql, parentId, productId, nowSort).Error
+	err = global.DmSQL["rddp"].Exec(sql, parentId, productId, nowSort).Error
 	return
 }
 
@@ -217,7 +218,7 @@ func (c *ChartPermission) GetMaxSort() (maxSort int, err error) {
 	//sql := `select max(sort) from chart_permission `
 	//err = o.Raw(sql).QueryRow(&maxSort)
 	sql := `select max(sort) from chart_permission `
-	err = DmSQL["rddp"].Raw(sql).Scan(&maxSort).Error
+	err = global.DmSQL["rddp"].Raw(sql).Scan(&maxSort).Error
 	return
 }
 
@@ -227,7 +228,7 @@ func (c *ChartPermission) GetMaxSortByParentId(parentId int) (maxSort int, err e
 	//sql := `select max(sort) from chart_permission WHERE parent_id=? `
 	//err = o.Raw(sql, parentId).QueryRow(&maxSort)
 	sql := `select max(sort) from chart_permission WHERE parent_id=? `
-	err = DmSQL["rddp"].Raw(sql, parentId).Scan(&maxSort).Error
+	err = global.DmSQL["rddp"].Raw(sql, parentId).Scan(&maxSort).Error
 	return
 }
 
@@ -237,7 +238,7 @@ func (c *ChartPermission) GetFirstChartPermissionByParentId(parentId int) (item
 	//sql := `select * from chart_permission WHERE parent_id=? ORDER BY sort ASC, chart_permission_id ASC LIMIT 1`
 	//err = o.Raw(sql, parentId).QueryRow(&item)
 	sql := `select * from chart_permission WHERE parent_id=? ORDER BY sort ASC, chart_permission_id ASC LIMIT 1`
-	err = DmSQL["rddp"].Raw(sql, parentId).First(&item).Error
+	err = global.DmSQL["rddp"].Raw(sql, parentId).First(&item).Error
 	return
 }
 
@@ -247,7 +248,7 @@ func GetChartPermissionById(permissionId int) (item *ChartPermission, err error)
 	//sql := `SELECT * FROM chart_permission WHERE chart_permission_id = ?`
 	//err = o.Raw(sql, permissionId).QueryRow(&item)
 	sql := `SELECT * FROM chart_permission WHERE chart_permission_id = ?`
-	err = DmSQL["rddp"].Raw(sql, permissionId).First(&item).Error
+	err = global.DmSQL["rddp"].Raw(sql, permissionId).First(&item).Error
 	return
 }
 
@@ -257,7 +258,7 @@ func GetSecondaryChartPermissions() (list []*ChartPermission, err error) {
 	//sql := `SELECT * FROM chart_permission WHERE product_id = ? AND parent_id > 0 AND enabled = 1 ORDER BY parent_id ASC, sort ASC, created_time ASC`
 	//_, err = o.Raw(sql, FiccProductId).QueryRows(&list)
 	sql := `SELECT * FROM chart_permission WHERE product_id = ? AND parent_id > 0 AND enabled = 1 ORDER BY parent_id ASC, sort ASC, created_time ASC`
-	err = DmSQL["rddp"].Raw(sql, FiccProductId).Find(&list).Error
+	err = global.DmSQL["rddp"].Raw(sql, FiccProductId).Find(&list).Error
 	return
 }
 
@@ -286,7 +287,7 @@ func GetChartPermissionsByProductId() (list []*ChartPermission, err error) {
 	//sql := `SELECT * FROM chart_permission WHERE product_id = ? AND enabled = 1 ORDER BY parent_id ASC, sort ASC, created_time ASC`
 	//_, err = o.Raw(sql, FiccProductId).QueryRows(&list)
 	sql := `SELECT * FROM chart_permission WHERE product_id = ? AND enabled = 1 ORDER BY parent_id ASC, sort ASC, created_time ASC`
-	err = DmSQL["rddp"].Raw(sql, FiccProductId).Find(&list).Error
+	err = global.DmSQL["rddp"].Raw(sql, FiccProductId).Find(&list).Error
 	return
 }
 
@@ -306,6 +307,6 @@ func GetChartPermissionByIdList(permissionIdList []int) (items []*ChartPermissio
 	//sql := `SELECT * FROM chart_permission WHERE chart_permission_id in (` + utils.GetOrmInReplace(num) + `) `
 	//_, err = o.Raw(sql, permissionIdList).QueryRows(&items)
 	sql := `SELECT * FROM chart_permission WHERE chart_permission_id in (` + utils.GetOrmInReplace(num) + `) `
-	err = DmSQL["rddp"].Raw(sql, permissionIdList).Find(&items).Error
+	err = global.DmSQL["rddp"].Raw(sql, permissionIdList).Find(&items).Error
 	return
 }

+ 4 - 2
models/data_manage/edb_source.go

@@ -1,6 +1,7 @@
 package data_manage
 
 import (
+	"eta_gn/eta_api/global"
 	"eta_gn/eta_api/utils"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
@@ -29,7 +30,7 @@ type EdbSource struct {
 
 // GetEdbSourceItemsByCondition 获取指标来源列表
 func GetEdbSourceItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EdbSource, err error) {
-	o := orm.NewOrmUsingDB("data")
+	o := global.DmSQL["data"]
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -39,7 +40,8 @@ func GetEdbSourceItemsByCondition(condition string, pars []interface{}, fieldArr
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM edb_source WHERE 1=1 %s %s`, fields, condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = o.Raw(sql, pars).Find(&items).Error
+
 	return
 }
 

+ 2 - 107
models/db.go

@@ -1,117 +1,12 @@
 package models
 
-import (
-	_ "dm"
-	dm "dmgorm2"
-	"eta_gn/eta_api/models/data_manage"
-	"eta_gn/eta_api/utils"
-	"fmt"
-	"gorm.io/gorm"
-	"gorm.io/gorm/logger"
-	"io"
-	"log"
-	"os"
-	"time"
-
-	_ "github.com/go-sql-driver/mysql"
-)
-
-var (
-	DmSQL         map[string]*gorm.DB //数据库连接配置
-	DEFAULT_DmSQL *gorm.DB            //默认数据库连接配置
-)
-
-// 达梦数据库初始化
-func init() {
-	dmSqlMap := make(map[string]*gorm.DB)
-
-	//开启日志
-	logWriter := io.MultiWriter(utils.Binlog) //binlog日志,记录到文件中去
-	if utils.RunMode == `debug` {             // 测试环境,默认输出在控制台,不需要的话,可以注释if里面下面的这行
-		logWriter = io.MultiWriter(utils.Binlog, os.Stdout)
-	}
-	newLogger := logger.New(log.New(logWriter, "\r\n", log.LstdFlags), logger.Config{
-		SlowThreshold:             200 * time.Millisecond, //慢sql :200ms
-		LogLevel:                  logger.Info,            //记录的日志类型,info代表所有信息都记录
-		IgnoreRecordNotFoundError: true,                   //是否忽略找不到数据错误信息(只是日志记录记录成err还是普通的输出的区别,并不影响业务代码中的:找不到数据行error)
-		Colorful:                  true,                   //是否颜色输出
-	})
-
-	// 默认库
-	initDm(utils.MYSQL_URL, "default", newLogger, dmSqlMap, true)
-
-	// 报告库
-	initDm(utils.MYSQL_URL_RDDP, "rddp", newLogger, dmSqlMap, false)
-	// 手工数据库
-	initDm(utils.MYSQL_URL_EDB, "edb", newLogger, dmSqlMap, false)
-	// 指标库
-	initDm(utils.MYSQL_URL_DATA, "data", newLogger, dmSqlMap, false)
-	// 钢联库
-	initDm(utils.MYSQL_URL_GL, "gl", newLogger, dmSqlMap, false)
-
-	// 用户主库
-	if utils.MYSQL_WEEKLY_URL != `` && (utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeSandbox || utils.BusinessCode == utils.BusinessCodeDebug) {
-		// 用户主库
-		initDm(utils.MYSQL_WEEKLY_URL, "weekly", newLogger, dmSqlMap, false)
-	}
-
-	if utils.MYSQL_AI_URL != "" {
-		// AI库
-		initDm(utils.MYSQL_AI_URL, "ai", newLogger, dmSqlMap, false)
-	}
-
-	//全局赋值数据库链接
-	DmSQL = dmSqlMap
-
-	// 初始化部分数据表变量(直接init会有顺序问题=_=!)
-	afterInitTable()
-}
-
-// 达梦数据库连接
-func initDm(dsn, aliasName string, newLogger logger.Interface, dmSqlMap map[string]*gorm.DB, isDefault bool) {
-	if dsn == `` {
-		return
-	}
-	//dsn := "dm://SYSDBA:SYSDBA001@8.136.199.33:30236?schema=\"eta_master\""
-	//dsn := "dm://ETA:Han6258199118%60@localhost:5236?schema=ECOLOGY_TARGET"
-	db, err := gorm.Open(dm.Open(dsn), &gorm.Config{
-		Logger: newLogger,
-	})
-	if err != nil {
-		//global.LOG.Errorf("mysql 启动异常,数据库:default;Err:", err)
-		panic(fmt.Errorf("mysql 启动异常,数据库:%s;Err:%s", aliasName, err))
-	}
-
-	//创建连接池
-	sqlDB, err := db.DB()
-	if err != nil {
-		//global.LOG.Errorf("mysql 创建连接池失败,数据库:default;Err:", err)
-		panic(fmt.Errorf("mysql 创建连接池失败,数据库:%s;Err:%s", aliasName, err))
-	}
-
-	dmSqlMap[aliasName] = db
-
-	//默认数据库连接
-	if isDefault {
-		DEFAULT_DmSQL = db
-	}
-
-	// SetMaxIdleConns 设置空闲连接池中连接的最大数量
-	sqlDB.SetMaxIdleConns(50)
-
-	// SetMaxOpenConns 设置打开数据库连接的最大数量。
-	sqlDB.SetMaxOpenConns(100)
-
-	// SetConnMaxLifetime 设置了连接可复用的最大时间。
-	sqlDB.SetConnMaxLifetime(10 * time.Minute)
-
-}
+import "eta_gn/eta_api/models/data_manage"
 
 // afterInitTable
 // @Description: 初始化表结构的的后置操作
 // @author: Roc
 // @datetime 2024-07-01 13:31:09
-func afterInitTable() {
+func AfterInitTable() {
 	// 初始化指标来源配置
 	data_manage.InitEdbSourceVar()
 

+ 0 - 52
models/db2.go

@@ -1,52 +0,0 @@
-package models
-
-import (
-	_ "dm"
-	dm "dmgorm2"
-	"fmt"
-	"gorm.io/gorm"
-	"gorm.io/gorm/logger"
-	"time"
-
-	_ "github.com/go-sql-driver/mysql"
-)
-
-// 达梦数据库连接
-func initDm2(dsn, aliasName string, newLogger logger.Interface, dmSqlMap map[string]*gorm.DB, isDefault bool) {
-	if dsn == `` {
-		return
-	}
-	//dsn := "dm://SYSDBA:SYSDBA001@8.136.199.33:30236?schema=\"eta_master\""
-	//dsn := "dm://ETA:Han6258199118%60@localhost:5236?schema=ECOLOGY_TARGET"
-	db, err := gorm.Open(dm.Open(dsn), &gorm.Config{
-		Logger: newLogger,
-	})
-	if err != nil {
-		//global.LOG.Errorf("mysql 启动异常,数据库:default;Err:", err)
-		panic(fmt.Errorf("mysql 启动异常,数据库:%s;Err:%s", aliasName, err))
-	}
-
-	//创建连接池
-	sqlDB, err := db.DB()
-	if err != nil {
-		//global.LOG.Errorf("mysql 创建连接池失败,数据库:default;Err:", err)
-		panic(fmt.Errorf("mysql 创建连接池失败,数据库:%s;Err:%s", aliasName, err))
-	}
-
-	dmSqlMap[aliasName] = db
-
-	//默认数据库连接
-	if isDefault {
-		DEFAULT_DmSQL = db
-	}
-
-	// SetMaxIdleConns 设置空闲连接池中连接的最大数量
-	sqlDB.SetMaxIdleConns(50)
-
-	// SetMaxOpenConns 设置打开数据库连接的最大数量。
-	sqlDB.SetMaxOpenConns(100)
-
-	// SetConnMaxLifetime 设置了连接可复用的最大时间。
-	sqlDB.SetConnMaxLifetime(10 * time.Minute)
-
-}