From 3fc08fb52c5f112f72dea96baaddf7d3205ee29a Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 22 May 2019 12:11:33 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BA=AC=E4=B8=9C=E7=9B=B4=E9=99=8D?= =?UTF-8?q?=E9=99=90=E6=97=B6=E6=8A=A2=E6=B7=BB=E5=8A=A0=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E9=83=A8=E5=88=86=E5=95=86=E5=93=81=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=8E=A5=E5=8F=A3=20-=20=E4=BA=AC=E4=B8=9C=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E5=8D=95=E5=93=81=E4=BF=83=E9=94=80=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- platformapi/jdapi/promotion_sku.go | 139 +++++++++++++----------- platformapi/jdapi/promotion_sku_test.go | 4 +- 2 files changed, 80 insertions(+), 63 deletions(-) diff --git a/platformapi/jdapi/promotion_sku.go b/platformapi/jdapi/promotion_sku.go index f4fabbdc..51269d45 100644 --- a/platformapi/jdapi/promotion_sku.go +++ b/platformapi/jdapi/promotion_sku.go @@ -30,11 +30,12 @@ const ( ) type PromotionSku struct { - SkuID int64 `json:"skuId,omitempty"` - OutSkuID string `json:"outSkuId,omitempty"` - StationNo int64 `json:"stationNo,omitempty"` - OutStationNo string `json:"outStationNo,omitempty"` - PromotionPrice int64 `json:"promotionPrice"` + SkuID int64 `json:"skuId,omitempty"` + OutSkuID string `json:"outSkuId,omitempty"` + StationNo int64 `json:"stationNo,omitempty"` + OutStationNo string `json:"outStationNo,omitempty"` + + PromotionPrice int64 `json:"promotionPrice,omitempty"` LimitSkuCount int `json:"limitSkuCount,omitempty"` FailReason string `json:"failReason,omitempty"` } @@ -53,85 +54,90 @@ func getPromotionCmd(inCmd string, promotionType int) (outCmd string) { // 单品直降添加主活动信息接口 // https://opendj.jd.com/staticnew/widgets/resources.html?groupid=178&apiid=ee8685c9be9b4aa5bdc41468c5ebc33b func (a *API) CreatePromotionInfosSingle(name string, beginDate, endDate time.Time, outInfoId, advertising string) (infoId int64, err error) { - return a.createPromotionInfos(PromotionTypeDirectDown, name, beginDate, endDate, outInfoId, advertising) + return a.createPromotionInfos(PromotionTypeDirectDown, name, beginDate, endDate, outInfoId, advertising, "") +} + +// 单品直降添加活动规则信息接口 +// https://openo2o.jddj.com/staticnew/widgets/resources.html?groupid=178&apiid=900a9577cb304bbbb59abb7c2c33854d +func (a *API) CreatePromotionRulesSingle(infoId int64, outInfoId string, limitDevice, limitPin, limitCount, limitDaily int) (err error) { + return a.createPromotionRules(PromotionTypeDirectDown, infoId, outInfoId, limitDevice, limitPin, limitCount, limitDaily, "") } // 单品直降添加活动商品信息接口 // 最多200条 // https://opendj.jd.com/staticnew/widgets/resources.html?groupid=178&apiid=0ad0715e0aaa42489cbeac36398e916d func (a *API) CreatePromotionSkuSingle(infoId int64, outInfoId string, skus []*PromotionSku) (skusResult []*PromotionSku, err error) { - return a.createPromotionSku(PromotionTypeDirectDown, infoId, outInfoId, skus) + return a.createPromotionSku(PromotionTypeDirectDown, infoId, outInfoId, skus, "") } // 单品直降活动提交保存接口 // https://opendj.jd.com/staticnew/widgets/resources.html?groupid=178&apiid=b84e14eb341e470db8ed9b60f78edb16 func (a *API) ConfirmPromotionSingle(infoId int64, outInfoId string) (err error) { - return a.confirmPromotion(PromotionTypeDirectDown, infoId, outInfoId) + return a.confirmPromotion(PromotionTypeDirectDown, infoId, outInfoId, "") +} + +// 单品直降活动部分商品取消接口 +// https://openo2o.jddj.com/staticnew/widgets/resources.html?groupid=178&apiid=cfd14470b3fe4625bd2405b20bf8cec4 +func (a *API) CancelPromotionSkuSingle(infoId int64, outInfoId string, cancelSkus []*PromotionSku, traceId string) (err error) { + return a.cancelPromotionSku(PromotionTypeDirectDown, infoId, outInfoId, cancelSkus, traceId) } // 单品直降整个活动取消接口 // https://opendj.jd.com/staticnew/widgets/resources.html?groupid=178&apiid=3d02c2acad714bea86d20d498a1aa074 func (a *API) CancelPromotionSingle(infoId int64, outInfoId string) (err error) { - return a.cancelPromotion(PromotionTypeDirectDown, infoId, outInfoId) + return a.cancelPromotion(PromotionTypeDirectDown, infoId, outInfoId, "") } +// 以下为限时抢 + // 限时抢添加活动主信息接口 // https://opendj.jd.com/staticnew/widgets/resources.html?groupid=184&apiid=7d8b7ff86c9e457bb8a46963cb575769 func (a *API) CreatePromotionInfosLimitTime(name string, beginDate, endDate time.Time, outInfoId, advertising string) (infoId int64, err error) { - return a.createPromotionInfos(PromotionTypeLimitedTime, name, beginDate, endDate, outInfoId, advertising) + return a.createPromotionInfos(PromotionTypeLimitedTime, name, beginDate, endDate, outInfoId, advertising, "") } -// 限时抢添加活动规则信息接口(直降也是调用此接口) +// 限时抢添加活动规则信息接口 // https://opendj.jd.com/staticnew/widgets/resources.html?groupid=184&apiid=e80674791d3542f0a87502753c0d0592 -func (a *API) CreatePromotionRules(infoId int64, outInfoId string, limitDevice, limitPin, limitCount, limitDaily int) (err error) { - jdParams := map[string]interface{}{ - "limitDevice": limitDevice, - "limitPin": limitPin, - "limitCount": limitCount, - "limitDaily": limitDaily, - "timeStamp": utils.GetCurTimeStr(), - } - if infoId != 0 { - jdParams[KeyInfoId] = infoId - } else { - jdParams[KeyOutInfoId] = outInfoId - } - _, err = a.AccessAPINoPage("limitTime/createPromotionRules", jdParams, nil, nil, genNoPageResultParser("errorCode", "errorInfos", "", "0")) - return err +func (a *API) CreatePromotionRulesLimitTime(infoId int64, outInfoId string, limitDevice, limitPin, limitCount, limitDaily int) (err error) { + return a.createPromotionRules(PromotionTypeLimitedTime, infoId, outInfoId, limitDevice, limitPin, limitCount, limitDaily, "") } // 限时抢添加活动商品信息接口 // 最多200条 // https://opendj.jd.com/staticnew/widgets/resources.html?groupid=184&apiid=65fecef4883c40c6b23bbdb6123f5d80 func (a *API) CreatePromotionSkuLimitTime(infoId int64, outInfoId string, skus []*PromotionSku) (skusResult []*PromotionSku, err error) { - return a.createPromotionSku(PromotionTypeLimitedTime, infoId, outInfoId, skus) + return a.createPromotionSku(PromotionTypeLimitedTime, infoId, outInfoId, skus, "") } // 限时抢活动提交保存接口 // https://opendj.jd.com/staticnew/widgets/resources.html?groupid=184&apiid=3991063e2f0d435094e9fe44754f3490 func (a *API) ConfirmPromotionLimitTime(infoId int64, outInfoId string) (err error) { - return a.confirmPromotion(PromotionTypeLimitedTime, infoId, outInfoId) + return a.confirmPromotion(PromotionTypeLimitedTime, infoId, outInfoId, "") +} + +// 限时抢活动取消部分商品接口 +// https://openo2o.jddj.com/staticnew/widgets/resources.html?groupid=184&apiid=01bd37df882749af91be4b040873ccc6 +func (a *API) CancelPromotionSkuLimitTime(infoId int64, outInfoId string, cancelSkus []*PromotionSku, traceId string) (err error) { + return a.cancelPromotionSku(PromotionTypeLimitedTime, infoId, outInfoId, cancelSkus, traceId) } // 限时抢整个活动取消接口 // https://opendj.jd.com/staticnew/widgets/resources.html?groupid=184&apiid=97b6678d30624f73bc13cb68987e6a6d func (a *API) CancelPromotionLimitTime(infoId int64, outInfoId string) (err error) { - return a.cancelPromotion(PromotionTypeLimitedTime, infoId, outInfoId) + return a.cancelPromotion(PromotionTypeLimitedTime, infoId, outInfoId, "") } -func (a *API) createPromotionInfos(promotionType int, name string, beginDate, endDate time.Time, outInfoId, advertising string) (infoId int64, err error) { +func (a *API) createPromotionInfos(promotionType int, name string, beginDate, endDate time.Time, outInfoId, advertising, traceId string) (infoId int64, err error) { if outInfoId == "" { outInfoId = fmt.Sprintf("%X", md5.Sum([]byte(name))) } - jdParams := map[string]interface{}{ - "promotionName": name, - "beginDate": utils.Time2Str(beginDate), - "endDate": utils.Time2Str(endDate), - "advertising": advertising, - "promotionType": promotionType, - "timeStamp": utils.GetCurTimeStr(), - KeyOutInfoId: outInfoId, - } + jdParams := getCommonSkuPromotionParams(0, outInfoId, traceId) + jdParams["promotionName"] = name + jdParams["beginDate"] = utils.Time2Str(beginDate) + jdParams["endDate"] = utils.Time2Str(endDate) + jdParams["advertising"] = advertising + jdParams["promotionType"] = promotionType + jdParams["advertising"] = advertising result, err := a.AccessAPINoPage(getPromotionCmd("createPromotionInfos", promotionType), jdParams, nil, nil, genNoPageResultParser("errorCode", "errorInfos", "data", "0")) if err == nil { return utils.MustInterface2Int64(result), nil @@ -139,17 +145,20 @@ func (a *API) createPromotionInfos(promotionType int, name string, beginDate, en return 0, err } +func (a *API) createPromotionRules(promotionType int, infoId int64, outInfoId string, limitDevice, limitPin, limitCount, limitDaily int, traceId string) (err error) { + jdParams := getCommonSkuPromotionParams(infoId, outInfoId, traceId) + jdParams["limitDevice"] = limitDevice + jdParams["limitPin"] = limitPin + jdParams["limitCount"] = limitCount + jdParams["limitDaily"] = limitDaily + _, err = a.AccessAPINoPage(getPromotionCmd("createPromotionRules", promotionType), jdParams, nil, nil, genNoPageResultParser("errorCode", "errorInfos", "", "0")) + return err +} + // todo skusResult 返回值没有意义,为了兼容暂时保留 -func (a *API) createPromotionSku(promotionType int, infoId int64, outInfoId string, skus []*PromotionSku) (skusResult []*PromotionSku, err error) { - jdParams := map[string]interface{}{ - "skus": skus, - "timeStamp": utils.GetCurTimeStr(), - } - if infoId != 0 { - jdParams[KeyInfoId] = infoId - } else { - jdParams[KeyOutInfoId] = outInfoId - } +func (a *API) createPromotionSku(promotionType int, infoId int64, outInfoId string, skus []*PromotionSku, traceId string) (skusResult []*PromotionSku, err error) { + jdParams := getCommonSkuPromotionParams(infoId, outInfoId, traceId) + jdParams["skus"] = skus // todo 当前是在出错时,把data中的数据当成错误信息处理的 result, err := a.AccessAPINoPage(getPromotionCmd("createPromotionSku", promotionType), jdParams, nil, nil, genNoPageResultParser("errorCode", "data", "", "0")) if err == nil && result != nil { @@ -158,20 +167,26 @@ func (a *API) createPromotionSku(promotionType int, infoId int64, outInfoId stri return skusResult, err } -func (a *API) confirmPromotion(promotionType int, infoId int64, outInfoId string) (err error) { - jdParams := map[string]interface{}{ - "timeStamp": utils.GetCurTimeStr(), - } - if infoId != 0 { - jdParams[KeyInfoId] = infoId - } else { - jdParams[KeyOutInfoId] = outInfoId - } +func (a *API) confirmPromotion(promotionType int, infoId int64, outInfoId, traceId string) (err error) { + jdParams := getCommonSkuPromotionParams(infoId, outInfoId, traceId) _, err = a.AccessAPINoPage(getPromotionCmd("confirmPromotion", promotionType), jdParams, nil, nil, genNoPageResultParser("errorCode", "errorInfos", "", "0")) return err } -func (a *API) cancelPromotion(promotionType int, infoId int64, outInfoId string) (err error) { +func (a *API) cancelPromotionSku(promotionType int, infoId int64, outInfoId string, cancelSkus []*PromotionSku, traceId string) (err error) { + jdParams := getCommonSkuPromotionParams(infoId, outInfoId, traceId) + jdParams["cancelSkus"] = cancelSkus + _, err = a.AccessAPINoPage(getPromotionCmd("cancelPromotionSku", promotionType), jdParams, nil, nil, genNoPageResultParser("errorCode", "errorInfos", "", "0")) + return err +} + +func (a *API) cancelPromotion(promotionType int, infoId int64, outInfoId, traceId string) (err error) { + jdParams := getCommonSkuPromotionParams(infoId, outInfoId, traceId) + _, err = a.AccessAPINoPage(getPromotionCmd("cancelPromotion", promotionType), jdParams, nil, nil, genNoPageResultParser("errorCode", "errorInfos", "", "0")) + return err +} + +func getCommonSkuPromotionParams(infoId int64, outInfoId, traceId string) map[string]interface{} { jdParams := map[string]interface{}{ "timeStamp": utils.GetCurTimeStr(), } @@ -180,6 +195,8 @@ func (a *API) cancelPromotion(promotionType int, infoId int64, outInfoId string) } else { jdParams[KeyOutInfoId] = outInfoId } - _, err = a.AccessAPINoPage(getPromotionCmd("cancelPromotion", promotionType), jdParams, nil, nil, genNoPageResultParser("errorCode", "errorInfos", "", "0")) - return err + if traceId != "" { + jdParams["traceId"] = traceId + } + return jdParams } diff --git a/platformapi/jdapi/promotion_sku_test.go b/platformapi/jdapi/promotion_sku_test.go index ffcef95d..0362ef41 100644 --- a/platformapi/jdapi/promotion_sku_test.go +++ b/platformapi/jdapi/promotion_sku_test.go @@ -11,7 +11,7 @@ func TestCreatePromotionSingle(t *testing.T) { t.Fatal(err) } t.Log(infoId) - err = api.CreatePromotionRules(infoId, "", 1, 1, 1, 1) + err = api.CreatePromotionRulesSingle(infoId, "", 1, 1, 1, 1) if err != nil { t.Fatal(err) } @@ -39,7 +39,7 @@ func TestCreatePromotionLimitTime(t *testing.T) { t.Fatal(err) } t.Log(infoId) - err = api.CreatePromotionRules(infoId, "", 1, 1, 5, 1) + err = api.CreatePromotionRulesLimitTime(infoId, "", 1, 1, 5, 1) if err != nil { t.Fatal(err) }