From db1d5397c01ae3c10c8c4ac251600b57edcf70d4 Mon Sep 17 00:00:00 2001 From: yanweidong Date: Wed, 14 Jan 2026 12:49:17 +0800 Subject: [PATCH] add model --- internal/models/last_daily.go | 43 ++++++++++++++++++++++++++ internal/models/last_indicator.go | 51 +++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 internal/models/last_daily.go create mode 100644 internal/models/last_indicator.go diff --git a/internal/models/last_daily.go b/internal/models/last_daily.go new file mode 100644 index 0000000..0773581 --- /dev/null +++ b/internal/models/last_daily.go @@ -0,0 +1,43 @@ +package models + +import ( + "time" + + "gorm.io/gorm" +) + +// LastDaily 股票日线数据 +type LastDaily struct { + ID uint `gorm:"primarykey;autoIncrement" json:"id"` + TsCode string `gorm:"type:varchar(20);not null;index:idx_ts_code;comment:股票代码" json:"ts_code"` + TradeDate time.Time `gorm:"type:date;not null;index:idx_trade_date;comment:交易日期" json:"trade_date"` + Open float64 `gorm:"type:decimal(10,4);comment:开盘价" json:"open"` + High float64 `gorm:"type:decimal(10,4);comment:最高价" json:"high"` + Low float64 `gorm:"type:decimal(10,4);comment:最低价" json:"low"` + Close float64 `gorm:"type:decimal(10,4);comment:收盘价" json:"close"` + PreClose float64 `gorm:"type:decimal(10,4);comment:昨收价(除权价)" json:"pre_close"` + Change float64 `gorm:"type:decimal(10,4);comment:涨跌额" json:"change"` + PctChg float64 `gorm:"type:decimal(10,6);comment:涨跌幅(%)" json:"pct_chg"` + Vol float64 `gorm:"type:decimal(15,2);comment:成交量(手)" json:"vol"` + Amount float64 `gorm:"type:decimal(20,2);comment:成交额(千元)" json:"amount"` +} + + +func init() { + database.AppendMigrate(&LastDaily{}) +} + +// TableName 指定表名 +func (LastDaily) TableName() string { + return "last_daily" +} + +// Indexes 定义复合索引(可选,也可以在migration中创建) +func (LastDaily) Indexes() []gorm.Index { + return []gorm.Index{ + &gorm.IndexModel{ + Name: "idx_ts_code_trade_date", + Fields: []string{"ts_code", "trade_date"}, + }, + } +} \ No newline at end of file diff --git a/internal/models/last_indicator.go b/internal/models/last_indicator.go new file mode 100644 index 0000000..baf242b --- /dev/null +++ b/internal/models/last_indicator.go @@ -0,0 +1,51 @@ +package models + +import ( + "time" + "gorm.io/gorm" +) + +// LastIndicator 股票日线数据模型 +type LastIndicator struct { + ID uint `gorm:"primarykey;autoIncrement"` + TsCode string `gorm:"type:varchar(20);not null;comment:TS股票代码;index:idx_ts_code"` + TradeDate time.Time `gorm:"type:date;not null;comment:交易日期;index:idx_trade_date;index:idx_ts_trade,priority:2"` + Close float64 `gorm:"type:decimal(10,4);comment:当日收盘价"` + TurnoverRate float64 `gorm:"type:decimal(10,6);comment:换手率(%)"` + TurnoverRateF float64 `gorm:"type:decimal(10,6);comment:换手率(自由流通股)"` + VolumeRatio float64 `gorm:"type:decimal(10,4);comment:量比"` + Pe *float64 `gorm:"type:decimal(10,4);comment:市盈率(总市值/净利润)"` + PeTtm *float64 `gorm:"type:decimal(10,4);comment:市盈率(TTM)"` + Pb float64 `gorm:"type:decimal(10,4);comment:市净率"` + Ps float64 `gorm:"type:decimal(10,4);comment:市销率"` + PsTtm float64 `gorm:"type:decimal(10,4);comment:市销率(TTM)"` + DvRatio float64 `gorm:"type:decimal(10,6);comment:股息率(%)"` + DvTtm float64 `gorm:"type:decimal(10,6);comment:股息率(TTM)(%)"` + TotalShare float64 `gorm:"type:decimal(15,2);comment:总股本(万股)"` + FloatShare float64 `gorm:"type:decimal(15,2);comment:流通股本(万股)"` + FreeShare float64 `gorm:"type:decimal(15,2);comment:自由流通股本(万)"` + TotalMv float64 `gorm:"type:decimal(15,2);comment:总市值(万元)"` + CircMv float64 `gorm:"type:decimal(15,2);comment:流通市值(万元)"` + CreatedAt time.Time `gorm:"autoCreateTime"` + UpdatedAt time.Time `gorm:"autoUpdateTime"` +} + + +func init() { + database.AppendMigrate(&LastIndicator{}) +} + +// TableName 设置表名 +func (LastIndicator) TableName() string { + return "last_indicator" +} + +// 索引定义(也可以在migration中创建) +func (LastIndicator) Indexes() []string { + return []gorm.Index{ + &gorm.IndexModel{ + Name: "idx_ts_code_trade_date", + Fields: []string{"ts_code", "trade_date"}, + }, + } +} \ No newline at end of file