- 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
|
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 (
|
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
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