- 饿百活动API基本完成
This commit is contained in:
@@ -8,8 +8,8 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
ActivityTypeDirectDown = 2 // 商品直降
|
||||
ActivityTypeFullDiscount = 8 // 品类满减
|
||||
ActivityTypeDirectDown = 2 // 商品直降
|
||||
ActivityTypeFullDiscount = 8 // 品类满减
|
||||
|
||||
ActivityPFBaidu = 1
|
||||
ActivityPFELM = 2
|
||||
@@ -17,8 +17,38 @@ const (
|
||||
|
||||
ActivityConflictShare = 0
|
||||
ActivityConfilictExclude = 1
|
||||
|
||||
ActivityShowStatusEnabled = 2
|
||||
ActivityShowStatusDisabled = 4
|
||||
)
|
||||
|
||||
type ActivityRule struct {
|
||||
Accords int `json:"accords"` // 订单达到的金额,正整数,单位元。
|
||||
Sale int `json:"sale"` // 每单减价额度,正整数,单位元。
|
||||
}
|
||||
|
||||
type ActivityInfo struct {
|
||||
ActivityID int64 `json:"-"`
|
||||
ActivityName string `json:"activity_name"`
|
||||
ActivityType int `json:"activity_type"`
|
||||
StartTime int64 `json:"start_time"` // 活动开始时间,时间戳,需大于当前时间。
|
||||
EndTime int64 `json:"end_time"`
|
||||
OpenTime string `json:"open_time"` // "22:47"
|
||||
CloseTime string `json:"close_time"`
|
||||
WeekDay string `json:"weekday"` // 活动开始时间段内,每周具体星期几支持,默认活动生效时间段内全周支持。0,1,2,3,4,5,6代表周日到周六。
|
||||
ActivityPlatform int `json:"activity_platform"`
|
||||
IsConflictActivity int `json:"is_conflict_activity"`
|
||||
DayLimit int `json:"day_limit"` // 每日限购X单,1-1000整数。
|
||||
OrderLimit int `json:"order_limit"` // 每单限购商品数量。直降用到,满减没用到。1-1000整数。
|
||||
ActivityDesc string `json:"activity_desc"`
|
||||
ShowCategory string `json:"show_category"`
|
||||
PromotionSkuDesc string `json:"promotion_sku_desc"` // 店铺页活动商品的分类名称,不超过8个字。
|
||||
Rule []*ActivityRule `json:"rule"`
|
||||
|
||||
BaiduShopID int64 `json:"-"`
|
||||
ShowStatus int `json:"-"`
|
||||
}
|
||||
|
||||
type ActivitySkuInfo struct {
|
||||
SkuID string `json:"sku_id"`
|
||||
Stock int `json:"stock"`
|
||||
@@ -41,17 +71,49 @@ type ActivitySkuInfo4Update struct {
|
||||
CustomSkuID string `json:"custom_sku_id"`
|
||||
}
|
||||
|
||||
type ActivityInfo struct {
|
||||
type ActivitySkuListInfo struct {
|
||||
ActivityID int64 `json:"activity_id"`
|
||||
ActivityType int `json:"activity_type"`
|
||||
ActivityName string `json:"activity_name"`
|
||||
SkuList []*ActivitySkuInfoEx `json:"sku_list"`
|
||||
}
|
||||
|
||||
func (a *API) ActivityCreate(params map[string]interface{}) (activityID int64, err error) {
|
||||
result, err := a.AccessAPI("activity.create", params)
|
||||
var (
|
||||
ignoreActivityInfo = ActivityInfo{}
|
||||
)
|
||||
|
||||
func (a *API) ActivityCreate(shopID string, baiduShopID, supplierID int64, activity *ActivityInfo) (activityID int64, err error) {
|
||||
params := utils.Struct2MapWithIgnore(activity, map[string]interface{}{
|
||||
"open_time": ignoreActivityInfo.OpenTime,
|
||||
"close_time": ignoreActivityInfo.CloseTime,
|
||||
"is_conflict_activity": ignoreActivityInfo.IsConflictActivity,
|
||||
"order_limit": ignoreActivityInfo.OrderLimit,
|
||||
"rule": ignoreActivityInfo.Rule,
|
||||
})
|
||||
result, err := a.AccessAPI("activity.create", utils.MergeMaps(params, a.genShopIDParams(shopID, baiduShopID, supplierID)))
|
||||
if err == nil {
|
||||
return utils.MustInterface2Int64(result.Data.(map[string]interface{})["activity_id"]), nil
|
||||
return utils.Str2Int64(utils.Interface2String(result.Data.(map[string]interface{})["activity_id"])), nil
|
||||
}
|
||||
return 0, err
|
||||
}
|
||||
|
||||
func (a *API) ActivityUpdate(activityID int64, shopID string, baiduShopID, supplierID int64, activity *ActivityInfo) (newActivityID int64, err error) {
|
||||
params := utils.Struct2MapWithIgnore(activity, map[string]interface{}{
|
||||
"open_time": ignoreActivityInfo.OpenTime,
|
||||
"close_time": ignoreActivityInfo.CloseTime,
|
||||
"weekday": ignoreActivityInfo.WeekDay,
|
||||
"day_limit": ignoreActivityInfo.DayLimit,
|
||||
"order_limit": ignoreActivityInfo.OrderLimit,
|
||||
"activity_desc": ignoreActivityInfo.ActivityDesc,
|
||||
"show_category": ignoreActivityInfo.ShowCategory,
|
||||
"promotion_sku_desc": ignoreActivityInfo.PromotionSkuDesc,
|
||||
"is_conflict_activity": ignoreActivityInfo.IsConflictActivity,
|
||||
"rule": ignoreActivityInfo.Rule,
|
||||
})
|
||||
params[KeyActivityID] = activityID
|
||||
result, err := a.AccessAPI("activity.update", utils.MergeMaps(params, a.genShopIDParams(shopID, baiduShopID, supplierID)))
|
||||
if err == nil {
|
||||
return utils.Str2Int64(utils.Interface2String(result.Data.(map[string]interface{})["activity_id"])), nil
|
||||
}
|
||||
return 0, err
|
||||
}
|
||||
@@ -63,12 +125,42 @@ func (a *API) ActivityDisable(activityID int64, shopID string, baiduShopID, supp
|
||||
return err
|
||||
}
|
||||
|
||||
func (a *API) ActivityGet(activityID int64, shopID string, baiduShopID, supplierID int64) (activityInfo map[string]interface{}, err error) {
|
||||
func (a *API) ActivityGet(activityID int64, shopID string, baiduShopID, supplierID int64) (activityInfo *ActivityInfo, err error) {
|
||||
params := a.genShopIDParams(shopID, baiduShopID, supplierID)
|
||||
params[KeyActivityID] = activityID
|
||||
result, err := a.AccessAPI("activity.get", params)
|
||||
if err == nil {
|
||||
return result.Data.(map[string]interface{}), nil
|
||||
dataMap := result.Data.(map[string]interface{})
|
||||
activityInfo = &ActivityInfo{
|
||||
ActivityID: utils.Str2Int64(utils.Interface2String(dataMap["activity_id"])),
|
||||
ActivityName: utils.Interface2String(dataMap["activity_name"]),
|
||||
ActivityType: int(utils.Str2Int64(utils.Interface2String(dataMap["activity_type"]))),
|
||||
StartTime: utils.Str2Int64(utils.Interface2String(dataMap["start_time"])),
|
||||
EndTime: utils.Str2Int64(utils.Interface2String(dataMap["end_time"])),
|
||||
OpenTime: utils.Interface2String(dataMap["open_time"]),
|
||||
CloseTime: utils.Interface2String(dataMap["close_time"]),
|
||||
WeekDay: utils.Interface2String(dataMap["weekday"]),
|
||||
ActivityPlatform: int(utils.Str2Int64(utils.Interface2String(dataMap["activity_platform"]))),
|
||||
IsConflictActivity: int(utils.Str2Int64(utils.Interface2String(dataMap["is_conflict_activity"]))),
|
||||
DayLimit: int(utils.Str2Int64(utils.Interface2String(dataMap["day_limit"]))),
|
||||
OrderLimit: int(utils.Str2Int64(utils.Interface2String(dataMap["order_limit"]))),
|
||||
ActivityDesc: utils.Interface2String(dataMap["activity_desc"]),
|
||||
ShowCategory: utils.Interface2String(dataMap["show_category"]),
|
||||
PromotionSkuDesc: utils.Interface2String(dataMap["promotion_sku_desc"]),
|
||||
|
||||
BaiduShopID: utils.Str2Int64(utils.Interface2String(dataMap["baidu_shop_id"])),
|
||||
ShowStatus: int(utils.Str2Int64(utils.Interface2String(dataMap["show_status"]))),
|
||||
}
|
||||
if rule, ok := dataMap["rule"].([]interface{}); ok {
|
||||
for _, v := range rule {
|
||||
vMap := v.(map[string]interface{})
|
||||
activityInfo.Rule = append(activityInfo.Rule, &ActivityRule{
|
||||
Accords: int(utils.MustInterface2Int64(vMap["accords"])),
|
||||
Sale: int(utils.MustInterface2Int64(vMap["sale"])),
|
||||
})
|
||||
}
|
||||
}
|
||||
return activityInfo, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
@@ -119,7 +211,7 @@ func (a *API) ActivitySkuDeleteBatch(activityID int64, shopID string, baiduShopI
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func (a *API) ActivitySkuList(activityID int64, shopID string, baiduShopID, supplierID int64, skuIDs []string, isSkuIDCustom bool) (activityInfo *ActivityInfo, err error) {
|
||||
func (a *API) ActivitySkuList(activityID int64, shopID string, baiduShopID, supplierID int64, skuIDs []string, isSkuIDCustom bool) (activityInfo *ActivitySkuListInfo, err error) {
|
||||
params := a.genShopIDParams(shopID, baiduShopID, supplierID)
|
||||
params[KeyActivityID] = activityID
|
||||
if len(skuIDs) > 0 {
|
||||
@@ -139,7 +231,7 @@ func (a *API) ActivitySkuList(activityID int64, shopID string, baiduShopID, supp
|
||||
if err == nil {
|
||||
resultMap := result.Data.(map[string]interface{})
|
||||
if activityInfo == nil {
|
||||
activityInfo = &ActivityInfo{
|
||||
activityInfo = &ActivitySkuListInfo{
|
||||
ActivityID: activityID,
|
||||
ActivityType: int(utils.Str2Int64(utils.Interface2String(resultMap["activity_type"]))),
|
||||
ActivityName: utils.Interface2String(resultMap["activity_name"]),
|
||||
@@ -179,11 +271,3 @@ func (a *API) ActivitySkuUpdateBatch(activityID int64, actSkuInfoList []*Activit
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func (a *API) ActivityUpdate(activityID int64, params map[string]interface{}) (newActivityID int64, err error) {
|
||||
result, err := a.AccessAPI("activity.update", utils.MergeMaps(utils.Params2Map(KeyActivityID, activityID), params))
|
||||
if err == nil {
|
||||
return utils.MustInterface2Int64(result.Data.(map[string]interface{})["activity_id"]), nil
|
||||
}
|
||||
return 0, err
|
||||
}
|
||||
|
||||
@@ -2,12 +2,26 @@ package ebaiapi
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
)
|
||||
|
||||
func TestActivityGet(t *testing.T) {
|
||||
activityInfo, err := api.ActivityGet(6000058442, "", 0, 2233065879)
|
||||
func TestActivityCreate(t *testing.T) {
|
||||
activityInfo, err := api.ActivityCreate("", 2235877569, 0, &ActivityInfo{
|
||||
ActivityName: "测试活动0403",
|
||||
StartTime: time.Now().Unix(),
|
||||
EndTime: time.Now().Add(24 * time.Hour).Unix(),
|
||||
OpenTime: "22:00",
|
||||
CloseTime: "23:00",
|
||||
WeekDay: "0,1",
|
||||
ActivityPlatform: ActivityPFAll,
|
||||
DayLimit: 1,
|
||||
ActivityDesc: "测试活动0403描述",
|
||||
ShowCategory: "店铺页活动商品",
|
||||
PromotionSkuDesc: "PromotionSkuDesc",
|
||||
ActivityType: ActivityTypeDirectDown,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
@@ -15,6 +29,44 @@ func TestActivityGet(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestActivityUpdate(t *testing.T) {
|
||||
activityInfo, err := api.ActivityUpdate(6000268610, "", 2235877569, 0, &ActivityInfo{
|
||||
ActivityName: "测试活动0403",
|
||||
StartTime: time.Now().Unix(),
|
||||
EndTime: time.Now().Add(24 * time.Hour).Unix(),
|
||||
OpenTime: "22:00",
|
||||
CloseTime: "23:00",
|
||||
WeekDay: "0,1",
|
||||
ActivityPlatform: ActivityPFAll,
|
||||
DayLimit: 1,
|
||||
ActivityDesc: "测试活动0403描述",
|
||||
ShowCategory: "店铺页活动商品",
|
||||
PromotionSkuDesc: "PromotionSkuDesc",
|
||||
ActivityType: ActivityTypeDirectDown,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
t.Log(utils.Format4Output(activityInfo, false))
|
||||
}
|
||||
}
|
||||
|
||||
func TestActivityGet(t *testing.T) {
|
||||
activityInfo, err := api.ActivityGet(6000268610, "", 2235877569, 0)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
t.Log(utils.Format4Output(activityInfo, false))
|
||||
}
|
||||
}
|
||||
|
||||
func TestActivityDisable(t *testing.T) {
|
||||
err := api.ActivityDisable(6000268604, "", 2235877569, 0)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestActivitySkuList(t *testing.T) {
|
||||
activityInfo, err := api.ActivitySkuList(6000058442, "", 0, 2233065879, nil, false)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user