- refactor AccessAPINoPage.

- product related api added.
This commit is contained in:
gazebo
2018-08-26 09:57:43 +08:00
parent 259a8c896a
commit 8357982612
7 changed files with 625 additions and 69 deletions

View File

@@ -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 {