- refactor AccessAPINoPage.
- product related api added.
This commit is contained in:
@@ -173,17 +173,7 @@ func (a *API) AccessAPI(apiStr string, jdParams map[string]interface{}) (retVal
|
||||
return retVal, err
|
||||
}
|
||||
|
||||
func (a *API) AccessAPINoPage(apiStr string, jdParams map[string]interface{}, keyToRemove, keyToKeep []string) (interface{}, error) {
|
||||
jsonResult, err := a.AccessAPI(apiStr, jdParams)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var data map[string]interface{}
|
||||
if err := utils.UnmarshalUseNumber([]byte(jsonResult["data"].(string)), &data); err != nil {
|
||||
return nil, platformapi.ErrResponseDataFormatWrong
|
||||
}
|
||||
|
||||
func normalNoPageResultParser(data map[string]interface{}) (interface{}, error) {
|
||||
innerCode := ""
|
||||
for _, innerCodeKey := range innerCodeKeys {
|
||||
if innerCode2, ok := data[innerCodeKey]; ok {
|
||||
@@ -191,21 +181,41 @@ func (a *API) AccessAPINoPage(apiStr string, jdParams map[string]interface{}, ke
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if innerCode == "" {
|
||||
panic(fmt.Sprintf("can not find innerCode, data:%v", data))
|
||||
}
|
||||
if _, ok := innerCodeOKCodes[innerCode]; ok {
|
||||
for _, innerDataKey := range noPageInnerDataKeys {
|
||||
if innerData, ok := data[innerDataKey]; ok {
|
||||
return utils.DictKeysMan(innerData, keyToRemove, keyToKeep), nil
|
||||
return innerData, nil
|
||||
}
|
||||
}
|
||||
baseapi.SugarLogger.Errorf("can not find inner data, data:%v", jsonResult)
|
||||
return nil, platformapi.ErrResponseDataFormatWrong
|
||||
} else {
|
||||
return nil, utils.NewErrorCode(getErrMsgFromData(data), innerCode, 1)
|
||||
panic(fmt.Sprintf("can not find inner data, data:%v", data))
|
||||
// return nil, platformapi.ErrResponseDataFormatWrong
|
||||
}
|
||||
return nil, utils.NewErrorCode(getErrMsgFromData(data), innerCode, 1)
|
||||
}
|
||||
|
||||
func NormalHavePageResultParser(data map[string]interface{}, totalCount int) ([]interface{}, int, error) {
|
||||
func (a *API) AccessAPINoPage(apiStr string, jdParams map[string]interface{}, keyToRemove, keyToKeep []string, resultParser func(data map[string]interface{}) (interface{}, error)) (interface{}, error) {
|
||||
if resultParser == nil {
|
||||
resultParser = normalNoPageResultParser
|
||||
}
|
||||
jsonResult, err := a.AccessAPI(apiStr, jdParams)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var data map[string]interface{}
|
||||
if err := utils.UnmarshalUseNumber([]byte(jsonResult["data"].(string)), &data); err != nil {
|
||||
return nil, platformapi.ErrResponseDataFormatWrong
|
||||
}
|
||||
result, err := resultParser(data)
|
||||
if err == nil {
|
||||
return utils.DictKeysMan(result, keyToRemove, keyToKeep), nil
|
||||
}
|
||||
return result, err
|
||||
}
|
||||
|
||||
func normalHavePageResultParser(data map[string]interface{}, totalCount int) ([]interface{}, int, error) {
|
||||
var result map[string]interface{}
|
||||
var retVal []interface{}
|
||||
|
||||
@@ -237,8 +247,9 @@ func NormalHavePageResultParser(data map[string]interface{}, totalCount int) ([]
|
||||
|
||||
for _, inner2ResultKey := range havePageInner2DataKeys {
|
||||
if inner2Result, ok := result[inner2ResultKey]; ok {
|
||||
|
||||
if inner2ResultStr, ok := inner2Result.(string); ok {
|
||||
if inner2Result == nil {
|
||||
retVal = nil
|
||||
} else if inner2ResultStr, ok := inner2Result.(string); ok {
|
||||
err := utils.UnmarshalUseNumber([]byte(inner2ResultStr), &retVal)
|
||||
if err != nil {
|
||||
return nil, 0, platformapi.ErrResponseDataFormatWrong
|
||||
@@ -246,7 +257,6 @@ func NormalHavePageResultParser(data map[string]interface{}, totalCount int) ([]
|
||||
} else {
|
||||
retVal = inner2Result.([]interface{})
|
||||
}
|
||||
|
||||
return retVal, totalCount, nil
|
||||
}
|
||||
}
|
||||
@@ -254,9 +264,9 @@ func NormalHavePageResultParser(data map[string]interface{}, totalCount int) ([]
|
||||
return nil, 0, platformapi.ErrResponseDataFormatWrong
|
||||
}
|
||||
|
||||
func (a *API) AccessAPIHavePage(apiStr string, jdParams map[string]interface{}, keyToRemove, keyToKeep []string, pageResultParser PageResultParser) ([]interface{}, error) {
|
||||
func (a *API) AccessAPIHavePage(apiStr string, jdParams map[string]interface{}, keyToRemove, keyToKeep []string, pageResultParser PageResultParser) ([]interface{}, int, error) {
|
||||
if pageResultParser == nil {
|
||||
pageResultParser = NormalHavePageResultParser
|
||||
pageResultParser = normalHavePageResultParser
|
||||
}
|
||||
|
||||
localJdParams := make(map[string]interface{})
|
||||
@@ -269,10 +279,10 @@ func (a *API) AccessAPIHavePage(apiStr string, jdParams map[string]interface{},
|
||||
totalCount := 0
|
||||
pageNo := AllPage
|
||||
pageSize := DefaultPageSize
|
||||
if tempPageNo, ok := localJdParams["pageNo"]; ok {
|
||||
if tempPageNo, ok := localJdParams[KeyPageNo]; ok {
|
||||
pageNo = tempPageNo.(int)
|
||||
}
|
||||
if tempPageSize, ok := localJdParams["pageSize"]; ok {
|
||||
if tempPageSize, ok := localJdParams[KeyPageSize]; ok {
|
||||
pageSize = tempPageSize.(int)
|
||||
}
|
||||
|
||||
@@ -283,25 +293,25 @@ func (a *API) AccessAPIHavePage(apiStr string, jdParams map[string]interface{},
|
||||
|
||||
retVal := make([]interface{}, 0)
|
||||
for {
|
||||
localJdParams["pageNo"] = curPage
|
||||
localJdParams["pageSize"] = pageSize
|
||||
localJdParams[KeyPageNo] = curPage
|
||||
localJdParams[KeyPageSize] = pageSize
|
||||
jsonResult, err := a.AccessAPI(apiStr, localJdParams)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, totalCount, err
|
||||
}
|
||||
var data map[string]interface{}
|
||||
if err := utils.UnmarshalUseNumber([]byte(jsonResult["data"].(string)), &data); err != nil {
|
||||
return nil, platformapi.ErrResponseDataFormatWrong
|
||||
return nil, totalCount, platformapi.ErrResponseDataFormatWrong
|
||||
}
|
||||
|
||||
innerCode := forceInnerCode2Str(data["code"])
|
||||
if innerCode != "0" && innerCode != "200" {
|
||||
return nil, utils.NewErrorCode(getErrMsgFromData(data), innerCode, 1)
|
||||
return nil, totalCount, utils.NewErrorCode(getErrMsgFromData(data), innerCode, 1)
|
||||
}
|
||||
|
||||
inResult, totalCount2, err := pageResultParser(data, totalCount)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, totalCount, err
|
||||
}
|
||||
totalCount = totalCount2
|
||||
|
||||
@@ -313,8 +323,7 @@ func (a *API) AccessAPIHavePage(apiStr string, jdParams map[string]interface{},
|
||||
}
|
||||
curPage++
|
||||
}
|
||||
|
||||
return retVal, nil
|
||||
return retVal, totalCount, nil
|
||||
}
|
||||
|
||||
func forceInnerCode2Str(innerCode interface{}) string {
|
||||
|
||||
Reference in New Issue
Block a user