- 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
}
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 (
"bytes"
"encoding/json"
"errors"
"fmt"
"net/url"
"reflect"
@@ -69,12 +70,29 @@ func MustMarshal(obj interface{}) []byte {
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)
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()
if err != nil {
return num, err
}
return retVal, nil
}
func MustInterface2Int64(data interface{}) int64 {
retVal, err := TryInterface2Int64(data)
if err != nil {
panic(err.Error())
}
@@ -82,10 +100,11 @@ func MustInterface2Int64(data interface{}) int64 {
}
func Interface2Int64WithDefault(data interface{}, defValue int64) int64 {
if data == nil {
retVal, err := TryInterface2Int64(data)
if err != nil {
return defValue
}
return MustInterface2Int64(data)
return retVal
}
func Interface2DirectIntWithDefault(data interface{}, defValue int) int {
@@ -95,12 +114,29 @@ func Interface2DirectIntWithDefault(data interface{}, defValue int) 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)
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()
if err != nil {
return num, err
}
return retVal, nil
}
func MustInterface2Float64(data interface{}) float64 {
retVal, err := TryInterface2Float64(data)
if err != nil {
panic(err.Error())
}
@@ -108,10 +144,11 @@ func MustInterface2Float64(data interface{}) 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 MustInterface2Float64(data)
return retVal
}
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")
}
}
}