Files
gostock/internal/models/strat_model.go
yanweidong b4310c22cd deving
2026-01-31 17:21:33 +08:00

65 lines
1.3 KiB
Go

package models
import (
"time"
"git.apinb.com/bsm-sdk/core/database"
"git.apinb.com/bsm-sdk/core/utils"
"git.apinb.com/quant/gostock/internal/impl"
"gorm.io/gorm"
)
// StartModel 策略模型
type StratModel struct {
gorm.Model
StratKey string
Ymd int
Code string
UpDateMonth int //上市时间,月数
IndustryScore int // 行业分组
IsSt int
GtAmount int // 每日交易额大于设定值
GtPrice int // 最近20日交易日价格大于设定值
GtRoe int // ROE 是否大于设定值
}
func init() {
database.AppendMigrate(&StratModel{})
}
// TableName 设置表名
func (StratModel) TableName() string {
return "strat_model"
}
func NewStratModel(key, code string) *StratModel {
obj := StratModel{
StratKey: key,
Ymd: GetYmd(),
Code: code,
}
return &obj
}
func (s *StratModel) Save() error {
var cnt int64
impl.DBService.Model(&StratModel{}).Where("strat_key=? and ymd=? and code=?", s.StratKey, s.Ymd, s.Code).Count(&cnt)
if cnt == 0 {
// create record.
return impl.DBService.Create(s).Error
} else {
// update record.
return impl.DBService.Model(&StratModel{}).Where("strat_key=? and ymd=? and code=?", s.StratKey, s.Ymd, s.Code).Updates(s).Error
}
return nil
}
func GetYmd() int {
ymd := time.Now().Format("20060102")
return utils.String2Int(ymd)
}