- use Must func when possible.
This commit is contained in:
25
platform/elmapi/callback.go
Normal file
25
platform/elmapi/callback.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package elmapi
|
||||
|
||||
const (
|
||||
OrderEffective = 10
|
||||
MerchantValid = 12
|
||||
OrderCanceled = 14
|
||||
MerchantInvalid = 15
|
||||
OrderForceInvalid = 17
|
||||
OrderFinished = 18
|
||||
)
|
||||
|
||||
type ELMCallbackResponse struct {
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
type ELMCallbackMsg struct {
|
||||
AppId int `json:"appId"`
|
||||
RequestId string `json:"requestId"`
|
||||
Type int `json:"type"`
|
||||
Message string `json:"message"`
|
||||
ShopId int `json:"shopId"`
|
||||
Timestamp int64 `json:"timestamp"`
|
||||
UserId int64 `json:"userId"`
|
||||
Signature string `json:"signature"`
|
||||
}
|
||||
@@ -2,7 +2,6 @@ package elmapi
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
@@ -37,7 +36,7 @@ var (
|
||||
|
||||
type ELMResult struct {
|
||||
Id string
|
||||
Result map[string]interface{}
|
||||
Result interface{}
|
||||
Error map[string]interface{}
|
||||
}
|
||||
|
||||
@@ -85,7 +84,7 @@ func (e *ELMAPI) signParams(action string, payload *ELMPayload) string {
|
||||
}
|
||||
for _, data := range allData {
|
||||
for k, v := range data {
|
||||
vBytes, _ := json.Marshal(v)
|
||||
vBytes := utils.MustMarshal(v)
|
||||
keyValues = append(keyValues, k+"="+string(vBytes))
|
||||
}
|
||||
}
|
||||
@@ -102,7 +101,7 @@ func (e *ELMAPI) AccessELM(action string, params map[string]interface{}) (*ELMRe
|
||||
}
|
||||
metas := map[string]interface{}{
|
||||
"app_key": e.appKey,
|
||||
"timestamp": int(utils.GetCurTimestamp()),
|
||||
"timestamp": utils.GetCurTimestamp(),
|
||||
}
|
||||
|
||||
payload := &ELMPayload{
|
||||
@@ -115,11 +114,8 @@ func (e *ELMAPI) AccessELM(action string, params map[string]interface{}) (*ELMRe
|
||||
}
|
||||
|
||||
payload.Signature = e.signParams(action, payload)
|
||||
dataBytes, err := json.Marshal(payload)
|
||||
if err != nil {
|
||||
e.sugarLogger.Errorf("Error when marshal %v, error:%v", payload, err)
|
||||
return nil, err
|
||||
}
|
||||
dataBytes := utils.MustMarshal(payload)
|
||||
|
||||
dataStr := string(dataBytes)
|
||||
exceedLimitRetryCount := 0
|
||||
systemErrorRetryCount := 0
|
||||
@@ -162,11 +158,10 @@ func (e *ELMAPI) AccessELM(action string, params map[string]interface{}) (*ELMRe
|
||||
|
||||
jsonResult1, err := utils.HttpResponse2Json(response)
|
||||
resultError, _ := jsonResult1["error"].(map[string]interface{})
|
||||
result, _ := jsonResult1["result"].(map[string]interface{})
|
||||
jsonResult := &ELMResult{
|
||||
Id: jsonResult1["id"].(string),
|
||||
Error: resultError,
|
||||
Result: result,
|
||||
Result: jsonResult1["result"],
|
||||
}
|
||||
if err != nil {
|
||||
e.sugarLogger.Warnf("HttpResponse2Json return:%v", err)
|
||||
|
||||
@@ -28,10 +28,23 @@ func TestAccessELM(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("Error when accessing AccessJDQuery result:%v, error:%v", result, err)
|
||||
} else {
|
||||
userIdNumber := result.Result["userId"].(json.Number)
|
||||
mapResult := result.Result.(map[string]interface{})
|
||||
userIdNumber := mapResult["userId"].(json.Number)
|
||||
userId, err := userIdNumber.Int64()
|
||||
if userId != 336072266326420104 || err != nil {
|
||||
t.Fatalf("userId is not correct:%v", userIdNumber)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetOrder(t *testing.T) {
|
||||
result, err := elmapi.GetOrder("3023582487561731159")
|
||||
if err != nil {
|
||||
t.Fatalf("Error when accessing AccessJDQuery result:%v, error:%v", result, err)
|
||||
} else {
|
||||
shopId := int(utils.MustInterface2Int64(result["shopId"]))
|
||||
if shopId != 157451615 {
|
||||
t.Fatalf("userId is not correct:%v", shopId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
15
platform/elmapi/order.go
Normal file
15
platform/elmapi/order.go
Normal file
@@ -0,0 +1,15 @@
|
||||
package elmapi
|
||||
|
||||
type ELMOrderInfo map[string]interface{}
|
||||
|
||||
func (e *ELMAPI) GetOrder(orderId string) (ELMOrderInfo, error) {
|
||||
result, err := e.AccessELM("eleme.order.getOrder", map[string]interface{}{
|
||||
"orderId": orderId,
|
||||
})
|
||||
|
||||
if err == nil {
|
||||
innerResult := ELMOrderInfo(result.Result.(map[string]interface{}))
|
||||
return innerResult, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
@@ -144,6 +144,10 @@ func GetAPIOperator() string {
|
||||
return time.Now().Format("2006-01-02_15:04:05")
|
||||
}
|
||||
|
||||
func Timestamp2Str(timestamp int64) string {
|
||||
return time.Unix(timestamp/1000, 0).Format("2006-01-02 15:04:05")
|
||||
}
|
||||
|
||||
func HttpResponse2Json(response *http.Response) (map[string]interface{}, error) {
|
||||
var jsonResult map[string]interface{}
|
||||
bodyData, err := ioutil.ReadAll(response.Body)
|
||||
@@ -157,3 +161,15 @@ func HttpResponse2Json(response *http.Response) (map[string]interface{}, error)
|
||||
}
|
||||
return jsonResult, nil
|
||||
}
|
||||
|
||||
func MustInterface2Int64(data interface{}) int64 {
|
||||
dataNumber, ok := data.(json.Number)
|
||||
if !ok {
|
||||
panic(fmt.Sprintf("error when convert:%v", data))
|
||||
}
|
||||
retVal, err := dataNumber.Int64()
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
return retVal
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user