// @Author gmy 2024/8/7 9:50:00 package models import ( "eta/eta_index_lib/global" "eta/eta_index_lib/utils" "gorm.io/gorm" "time" ) type BaseFromLyData struct { 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;"` // 数据值 } // AfterFind 在该模型上设置钩子函数,把日期转成正确的string,所以查询函数只能用Find函数,First或者Scan是不会触发该函数的来获取数据 func (m *BaseFromLyData) AfterFind(db *gorm.DB) (err error) { m.DataTime = utils.GormDateStrToDateStr(m.DataTime) return } // AddLyDataList 批量插入数据记录列表 func AddLyDataList(items []BaseFromLyData) (err error) { //o := orm.NewOrm() //_, err = o.InsertMulti(len(items), items) err = global.DEFAULT_DB.CreateInBatches(items, len(items)).Error return } // GetLyDataByIndexIdAndDataTime 根据指标id和数据日期查询数据 func GetLyDataByIndexIdAndDataTime(indexId int, dataTime string) (items []BaseFromLyData, err error) { //o := orm.NewOrm() sql := `SELECT * FROM base_from_ly_data WHERE base_from_ly_index_id=? AND data_time=?` //_, err = o.Raw(sql, indexId, dataTime).QueryRows(&items) err = global.DEFAULT_DB.Raw(sql, indexId, dataTime).Find(&items).Error if utils.IsErrNoRow(err) { return nil, nil } return } // GetLyDataByIndexIdAndDataTimeYM 根据指标id和数据日期的年月查询数据 func GetLyDataByIndexIdAndDataTimeYM(indexId int, dataTime string) (items []BaseFromLyData, err error) { //o := orm.NewOrm() sql := `SELECT * FROM base_from_ly_data WHERE base_from_ly_index_id=? AND data_time like ?` //_, err = o.Raw(sql, indexId, dataTime+"%").QueryRows(&items) err = global.DEFAULT_DB.Raw(sql, indexId, dataTime+"%").Find(&items).Error if utils.IsErrNoRow(err) { return nil, nil } return } // UpdateLyDataById 根据主键id更新数据 func UpdateLyDataById(dataId int, value float64) (err error) { //o := orm.NewOrm() sql := `UPDATE base_from_ly_data SET value=? WHERE base_from_ly_data_id=?` //_, err = o.Raw(sql, value, dataId).Exec() err = global.DEFAULT_DB.Exec(sql, value, dataId).Error return } // GetBaseFromLyDataByIndexCode 根据指标编码查询 func GetBaseFromLyDataByIndexCode(condition string, pars []interface{}) (items []BaseFromLyData, err error) { sql := `SELECT * FROM base_from_ly_data WHERE 1=1 ` //o := orm.NewOrm() if condition != "" { sql += condition } //_, err = o.Raw(sql, pars...).QueryRows(&items) err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error if utils.IsErrNoRow(err) { return nil, nil } return }