|
@@ -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
|
|
|
}
|