Эх сурвалжийг харах

beego orm --> gorm model 层改造

gmy 7 сар өмнө
parent
commit
339fa2e033

+ 99 - 0
global/dm.go

@@ -0,0 +1,99 @@
+package global
+
+import (
+	_ "dm"
+	dm "dmgorm2"
+	utils "eta_gn/eta_report/utils"
+	"fmt"
+	"io"
+	"log"
+	"os"
+	"time"
+
+	"gorm.io/gorm"
+	"gorm.io/gorm/logger"
+	"gorm.io/gorm/schema"
+
+	_ "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 == `dev` {               // 测试环境,默认输出在控制台,不需要的话,可以注释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,                   //是否颜色输出
+	})
+
+	// eta_report
+	connectDm("utils.DM_URL", "default", newLogger, dmSqlMap, true)
+
+	// eta_master
+	connectDm("utils.DM_URL_DATA", "eta", newLogger, dmSqlMap, false)
+
+	// crm_master
+	connectDm("utils.DM_URL_DATA", "weekly", newLogger, dmSqlMap, false)
+
+	//全局赋值数据库链接
+	DmSQL = dmSqlMap
+
+}
+
+// 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
+	}
+	//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,
+		NamingStrategy: schema.NamingStrategy{
+			SingularTable: true, // 表示使用单数表名,启用该选项后,GORM 将不会对表名进行复数化处理
+		},
+	})
+	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)
+
+}

+ 17 - 0
global/global.go

@@ -0,0 +1,17 @@
+package global
+
+import (
+	_ "dm"
+	_ "github.com/go-sql-driver/mysql"
+	"gorm.io/gorm"
+)
+
+var (
+	DmSQL         map[string]*gorm.DB //数据库连接配置
+	DEFAULT_DmSQL *gorm.DB            //默认数据库连接配置
+)
+
+func init() {
+	// 初始化达梦连接
+	InitDm()
+}

+ 4 - 0
go.mod

@@ -12,6 +12,7 @@ require (
 	github.com/minio/minio-go/v7 v7.0.69
 	github.com/rdlucklib/rdluck_tools v1.0.3
 	gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
+	gorm.io/gorm v1.25.12
 )
 
 require (
@@ -20,8 +21,11 @@ require (
 	github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
 	github.com/dustin/go-humanize v1.0.1 // indirect
 	github.com/golang/protobuf v1.5.3 // indirect
+	github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db // indirect
 	github.com/google/uuid v1.6.0 // indirect
 	github.com/hashicorp/golang-lru v0.5.4 // indirect
+	github.com/jinzhu/inflection v1.0.0 // indirect
+	github.com/jinzhu/now v1.1.5 // indirect
 	github.com/jmespath/go-jmespath v0.4.0 // indirect
 	github.com/json-iterator/go v1.1.12 // indirect
 	github.com/klauspost/compress v1.17.6 // indirect

+ 7 - 0
go.sum

@@ -76,6 +76,7 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS
 github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
 github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
 github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db h1:woRePGFeVFfLKN/pOkfl+p/TAqKOfFu+7KPlMVpok/w=
 github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
 github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
@@ -90,6 +91,10 @@ github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
 github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
 github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
 github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
+github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
+github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
+github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
 github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
 github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
 github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
@@ -274,3 +279,5 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 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/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8=
+gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=

+ 21 - 3
models/business_conf.go

@@ -1,7 +1,7 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_report/global"
 	"html"
 	"time"
 )
@@ -25,7 +25,7 @@ const (
 
 // BusinessConf 商户配置表
 type BusinessConf struct {
-	Id         int    `orm:"column(id);pk"`
+	Id         int    `gorm:"primaryKey;autoIncrement;column:id"`
 	ConfKey    string `description:"配置Key"`
 	ConfVal    string `description:"配置值"`
 	ValType    int    `description:"1-字符串;2-数值;3-字符串数组;4-富文本;"`
@@ -36,7 +36,7 @@ type BusinessConf struct {
 
 // GetBusinessConf 获取商家配置
 func GetBusinessConf() (list map[string]string, err error) {
-	list = make(map[string]string)
+	/*list = make(map[string]string)
 
 	var items []*BusinessConf
 	o := orm.NewOrmUsingDB("eta")
@@ -46,6 +46,23 @@ func GetBusinessConf() (list map[string]string, err error) {
 		return
 	}
 
+	for _, v := range items {
+		if v.ValType == 4 {
+			list[v.ConfKey] = html.UnescapeString(v.ConfVal)
+			continue
+		}
+		list[v.ConfKey] = v.ConfVal
+	}*/
+
+	// TODO 改写为 gorm 操作达梦数据库
+	var items []*BusinessConf
+	o := global.DEFAULT_DmSQL
+	sql := `SELECT * FROM business_conf`
+	err = o.Raw(sql).Scan(&items).Error
+	if err != nil {
+		return
+	}
+
 	for _, v := range items {
 		if v.ValType == 4 {
 			list[v.ConfKey] = html.UnescapeString(v.ConfVal)
@@ -54,4 +71,5 @@ func GetBusinessConf() (list map[string]string, err error) {
 		list[v.ConfKey] = v.ConfVal
 	}
 	return
+
 }

+ 20 - 18
models/english_company.go

@@ -1,13 +1,13 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_report/global"
 	"time"
 )
 
 // EnglishCompany 英文客户
 type EnglishCompany struct {
-	CompanyId   int       `orm:"column(company_id);pk" description:"英文客户ID"`
+	CompanyId   int       `gorm:"primaryKey;autoIncrement;column:company_id"`
 	CompanyName string    `description:"客户名称"`
 	CountryCode string    `description:"国家Code"`
 	Country     string    `description:"国家"`
@@ -24,12 +24,9 @@ func (item *EnglishCompany) TableName() string {
 }
 
 func (item *EnglishCompany) Create() (err error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(item)
-	if err != nil {
-		return
-	}
-	item.CompanyId = int(id)
+
+	err = global.DEFAULT_DmSQL.Create(item).Error
+
 	return
 }
 
@@ -43,39 +40,44 @@ type EnglishCompanySaveReq struct {
 }
 
 func (item *EnglishCompany) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(item, cols...)
+
+	err = global.DEFAULT_DmSQL.Model(item).Select(cols).Updates(item).Error
+
 	return
 }
 
 // GetEnglishCompanyById 主键获取客户
 func GetEnglishCompanyById(id int) (item *EnglishCompany, err error) {
-	o := orm.NewOrm()
+
 	sql := `SELECT * FROM english_company WHERE is_deleted = 0 AND company_id = ? LIMIT 1`
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DEFAULT_DmSQL.Raw(sql, id).Scan(&item).Error
+
 	return
 }
 
 // GetEnglishCompanyByName 名称获取客户
 func GetEnglishCompanyByName(companyName string) (item *EnglishCompany, err error) {
-	o := orm.NewOrm()
+
 	sql := `SELECT * FROM english_company WHERE is_deleted = 0 AND company_name = ? LIMIT 1`
-	err = o.Raw(sql, companyName).QueryRow(&item)
+	err = global.DEFAULT_DmSQL.Raw(sql, companyName).Scan(&item).Error
+
 	return
 }
 
 // UpdateEnglishCompanyViewTotal 更新英文客户阅读量
 func UpdateEnglishCompanyViewTotal(companyId int) (err error) {
-	o := orm.NewOrm()
+
 	sql := `UPDATE english_company SET view_total = view_total+1 WHERE company_id = ? `
-	_, err = o.Raw(sql, companyId).Exec()
+	err = global.DEFAULT_DmSQL.Exec(sql, companyId).Error
+
 	return
 }
 
 // UpdateTrialEnglishCompanyViewTotal 更新英文客户阅读量-ETA试用平台
 func UpdateTrialEnglishCompanyViewTotal(companyId int) (err error) {
-	o := orm.NewOrm()
+
 	sql := `UPDATE english_company SET view_total = view_total+1 WHERE company_id = ? `
-	_, err = o.Raw(sql, companyId).Exec()
+	err = global.DEFAULT_DmSQL.Exec(sql, companyId).Error
+
 	return
 }

+ 21 - 14
models/english_report.go

@@ -1,9 +1,11 @@
 package models
 
-import "github.com/beego/beego/v2/client/orm"
+import (
+	"eta_gn/eta_report/global"
+)
 
 type EnglishReportDetail struct {
-	Id                 int    `orm:"column(id)" description:"报告Id"`
+	Id                 int    `gorm:"primaryKey;autoIncrement;column:id"`
 	AddType            int    `description:"新增方式:1:新增报告,2:继承报告"`
 	ClassifyIdFirst    int    `description:"一级分类id"`
 	ClassifyNameFirst  string `description:"一级分类名称"`
@@ -31,9 +33,9 @@ type EnglishReportDetail struct {
 }
 
 func GetEnglishReportByCode(reportCode string) (item *EnglishReportDetail, err error) {
-	o := orm.NewOrm()
+
 	sql := `SELECT * FROM english_report WHERE report_code=?`
-	err = o.Raw(sql, reportCode).QueryRow(&item)
+	err = global.DEFAULT_DmSQL.Raw(sql, reportCode).Scan(&item).Error
 	return
 }
 
@@ -49,36 +51,41 @@ type EnglishReportShareDetailResp struct {
 }
 
 func UpdateEnglishReportCounts(reportCode string) (err error) {
-	o := orm.NewOrm()
+
 	sql := `UPDATE english_report SET pv = pv+1 WHERE report_code = ?  `
-	_, err = o.Raw(sql, reportCode).Exec()
+	err = global.DEFAULT_DmSQL.Exec(sql, reportCode).Error
 	return
+
 }
 
 func UpdateEnglishReportEmailCounts(reportCode string) (err error) {
-	o := orm.NewOrm()
+
 	sql := `UPDATE english_report SET pv_email = pv_email+1 WHERE report_code = ?  `
-	_, err = o.Raw(sql, reportCode).Exec()
+	err = global.DEFAULT_DmSQL.Exec(sql, reportCode).Error
+
 	return
 }
 
 func GetTrialEnglishReportByCode(reportCode string) (item *EnglishReportDetail, err error) {
-	o := orm.NewOrm()
+
 	sql := `SELECT * FROM english_report WHERE report_code=?`
-	err = o.Raw(sql, reportCode).QueryRow(&item)
+	err = global.DEFAULT_DmSQL.Raw(sql, reportCode).Scan(&item).Error
+
 	return
 }
 
 func UpdateTrialEnglishReportCounts(reportCode string) (err error) {
-	o := orm.NewOrm()
+
 	sql := `UPDATE english_report SET pv = pv+1 WHERE report_code = ?  `
-	_, err = o.Raw(sql, reportCode).Exec()
+	err = global.DEFAULT_DmSQL.Exec(sql, reportCode).Error
+
 	return
 }
 
 func UpdateTrialEnglishReportEmailCounts(reportCode string) (err error) {
-	o := orm.NewOrm()
+
 	sql := `UPDATE english_report SET pv_email = pv_email+1 WHERE report_code = ?  `
-	_, err = o.Raw(sql, reportCode).Exec()
+	err = global.DEFAULT_DmSQL.Exec(sql, reportCode).Error
+
 	return
 }

+ 19 - 18
models/english_report_email.go

@@ -1,13 +1,13 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_report/global"
 	"time"
 )
 
 // EnglishReportEmail 英文研报-邮箱/客户联系人
 type EnglishReportEmail struct {
-	Id           int       `orm:"column(id);pk" description:"邮箱ID"`
+	Id           int       `gorm:"primaryKey;autoIncrement;column:id"`
 	CompanyId    int       `description:"客户ID"`
 	Name         string    `description:"联系人名称"`
 	Email        string    `description:"邮箱地址"`
@@ -32,49 +32,50 @@ type EnglishReportEmailSaveReq struct {
 }
 
 func (item *EnglishReportEmail) Create() (err error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(item)
-	if err != nil {
-		return
-	}
-	item.Id = int(id)
+	// 使用 GORM 插入记录
+	err = global.DEFAULT_DmSQL.Create(item).Error
+
 	return
 }
 
 func (item *EnglishReportEmail) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(item, cols...)
+
+	err = global.DEFAULT_DmSQL.Model(item).Select(cols).Updates(item).Error
+
 	return
 }
 
 // GetEnglishReportEmailById 主键获取邮箱
 func GetEnglishReportEmailById(id int) (item *EnglishReportEmail, err error) {
-	o := orm.NewOrm()
+
 	sql := `SELECT * FROM english_report_email WHERE is_deleted = 0 AND id = ? LIMIT 1`
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DEFAULT_DmSQL.Raw(sql, id).Scan(&item).Error
+
 	return
 }
 
 // UpdateEnglishReportEmailViewTotal 更新英文联系人阅读量
 func UpdateEnglishReportEmailViewTotal(emailId int) (err error) {
-	o := orm.NewOrm()
+
 	sql := `UPDATE english_report_email SET view_total = view_total+1, last_view_time = NOW() WHERE id = ? `
-	_, err = o.Raw(sql, emailId).Exec()
+	err = global.DEFAULT_DmSQL.Exec(sql, emailId).Error
 	return
+
 }
 
 // GetTrialEnglishReportEmailById 主键获取邮箱-ETA试用平台
 func GetTrialEnglishReportEmailById(id int) (item *EnglishReportEmail, err error) {
-	o := orm.NewOrm()
+
 	sql := `SELECT * FROM english_report_email WHERE is_deleted = 0 AND id = ? LIMIT 1`
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DEFAULT_DmSQL.Raw(sql, id).Scan(&item).Error
 	return
 }
 
 // UpdateTrialEnglishReportEmailViewTotal 更新英文联系人阅读量-ETA试用平台
 func UpdateTrialEnglishReportEmailViewTotal(emailId int) (err error) {
-	o := orm.NewOrm()
+
 	sql := `UPDATE english_report_email SET view_total = view_total+1, last_view_time = NOW() WHERE id = ? `
-	_, err = o.Raw(sql, emailId).Exec()
+	err = global.DEFAULT_DmSQL.Exec(sql, emailId).Error
+
 	return
 }

+ 5 - 4
models/english_report_email_pv.go

@@ -1,13 +1,13 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_report/global"
 	"time"
 )
 
 // EnglishReportEmailPV 英文研报-邮箱pv
 type EnglishReportEmailPV struct {
-	Id         int       `orm:"column(id);pk"`
+	Id         int       `gorm:"primaryKey;autoIncrement;column:id"`
 	ReportId   int       `description:"英文报告ID"`
 	EmailId    int       `description:"邮箱ID"`
 	CreateTime time.Time `description:"创建时间"`
@@ -15,8 +15,9 @@ type EnglishReportEmailPV struct {
 
 // InsertTrialEnglishReportEmailPV ETA试用平台-新增英文邮箱PV
 func InsertTrialEnglishReportEmailPV(item *EnglishReportEmailPV) (err error) {
-	o := orm.NewOrm()
+
 	sql := `INSERT INTO english_report_email_pv(report_id, email_id, create_time) VALUES(?, ?, ?)`
-	_, err = o.Raw(sql, item.ReportId, item.EmailId, item.CreateTime).Exec()
+	err = global.DEFAULT_DmSQL.Exec(sql, item.ReportId, item.EmailId, item.CreateTime).Error
+
 	return
 }

+ 8 - 6
models/report.go

@@ -1,12 +1,12 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_report/global"
 	"time"
 )
 
 type Report struct {
-	Id                 int    `description:"报告Id"`
+	Id                 int    `gorm:"primaryKey;autoIncrement;column:id"`
 	AddType            int    `description:"新增方式:1:新增报告,2:继承报告"`
 	ClassifyIdFirst    int    `description:"一级分类id"`
 	ClassifyNameFirst  string `description:"一级分类名称"`
@@ -58,9 +58,10 @@ type Report struct {
 }
 
 func GetReportByCode(reportCode string) (item *Report, err error) {
-	o := orm.NewOrm()
+
 	sql := `SELECT * FROM report WHERE report_code=?`
-	err = o.Raw(sql, reportCode).QueryRow(&item)
+	err = global.DEFAULT_DmSQL.Raw(sql, reportCode).Scan(&item).Error
+
 	return
 }
 
@@ -87,8 +88,9 @@ type ReportItem struct {
 // @param reportId int
 // @return err error
 func UpdateReportPv(reportId int) (err error) {
-	o := orm.NewOrm()
+
 	sql := `UPDATE report SET pv = pv + 1 WHERE id = ?`
-	_, err = o.Raw(sql, reportId).Exec()
+	err = global.DEFAULT_DmSQL.Exec(sql, reportId).Error
+
 	return
 }

+ 5 - 4
models/report_chapter.go

@@ -1,13 +1,13 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta_gn/eta_report/global"
 	"time"
 )
 
 // ReportChapter 报告章节
 type ReportChapter struct {
-	ReportChapterId   int       `orm:"column(report_chapter_id);pk" description:"报告章节ID"`
+	ReportChapterId   int       `gorm:"primaryKey;autoIncrement;column:reportChapterId"`
 	ReportId          int       `description:"报告ID"`
 	ReportType        string    `description:"报告类型 day-晨报 week-周报"`
 	ClassifyIdFirst   int       `description:"一级分类id"`
@@ -38,8 +38,9 @@ type ReportChapter struct {
 
 // GetPublishedChapterListByReportId 根据ReportId获取已发布章节列表
 func GetPublishedChapterListByReportId(reportId int) (list []*ReportChapter, err error) {
-	o := orm.NewOrm()
+
 	sql := ` SELECT * FROM report_chapter WHERE report_id = ? AND publish_state = 2 ORDER BY sort ASC`
-	_, err = o.Raw(sql, reportId).QueryRows(&list)
+	err = global.DEFAULT_DmSQL.Raw(sql, reportId).Scan(&list).Error
+
 	return
 }

+ 5 - 4
models/report_chapter_type.go

@@ -1,13 +1,13 @@
 package models
 
 import (
+	"eta_gn/eta_report/global"
 	"eta_gn/eta_report/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 type ReportChapterType struct {
-	ReportChapterTypeId    int       `orm:"column(report_chapter_type_id);pk" description:"报告章节类型id"`
+	ReportChapterTypeId    int       `gorm:"primaryKey;autoIncrement;column:report_chapter_type_id"`
 	ReportChapterTypeKey   string    `description:"章节key"`
 	ReportChapterTypeThumb string    `description:"H5展示的图片"`
 	BannerUrl              string    `description:"banner显示图片"`
@@ -36,8 +36,9 @@ func GetAllReportChapterTypeListByResearchType(researchType string) (list []*Rep
 	if utils.BusinessCode != utils.BusinessCodeRelease {
 		return
 	}
-	o := orm.NewOrmUsingDB("weekly")
+
 	sql := ` SELECT * FROM report_chapter_type WHERE research_type = ?`
-	_, err = o.Raw(sql, researchType).QueryRows(&list)
+	err = global.DEFAULT_DmSQL.Raw(sql, researchType).Scan(&list).Error
+
 	return
 }

+ 25 - 17
models/smart_report.go

@@ -1,16 +1,17 @@
 package models
 
 import (
+	"eta_gn/eta_report/global"
 	"eta_gn/eta_report/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"html"
+	"log"
 	"time"
 )
 
 // SmartReport 智能研报
 type SmartReport struct {
-	SmartReportId       int       `orm:"column(smart_report_id);pk" description:"智能研报ID"`
+	SmartReportId       int       `gorm:"primaryKey;autoIncrement;column:smart_report_id" description:"智能研报ID"`
 	ReportCode          string    `description:"报告唯一编码"`
 	ClassifyIdFirst     int       `description:"一级分类ID"`
 	ClassifyNameFirst   string    `description:"一级分类名称"`
@@ -65,32 +66,37 @@ func (m *SmartReport) PrimaryId() string {
 }
 
 func (m *SmartReport) Create() (err error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(m)
+
+	// 使用 GORM 插入记录
+	err = global.DEFAULT_DmSQL.Create(m).Error
 	if err != nil {
+		log.Printf("插入失败: %v", err)
 		return
 	}
-	m.SmartReportId = int(id)
+
 	return
 }
 
 func (m *SmartReport) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+
+	err = global.DEFAULT_DmSQL.Model(m).Select(cols).Updates(m).Error
+
 	return
 }
 
 func (m *SmartReport) GetItemById(id int) (item *SmartReport, err 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)
+	err = global.DEFAULT_DmSQL.Raw(sql, id).Scan(&item).Error
+
 	return
 }
 
 func (m *SmartReport) GetItemByCondition(condition string, pars []interface{}) (item *SmartReport, err 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)
+
+	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s`, m.TableName(), condition)
+	err = global.DEFAULT_DmSQL.Raw(sql, pars).Scan(&item).Error
+
 	return
 }
 
@@ -196,14 +202,15 @@ type SmartReportShareDetailResp struct {
 
 // UpdateSmartReportPv 研报pv自增
 func UpdateSmartReportPv(reportId int) (err error) {
-	o := orm.NewOrm()
+
 	sql := `UPDATE smart_report SET pv = pv + 1 WHERE smart_report_id = ?`
-	_, err = o.Raw(sql, reportId).Exec()
+	err = global.DEFAULT_DmSQL.Exec(sql, reportId).Error
+
 	return
 }
 
 type SmartReportResource struct {
-	ResourceId int       `orm:"column(resource_id);pk" description:"智能研报资源ID"`
+	ResourceId int       `gorm:"primaryKey;autoIncrement;column:resource_id" description:"智能研报资源ID"`
 	ImgUrl     string    // 图片链接
 	Style      string    // 版图样式
 	ImgName    string    // 图片名称
@@ -212,9 +219,10 @@ type SmartReportResource struct {
 }
 
 func GetResourceItemById(id int) (item *SmartReportResource, err error) {
-	o := orm.NewOrm()
+
 	sql := fmt.Sprintf(`SELECT * FROM smart_report_resource WHERE resource_id = ? LIMIT 1`)
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DEFAULT_DmSQL.Raw(sql, id).Scan(&item).Error
+
 	return
 }