@@ -1,7 +1,6 @@
package ebaiapi
import (
"fmt"
"strings"
"git.rosy.net.cn/baseapi/utils"
@@ -11,15 +10,16 @@ const (
ActivityTypeDirectDown = 2 // 商品直降
ActivityTypeFullDiscount = 8 // 品类满减
ActivityPFBaidu = 1
ActivityPFELM = 2
ActivityPFAll = 4
ActivityPFBaidu = 1 // 星选
ActivityPFELM = 2 // 饿了么
ActivityPFAll = 4 // 星选&饿了么
ActivityConflictShare = 0
ActivityConfilictExclude = 1
ActivityConflictShare = 0 // 与全店满减等其他活动同享
ActivityConfilictExclude = 1 // 与全店满减等其他活动互斥
ActivityShowStatusEnabled = 2
ActivityShowStatusDis abled = 4
// 下面两个是做什么用的?
// ActivityShowStatusEn abled = 2
// ActivityShowStatusDisabled = 4
)
type ActivityRule struct {
@@ -45,40 +45,50 @@ type ActivityInfo struct {
PromotionSkuDesc string ` json:"promotion_sku_desc,omitempty" ` // 店铺页活动商品的分类名称, 不超过8个字。
Rule [ ] * ActivityRule ` json:"rule,omitempty" `
BaiduShopID int64 ` json:"baiduS hopID ,omitempty" `
ShowStatus int ` json:"showStatus,omitempty" `
BaiduShopID int64 ` json:"baidu_s hop_id ,omitempty" ` // 这个用于查询时返回值,设置时这里设置的值会被忽略
// ShowStatus int ` json:"showStatus,omitempty"`
}
type ActivitySkuInfo struct {
type ActivitySkuInfo4Add struct {
SkuID string ` json:"sku_id" `
Stock int ` json:"stock" `
PromotionPrice float32 ` json:"special_price" ` // 直降用,复用
StoreUserLimit int ` json:"store_user_limit" ` // 直降用
StoreUserLimit int ` json:"store_user_limit" `
SpecialPrice int64 ` json:"special_price" `
}
type ActivitySkuInfoEx struct {
ActivitySkuInfo
BaiduShopID int64 ` json:"baidu_shop _id" `
UpcName string ` json:"upc_name" `
OriginalPrice float32 ` json:"original_price "`
type ActivitySkuInfo4List struct {
BaiduShopID int64 ` json:"baidu_shop_id" `
SkuID string ` json:"sku _id" `
UpcName string ` json:"upc_name" `
Stock int ` json:"stock "`
PromotionPrice float32 ` json:"promotion_price" ` // 商品活动价,单位元,品类满减活动不返回活动价。
OriginalPrice float32 ` json:"original_price" ` // 添加商品时商品原价,单位元。
}
type ActivitySkuInfo4Update struct {
ActivitySkuInfo
Baidu ShopID int64 ` json:"baidu_ shop_id" `
Shop ID string ` json:"shop_id " `
CustomSkuID string ` json:"custom_sku_id" `
BaiduShopID int64 ` json:"baidu_shop_id,omitempty" `
ShopID string ` json:"shop_id,omitempty " `
Sku ID string ` json:"sku_id,omitempty " `
CustomSkuID string ` json:"custom_sku_id,omitempty " `
Stock int ` json:"stock,omitempty" `
StoreUserLimit int ` json:"store_user_limit,omitempty" `
SpecialPrice int64 ` json:"special_price,omitempty" `
}
type ActivitySkuListInfo struct {
ActivityID int64 ` json:"activity_id" `
ActivityType int ` json:"activity_type" `
ActivityName string ` json:"activity_name" `
SkuList [ ] * ActivitySkuInfoEx ` json:"sku_list" `
ActivityID int64 ` json:"activity_id" `
ActivityType int ` json:"activity_type" `
ActivityName string ` json:"activity_name" `
SkuList [ ] * ActivitySkuInfo4List ` json:"sku_list" `
}
// 创建商品营销活动
// https://open-be.ele.me/dev/api/doc/v3/#api-Marketing-activity_create
func ( a * API ) ActivityCreate ( shopID string , baiduShopID , supplierID int64 , activity * ActivityInfo ) ( activityID int64 , err error ) {
activity . BaiduShopID = 0
params := utils . Struct2FlatMap ( activity )
result , err := a . AccessAPI ( "activity.create" , utils . MergeMaps ( params , a . genShopIDParams ( shopID , baiduShopID , supplierID ) ) )
if err == nil {
@@ -87,7 +97,10 @@ func (a *API) ActivityCreate(shopID string, baiduShopID, supplierID int64, activ
return 0 , err
}
// 更新活动信息
// https://open-be.ele.me/dev/api/doc/v3/#api-Marketing-activity_update
func ( a * API ) ActivityUpdate ( activityID int64 , shopID string , baiduShopID , supplierID int64 , activity * ActivityInfo ) ( newActivityID int64 , err error ) {
activity . BaiduShopID = 0
params := utils . Struct2FlatMap ( activity )
params [ KeyActivityID ] = activityID
result , err := a . AccessAPI ( "activity.update" , utils . MergeMaps ( params , a . genShopIDParams ( shopID , baiduShopID , supplierID ) ) )
@@ -97,6 +110,8 @@ func (a *API) ActivityUpdate(activityID int64, shopID string, baiduShopID, suppl
return 0 , err
}
// 下线商品营销活动
// https://open-be.ele.me/dev/api/doc/v3/#api-Marketing-activity_disable
func ( a * API ) ActivityDisable ( activityID int64 , shopID string , baiduShopID , supplierID int64 ) ( err error ) {
params := a . genShopIDParams ( shopID , baiduShopID , supplierID )
params [ KeyActivityID ] = activityID
@@ -104,6 +119,8 @@ func (a *API) ActivityDisable(activityID int64, shopID string, baiduShopID, supp
return err
}
// 查看活动信息
// https://open-be.ele.me/dev/api/doc/v3/#api-Marketing-activity_get
func ( a * API ) ActivityGet ( activityID int64 , shopID string , baiduShopID , supplierID int64 ) ( activityInfo * ActivityInfo , err error ) {
params := a . genShopIDParams ( shopID , baiduShopID , supplierID )
params [ KeyActivityID ] = activityID
@@ -115,7 +132,9 @@ func (a *API) ActivityGet(activityID int64, shopID string, baiduShopID, supplier
return activityInfo , err
}
func ( a * API ) ActivitySkuAddBatch ( activityID int64 , shopID string , baiduShopID int64 , activityType int , skuList [ ] * ActivitySkuInfo , isSkuIDCustom bool ) ( successIDs [ ] string , err error ) {
// 批量添加活动商品
// https://open-be.ele.me/dev/api/doc/v3/#api-Marketing-activity_sku_add_batch
func ( a * API ) ActivitySkuAddBatch ( activityID int64 , shopID string , baiduShopID int64 , activityType int , skuList [ ] * ActivitySkuInfo4Add , isSkuIDCustom bool ) ( successIDs [ ] string , err error ) {
params := a . genShopIDParams ( shopID , baiduShopID , 0 )
params [ KeyActivityID ] = activityID
skusKey := "activity_skus"
@@ -130,7 +149,7 @@ func (a *API) ActivitySkuAddBatch(activityID int64, shopID string, baiduShopID i
return nil , err
}
func skuList2Str ( activityType int , skuList [ ] * ActivitySkuInfo , isSkuIDCustom bool ) string {
func skuList2Str ( activityType int , skuList [ ] * ActivitySkuInfo4Add , isSkuIDCustom bool ) string {
skuList2 := [ ] string { }
for _ , v := range skuList {
strList := [ ] string {
@@ -138,14 +157,18 @@ func skuList2Str(activityType int, skuList []*ActivitySkuInfo, isSkuIDCustom boo
utils . Int2Str ( v . Stock ) ,
}
if activityType == ActivityTypeDirectDown {
strList = append ( strList , fmt . Sprintf ( "%.2f" , v . Promotion Price) )
strList = append ( strList , utils . Int2Str ( v . StoreUserLimit ) )
strList = append ( strList , utils . Int64ToStr ( v . Special Price) )
if v . StoreUserLimit > 0 {
strList = append ( strList , utils . Int2Str ( v . StoreUserLimit ) )
}
}
skuList2 = append ( skuList2 , strings . Join ( strList , ":" ) )
}
return strings . Join ( skuList2 , ";" )
}
// 批量删除活动商品
// https://open-be.ele.me/dev/api/doc/v3/#api-Marketing-activity_sku_delete_batch
func ( a * API ) ActivitySkuDeleteBatch ( activityID int64 , shopID string , baiduShopID int64 , skuIDs [ ] string , isSkuIDCustom bool ) ( successIDs [ ] string , err error ) {
params := a . genShopIDParams ( shopID , baiduShopID , 0 )
params [ KeyActivityID ] = activityID
@@ -161,6 +184,8 @@ func (a *API) ActivitySkuDeleteBatch(activityID int64, shopID string, baiduShopI
return nil , err
}
// 批量添加活动商品
// https://open-be.ele.me/dev/api/doc/v3/#api-Marketing-activity_sku_add_batch
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
@@ -179,35 +204,17 @@ func (a *API) ActivitySkuList(activityID int64, shopID string, baiduShopID, supp
params [ "page" ] = page
result , err = a . AccessAPI ( "activity.sku.list" , params )
if err == nil {
// tmpActivityInfo := &ActivitySkuListInfo{}
// if err = utils.Map2StructByJson(result.Data, tmpActivityInfo, true); err != nil {
// return nil, err
// }
// if activityInfo == nil {
// activityInfo = tmpActivityInfo
// } else {
// activityInfo.SkuList = append(activityInfo.SkuList, tmpActivityInfo.SkuList...)
// }
resultMap := result . Data . ( map [ string ] interface { } )
if activityInfo == nil {
activityInfo = & A ctivitySkuListInfo {
ActivityID : activityID ,
ActivityType : int ( utils . Str2Int64 ( utils . Interface2String ( resultMap [ "activity_type" ] ) ) ) ,
ActivityName : utils . Interface2String ( resultMap [ "activity_name" ] ) ,
if err = utils . Map2StructByJson ( resultMap , & a ctivityInfo , true ) ; err != nil {
return nil , err
}
}
for _ , v := range resultMap [ " sku_l ist" ] . ( [ ] interface { } ) {
skuMap : = v . ( map [ string ] interfac e{ } )
activityInfo . SkuList = append ( activityInfo . SkuList , & ActivitySkuInfoEx {
ActivitySkuInfo : ActivitySkuInfo {
SkuID : utils . Interface2String ( s kuMap [ "sku_id" ] ) ,
Stock : int ( utils . Str2Int64 ( utils . Interface2String ( skuMap [ "stock" ] ) ) ) ,
PromotionPrice : float32 ( utils . Interface2Float64WithDefault ( skuMap [ "promotion_price" ] , 0 ) ) ,
} ,
BaiduShopID : utils . Str2Int64 ( utils . Interface2String ( skuMap [ "baidu_shop_id" ] ) ) ,
OriginalPrice : float32 ( utils . Interface2Float64WithDefault ( skuMap [ "original_price" ] , 0 ) ) ,
UpcName : utils . Interface2String ( skuMap [ "upc_name" ] ) ,
} )
} else {
var skuL ist [ ] * ActivitySkuInfo4List
if err = utils . Map2StructByJson ( resultMap [ "sku_list" ] , & skuList , tru e) ; err != nil {
return nil , err
}
activityInfo . SkuList = append ( activityInfo . S kuList , skuList ... )
}
if len ( activityInfo . SkuList ) >= int ( utils . MustInterface2Int64 ( resultMap [ "total" ] ) ) {
break
@@ -220,6 +227,8 @@ func (a *API) ActivitySkuList(activityID int64, shopID string, baiduShopID, supp
return activityInfo , err
}
// 批量更新活动商品
// https://open-be.ele.me/dev/api/doc/v3/#api-Marketing-activity_sku_update_batch
func ( a * API ) ActivitySkuUpdateBatch ( activityID int64 , actSkuInfoList [ ] * ActivitySkuInfo4Update ) ( faildInfoList [ ] string , err error ) {
result , err := a . AccessAPI ( "activity.sku.update.batch" , map [ string ] interface { } {
KeyActivityID : activityID ,