- autonavi api added.

- other refactor.
This commit is contained in:
gazebo
2018-07-14 13:13:58 +08:00
parent 1ec75cafd0
commit 90f21ffb8d
6 changed files with 267 additions and 42 deletions

View File

@@ -15,6 +15,10 @@ import (
"git.rosy.net.cn/baseapi"
)
var (
DefaultTimeValue = Str2Time("1970-01-01 00:00:00")
)
func GetConcretValue(value reflect.Value) reflect.Value {
for {
if value.Kind() == reflect.Interface || value.Kind() == reflect.Ptr {
@@ -41,10 +45,55 @@ func MustMarshal(obj interface{}) []byte {
if err != nil {
panic(fmt.Sprintf("err when Marshal obj:%v", obj))
}
return byteArr
}
func MustInterface2Int64(data interface{}) int64 {
dataNumber, ok := data.(json.Number)
if !ok {
panic(fmt.Sprintf("error when cast:%v to int64", data))
}
retVal, err := dataNumber.Int64()
if err != nil {
panic(err.Error())
}
return retVal
}
func Interface2Int64WithDefault(data interface{}, defValue int64) int64 {
if data == nil {
return defValue
}
return MustInterface2Int64(data)
}
func MustInterface2Float64(data interface{}) float64 {
dataNumber, ok := data.(json.Number)
if !ok {
panic(fmt.Sprintf("error when convert:%v", data))
}
retVal, err := dataNumber.Float64()
if err != nil {
panic(err.Error())
}
return retVal
}
func Interface2FloatWithDefault(data interface{}, defValue float64) (retVal float64) {
if data == nil {
return defValue
}
return MustInterface2Float64(data)
}
func Interface2String(data interface{}) string {
if data == nil {
return ""
}
return data.(string)
}
//
func Bool2String(value bool) string {
if value {
return "true"
@@ -84,44 +133,6 @@ func Int2Str(value int) string {
return strconv.Itoa(value)
}
func MustInterface2Int64(data interface{}) int64 {
dataNumber, ok := data.(json.Number)
if !ok {
panic(fmt.Sprintf("error when cast:%v to int64", data))
}
retVal, err := dataNumber.Int64()
if err != nil {
panic(err.Error())
}
return retVal
}
func MustInterface2Float64(data interface{}) float64 {
dataNumber, ok := data.(json.Number)
if !ok {
panic(fmt.Sprintf("error when convert:%v", data))
}
retVal, err := dataNumber.Float64()
if err != nil {
panic(err.Error())
}
return retVal
}
func Interface2Float64(data interface{}) (retVal float64) {
if dataNumber, ok := data.(json.Number); ok {
retVal, _ = dataNumber.Float64()
}
return retVal
}
func Interface2String(data interface{}) string {
if data == nil {
return ""
}
return data.(string)
}
// timestamp is in second
func Timestamp2Str(timestamp int64) string {
return Time2Str(time.Unix(timestamp, 0))
@@ -139,7 +150,16 @@ func Str2Time(timeStr string) time.Time {
timeStr = strings.Replace(timeStr, "T", " ", 1)
retVal, err := time.ParseInLocation("2006-01-02 15:04:05", timeStr, time.Local)
if err != nil {
baseapi.SugarLogger.Errorf("ParseInLocation failed, timeStr:%v, error:%v", timeStr, err)
baseapi.SugarLogger.Errorf("time.ParseInLocation failed, timeStr:%v, error:%v", timeStr, err)
}
return retVal
}
func Str2TimeWithDefault(timeStr string, defValue time.Time) time.Time {
timeStr = strings.Replace(timeStr, "T", " ", 1)
retVal, err := time.ParseInLocation("2006-01-02 15:04:05", timeStr, time.Local)
if err != nil {
return defValue
}
return retVal
}