85 lines
2.1 KiB
Go
85 lines
2.1 KiB
Go
package core
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"reflect"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
type TickerInfo struct {
|
|
Id string `json:"_id"`
|
|
InstID string `json:"instID"`
|
|
Last float64 `json:"last"`
|
|
LastUpdate time.Time `json:"lastUpdate"`
|
|
InstType string `json:"instType"`
|
|
VolCcy24h float64 `json:"volCcy24h"`
|
|
Ts int64 `json:"ts"`
|
|
}
|
|
|
|
type TickerInfoResp struct {
|
|
InstID string `json:"instID"`
|
|
Last string `json:"last"`
|
|
InstType string `json:"instType"`
|
|
VolCcy24h string `json:"volCcy24h"`
|
|
Ts string `json:"ts"`
|
|
}
|
|
|
|
func (tir *TickerInfoResp) Convert() TickerInfo {
|
|
ti := TickerInfo{
|
|
Id: HashString(tir.InstID + tir.Ts),
|
|
InstID: tir.InstID,
|
|
InstType: tir.InstType,
|
|
Last: ToFloat64(tir.Last),
|
|
VolCcy24h: ToFloat64(tir.VolCcy24h),
|
|
Ts: ToInt64(tir.Ts),
|
|
LastUpdate: time.Now(),
|
|
}
|
|
return ti
|
|
}
|
|
|
|
func ToString(val interface{}) string {
|
|
valstr := ""
|
|
if reflect.TypeOf(val).Name() == "string" {
|
|
valstr = val.(string)
|
|
} else if reflect.TypeOf(val).Name() == "float64" {
|
|
valstr = fmt.Sprintf("%f", val)
|
|
} else if reflect.TypeOf(val).Name() == "int64" {
|
|
valstr = strconv.FormatInt(val.(int64), 16)
|
|
} else if reflect.TypeOf(val).Name() == "int" {
|
|
valstr = fmt.Sprintf("%d", val)
|
|
}
|
|
return valstr
|
|
}
|
|
|
|
func ToInt64(val interface{}) int64 {
|
|
vali := int64(0)
|
|
if reflect.TypeOf(val).Name() == "string" {
|
|
vali, _ = strconv.ParseInt(val.(string), 10, 64)
|
|
} else if reflect.TypeOf(val).Name() == "float64" {
|
|
vali = int64(val.(float64))
|
|
}
|
|
return vali
|
|
}
|
|
|
|
func ToFloat64(val interface{}) float64 {
|
|
valf := float64(0)
|
|
if reflect.TypeOf(val).Name() == "string" {
|
|
valf, _ = strconv.ParseFloat(val.(string), 64)
|
|
} else if reflect.TypeOf(val).Name() == "float64" {
|
|
valf = val.(float64)
|
|
} else if reflect.TypeOf(val).Name() == "int64" {
|
|
valf = float64(val.(int64))
|
|
}
|
|
return valf
|
|
}
|
|
|
|
// TODO 有待实现
|
|
func (ti *TickerInfo) SetToKey(cr *Core) error {
|
|
js, _ := json.Marshal(*ti)
|
|
plateName := ti.InstID + "|tickerInfo"
|
|
_, err := cr.RedisLocalCli.Set(plateName, string(js), 0).Result()
|
|
return err
|
|
}
|