Browse Source

数据库初始化与全局变量更新

- 重构达梦数据库初始化与连接函数,实现数据库连接的统一管理。
- 更新全局变量,实现达梦数据库的默认连接配置。
- 修正多个ORM操作,使用新的全局数据库变量进行数据库操作。
Roc 5 months ago
parent
commit
2d8a86eec8

+ 15 - 3
global/dm.go

@@ -7,6 +7,7 @@ import (
 	"fmt"
 	"gorm.io/gorm"
 	"gorm.io/gorm/logger"
+	"gorm.io/gorm/schema"
 	"io"
 	"log"
 	"os"
@@ -15,13 +16,14 @@ import (
 	_ "github.com/go-sql-driver/mysql"
 )
 
-// 达梦数据库初始化
+// InitDm
+// @Description: 达梦数据库初始化
 func InitDm() {
 	dmSqlMap := make(map[string]*gorm.DB)
 
 	//开启日志
 	logWriter := io.MultiWriter(utils.Binlog) //binlog日志,记录到文件中去
-	if utils.RunMode == `debug` {             // 测试环境,默认输出在控制台,不需要的话,可以注释if里面下面的这行
+	if utils.RunMode == `dev` {               // 测试环境,默认输出在控制台,不需要的话,可以注释if里面下面的这行
 		logWriter = io.MultiWriter(utils.Binlog, os.Stdout)
 	}
 	newLogger := logger.New(log.New(logWriter, "\r\n", log.LstdFlags), logger.Config{
@@ -59,8 +61,15 @@ func InitDm() {
 
 }
 
-// 达梦数据库连接
+// connectDm
+// @Description: 达梦数据库连接
+// @param dsn
+// @param aliasName
+// @param newLogger
+// @param dmSqlMap
+// @param isDefault
 func connectDm(dsn, aliasName string, newLogger logger.Interface, dmSqlMap map[string]*gorm.DB, isDefault bool) {
+	//fmt.Println("dsn:", dsn, "  ==  ;aliasName:", aliasName)
 	if dsn == `` {
 		return
 	}
@@ -68,6 +77,9 @@ func connectDm(dsn, aliasName string, newLogger logger.Interface, dmSqlMap map[s
 	//dsn := "dm://ETA:Han6258199118%60@localhost:5236?schema=ECOLOGY_TARGET"
 	db, err := gorm.Open(dm.Open(dsn), &gorm.Config{
 		Logger: newLogger,
+		NamingStrategy: schema.NamingStrategy{
+			SingularTable: true, // 表示使用单数表名,启用该选项后,GORM 将不会对表名进行复数化处理
+		},
 	})
 	if err != nil {
 		//global.LOG.Errorf("mysql 启动异常,数据库:default;Err:", err)

+ 5 - 0
global/global.go

@@ -10,3 +10,8 @@ var (
 	DmSQL         map[string]*gorm.DB //数据库连接配置
 	DEFAULT_DmSQL *gorm.DB            //默认数据库连接配置
 )
+
+func init() {
+	// 初始化达梦连接
+	InitDm()
+}

+ 1 - 3
main.go

@@ -2,13 +2,13 @@ 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"
 	"time"
 
+	_ "eta_gn/eta_api/global"
 	_ "eta_gn/eta_api/routers"
 	"eta_gn/eta_api/services"
 	"eta_gn/eta_api/utils"
@@ -25,8 +25,6 @@ func main() {
 	}
 	go services.Task()
 
-	// 初始化达梦连接
-	global.InitDm()
 	// 初始化表数据入库
 	models.AfterInitTable()
 

+ 4 - 2
models/system/admin_verify_code_record.go

@@ -1,6 +1,7 @@
 package system
 
 import (
+	"eta_gn/eta_api/global"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"strings"
@@ -83,9 +84,10 @@ func (m *AdminVerifyCodeRecord) GetItemById(id int) (item *AdminVerifyCodeRecord
 }
 
 func (m *AdminVerifyCodeRecord) GetItemByCondition(condition string, pars []interface{}) (item *AdminVerifyCodeRecord, err error) {
-	o := orm.NewOrm()
+	o := global.DEFAULT_DmSQL
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = o.Raw(sql, pars).Find(&item).Error
+
 	return
 }
 

+ 8 - 6
models/system/sys_session.go

@@ -1,6 +1,7 @@
 package system
 
 import (
+	"eta_gn/eta_api/global"
 	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
@@ -16,14 +17,15 @@ type SysSession struct {
 	LastUpdatedTime time.Time
 }
 
+//func (m *SysSession) TableName() string {
+//	return "sys_session"
+//}
+
 // AddSysSession 新增用户登录session信息
 func AddSysSession(item *SysSession) (err error) {
-	o := orm.NewOrm()
-	lastId, err := o.Insert(item)
-	if err != nil {
-		return
-	}
-	item.Id = int(lastId)
+	o := global.DEFAULT_DmSQL
+	err = o.Create(item).Error
+
 	return
 }
 

+ 12 - 9
models/system/sys_user.go

@@ -1,6 +1,7 @@
 package system
 
 import (
+	"eta_gn/eta_api/global"
 	"eta_gn/eta_api/utils"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
@@ -68,8 +69,9 @@ type Admin struct {
 
 // Update 更新用户基础信息
 func (item *Admin) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(item, cols...)
+	o := global.DEFAULT_DmSQL
+	err = o.Select(cols).Updates(*item).Error
+
 	return
 }
 
@@ -156,7 +158,7 @@ func (item *Admin) GetItemsByCondition(condition string, pars []interface{}, fie
 
 // GetSysUserByMobile 手机号获取用户
 func GetSysUserByMobile(mobile string) (item *Admin, err error) {
-	o := orm.NewOrm()
+	o := global.DEFAULT_DmSQL
 	sql := `SELECT
 				a.*, b.role_type_code
 			FROM
@@ -165,13 +167,13 @@ func GetSysUserByMobile(mobile string) (item *Admin, err error) {
 			WHERE
 				a.mobile = ?
 			LIMIT 1`
-	err = o.Raw(sql, mobile).QueryRow(&item)
+	err = o.Raw(sql, mobile).Find(&item).Error
 	return
 }
 
 // GetSysUserByEmail 邮箱获取用户
 func GetSysUserByEmail(email string) (item *Admin, err error) {
-	o := orm.NewOrm()
+	o := global.DEFAULT_DmSQL
 	sql := `SELECT
 				a.*, b.role_type_code
 			FROM
@@ -180,21 +182,22 @@ func GetSysUserByEmail(email string) (item *Admin, err error) {
 			WHERE
 				a.email = ?
 			LIMIT 1`
-	err = o.Raw(sql, email).QueryRow(&item)
+	err = o.Raw(sql, email).Find(&item).Error
 	return
 }
 
 // GetSysUserByAdminName 账号获取用户
 func GetSysUserByAdminName(adminName string) (item *Admin, err error) {
-	o := orm.NewOrm()
+	o := global.DEFAULT_DmSQL
 	sql := `SELECT
 				a.*, b.role_type_code
 			FROM
-				admin AS a
+				"admin" AS a
 			INNER JOIN sys_role AS b ON a.role_id = b.role_id
 			WHERE
 				a.admin_name = ?
 			LIMIT 1`
-	err = o.Raw(sql, adminName).QueryRow(&item)
+	err = o.Raw(sql, adminName).Find(&item).Error
+
 	return
 }

+ 7 - 3
models/system/sys_user_login_record.go

@@ -1,7 +1,7 @@
 package system
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_api/global"
 	"time"
 )
 
@@ -14,9 +14,13 @@ type SysUserLoginRecord struct {
 	CreateTime time.Time
 }
 
+//func (m *SysUserLoginRecord) TableName() string {
+//	return "sys_user_login_record"
+//}
+
 // AddSysUserLoginRecord 新增登录记录
 func AddSysUserLoginRecord(item *SysUserLoginRecord) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Insert(item)
+	err = global.DEFAULT_DmSQL.Create(item).Error
+
 	return
 }