Browse Source

change gorm

Roc 3 weeks ago
parent
commit
2fe89af1df

+ 2 - 2
controllers/base_from_mtjh.go

@@ -247,11 +247,11 @@ func (this *MtjhDataController) Mtjh() {
 		}
 	}
 	if len(indexAddList) > 0 {
-		newId, err := models.AddBaseFromMtjhIndexMuti(indexAddList)
+		err = models.AddBaseFromMtjhIndexMuti(indexAddList)
 		if err != nil {
 			fmt.Println("添加指标名称错误", err.Error())
 		} else {
-			fmt.Println("添加指标名称成功", newId)
+			fmt.Println("添加指标名称成功")
 		}
 	}
 

+ 8 - 13
models/base_from_ly_classify.go

@@ -4,22 +4,17 @@ package models
 import (
 	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
+	"time"
 )
 
 type BaseFromLyClassify struct {
-	BaseFromLyClassifyId int `gorm:"column:base_from_ly_classify_id;primaryKey"` // 分类ID
-	//BaseFromLyClassifyId int    `orm:"column(base_from_ly_classify_id);pk"` // 分类ID
-	CreateTime     string `orm:"column(create_time)"`      // 创建时间
-	ModifyTime     string `orm:"column(modify_time)"`      // 修改时间
-	ClassifyName   string `orm:"column(classify_name)"`    // 分类名称
-	ParentId       int    `orm:"column(parent_id)"`        // 上级id
-	Sort           int    `orm:"column(sort)"`             // 排序字段,越小越靠前
-	ClassifyNameEn string `orm:"column(classify_name_en)"` // 英文分类名称
-}
-
-func init() {
-	orm.RegisterModel(new(BaseFromLyClassify))
+	BaseFromLyClassifyId int       `gorm:"column:base_from_ly_classify_id;type:int(11) UNSIGNED;comment:分类ID;primaryKey;not null;"` // 分类ID
+	CreateTime           time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;not null;default:CURRENT_TIMESTAMP;"`       // 创建时间
+	ModifyTime           time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;not null;default:CURRENT_TIMESTAMP;"`       // 修改时间
+	ClassifyName         string    `gorm:"column:classify_name;type:varchar(255);comment:分类名称;not null;"`                           // 分类名称
+	ParentId             int32     `gorm:"column:parent_id;type:int(11) UNSIGNED;comment:上级id;default:0;"`                          // 上级id
+	Sort                 int32     `gorm:"column:sort;type:int(9) UNSIGNED;comment:排序字段,越小越靠前;default:0;"`                          // 排序字段,越小越靠前
+	ClassifyNameEn       string    `gorm:"column:classify_name_en;type:varchar(255);comment:英文分类名称;"`                               // 英文分类名称
 }
 
 // GetLyClassifyByName 根据分类名称查询

+ 14 - 11
models/base_from_ly_data.go

@@ -4,22 +4,25 @@ package models
 import (
 	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
+	"time"
 )
 
 type BaseFromLyData struct {
-	BaseFromLyDataId int `gorm:"column:base_from_ly_data_id;primaryKey"` // 数据ID
-	//BaseFromLyDataId  int     `orm:"column(base_from_ly_data_id);pk"` // 数据ID
-	CreateTime        string  `orm:"column(create_time)"`           // 创建时间
-	ModifyTime        string  `orm:"column(modify_time)"`           // 修改时间
-	BaseFromLyIndexId int     `orm:"column(base_from_ly_index_id)"` // 指标id
-	IndexCode         string  `orm:"column(index_code)"`            // 指标编码
-	DataTime          string  `orm:"column(data_time)"`             // 数据日期
-	Value             float64 `orm:"column(value)"`                 // 数据值
+	BaseFromLyDataId  int       `gorm:"column:base_from_ly_data_id;type:int(10) UNSIGNED;primaryKey;not null;"`
+	CreateTime        time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;not null;default:CURRENT_TIMESTAMP;"` // 创建时间
+	ModifyTime        time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;not null;default:CURRENT_TIMESTAMP;"` // 修改时间
+	BaseFromLyIndexId int       `gorm:"column:base_from_ly_index_id;type:int(10) UNSIGNED;comment:指标id;not null;"`         // 指标id
+	IndexCode         string    `gorm:"column:index_code;type:varchar(128);comment:指标编码;not null;"`                        // 指标编码
+	DataTime          string    `gorm:"column:data_time;type:date;comment:数据日期;default:NULL;"`                             // 数据日期
+	Value             float64   `gorm:"column:value;type:double;comment:数据值;default:NULL;"`                                // 数据值
 }
 
-func init() {
-	orm.RegisterModel(new(BaseFromLyData))
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromLyData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
 }
 
 // AddLyDataList 批量插入数据记录列表

+ 13 - 17
models/base_from_ly_index.go

@@ -5,26 +5,22 @@ package models
 import (
 	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
 type BaseFromLyIndex struct {
-	//BaseFromLyIndexId    int    `orm:"column(base_from_ly_index_id);pk"`         // 指标ID
-	BaseFromLyIndexId    int    `gorm:"column:base_from_ly_index_id;primaryKey"` // 指标ID
-	CreateTime           string `orm:"column(create_time)"`                      // 创建时间
-	ModifyTime           string `orm:"column(modify_time)"`                      // 修改时间
-	BaseFromLyClassifyId int    `orm:"column(base_from_ly_classify_id)"`         // 原始数据指标分类id
-	IndexCode            string `orm:"column(index_code)"`                       // 指标编码
-	IndexName            string `orm:"column(index_name)"`                       // 指标名称
-	Frequency            string `orm:"column(frequency)"`                        // 频度
-	Unit                 string `orm:"column(unit)"`                             // 单位
-	EdbExist             int    `orm:"column(edb_exist)"`                        // 指标库是否已添加:0-否;1-是
-}
-
-// 在 init 函数中注册模型
-func init() {
-	orm.RegisterModel(new(BaseFromLyIndex))
+	BaseFromLyIndexId    int       `gorm:"column:base_from_ly_index_id;type:int(11);primaryKey;not null;"`
+	CreateTime           time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;not null;default:CURRENT_TIMESTAMP;"`            // 创建时间
+	ModifyTime           time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;not null;default:CURRENT_TIMESTAMP;"`            // 修改时间
+	BaseFromLyClassifyId int       `gorm:"column:base_from_ly_classify_id;type:int(11) UNSIGNED;comment:原始数据指标分类id;not null;default:0;"` // 原始数据指标分类id
+	IndexCode            string    `gorm:"column:index_code;type:varchar(255);comment:指标编码;"`                                            // 指标编码
+	IndexName            string    `gorm:"column:index_name;type:varchar(255);comment:指标名称;"`                                            // 指标名称
+	Frequency            string    `gorm:"column:frequency;type:varchar(20);comment:频度;"`                                                // 频度
+	Unit                 string    `gorm:"column:unit;type:varchar(30);comment:单位;"`                                                     // 单位
+	EdbExist             int       `gorm:"column:edb_exist;type:tinyint(4) UNSIGNED;comment:指标库是否已添加:0-否;1-是;not null;default:0;"`       // 指标库是否已添加:0-否;1-是
+	StartDate            time.Time `gorm:"column:start_date;type:date;comment:数据开始日期;default:NULL;"`                                     // 数据开始日期
+	EndDate              time.Time `gorm:"column:end_date;type:date;comment:数据结束日期;default:NULL;"`                                       // 数据结束日期
+	LatestValue          float64   `gorm:"column:latest_value;type:double;comment:数据最新值;default:NULL;"`                                  // 数据最新值
 }
 
 // AddLyIndexList 批量插入指标记录列表
@@ -37,7 +33,7 @@ func AddLyIndexList(items []*BaseFromLyIndex) (err error) {
 
 // AddLyIndex 添加指标
 func AddLyIndex(item *BaseFromLyIndex) (int64, error) {
-	item.CreateTime = time.Now().Format("2006-01-02 15:04:05")
+	item.CreateTime = time.Now()
 	//o := orm.NewOrm()
 	//id, err := o.Insert(item)
 	err := global.DEFAULT_DB.Create(item).Error

+ 0 - 6
models/base_from_ly_index_record.go

@@ -5,7 +5,6 @@ package models
 import (
 	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 )
 
 type BaseFromLyIndexRecord struct {
@@ -19,11 +18,6 @@ type BaseFromLyIndexRecord struct {
 	DataTime   string `orm:"column(data_time)"`   // 数据日期
 }
 
-// 在 init 函数中注册模型
-func init() {
-	orm.RegisterModel(new(BaseFromLyIndexRecord))
-}
-
 // AddLyIndexRecord 添加指标记录
 func AddLyIndexRecord(item *BaseFromLyIndexRecord) (int64, error) {
 	//o := orm.NewOrm()

+ 1 - 3
models/base_from_manual.go

@@ -5,7 +5,6 @@ import (
 	"eta/eta_index_lib/models/mgo"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
 	"go.mongodb.org/mongo-driver/bson"
 	"strconv"
@@ -259,9 +258,8 @@ func HandleConfigInsertEdbData(realDataMaxDate time.Time, edbDataInsertConfig *E
 			DeleteEdbDataById(source, subSource, item.EdbDataId)
 		}
 	} else {
-		o := orm.NewOrm()
 		edbDataInsertConfig.RealDate = realDataMaxDate
-		_, err = o.Update(edbDataInsertConfig, "RealDate")
+		err = global.DEFAULT_DB.Model(edbDataInsertConfig).Select([]string{"RealDate"}).Updates(edbDataInsertConfig).Error
 	}
 
 	return

+ 3 - 4
models/base_from_mtjh.go

@@ -4,7 +4,6 @@ import (
 	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"gorm.io/gorm"
 	"strconv"
 	"strings"
@@ -76,9 +75,9 @@ func AddBaseFromMtjhIndex(item *BaseFromMtjhIndex) (lastId int64, err error) {
 	return
 }
 
-func AddBaseFromMtjhIndexMuti(items []*BaseFromMtjhIndex) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.InsertMulti(500, items)
+func AddBaseFromMtjhIndexMuti(items []*BaseFromMtjhIndex) (err error) {
+	err = global.DEFAULT_DB.CreateInBatches(items, utils.MultiAddNum).Error
+
 	return
 }
 

+ 0 - 5
models/base_from_rzd_classify.go

@@ -4,7 +4,6 @@ package models
 import (
 	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 )
 
 type BaseFromRzdClassify struct {
@@ -18,10 +17,6 @@ type BaseFromRzdClassify struct {
 	ClassifyNameEn string `orm:"column(classify_name_en)"`
 }
 
-func init() {
-	orm.RegisterModel(new(BaseFromRzdClassify))
-}
-
 // GetRzdClassifyByName 根据分类名称查询
 func GetRzdClassifyByName(classifyName string) (item *BaseFromRzdClassify, err error) {
 	//o := orm.NewOrm()

+ 23 - 7
models/base_from_rzd_data.go

@@ -4,7 +4,7 @@ package models
 import (
 	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 )
 
 type BaseFromRzdData struct {
@@ -18,8 +18,21 @@ type BaseFromRzdData struct {
 	Value              float64 `orm:"column(value)"`
 }
 
-func init() {
-	orm.RegisterModel(new(BaseFromRzdData))
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *BaseFromRzdData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+
+	return
+}
+
+func (m *BaseFromRzdData) ConvDateTimeStr() {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+	m.CreateTime = utils.GormDateStrToDateTimeStr(m.CreateTime)
+	m.ModifyTime = utils.GormDateStrToDateTimeStr(m.ModifyTime)
+
+	return
 }
 
 // AddRzdDataList 批量插入数据记录列表
@@ -27,21 +40,24 @@ func AddRzdDataList(items []BaseFromRzdData) (err error) {
 	//o := orm.NewOrm()
 	//_, err = o.InsertMulti(len(items), items)
 	err = global.DEFAULT_DB.CreateInBatches(items, len(items)).Error
+
 	return
 }
 
 // GetRzdDataByIndexCodeAndDataTime 根据指标id和数据日期查询数据
-func GetRzdDataByIndexCodeAndDataTime(indexCode string, dataTime string) (items BaseFromRzdData, err error) {
+func GetRzdDataByIndexCodeAndDataTime(indexCode string, dataTime string) (item BaseFromRzdData, err error) {
 	//o := orm.NewOrm()
 	sql := `SELECT * FROM base_from_rzd_data WHERE index_code=? AND data_time=?`
 	//err = o.Raw(sql, indexCode, dataTime).QueryRow(&items) // 使用 QueryRow
-	err = global.DEFAULT_DB.Raw(sql, indexCode, dataTime).First(&items).Error
+	err = global.DEFAULT_DB.Raw(sql, indexCode, dataTime).First(&item).Error
 	if utils.IsErrNoRow(err) {
-		return items, nil
+		return item, nil
 	}
 	if err != nil {
-		return items, err
+		return item, err
 	}
+	item.ConvDateTimeStr()
+
 	return
 }
 

+ 12 - 15
models/base_from_rzd_index.go

@@ -5,24 +5,21 @@ package models
 import (
 	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
+	"time"
 )
 
 type BaseFromRzdIndex struct {
-	BaseFromRzdIndexId int `gorm:"column:base_from_rzd_index_id;prmaryKey"`
-	//BaseFromRzdIndexId   int    `orm:"column(base_from_rzd_index_id);pk"`
-	CreateTime           string `orm:"column(create_time)"`
-	ModifyTime           string `orm:"column(modify_time)"`
-	BaseFromLyClassifyId int    `orm:"column(base_from_rzd_classify_id)"`
-	IndexCode            string `orm:"column(index_code)"`
-	IndexName            string `orm:"column(index_name)"`
-	Frequency            string `orm:"column(frequency)"`
-	Unit                 string `orm:"column(unit)"`
-}
-
-// 在 init 函数中注册模型
-func init() {
-	orm.RegisterModel(new(BaseFromRzdIndex))
+	BaseFromRzdIndexId    int       `gorm:"column:base_from_rzd_index_id;type:int(11);primaryKey;not null;"`
+	CreateTime            time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;not null;default:CURRENT_TIMESTAMP;"`             // 创建时间
+	ModifyTime            time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;not null;default:CURRENT_TIMESTAMP;"`             // 修改时间
+	BaseFromRzdClassifyId int       `gorm:"column:base_from_rzd_classify_id;type:int(11) UNSIGNED;comment:原始数据指标分类id;not null;default:0;"` // 原始数据指标分类id
+	IndexCode             string    `gorm:"column:index_code;type:varchar(255);comment:指标编码;"`                                             // 指标编码
+	IndexName             string    `gorm:"column:index_name;type:varchar(255);comment:指标名称;"`                                             // 指标名称
+	Frequency             string    `gorm:"column:frequency;type:varchar(20);comment:频度;"`                                                 // 频度
+	Unit                  string    `gorm:"column:unit;type:varchar(30);comment:单位;"`                                                      // 单位
+	StartDate             time.Time `gorm:"column:start_date;type:date;comment:数据开始日期;default:NULL;"`                                      // 数据开始日期
+	EndDate               time.Time `gorm:"column:end_date;type:date;comment:数据结束日期;default:NULL;"`                                        // 数据结束日期
+	LatestValue           float64   `gorm:"column:latest_value;type:double;comment:数据最新值;default:NULL;"`                                   // 数据最新值
 }
 
 // AddRzdIndexList 批量插入指标记录列表

+ 45 - 51
models/base_from_ths_hf_data.go

@@ -1,25 +1,24 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
 
 // BaseFromThsHfData 同花顺高频数据-指标数据
 type BaseFromThsHfData struct {
-	BaseFromThsHfDataId int `orm:"column(base_from_ths_hf_data_id);pk"`
-	//BaseFromThsHfDataId  int       `orm:"column(base_from_ths_hf_data_id);pk"`
-	BaseFromThsHfIndexId int       `description:"指标ID"`
-	IndexCode            string    `description:"指标编码"`
-	DataTime             time.Time `description:"数据日期(至时分秒)"`
-	Value                float64   `description:"数据值"`
-	UniqueCode           string    `description:"唯一编码"`
-	CreateTime           time.Time `description:"创建时间"`
-	ModifyTime           time.Time `description:"修改时间"`
-	DataTimestamp        int64     `description:"数据日期时间戳"`
+	BaseFromThsHfDataId  int       `gorm:"column:base_from_ths_hf_data_id;type:int(10) UNSIGNED;primaryKey;not null;"`
+	BaseFromThsHfIndexId int       `gorm:"column:base_from_ths_hf_index_id;type:int(10) UNSIGNED;comment:指标id;not null;"`      // 指标id
+	IndexCode            string    `gorm:"column:index_code;type:varchar(255);comment:指标编码;not null;"`                         // 指标编码
+	DataTime             time.Time `gorm:"column:data_time;type:datetime;comment:数据日期(至时分秒);default:NULL;"`                    // 数据日期(至时分秒)
+	Value                float64   `gorm:"column:value;type:double;comment:数据值;default:NULL;"`                                 // 数据值
+	UniqueCode           string    `gorm:"column:unique_code;type:varchar(64);comment:唯一编码;not null;"`                         // 唯一编码
+	CreateTime           time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;default:NULL;"`                        // 创建时间
+	ModifyTime           time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;default:NULL;"`                        // 修改时间
+	DataTimestamp        int64     `gorm:"column:data_timestamp;type:bigint(20) UNSIGNED;comment:数据日期时间戳;not null;default:0;"` // 数据日期时间戳
 }
 
 func (m *BaseFromThsHfData) TableName() string {
@@ -53,12 +52,8 @@ func (m *BaseFromThsHfData) Cols() BaseFromThsHfDataCols {
 }
 
 func (m *BaseFromThsHfData) Create() (err error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.BaseFromThsHfDataId = int(id)
+	err = global.DEFAULT_DB.Create(m).Error
+
 	return
 }
 
@@ -66,21 +61,21 @@ func (m *BaseFromThsHfData) CreateMulti(items []*BaseFromThsHfData) (err error)
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(500, items)
+	err = global.DEFAULT_DB.CreateInBatches(items, utils.MultiAddNum).Error
+
 	return
 }
 
 func (m *BaseFromThsHfData) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	err = global.DEFAULT_DB.Select(cols).Updates(m).Error
+
 	return
 }
 
 func (m *BaseFromThsHfData) Remove() (err error) {
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	_, err = o.Raw(sql, m.BaseFromThsHfDataId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, m.BaseFromThsHfDataId).Error
+
 	return
 }
 
@@ -88,9 +83,9 @@ func (m *BaseFromThsHfData) MultiRemove(ids []int) (err error) {
 	if len(ids) == 0 {
 		return
 	}
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.Cols().PrimaryId, utils.GetOrmInReplace(len(ids)))
-	_, err = o.Raw(sql, ids).Exec()
+	err = global.DEFAULT_DB.Exec(sql, ids).Error
+
 	return
 }
 
@@ -98,39 +93,38 @@ func (m *BaseFromThsHfData) RemoveByCondition(condition string, pars []interface
 	if condition == "" {
 		return
 	}
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s`, m.TableName(), condition)
-	_, err = o.Raw(sql, pars).Exec()
+	err = global.DEFAULT_DB.Exec(sql, pars).Error
+
 	return
 }
 
 func (m *BaseFromThsHfData) GetItemById(id int) (item *BaseFromThsHfData, err error) {
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().PrimaryId)
-	err = o.Raw(sql, id).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, id).First(&item).Error
+
 	return
 }
 
 func (m *BaseFromThsHfData) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *BaseFromThsHfData, err error) {
-	o := orm.NewOrm()
 	order := ``
 	if orderRule != "" {
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars).First(&item).Error
+
 	return
 }
 
 func (m *BaseFromThsHfData) GetCountByCondition(condition string, pars []interface{}) (count int, err 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)
+	err = global.DEFAULT_DB.Raw(sql, pars).Scan(&count).Error
+
 	return
 }
 
 func (m *BaseFromThsHfData) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromThsHfData, err error) {
-	o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -140,12 +134,12 @@ func (m *BaseFromThsHfData) GetItemsByCondition(condition string, pars []interfa
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars).Find(&items).Error
+
 	return
 }
 
 func (m *BaseFromThsHfData) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*BaseFromThsHfData, err error) {
-	o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -155,7 +149,8 @@ func (m *BaseFromThsHfData) GetPageItemsByCondition(condition string, pars []int
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars, startSize, pageSize).Find(&items).Error
+
 	return
 }
 
@@ -181,9 +176,16 @@ func (m *BaseFromThsHfData) Format2Item() (item *BaseFromThsHfDataItem) {
 }
 
 func (m *BaseFromThsHfData) MultiInsertOrUpdate(inserts, updates []*BaseFromThsHfData) (err error) {
-	o := orm.NewOrm()
+	tx := global.DEFAULT_DB.Begin()
+	defer func() {
+		if err != nil {
+			_ = tx.Rollback()
+		} else {
+			_ = tx.Commit()
+		}
+	}()
 	if len(inserts) > 0 {
-		_, e := o.InsertMulti(600, inserts)
+		e := tx.CreateInBatches(inserts, utils.MultiAddNum).Error
 		if e != nil {
 			err = fmt.Errorf("insert multi err: %s", e.Error())
 			return
@@ -191,16 +193,8 @@ func (m *BaseFromThsHfData) MultiInsertOrUpdate(inserts, updates []*BaseFromThsH
 	}
 	if len(updates) > 0 {
 		sql := fmt.Sprintf("UPDATE %s SET %s = ?, modify_time = NOW() WHERE %s = ?", m.TableName(), m.Cols().Value, m.Cols().UniqueCode)
-		p, e := o.Raw(sql).Prepare()
-		if e != nil {
-			err = fmt.Errorf("prepare err: %s", e.Error())
-			return
-		}
-		defer func() {
-			_ = p.Close()
-		}()
 		for _, v := range updates {
-			_, e = p.Exec(v.Value, v.UniqueCode)
+			e := tx.Exec(sql, v.Value, v.UniqueCode).Error
 			if e != nil {
 				err = fmt.Errorf("update err: %s", e.Error())
 				return
@@ -211,9 +205,8 @@ func (m *BaseFromThsHfData) MultiInsertOrUpdate(inserts, updates []*BaseFromThsH
 }
 
 func (m *BaseFromThsHfData) GetIndexMinMax(indexCode string) (item *EdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`SELECT MIN(%s) AS min_date, MAX(%s) AS max_date, MIN(%s) AS min_value,MAX(%s) AS max_value FROM %s WHERE %s = ?`, m.Cols().DataTime, m.Cols().DataTime, m.Cols().Value, m.Cols().Value, m.TableName(), m.Cols().IndexCode)
-	err = o.Raw(sql, indexCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).First(&item).Error
 	if err != nil {
 		return
 	}
@@ -221,10 +214,11 @@ func (m *BaseFromThsHfData) GetIndexMinMax(indexCode string) (item *EdbInfoMaxAn
 	// 获取最新值
 	var lastVal float64
 	sql = fmt.Sprintf(`SELECT %s AS latest_value FROM %s WHERE %s = ? ORDER BY %s DESC LIMIT 1`, m.Cols().Value, m.TableName(), m.Cols().IndexCode, m.Cols().DataTime)
-	err = o.Raw(sql, indexCode).QueryRow(&lastVal)
+	err = global.DEFAULT_DB.Raw(sql, indexCode).Scan(&lastVal).Error
 	if err != nil {
 		return
 	}
 	item.LatestValue = lastVal
+
 	return
 }

+ 3 - 7
models/calculate_residual_analysis_config.go

@@ -1,7 +1,7 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
 	"time"
 )
 
@@ -32,16 +32,12 @@ type ResidualAnalysisConfig struct {
 	ContrastIndexMax float64 `description:"对比指标上限"`
 }
 
-func init() {
-	orm.RegisterModel(new(CalculateResidualAnalysisConfig))
-}
-
 // GetResidualAnalysisConfigById 根据配置id查询配置信息
 func GetResidualAnalysisConfigById(edbInfoId int) (residualAnalysisConfig CalculateResidualAnalysisConfig, err error) {
-	o := orm.NewOrm()
 	sql := `SELECT t2.* FROM calculate_residual_analysis_config_mapping t1 
 			join calculate_residual_analysis_config t2 on t1.calculate_residual_analysis_config_id = t2.calculate_residual_analysis_config_id
 			WHERE t1.edb_info_id = ?`
-	err = o.Raw(sql, edbInfoId).QueryRow(&residualAnalysisConfig)
+	err = global.DEFAULT_DB.Raw(sql, edbInfoId).First(&residualAnalysisConfig).Error
+
 	return
 }

+ 3 - 7
models/calculate_residual_analysis_config_mapping.go

@@ -1,8 +1,8 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"time"
 )
 
@@ -16,13 +16,8 @@ type CalculateResidualAnalysisConfigMapping struct {
 	ModifyTime                               time.Time `orm:"column(modify_time)" description:"修改时间"`
 }
 
-func init() {
-	orm.RegisterModel(new(CalculateResidualAnalysisConfigMapping))
-}
-
 // GetConfigMappingListByConditionNotBase 查询非基础指标的配置映射
 func GetConfigMappingListByConditionNotBase(edbInfoId int) (configMapping []CalculateResidualAnalysisConfigMapping, err error) {
-	o := orm.NewOrm()
 	sql := `
 	SELECT
   		* 
@@ -32,9 +27,10 @@ func GetConfigMappingListByConditionNotBase(edbInfoId int) (configMapping []Calc
   		calculate_residual_analysis_config_id IN ( SELECT calculate_residual_analysis_config_id FROM calculate_residual_analysis_config_mapping WHERE edb_info_id = ? ) 
   		AND index_type != 3 
   		AND index_type != 4`
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&configMapping)
+	err = global.DEFAULT_DB.Raw(sql, edbInfoId).Find(&configMapping).Error
 	if err != nil {
 		return nil, fmt.Errorf("查询数据时出错: %v", err)
 	}
+
 	return configMapping, nil
 }

+ 28 - 32
models/ccf_stock_excel.go

@@ -1,22 +1,22 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
 
 // CCFStockExcel CCF化纤装置表格
 type CCFStockExcel struct {
-	CcfStockExcelId int       `orm:"column(ccf_stock_excel_id);pk"`
-	ClassifyId      int       `description:"分类ID"`
-	ExcelDate       time.Time `description:"表格日期"`
-	ExcelContent    string    `description:"表格HTML"`
-	FromPage        string    `description:"表格来源"`
-	CreateTime      time.Time `description:"创建时间"`
-	ModifyTime      time.Time `description:"修改时间"`
+	CcfStockExcelId int       `gorm:"column:ccf_stock_excel_id;type:int(10) UNSIGNED;primaryKey;not null;"`
+	ClassifyId      int       `gorm:"column:classify_id;type:int(10) UNSIGNED;comment:分类ID;not null;default:0;"` // 分类ID
+	ExcelDate       time.Time `gorm:"column:excel_date;type:date;comment:表格日期;default:NULL;"`                    // 表格日期
+	ExcelContent    string    `gorm:"column:excel_content;type:longtext;comment:表格html信息;"`                      // 表格html信息
+	FromPage        string    `gorm:"column:from_page;type:varchar(255);comment:表格来源;not null;"`                 // 表格来源
+	CreateTime      time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;default:NULL;"`               // 创建时间
+	ModifyTime      time.Time `gorm:"column:modify_time;type:datetime;comment:更新时间;default:NULL;"`               // 更新时间
 }
 
 func (m *CCFStockExcel) TableName() string {
@@ -50,12 +50,8 @@ func (m *CCFStockExcel) PrimaryId() string {
 }
 
 func (m *CCFStockExcel) Create() (err error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(m)
-	if err != nil {
-		return
-	}
-	m.CcfStockExcelId = int(id)
+	err = global.DEFAULT_DB.Create(m).Error
+
 	return
 }
 
@@ -63,21 +59,21 @@ func (m *CCFStockExcel) CreateMulti(items []*CCFStockExcel) (err error) {
 	if len(items) == 0 {
 		return
 	}
-	o := orm.NewOrm()
-	_, err = o.InsertMulti(len(items), items)
+	err = global.DEFAULT_DB.CreateInBatches(items, utils.MultiAddNum).Error
+
 	return
 }
 
 func (m *CCFStockExcel) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	err = global.DEFAULT_DB.Model(m).Select(cols).Updates(m).Error
+
 	return
 }
 
 func (m *CCFStockExcel) Del() (err error) {
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
-	_, err = o.Raw(sql, m.CcfStockExcelId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, m.CcfStockExcelId).Error
+
 	return
 }
 
@@ -85,39 +81,38 @@ func (m *CCFStockExcel) MultiDel(menuIds []int) (err error) {
 	if len(menuIds) == 0 {
 		return
 	}
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.PrimaryId(), utils.GetOrmInReplace(len(menuIds)))
-	_, err = o.Raw(sql, menuIds).Exec()
+	err = global.DEFAULT_DB.Exec(sql, menuIds).Error
+
 	return
 }
 
 func (m *CCFStockExcel) GetItemById(id int) (item *CCFStockExcel, 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_DB.Raw(sql, id).First(&item).Error
+
 	return
 }
 
 func (m *CCFStockExcel) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *CCFStockExcel, err error) {
-	o := orm.NewOrm()
 	order := ``
 	if orderRule != "" {
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
-	err = o.Raw(sql, pars).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, pars).First(&item).Error
+
 	return
 }
 
 func (m *CCFStockExcel) GetCountByCondition(condition string, pars []interface{}) (count int, err 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)
+	err = global.DEFAULT_DB.Raw(sql, pars).Scan(&count).Error
+
 	return
 }
 
 func (m *CCFStockExcel) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*CCFStockExcel, err error) {
-	o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -127,12 +122,12 @@ func (m *CCFStockExcel) 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 = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars).Find(&items).Error
+
 	return
 }
 
 func (m *CCFStockExcel) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*CCFStockExcel, err error) {
-	o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -142,6 +137,7 @@ func (m *CCFStockExcel) GetPageItemsByCondition(condition string, pars []interfa
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars, startSize, pageSize).Find(&items).Error
+
 	return
 }

+ 34 - 4
models/chart.go

@@ -2,9 +2,10 @@ package models
 
 import (
 	"encoding/json"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
+	"gorm.io/gorm"
 	"time"
 )
 
@@ -41,7 +42,7 @@ func GetChartInfoDataKey(chartInfoId int) string {
 }
 
 type ChartInfo struct {
-	ChartInfoId     int    `orm:"column(chart_info_id);pk"`
+	ChartInfoId     int    `gorm:"column:chart_info_id;type:int(11);primaryKey;not null;" json:"chart_info_id"`
 	ChartName       string `description:"来源名称"`
 	ChartNameEn     string `description:"英文图表名称"`
 	ChartClassifyId int    `description:"图表分类id"`
@@ -71,10 +72,39 @@ type ChartInfo struct {
 	ExtraConfig     string `description:"图表额外配置,json数据"`
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *ChartInfo) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.SeasonStartDate = utils.GormDateStrToDateStr(m.SeasonStartDate)
+	m.SeasonEndDate = utils.GormDateStrToDateStr(m.SeasonEndDate)
+
+	return
+}
+
+// ConvDateTimeStr
+// @Description: ConvDateTimeStr
+// @author: Roc
+// @receiver m
+// @datetime 2025-02-13 09:54:02
+// @return err error
+func (m *ChartInfo) ConvDateTimeStr() {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.SeasonStartDate = utils.GormDateStrToDateStr(m.SeasonStartDate)
+	m.SeasonEndDate = utils.GormDateStrToDateStr(m.SeasonEndDate)
+
+	return
+}
+
 // GetChartInfoById 通过id获取图表信息
 func GetChartInfoById(chartInfoId int) (item *ChartInfo, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT * FROM chart_info WHERE chart_info_id=? `
-	err = o.Raw(sql, chartInfoId).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, chartInfoId).First(&item).Error
+	if err != nil {
+		return
+	}
+	item.ConvDateTimeStr()
+
 	return
 }

+ 43 - 24
models/chart_edb_mapping.go

@@ -1,48 +1,58 @@
 package models
 
 import (
-	"github.com/beego/beego/v2/client/orm"
+	"eta/eta_index_lib/global"
+	"eta/eta_index_lib/utils"
+	"gorm.io/gorm"
 	"time"
 )
 
 type ChartEdbMapping struct {
-	ChartEdbMappingId int       `orm:"column(chart_edb_mapping_id);pk"`
-	ChartInfoId       int       `description:"图表id"`
-	EdbInfoId         int       `description:"指标id"`
-	CreateTime        time.Time `description:"创建时间"`
-	ModifyTime        time.Time `description:"修改时间"`
-	UniqueCode        string    `description:"唯一编码"`
-	MaxData           float64   `description:"上限"`
-	MinData           float64   `description:"下限"`
-	IsOrder           bool      `description:"true:正序,false:逆序"`
-	IsAxis            int       `description:"true:左轴,false:右轴"`
-	EdbInfoType       int       `description:"true:标准指标,false:领先指标"`
-	LeadValue         int       `description:"领先值"`
-	LeadUnit          string    `description:"领先单位"`
-	ChartStyle        string    `description:"图表类型"`
-	ChartColor        string    `description:"颜色"`
-	ChartWidth        float64   `description:"线条大小"`
-	Source            int       `description:"1:ETA图库;2:商品价格曲线"`
+	ChartEdbMappingId int       `gorm:"column:chart_edb_mapping_id;type:int(11);primaryKey;not null;" `
+	ChartInfoId       int       `gorm:"column:chart_info_id;type:int(11);comment:图表id;default:0;"`                  // 图表id
+	EdbInfoId         int       `gorm:"column:edb_info_id;type:int(11);comment:指标id;default:0;"`                    // 指标id
+	CreateTime        time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;default:NULL;"`                // 创建时间
+	ModifyTime        time.Time `gorm:"column:modify_time;type:datetime;comment:修改时间;default:NULL;"`                // 修改时间
+	UniqueCode        string    `gorm:"column:unique_code;type:varchar(50);comment:唯一编码;"`                          // 唯一编码
+	MaxData           float64   `gorm:"column:max_data;type:double;comment:上限;default:0;"`                          // 上限
+	MinData           float64   `gorm:"column:min_data;type:double;comment:下限;default:0;"`                          // 下限
+	IsOrder           bool      `gorm:"column:is_order;type:tinyint(4);comment:1:正序,0:逆序;default:1;"`               // 1:正序,0:逆序
+	IsAxis            int       `gorm:"column:is_axis;type:tinyint(4);comment:1:左轴,0:右轴;default:1;"`                // 1:左轴,0:右轴
+	EdbInfoType       int       `gorm:"column:edb_info_type;type:tinyint(4);comment:1:标准指标,0:领先指标;default:1;"`      // 1:标准指标,0:领先指标
+	LeadValue         int       `gorm:"column:lead_value;type:int(11);comment:领先值;default:0;"`                      // 领先值
+	LeadUnit          string    `gorm:"column:lead_unit;type:varchar(10);comment:领先单位;"`                            // 领先单位
+	ChartStyle        string    `gorm:"column:chart_style;type:varchar(20);comment:图表类型;"`                          // 图表类型
+	ChartColor        string    `gorm:"column:chart_color;type:varchar(36);comment:颜色;"`                            // 颜色
+	PredictChartColor string    `gorm:"column:predict_chart_color;type:varchar(36);comment:预测数据的颜色;"`               // 预测数据的颜色
+	ChartWidth        float64   `gorm:"column:chart_width;type:double;comment:线条大小;default:0;"`                     // 线条大小
+	Source            int       `gorm:"column:source;type:tinyint(9) UNSIGNED;comment:1:ETA图库;2:商品价格曲线;default:1;"` // 1:ETA图库;2:商品价格曲线
+	EdbAliasName      string    `gorm:"column:edb_alias_name;type:varchar(255);comment:中文别名;"`                      // 中文别名
+	IsConvert         int       `gorm:"column:is_convert;type:int(11);comment:是否数据转换 0不转 1转;default:0;" `           // 是否数据转换 0不转 1转
+	ConvertType       int       `gorm:"column:convert_type;type:int(11);comment:数据转换类型 1乘 2除 3对数;default:0;"`       // 数据转换类型 1乘 2除 3对数
+	ConvertValue      float64   `gorm:"column:convert_value;type:double;comment:数据转换值;default:0;"`                  // 数据转换值
+	ConvertUnit       string    `gorm:"column:convert_unit;type:varchar(10);comment:数据转换单位;"`                       // 数据转换单位
+	ConvertEnUnit     string    `gorm:"column:convert_en_unit;type:varchar(10);comment:数据转换单位;"`                    // 数据转换单位
+	ChartScale        float64   `gorm:"column:chart_scale;type:double;comment:参考刻度线;default:0;"`                    // 参考刻度线
 }
 
 // GetChartEdbMappingListByEdbInfoId 根据指标id获取关联图表列表
 func GetChartEdbMappingListByEdbInfoId(edbInfoId int) (list []*ChartEdbMapping, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT *
              FROM chart_edb_mapping AS a
 			 WHERE edb_info_id=? 
              ORDER BY chart_edb_mapping_id ASC `
-	_, err = o.Raw(sql, edbInfoId).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, edbInfoId).Find(&list).Error
+
 	return
 }
 
 // GetGroupChartEdbMappingListByEdbInfoId 根据指标id和来源分组获取关联图表列表
 func GetGroupChartEdbMappingListByEdbInfoId(edbInfoId, source int) (list []*ChartEdbMapping, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT *
              FROM chart_edb_mapping AS a
 			 WHERE edb_info_id=? AND source = ?  GROUP BY chart_info_id `
-	_, err = o.Raw(sql, edbInfoId, source).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, edbInfoId, source).Find(&list).Error
+
 	return
 }
 
@@ -103,12 +113,21 @@ type ChartEdbInfoMapping struct {
 	UniqueFlag          string  `description:"唯一标识(与唯一编码不是一个东西)"`
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *ChartEdbInfoMapping) AfterFind(db *gorm.DB) (err error) {
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.LatestDate = utils.GormDateStrToDateStr(m.LatestDate)
+
+	return
+}
+
 // GetChartEdbMappingByEdbInfoId 根据指标id获取edb_mapping
 func GetChartEdbMappingByEdbInfoId(edbInfoId int) (item *ChartEdbInfoMapping, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT edb_info_id,source_name,classify_id,source,sub_source,edb_code,edb_name,edb_name_en,frequency,unit,unit_en,start_date,end_date,modify_time,latest_date,latest_value,unique_code,edb_info_type AS edb_info_category_type,edb_type,max_value,min_value,is_join_permission
              FROM edb_info
 			 WHERE edb_info_id = ? limit 1`
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, edbInfoId).First(&item).Error
+
 	return
 }

+ 1 - 1
models/data_stat/edb_info_update_log.go

@@ -65,7 +65,7 @@ func GetEdbUpdateLogByCondition(condition string, pars []interface{}) (item []*E
 	if condition != "" {
 		sql += condition
 	}
-	err = global.DEFAULT_DB.Raw(sql, pars).Find(&item).Error
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 
 	return
 }

+ 1 - 1
models/data_stat/edb_info_update_stat.go

@@ -110,7 +110,7 @@ func GetEdbUpdateStatByCondition(condition string, pars []interface{}) (item []*
 	if condition != "" {
 		sql += condition
 	}
-	err = global.DEFAULT_DB.Raw(sql, pars).Find(&item).Error
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&item).Error
 
 	return
 }

+ 64 - 67
models/db_base.go

@@ -2,70 +2,67 @@
 // @Author : bingee
 package models
 
-import (
-	"github.com/beego/beego/v2/client/orm"
-)
-
-// 是否存在
-func IsExistByExpr(ptrStructOrTableName interface{}, where map[string]interface{}) bool {
-	o := orm.NewOrm()
-	qs := o.QueryTable(ptrStructOrTableName)
-	for expr, exprV := range where {
-		qs = qs.Filter(expr, exprV)
-	}
-	return qs.Exist()
-}
-
-// 获取条数
-func GetCountByExpr(ptrStructOrTableName interface{}, where map[string]interface{}) (count int64, err error) {
-	o := orm.NewOrm()
-	qs := o.QueryTable(ptrStructOrTableName)
-	for expr, exprV := range where {
-		qs = qs.Filter(expr, exprV)
-	}
-	count, err = qs.Count()
-	return
-}
-
-// 更新
-func UpdateByExpr(ptrStructOrTableName interface{}, where map[string]interface{}, updateParams orm.Params) error {
-	o := orm.NewOrm()
-	qs := o.QueryTable(ptrStructOrTableName)
-	for expr, exprV := range where {
-		qs = qs.Filter(expr, exprV)
-	}
-	_, err := qs.Update(updateParams)
-	return err
-}
-
-// 删除
-func DeleteByExpr(ptrStructOrTableName interface{}, where map[string]interface{}) error {
-	o := orm.NewOrm()
-	qs := o.QueryTable(ptrStructOrTableName)
-	for expr, exprV := range where {
-		qs = qs.Filter(expr, exprV)
-	}
-	_, err := qs.Delete()
-	return err
-}
-
-// 插入
-func InsertData(ptrStructOrTableName interface{}) (int64, error) {
-	o := orm.NewOrm()
-	id, err := o.Insert(ptrStructOrTableName)
-	return id, err
-}
-
-// 获取数据
-func GetDataByExpr(ptrStructOrTableName interface{}, where map[string]interface{}, data interface{}, page ...int64) (err error) {
-	o := orm.NewOrm()
-	qs := o.QueryTable(ptrStructOrTableName)
-	for expr, exprV := range where {
-		qs = qs.Filter(expr, exprV)
-	}
-	if len(page) > 1 {
-		qs = qs.Limit(page[1], page[0])
-	}
-	_, err = qs.All(data)
-	return err
-}
+//
+//// 是否存在
+//func IsExistByExpr(ptrStructOrTableName interface{}, where map[string]interface{}) bool {
+//	o := orm.NewOrm()
+//	qs := o.QueryTable(ptrStructOrTableName)
+//	for expr, exprV := range where {
+//		qs = qs.Filter(expr, exprV)
+//	}
+//	return qs.Exist()
+//}
+//
+//// 获取条数
+//func GetCountByExpr(ptrStructOrTableName interface{}, where map[string]interface{}) (count int64, err error) {
+//	o := orm.NewOrm()
+//	qs := o.QueryTable(ptrStructOrTableName)
+//	for expr, exprV := range where {
+//		qs = qs.Filter(expr, exprV)
+//	}
+//	count, err = qs.Count()
+//	return
+//}
+//
+//// 更新
+//func UpdateByExpr(ptrStructOrTableName interface{}, where map[string]interface{}, updateParams orm.Params) error {
+//	o := orm.NewOrm()
+//	qs := o.QueryTable(ptrStructOrTableName)
+//	for expr, exprV := range where {
+//		qs = qs.Filter(expr, exprV)
+//	}
+//	_, err := qs.Update(updateParams)
+//	return err
+//}
+//
+//// 删除
+//func DeleteByExpr(ptrStructOrTableName interface{}, where map[string]interface{}) error {
+//	o := orm.NewOrm()
+//	qs := o.QueryTable(ptrStructOrTableName)
+//	for expr, exprV := range where {
+//		qs = qs.Filter(expr, exprV)
+//	}
+//	_, err := qs.Delete()
+//	return err
+//}
+//
+//// 插入
+//func InsertData(ptrStructOrTableName interface{}) (int64, error) {
+//	o := orm.NewOrm()
+//	id, err := o.Insert(ptrStructOrTableName)
+//	return id, err
+//}
+//
+//// 获取数据
+//func GetDataByExpr(ptrStructOrTableName interface{}, where map[string]interface{}, data interface{}, page ...int64) (err error) {
+//	o := orm.NewOrm()
+//	qs := o.QueryTable(ptrStructOrTableName)
+//	for expr, exprV := range where {
+//		qs = qs.Filter(expr, exprV)
+//	}
+//	if len(page) > 1 {
+//		qs = qs.Limit(page[1], page[0])
+//	}
+//	_, err = qs.All(data)
+//	return err
+//}

+ 17 - 14
models/edb_classify.go

@@ -2,14 +2,14 @@ package models
 
 import (
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"time"
 )
 
 type EdbClassify struct {
-	ClassifyId      int       `orm:"column(classify_id);pk"`
+	ClassifyId      int       `gorm:"column:classify_id;type:int(11);primaryKey;not null;"`
 	ClassifyType    uint8     `description:"分类类型,0:普通指标分类,1:预测指标分类"`
 	ClassifyName    string    `description:"分类名称"`
 	ParentId        int       `description:"父级id"`
@@ -25,22 +25,26 @@ type EdbClassify struct {
 }
 
 func AddEdbClassify(item *EdbClassify) (lastId int64, err error) {
-	o := orm.NewOrm()
-	lastId, err = o.Insert(item)
+	err = global.DEFAULT_DB.Create(item).Error
+	if err != nil {
+		return
+	}
+	lastId = int64(item.ClassifyId)
+
 	return
 }
 
 // Update 更新分类基础信息
 func (edbClassify *EdbClassify) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(edbClassify, cols...)
+	err = global.DEFAULT_DB.Model(edbClassify).Select(cols).Updates(edbClassify).Error
+
 	return
 }
 
 func GetEdbClassifyById(classifyId int) (item *EdbClassify, err error) {
-	o := orm.NewOrm()
 	sql := `SELECT * FROM edb_classify WHERE classify_id=? `
-	err = o.Raw(sql, classifyId).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, classifyId).First(&item).Error
+
 	return
 }
 
@@ -52,11 +56,10 @@ type EdbClassifySimplify struct {
 
 // 递归获取所有目录
 func GetClassifyAllByClassifyId(classifyId int) (resultList []*EdbClassifySimplify, err error) {
-	o := orm.NewOrm()
 	for {
 		sql := ` SELECT * FROM edb_classify AS a WHERE a.classify_id=? order by sort asc,classify_id asc`
 		item := new(EdbClassifySimplify)
-		err = o.Raw(sql, classifyId).QueryRow(&item)
+		err = global.DEFAULT_DB.Raw(sql, classifyId).First(&item).Error
 		if err != nil {
 			break
 		}
@@ -72,17 +75,17 @@ func GetClassifyAllByClassifyId(classifyId int) (resultList []*EdbClassifySimpli
 
 // 判断分类名称是否存在
 func GetEdbClassifyCount(classifyName string, parentId int, classifyType uint8) (item *EdbClassify, err error) {
-	o := orm.NewOrm()
 	sql := `SELECT * FROM edb_classify WHERE parent_id=? AND classify_name=? AND classify_type = ? `
-	err = o.Raw(sql, parentId, classifyName, classifyType).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, parentId, classifyName, classifyType).First(&item).Error
+
 	return
 }
 
 // GetEdbClassifyMaxSort 获取分类下最大的排序数
 func GetEdbClassifyMaxSort(parentId int, classifyType uint8) (sort int, err error) {
-	o := orm.NewOrm()
 	sql := `SELECT Max(sort) AS sort FROM edb_classify WHERE parent_id=? AND classify_type=? `
-	err = o.Raw(sql, parentId, classifyType).QueryRow(&sort)
+	err = global.DEFAULT_DB.Raw(sql, parentId, classifyType).Scan(&sort).Error
+
 	return
 }
 

+ 7 - 5
models/edb_config.go

@@ -1,6 +1,8 @@
 package models
 
-import "github.com/beego/beego/v2/client/orm"
+import (
+	"eta/eta_index_lib/global"
+)
 
 type EdbConfig struct {
 	ConfigValue string `description:"详情"`
@@ -8,16 +10,16 @@ type EdbConfig struct {
 
 // EdbConfigUpdate 修改配置
 func EdbConfigUpdate(newValue, configCode string) (err error) {
-	o := orm.NewOrm()
 	sql := `UPDATE edb_config SET  config_value=?   WHERE config_code=  ?`
-	_, err = o.Raw(sql, newValue, configCode).Exec()
+	err = global.DEFAULT_DB.Exec(sql, newValue, configCode).Error
+
 	return
 }
 
 // GetConfigDetailByCode 根据配置编码获取配置的值
 func GetConfigDetailByCode(configCode string) (item *EdbConfig, err error) {
-	o := orm.NewOrm()
 	sql := ` SELECT config_value FROM edb_config WHERE config_code=? `
-	err = o.Raw(sql, configCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, configCode).First(&item).Error
+
 	return
 }

+ 1 - 1
models/edb_data_base.go

@@ -106,7 +106,7 @@ func GetEdbDataByCondition(source, subSource int, condition string, pars []inter
 	}
 	sql += ` ORDER BY data_time DESC `
 	sql = fmt.Sprintf(sql, tableName)
-	err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&items).Error
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	if err != nil {
 		return
 	}

+ 12 - 25
models/edb_data_business.go

@@ -1,12 +1,13 @@
 package models
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/models/mgo"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"github.com/shopspring/decimal"
 	"go.mongodb.org/mongo-driver/bson"
+	"gorm.io/gorm"
 	"reflect"
 	"strings"
 	"time"
@@ -61,11 +62,7 @@ type RefreshBaseParams struct {
 // @return err error
 // @return errMsg string
 func (obj Business) Add(params AddBaseParams, businessIndexItem *BaseFromBusinessIndex) (edbInfo *EdbInfo, err error, errMsg string) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
 			_ = to.Rollback()
@@ -96,12 +93,10 @@ func (obj Business) Add(params AddBaseParams, businessIndexItem *BaseFromBusines
 	edbInfo.SubSource = businessIndexItem.Source
 	edbInfo.SubSourceName = businessIndexItem.SourceName
 	edbInfo.Sort = GetAddEdbMaxSortByClassifyId(params.ClassifyId, utils.EDB_INFO_TYPE)
-	newEdbInfoId, tmpErr := to.Insert(edbInfo)
-	if tmpErr != nil {
-		err = tmpErr
+	err = to.Create(edbInfo).Error
+	if err != nil {
 		return
 	}
-	edbInfo.EdbInfoId = int(newEdbInfoId)
 
 	// 更新数据
 	err = obj.refresh(to, edbInfo, "")
@@ -121,11 +116,7 @@ func (obj Business) Add(params AddBaseParams, businessIndexItem *BaseFromBusines
 func (obj Business) Edit(params EditBaseParams, businessIndexItem *BaseFromBusinessIndex) (err error, errMsg string) {
 	edbInfo := params.EdbInfo
 
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
 			_ = to.Rollback()
@@ -148,7 +139,7 @@ func (obj Business) Edit(params EditBaseParams, businessIndexItem *BaseFromBusin
 	edbInfo.SubSource = businessIndexItem.Source
 	edbInfo.SubSourceName = businessIndexItem.SourceName
 	edbInfo.ModifyTime = time.Now()
-	_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn", "SubSource", "SubSourceName")
+	err = to.Model(edbInfo).Select([]string{"EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime", "EdbNameEn", "UnitEn", "SubSource", "SubSourceName"}).Updates(edbInfo).Error
 	if err != nil {
 		return
 	}
@@ -161,10 +152,7 @@ func (obj Business) Edit(params EditBaseParams, businessIndexItem *BaseFromBusin
 
 // Refresh 刷新
 func (obj Business) Refresh(params RefreshBaseParams) (err error, errMsg string) {
-	to, err := orm.NewOrm().Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
 			_ = to.Rollback()
@@ -195,7 +183,7 @@ func (obj Business) GetEdbType() int {
 	return utils.DEFAULT_EDB_TYPE
 }
 
-func (obj Business) refresh(to orm.TxOrmer, edbInfo *EdbInfo, startDate string) (err error) {
+func (obj Business) refresh(to *gorm.DB, edbInfo *EdbInfo, startDate string) (err error) {
 	if utils.UseMongo {
 		return obj.refreshByMongo(edbInfo, startDate)
 	} else {
@@ -363,7 +351,7 @@ func (obj Business) refreshByMongo(edbInfo *EdbInfo, startDate string) (err erro
 	return
 }
 
-func (obj Business) refreshByMysql(to orm.TxOrmer, edbInfo *EdbInfo, startDate string) (err error) {
+func (obj Business) refreshByMysql(to *gorm.DB, edbInfo *EdbInfo, startDate string) (err error) {
 	dataTableName := GetEdbDataTableName(edbInfo.Source, edbInfo.SubSource)
 	edbInfoIdStr := fmt.Sprint(edbInfo.EdbInfoId)
 
@@ -464,8 +452,7 @@ func (obj Business) refreshByMysql(to orm.TxOrmer, edbInfo *EdbInfo, startDate s
 		if removeNum > 0 {
 			//如果拼接指标变更了,那么需要删除所有的指标数据
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, dataTableName)
-
-			_, err = to.Raw(sql, edbInfo.EdbInfoId, removeDateList).Exec()
+			err = to.Exec(sql, edbInfo.EdbInfoId, removeDateList).Error
 			if err != nil {
 				err = fmt.Errorf("删除自有数据的明细数据失败,Err:" + err.Error())
 				return
@@ -475,7 +462,7 @@ func (obj Business) refreshByMysql(to orm.TxOrmer, edbInfo *EdbInfo, startDate s
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshAllCalculate add Err", err.Error())
 			return

+ 20 - 40
models/edb_info.go

@@ -76,38 +76,11 @@ func (e *EdbInfo) Add() (err error) {
 
 // AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
 func (m *EdbInfo) AfterFind(db *gorm.DB) (err error) {
-	if m.StartDate != "" {
-		minDateTmp, e := time.ParseInLocation(utils.FormatDateWallWithLoc, m.StartDate, time.Local)
-		if e != nil {
-			err = e
-			return
-		}
-		m.StartDate = minDateTmp.Format(utils.FormatDate)
-	}
-	if m.EndDate != "" {
-		maxDateTmp, e := time.ParseInLocation(utils.FormatDateWallWithLoc, m.EndDate, time.Local)
-		if e != nil {
-			err = e
-			return
-		}
-		m.EndDate = maxDateTmp.Format(utils.FormatDate)
-	}
-	if m.LatestDate != "" {
-		maxDateTmp, e := time.ParseInLocation(utils.FormatDateWallWithLoc, m.LatestDate, time.Local)
-		if e != nil {
-			err = e
-			return
-		}
-		m.LatestDate = maxDateTmp.Format(utils.FormatDate)
-	}
-	if m.DataUpdateTime != "" {
-		maxDateTmp, e := time.ParseInLocation(utils.FormatDateWallWithLoc, m.DataUpdateTime, time.Local)
-		if e != nil {
-			err = e
-			return
-		}
-		m.DataUpdateTime = maxDateTmp.Format(utils.FormatDate)
-	}
+	m.StartDate = utils.GormDateStrToDateStr(m.StartDate)
+	m.EndDate = utils.GormDateStrToDateStr(m.EndDate)
+	m.LatestDate = utils.GormDateStrToDateStr(m.LatestDate)
+	m.ErDataUpdateDate = utils.GormDateStrToDateStr(m.ErDataUpdateDate)
+	m.DataUpdateTime = utils.GormDateStrToDateTimeStr(m.DataUpdateTime)
 
 	return
 }
@@ -317,6 +290,13 @@ type EdbInfoSearchData struct {
 	DataTimestamp int64   `description:"时间戳"`
 }
 
+// AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据
+func (m *EdbInfoSearchData) AfterFind(db *gorm.DB) (err error) {
+	m.DataTime = utils.GormDateStrToDateStr(m.DataTime)
+
+	return
+}
+
 // ConvertTimeStr
 // @Description: 转成需要输出的格式
 // @receiver m
@@ -397,14 +377,14 @@ func GetEdbDataListAllByMysql(source, subSource int, findEdbDataListAllCond Find
 		sql += ` ORDER BY data_time DESC `
 	}
 	// todo
-	err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&items).Error
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 	if err != nil {
 		return
 	}
 	// 统一处理日期
-	for _, v := range items {
-		v.ConvertTimeStr()
-	}
+	//for _, v := range items {
+	//	v.ConvertTimeStr()
+	//}
 
 	return
 }
@@ -472,14 +452,14 @@ func GetEdbDataListAllByMysqlTo(to *gorm.DB, source, subSource int, findEdbDataL
 	} else {
 		sql += ` ORDER BY data_time DESC `
 	}
-	err = to.Raw(sql, pars...).Scan(&items).Error
+	err = to.Raw(sql, pars...).Find(&items).Error
 	if err != nil {
 		return
 	}
 	// 统一处理日期
-	for _, v := range items {
-		v.ConvertTimeStr()
-	}
+	//for _, v := range items {
+	//	v.ConvertTimeStr()
+	//}
 
 	return
 }

+ 2 - 3
models/edb_source.go

@@ -16,7 +16,7 @@ var (
 type EdbSource struct {
 	EdbSourceId      int    `gorm:"primaryKey;autoIncrement;column:edb_source_id" description:"指标来源ID"`
 	SourceName       string `gorm:"column:source_name;not null;default:'';type:varchar(128)" description:"指标来源名称"`
-	TableName       string `gorm:"column:table_name;not null;default:'';type:varchar(128)" description:"数据表名"`
+	TableName        string `gorm:"column:table_name;not null;default:'';type:varchar(128)" description:"数据表名"`
 	EdbAddMethod     string `gorm:"column:edb_add_method;not null;default:'';type:varchar(255)" description:"指标新增接口"`
 	EdbRefreshMethod string `gorm:"column:edb_refresh_method;not null;default:'';type:varchar(255)" description:"指标刷新接口"`
 	IsBase           int    `gorm:"column:is_base;not null;default:0" description:"是否为基础指标: 0-否; 1-是"`
@@ -28,7 +28,6 @@ type EdbSource struct {
 
 // GetEdbSourceItemsByCondition 获取指标来源列表
 func GetEdbSourceItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EdbSource, err error) {
-
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -38,7 +37,7 @@ 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 = global.DEFAULT_DB.Raw(sql, pars).Find(&items).Error
+	err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
 
 	return
 }

+ 20 - 25
models/future_good/chart_info_future_good_profit.go

@@ -1,21 +1,20 @@
 package future_good
 
 import (
+	"eta/eta_index_lib/global"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strings"
 	"time"
 )
 
-// ChartInfoFutureGoodProfit 商品利润图表-扩展信息
 type ChartInfoFutureGoodProfit struct {
-	ChartInfoId  int       `orm:"column(chart_info_id);pk" description:"商品利润图表ID(chart_info表source=5的)"`
-	ProfitName   string    `description:"利润名称"`
-	ProfitNameEn string    `description:"利润英文名称"`
-	XValue       string    `description:"X轴数据值"`
-	YValue       string    `description:"Y轴数据值"`
-	CreateTime   time.Time `description:"创建时间"`
-	ModifyTime   time.Time `description:"更新时间"`
+	ChartInfoId  int       `gorm:"column:chart_info_id;type:int(9);primaryKey;not null;"`
+	ProfitName   string    `gorm:"column:profit_name;type:varchar(255);comment:利润名称;"`                           // 利润名称
+	ProfitNameEn string    `gorm:"column:profit_name_en;type:varchar(255);comment:利润英文名称;"`                      // 利润英文名称
+	XValue       string    `gorm:"column:x_value;type:text;comment:x轴的数据值;"`                                     // x轴的数据值
+	YValue       string    `gorm:"column:y_value;type:text;comment:y轴的数据值;"`                                     // y轴的数据值
+	ModifyTime   time.Time `gorm:"column:modify_time;type:timestamp;comment:最近的修改时间;default:CURRENT_TIMESTAMP;"` // 最近的修改时间
+	CreateTime   time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;default:NULL;"`                  // 创建时间
 }
 
 type CorrelationInfo struct {
@@ -36,44 +35,39 @@ func (m *ChartInfoFutureGoodProfit) TableName() string {
 }
 
 func (m *ChartInfoFutureGoodProfit) Create() (err error) {
-	o := orm.NewOrm()
-	_, err = o.Insert(m)
-	if err != nil {
-		return
-	}
-	//m.CorrelationChartInfoId = int(id)
+	err = global.DEFAULT_DB.Create(m).Error
+
 	return
 }
 
 func (m *ChartInfoFutureGoodProfit) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(m, cols...)
+	err = global.DEFAULT_DB.Model(m).Select(cols).Updates(m).Error
+
 	return
 }
 
 func (m *ChartInfoFutureGoodProfit) Delete() (err error) {
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`DELETE FROM %s WHERE chart_info_id = ? LIMIT 1`, m.TableName())
-	_, err = o.Raw(sql, m.ChartInfoId).Exec()
+	err = global.DEFAULT_DB.Exec(sql, m.ChartInfoId).Error
+
 	return
 }
 
 func (m *ChartInfoFutureGoodProfit) GetItemById(id int) (err error) {
-	o := orm.NewOrm()
 	sql := fmt.Sprintf(`SELECT * FROM %s WHERE chart_info_id = ? LIMIT 1`, m.TableName())
-	err = o.Raw(sql, id).QueryRow(&m)
+	err = global.DEFAULT_DB.Raw(sql, id).First(&m).Error
+
 	return
 }
 
 func (m *ChartInfoFutureGoodProfit) GetItemByCondition(condition string, pars []interface{}) (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(&m)
+	err = global.DEFAULT_DB.Raw(sql, pars).First(&m).Error
+
 	return
 }
 
 func (m *ChartInfoFutureGoodProfit) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*ChartInfoFutureGoodProfit, err error) {
-	o := orm.NewOrm()
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
 		fields = `*`
@@ -83,6 +77,7 @@ func (m *ChartInfoFutureGoodProfit) 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 = o.Raw(sql, pars).QueryRows(&items)
+	err = global.DEFAULT_DB.Raw(sql, pars).Find(&items).Error
+
 	return
 }

+ 13 - 18
models/future_good/future_good_edb_data.go

@@ -1,9 +1,9 @@
 package future_good
 
 import (
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
 	"strconv"
 	"strings"
 	"time"
@@ -11,7 +11,7 @@ import (
 
 // FutureGoodEdbData 期货指标数据的表
 type FutureGoodEdbData struct {
-	FutureGoodEdbDataId int       `orm:"column(future_good_edb_data_id);pk"`
+	FutureGoodEdbDataId int       `gorm:"column:future_good_edb_data_id;type:int(9) UNSIGNED;primaryKey;not null;" json:"future_good_edb_data_id"`
 	FutureGoodEdbInfoId int       `description:"期货指标id"`
 	FutureGoodEdbCode   string    `description:"期货指标code"`
 	DataTime            time.Time `description:"数据日期"`
@@ -74,19 +74,18 @@ type FutureGoodDataTables struct {
 
 // GetFutureGoodEdbDataList 获取期货指标数据列表
 func GetFutureGoodEdbDataList(condition string, pars []interface{}) (list []*FutureGoodEdbDataItem, err error) {
-	o := orm.NewOrm()
 	sql := `SELECT * FROM future_good_edb_data WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += `ORDER BY data_time asc `
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, pars).Find(&list).Error
+
 	return
 }
 
 // AddEdbDataFromThs 添加Ths商品指标数据
 func AddEdbDataFromThs(futureGoodEdbInfoId int, edbCode string, item FutureGoodDataFromThs) (err error) {
-	o := orm.NewOrm()
 
 	var isAdd bool
 	addSql := ` INSERT INTO future_good_edb_data(future_good_edb_info_id,future_good_edb_code,data_time,trade_code,open,high,low,close,volume,amt,oi,settle,create_time,modify_time,data_timestamp) values `
@@ -119,7 +118,7 @@ func AddEdbDataFromThs(futureGoodEdbInfoId int, edbCode string, item FutureGoodD
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = o.Raw(addSql).Exec()
+		err = global.DEFAULT_DB.Exec(addSql).Error
 		if err != nil {
 			return
 		}
@@ -141,17 +140,13 @@ type RefreshFutureChartInfoReq struct {
 
 // RefreshFutureGoodEdbDataFromThs 刷新wind期货指标数据
 func RefreshFutureGoodEdbDataFromThs(futureGoodEdbInfoId int, edbCode, startDate string, item FutureGoodDataFromThs) (err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
+	to := global.DEFAULT_DB.Begin()
 	defer func() {
 		if err != nil {
 			fmt.Println("RefreshAllCalculateTbz,Err:" + err.Error())
-			_ = to.Rollback()
+			to.Rollback()
 		} else {
-			_ = to.Commit()
+			to.Commit()
 		}
 	}()
 
@@ -174,7 +169,7 @@ func RefreshFutureGoodEdbDataFromThs(futureGoodEdbInfoId int, edbCode, startDate
 			sql += condition
 		}
 		sql += `ORDER BY data_time asc `
-		_, err = to.Raw(sql, pars).QueryRows(&existList)
+		err = to.Raw(sql, pars).Find(&existList).Error
 	}
 
 	existMap := make(map[string]*FutureGoodEdbData)
@@ -255,7 +250,7 @@ func RefreshFutureGoodEdbDataFromThs(futureGoodEdbInfoId int, edbCode, startDate
 				}
 
 				if len(updateCol) > 0 {
-					_, err = to.Update(findItem, updateCol...)
+					err = to.Model(findItem).Select(updateCol).Updates(findItem).Error
 					if err != nil {
 						return
 					}
@@ -267,7 +262,7 @@ func RefreshFutureGoodEdbDataFromThs(futureGoodEdbInfoId int, edbCode, startDate
 
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
+		err = to.Exec(addSql).Error
 		if err != nil {
 			fmt.Println("RefreshEdbDataFromWind add Err", err.Error())
 			return
@@ -302,7 +297,7 @@ func GetFutureGoodEdbDataListByDate(futureGoodEdbInfoId int, startDate, endDate
 	}
 
 	sql += ` ORDER BY data_time ASC `
-	o := orm.NewOrm()
-	_, err = o.Raw(sql, futureGoodEdbInfoId, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, futureGoodEdbInfoId, pars).Find(&list).Error
+
 	return
 }

+ 38 - 25
models/future_good/future_good_edb_info.go

@@ -2,14 +2,14 @@ package future_good
 
 import (
 	"errors"
+	"eta/eta_index_lib/global"
 	"eta/eta_index_lib/utils"
-	"github.com/beego/beego/v2/client/orm"
 	"gorm.io/gorm"
 	"time"
 )
 
 type FutureGoodEdbInfo struct {
-	FutureGoodEdbInfoId int       `orm:"column(future_good_edb_info_id);pk"`
+	FutureGoodEdbInfoId int       `gorm:"column:future_good_edb_info_id;type:bigint(9) UNSIGNED;comment:期货指标id;primaryKey;not null;"` // 期货指标id
 	FutureGoodEdbCode   string    `description:"期货指标code"`
 	FutureGoodEdbName   string    `description:"期货指标名称"`
 	FutureGoodEdbNameEn string    `description:"期货指标英文名称"`
@@ -39,66 +39,77 @@ func (e *FutureGoodEdbInfo) AfterFind(db *gorm.DB) (err error) {
 	return
 }
 
+func (e *FutureGoodEdbInfo) ConvDateTimeStr() {
+	e.StartDate = utils.GormDateStrToDateStr(e.StartDate)
+	e.EndDate = utils.GormDateStrToDateStr(e.EndDate)
+
+	return
+}
+
 // GetFutureGoodEdbInfo 期货指标
 func GetFutureGoodEdbInfo(edbInfoId int) (item *FutureGoodEdbInfo, err error) {
-	o := orm.NewOrm()
 	sql := `SELECT * FROM future_good_edb_info WHERE future_good_edb_info_id = ? `
 	sql += ` ORDER BY future_good_edb_info_id DESC `
-	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, edbInfoId).First(&item).Error
+	if err != nil {
+		return
+	}
+	item.ConvDateTimeStr()
+
 	return
 }
 
 // GetFutureGoodEdbInfoByCode 根据指标code获取指标信息
 func GetFutureGoodEdbInfoByCode(edbCode string) (item *FutureGoodEdbInfo, err error) {
-	o := orm.NewOrm()
 	sql := `SELECT * FROM future_good_edb_info  WHERE future_good_edb_code = ? limit 1 `
-	err = o.Raw(sql, edbCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, edbCode).First(&item).Error
+	if err != nil {
+		return
+	}
+	item.ConvDateTimeStr()
+
 	return
 }
 
 // GetFutureGoodEdbInfoList 获取指标数据列表
 func GetFutureGoodEdbInfoList(condition string, pars []interface{}) (list []*FutureGoodEdbInfo, err error) {
-	o := orm.NewOrm()
 	sql := `SELECT * FROM future_good_edb_info WHERE 1=1 `
 	if condition != "" {
 		sql += condition
 	}
 	sql += `ORDER BY future_good_edb_info_id DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, pars).Find(&list).Error
+
 	return
 }
 
 // GetAllFutureGoodEdbInfoList 获取指标数据列表
 func GetAllFutureGoodEdbInfoList() (list []*FutureGoodEdbInfo, err error) {
-	o := orm.NewOrm()
 	sql := `SELECT * FROM future_good_edb_info  ORDER BY future_good_edb_info_id DESC `
-	_, err = o.Raw(sql).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql).Find(&list).Error
+
 	return
 }
 
 // AddFutureGoodEdbInfo 添加期货数据库指标
 func AddFutureGoodEdbInfo(item *FutureGoodEdbInfo) (err error) {
-	o := orm.NewOrm()
-	lastId, err := o.Insert(item)
-	if err != nil {
-		return
-	}
-	item.FutureGoodEdbInfoId = int(lastId)
+	err = global.DEFAULT_DB.Create(item).Error
+
 	return
 }
 
 // GetChildFutureGoodEdbInfoListByParentId 根据父级ID获取下面所有的指标数据列表
 func GetChildFutureGoodEdbInfoListByParentId(parentId int) (list []*FutureGoodEdbInfo, err error) {
-	o := orm.NewOrm()
 	sql := `SELECT * FROM future_good_edb_info WHERE parent_id = ? ORDER BY future_good_edb_info_id ASC `
-	_, err = o.Raw(sql, parentId).QueryRows(&list)
+	err = global.DEFAULT_DB.Raw(sql, parentId).Find(&list).Error
+
 	return
 }
 
 // Update 更新指标基础信息
 func (FutureGoodEdbInfo *FutureGoodEdbInfo) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(FutureGoodEdbInfo, cols...)
+	err = global.DEFAULT_DB.Model(FutureGoodEdbInfo).Select(cols).Updates(FutureGoodEdbInfo).Error
+
 	return
 }
 
@@ -118,9 +129,8 @@ func UnifiedModifyEdbInfoMaxAndMinInfo(futureGoodEdbInfo *FutureGoodEdbInfo) (er
 	}
 
 	if maxAndMinItem != nil {
-		o := orm.NewOrm()
 		sql := ` UPDATE future_good_edb_info SET start_date=?,end_date=?,min_value=?,max_value=?,latest_date=?,latest_value=?,modify_time=NOW() WHERE future_good_edb_info_id=? `
-		_, err = o.Raw(sql, maxAndMinItem.MinDate, maxAndMinItem.MaxDate, maxAndMinItem.MinValue, maxAndMinItem.MaxValue, maxAndMinItem.MaxDate, maxAndMinItem.LatestValue, futureGoodEdbInfo.FutureGoodEdbInfoId).Exec()
+		err = global.DEFAULT_DB.Exec(sql, maxAndMinItem.MinDate, maxAndMinItem.MaxDate, maxAndMinItem.MinValue, maxAndMinItem.MaxValue, maxAndMinItem.MaxDate, maxAndMinItem.LatestValue, futureGoodEdbInfo.FutureGoodEdbInfoId).Error
 		if err != nil {
 			errMsg = "刷新指标失败!"
 			err = errors.New("修改指标最大最小值失败,err:" + err.Error())
@@ -142,14 +152,17 @@ type FutureGoodEdbInfoMaxAndMinInfo struct {
 
 // GetEdbInfoMaxAndMinInfo 获取指标的最新数据记录信息
 func GetEdbInfoMaxAndMinInfo(futureGoodEdbCode string) (item *FutureGoodEdbInfoMaxAndMinInfo, err error) {
-	o := orm.NewOrm()
 	sql := ``
 	sql = ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(close) AS min_value,MAX(close) AS max_value FROM future_good_edb_data WHERE future_good_edb_code=? `
-	err = o.Raw(sql, futureGoodEdbCode).QueryRow(&item)
+	err = global.DEFAULT_DB.Raw(sql, futureGoodEdbCode).First(&item).Error
+	if err != nil {
+		return
+	}
 
 	var latest_value float64
 	sql = ` SELECT close AS latest_value FROM future_good_edb_data WHERE future_good_edb_code=? ORDER BY data_time DESC LIMIT 1 `
-	err = o.Raw(sql, futureGoodEdbCode).QueryRow(&latest_value)
+	err = global.DEFAULT_DB.Raw(sql, futureGoodEdbCode).Scan(&latest_value).Error
 	item.LatestValue = latest_value
+
 	return
 }

+ 88 - 0
utils/sql.go

@@ -0,0 +1,88 @@
+package utils
+
+import (
+	"errors"
+	"fmt"
+	"regexp"
+)
+
+type Driver string
+
+const (
+	DM    Driver = "dm"
+	MySql Driver = "mysql"
+)
+
+var supportDriverMap = map[string]Driver{
+	"mysql": MySql,
+	"dm":    DM,
+}
+
+func GroupUnitFunc(driver string, column, delimiter, tableAlia string) (sqlStr string) {
+	dbDriver, _ := getDriverInstance(driver)
+	if delimiter == "" {
+		delimiter = ","
+	}
+	if column == "" {
+		column = "[UNKNOWN COLUMN]"
+	}
+	if tableAlia != "" {
+		column = fmt.Sprintf("%s.%s", tableAlia, column)
+	}
+	switch dbDriver {
+	case MySql:
+		sqlStr = fmt.Sprintf("GROUP_CONCAT(%s SEPARATOR '%s')", column, delimiter)
+	case DM:
+		sqlStr = fmt.Sprintf("LISTAGG(%s, '%s') WITHIN GROUP (ORDER BY %s)", column, delimiter, column)
+	default:
+		sqlStr = fmt.Sprintf("GROUP_CONCAT(%s SEPARATOR '%s')", column, delimiter) // 默认使用 MySQL 的语法
+	}
+	return sqlStr
+}
+
+func getDriverInstance(driver string) (dbDriver Driver, err error) {
+	if driver == "" {
+		dbDriver = supportDriverMap[DbDriverName]
+	}
+	if currentDriver, ok := supportDriverMap[driver]; !ok {
+		err = errors.New("不支持的数据库驱动类型")
+		return
+	} else {
+		dbDriver = currentDriver
+	}
+	return
+}
+
+func NeedDateOrTimeFormat(driver string) bool {
+	var dbDriver Driver
+	if driver == "" {
+		dbDriver = supportDriverMap[DbDriverName]
+	} else {
+		dbDriver, _ = getDriverInstance(driver)
+	}
+	if dbDriver == DM {
+		return true
+	}
+	return false
+}
+
+func ReplaceDriverKeywords(driver string, sql string) string {
+	dbDriver, _ := getDriverInstance(driver)
+	rules := map[Driver]map[string]string{
+		DM: {
+			"admin": `"admin"`,
+			"value": `"value"`,
+		},
+	}
+	replacements, ok := rules[dbDriver]
+	if !ok {
+		return sql
+	}
+	for keyword, replace := range replacements {
+		// 仅替换单独的单词,复合单词含关键词不管
+		pattern := fmt.Sprintf(`\b%s\b`, regexp.QuoteMeta(keyword))
+		re := regexp.MustCompile(pattern)
+		sql = re.ReplaceAllString(sql, replace)
+	}
+	return sql
+}