- mtwm.OrderLogisticsChange2Self
- TryInterface2xx
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
32
utils/typeconv_test.go
Normal 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")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user