package newbond import ( "database/sql/driver" "fmt" "time" ) // NewBondListenGroup 监听组GORM模型 type NewBondListenGroup struct { GroupID int `json:"group_id" gorm:"primaryKey;column:group_id"` } // TableName 指定表名 func (NewBondListenGroup) TableName() string { return "new_bond_listen_group" } type BondData struct { SecurityCode string `json:"SECURITY_CODE" db:"SecurityCode" gorm:"primaryKey;column:SecurityCode"` SecuCode string `json:"SECUCODE" db:"SecuCode" gorm:"column:SecuCode"` TradeMarket string `json:"TRADE_MARKET" db:"TradeMarket" gorm:"column:TradeMarket"` SecurityNameAbbr string `json:"SECURITY_NAME_ABBR" db:"SecurityNameAbbr" gorm:"column:SecurityNameAbbr"` } // TableName 指定表名 func (BondData) TableName() string { return "BondData" } type CustomTime struct { time.Time } // 实现 driver.Valuer 接口 func (ct CustomTime) Value() (driver.Value, error) { return ct.Time, nil } // 实现 sql.Scanner 接口 func (ct *CustomTime) Scan(value interface{}) error { if value == nil { ct.Time = time.Time{} return nil } switch v := value.(type) { case time.Time: ct.Time = v return nil default: return fmt.Errorf("cannot scan type %T into CustomTime", value) } } // 实现 UnmarshalJSON 方法以支持自定义时间格式 func (ct *CustomTime) UnmarshalJSON(b []byte) error { str := string(b) str = str[1 : len(str)-1] // 去掉引号 if str == "null" { return nil } // 使用正确的时间格式进行解析 parsedTime, err := time.Parse("2006-01-02 15:04:05", str) if err != nil { return err } ct.Time = parsedTime return nil } type BondResponse struct { Version string `json:"version"` Result BondResult `json:"result"` Success bool `json:"success"` Message string `json:"message"` Code int `json:"code"` } type BondResult struct { Pages int `json:"pages"` Data []BondData `json:"data"` Count int `json:"count"` }