- mtwm.OrderLogisticsChange2Self

- TryInterface2xx
This commit is contained in:
gazebo
2019-03-27 11:20:11 +08:00
parent 273b459ed2
commit 4fa834f839
3 changed files with 84 additions and 8 deletions

View File

@@ -147,3 +147,10 @@ func (a *API) OrderBatchPullPhoneNumber(poiCode string, offset, limit int) (real
} }
return nil, err return nil, err
} }
func (a *API) OrderLogisticsChange2Self(orderID int64) (err error) {
_, err = a.AccessAPI("order/logistics/change/poi_self", true, map[string]interface{}{
KeyOrderID: orderID,
})
return err
}

View File

@@ -3,6 +3,7 @@ package utils
import ( import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"errors"
"fmt" "fmt"
"net/url" "net/url"
"reflect" "reflect"
@@ -69,12 +70,29 @@ func MustMarshal(obj interface{}) []byte {
return byteArr return byteArr
} }
func MustInterface2Int64(data interface{}) int64 { func TryInterface2Int64(data interface{}) (num int64, err error) {
if data == nil {
return num, errors.New("data is nil")
}
if dataNumber, ok := data.(int64); ok {
return dataNumber, nil
}
if dataNumber, ok := data.(int); ok {
return int64(dataNumber), nil
}
dataNumber, ok := data.(json.Number) dataNumber, ok := data.(json.Number)
if !ok { if !ok {
panic(fmt.Sprintf("error when cast:%v to int64", data)) return 0, fmt.Errorf("data is not json.Number:%v to int64", data)
} }
retVal, err := dataNumber.Int64() retVal, err := dataNumber.Int64()
if err != nil {
return num, err
}
return retVal, nil
}
func MustInterface2Int64(data interface{}) int64 {
retVal, err := TryInterface2Int64(data)
if err != nil { if err != nil {
panic(err.Error()) panic(err.Error())
} }
@@ -82,10 +100,11 @@ func MustInterface2Int64(data interface{}) int64 {
} }
func Interface2Int64WithDefault(data interface{}, defValue int64) int64 { func Interface2Int64WithDefault(data interface{}, defValue int64) int64 {
if data == nil { retVal, err := TryInterface2Int64(data)
if err != nil {
return defValue return defValue
} }
return MustInterface2Int64(data) return retVal
} }
func Interface2DirectIntWithDefault(data interface{}, defValue int) int { func Interface2DirectIntWithDefault(data interface{}, defValue int) int {
@@ -95,12 +114,29 @@ func Interface2DirectIntWithDefault(data interface{}, defValue int) int {
return data.(int) return data.(int)
} }
func MustInterface2Float64(data interface{}) float64 { func TryInterface2Float64(data interface{}) (num float64, err error) {
if data == nil {
return num, errors.New("data is nil")
}
if dataNumber, ok := data.(float64); ok {
return dataNumber, nil
}
if dataNumber, ok := data.(float32); ok {
return float64(dataNumber), nil
}
dataNumber, ok := data.(json.Number) dataNumber, ok := data.(json.Number)
if !ok { if !ok {
panic(fmt.Sprintf("error when convert:%v", data)) return num, fmt.Errorf("data is not json.Number:%v", data)
} }
retVal, err := dataNumber.Float64() retVal, err := dataNumber.Float64()
if err != nil {
return num, err
}
return retVal, nil
}
func MustInterface2Float64(data interface{}) float64 {
retVal, err := TryInterface2Float64(data)
if err != nil { if err != nil {
panic(err.Error()) panic(err.Error())
} }
@@ -108,10 +144,11 @@ func MustInterface2Float64(data interface{}) float64 {
} }
func Interface2FloatWithDefault(data interface{}, defValue float64) (retVal float64) { func Interface2FloatWithDefault(data interface{}, defValue float64) (retVal float64) {
if _, ok := data.(json.Number); !ok { retVal, err := TryInterface2Float64(data)
if err != nil {
return defValue return defValue
} }
return MustInterface2Float64(data) return retVal
} }
func Interface2String(data interface{}) string { func Interface2String(data interface{}) string {

32
utils/typeconv_test.go Normal file
View File

@@ -0,0 +1,32 @@
package utils
import (
"encoding/json"
"testing"
)
func TestConv(t *testing.T) {
for _, v := range [][]interface{}{
[]interface{}{
json.Number("123"),
int64(123),
},
[]interface{}{
json.Number("abc"),
int64(0),
},
[]interface{}{
"123",
int64(0),
},
[]interface{}{
int64(123),
int64(123),
},
} {
data := Interface2Int64WithDefault(v[0], 0)
if data != v[1].(int64) {
t.Fatal("Interface2Int64WithDefault failed")
}
}
}