diff --git a/platformapi/dadaapi/callback.go b/platformapi/dadaapi/callback.go index 0c6d2688..f821c964 100644 --- a/platformapi/dadaapi/callback.go +++ b/platformapi/dadaapi/callback.go @@ -6,8 +6,6 @@ import ( "sort" "strings" - "github.com/fatih/structs" - "git.rosy.net.cn/baseapi" "git.rosy.net.cn/baseapi/utils" ) @@ -82,7 +80,7 @@ func (a *API) GetOrderCallbackMsg(data []byte) (msg *CallbackMsg, callbackRespon return nil, FailedResponse } - mapData := structs.Map(msg) + mapData := utils.Struct2MapByJson(msg) callbackResponse = a.CheckCallbackValidation(mapData) return msg, callbackResponse } diff --git a/platformapi/dadaapi/order.go b/platformapi/dadaapi/order.go index 7de1747e..f20affbe 100644 --- a/platformapi/dadaapi/order.go +++ b/platformapi/dadaapi/order.go @@ -2,7 +2,6 @@ package dadaapi import ( "git.rosy.net.cn/baseapi/utils" - "github.com/fatih/structs" ) const ( @@ -89,7 +88,7 @@ func map2CreateOrderResponse(mapData map[string]interface{}) *CreateOrderRespons } func (a *API) operateOrder(action string, orderInfo *OperateOrderRequiredParams, addParams map[string]interface{}) (retVal *CreateOrderResponse, err error) { - params := structs.Map(orderInfo) + params := utils.Struct2MapByJson(orderInfo) params["callback"] = a.callbackURL allParams := utils.MergeMaps(params, addParams) result, err := a.AccessAPI(action, allParams) diff --git a/platformapi/dingdingapi/callback.go b/platformapi/dingdingapi/callback.go index 4b5fed97..8ea7c086 100644 --- a/platformapi/dingdingapi/callback.go +++ b/platformapi/dingdingapi/callback.go @@ -13,7 +13,6 @@ import ( "git.rosy.net.cn/baseapi" "git.rosy.net.cn/baseapi/utils" - "github.com/fatih/structs" ) const ( @@ -65,7 +64,7 @@ func (a *API) PackCallbackResult(result string) (response *CallbackResponse) { Timestamp: utils.Int64ToStr(time.Now().Unix()), Nonce: utils.GetUUID(), } - response.MsgSignature = a.calculateCallbackSign(structs.Map(response)) + response.MsgSignature = a.calculateCallbackSign(utils.Struct2MapByJson(response)) } return response } diff --git a/platformapi/elmapi/callback.go b/platformapi/elmapi/callback.go index 5f764fd6..8778045e 100644 --- a/platformapi/elmapi/callback.go +++ b/platformapi/elmapi/callback.go @@ -6,7 +6,6 @@ import ( "git.rosy.net.cn/baseapi" "git.rosy.net.cn/baseapi/platformapi" "git.rosy.net.cn/baseapi/utils" - "github.com/fatih/structs" ) // https://open.shop.ele.me/openapi/documents/callback @@ -187,7 +186,7 @@ func (a *API) GetCallbackMsg(data []byte) (msg *CallbackMsg, callbackResponse *C return nil, callbackResponse } - mapData := structs.Map(msg) + mapData := utils.Struct2MapByJson(msg) callbackResponse = a.CheckCallbackValidation(mapData) return msg, callbackResponse } diff --git a/platformapi/mtpsapi/mtpsapi.go b/platformapi/mtpsapi/mtpsapi.go index 3d584eb5..cb6dd4d0 100644 --- a/platformapi/mtpsapi/mtpsapi.go +++ b/platformapi/mtpsapi/mtpsapi.go @@ -9,8 +9,6 @@ import ( "strconv" "strings" - "github.com/fatih/structs" - "git.rosy.net.cn/baseapi/platformapi" "git.rosy.net.cn/baseapi/utils" ) @@ -244,7 +242,7 @@ func (a *API) result2OrderResponse(result *ResponseResult) (order *OrderResponse } func (a *API) CreateOrderByShop(basicParams *CreateOrderByShopParam, addParams map[string]interface{}) (order *OrderResponse, err error) { - params := structs.Map(basicParams) + params := utils.Struct2MapByJson(basicParams) params["goods_value"] = strconv.FormatFloat(basicParams.GoodsValue, 'f', 2, 64) params["goods_weight"] = strconv.FormatFloat(basicParams.GoodsWeight, 'f', 2, 64) allParams := utils.MergeMaps(params, addParams) diff --git a/platformapi/platformapi.go b/platformapi/platformapi.go index 731f9c3e..4de33ddf 100644 --- a/platformapi/platformapi.go +++ b/platformapi/platformapi.go @@ -14,7 +14,6 @@ import ( "git.rosy.net.cn/baseapi" "git.rosy.net.cn/baseapi/utils" - "github.com/fatih/structs" ) const ( @@ -79,10 +78,6 @@ var ( ErrStrCallbackSignatureIsWrong = "wrong signature" ) -func init() { - structs.DefaultTagName = "json" -} - func getClonedData(requestURL *url.URL, r *bytes.Buffer) string { if strings.Index(requestURL.String(), "uploadImg") >= 0 { return "binary content" diff --git a/platformapi/weimobapi/order.go b/platformapi/weimobapi/order.go index 5267a280..4fc4373b 100644 --- a/platformapi/weimobapi/order.go +++ b/platformapi/weimobapi/order.go @@ -1,8 +1,6 @@ package weimobapi -import ( - "github.com/fatih/structs" -) +import "git.rosy.net.cn/baseapi/utils" const ( OrderStatusWait4Pay = 0 // 待支付 @@ -52,7 +50,7 @@ func (a *API) CancelOrder(orderNo int64, specificCancelReason string) (err error } func (a *API) DeliveryOrder(orderDeliveryInfo *DeliveryOrder) (err error) { - apiParams := structs.Map(orderDeliveryInfo) + apiParams := utils.Struct2MapByJson(orderDeliveryInfo) // baseapi.SugarLogger.Debug(utils.Format4Output(apiParams, false)) _, err = a.AccessAPI("order/deliveryOrder", apiParams) return err diff --git a/utils/typeconv.go b/utils/typeconv.go index 3529a93b..afc4734d 100644 --- a/utils/typeconv.go +++ b/utils/typeconv.go @@ -50,7 +50,7 @@ func TryUnmarshalUseNumber(data []byte, result interface{}) error { func Unmarshal2Map(data []byte, structObj interface{}) (resultMap map[string]interface{}, err error) { if err = json.Unmarshal(data, structObj); err == nil { if err = json.Unmarshal(data, &resultMap); err == nil { - m := structs.Map(structObj) + m := Struct2MapByJson(structObj) for k := range resultMap { if value, ok := m[k]; ok { resultMap[k] = value @@ -423,3 +423,9 @@ func Map2KeySlice(flagMap map[string]int) (keyList []string) { } return keyList } + +func Struct2MapByJson(obj interface{}) (mapData map[string]interface{}) { + structsObj := structs.New(obj) + structsObj.TagName = "json" + return structsObj.Map() +} diff --git a/utils/utils.go b/utils/utils.go index 812e9f5d..8228d086 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -11,7 +11,7 @@ import ( "unicode/utf8" "git.rosy.net.cn/baseapi" - "github.com/satori/go.uuid" + uuid "github.com/satori/go.uuid" ) func DictKeysMan(data interface{}, keysToRemove []string, keysToKeep []string) interface{} { diff --git a/utils/utils_test.go b/utils/utils_test.go index e0809f7a..cbccfe27 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -174,3 +174,14 @@ func TestTrimBlanChar(t *testing.T) { t.Fatal("TrimBlanChar doesn't work") } } + +func TestStruct2MapByJson(t *testing.T) { + mapData := Struct2MapByJson(&struct { + IntData int `structs:"dataInt"` + StrData string `json:"dataStr"` + }{ + IntData: 1, + StrData: "2", + }) + t.Log(mapData) +}