72 lines
1.5 KiB
Go

package newbond
import (
"database/sql/driver"
"fmt"
"time"
)
type BondData struct {
SecurityCode string `json:"SECURITY_CODE" db:"SecurityCode"`
SecuCode string `json:"SECUCODE" db:"SecuCode"`
TradeMarket string `json:"TRADE_MARKET" db:"TradeMarket"`
SecurityNameAbbr string `json:"SECURITY_NAME_ABBR" db:"SecurityNameAbbr"`
}
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"`
}