84 lines
2.9 KiB
Go
84 lines
2.9 KiB
Go
package partner
|
||
|
||
import (
|
||
"time"
|
||
|
||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||
"git.rosy.net.cn/jx-callback/business/model"
|
||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||
)
|
||
|
||
type IPurchasePlatformActHandler interface {
|
||
// // 如果是单品级活动,actOrderRules为空
|
||
// // 如果是订单级活动,actStoreSku可以为空(表示不限制SKU)
|
||
// CreateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSku []*model.ActStoreSku2) (err error)
|
||
// UpdateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSku []*model.ActStoreSku2) (err error)
|
||
// // 取消整个京西活动
|
||
// CancelAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreSku []*model.ActStoreSku2) (err error)
|
||
|
||
SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSkuList []*model.ActStoreSku2) (err error)
|
||
}
|
||
|
||
func SplitActStoreSku(actStoreSkuList []*model.ActStoreSku2) (actStoreSkuMap map[int][]*model.ActStoreSku2) {
|
||
actStoreSkuMap = make(map[int][]*model.ActStoreSku2)
|
||
for _, v := range actStoreSkuList {
|
||
actStoreSkuMap[v.StoreID] = append(actStoreSkuMap[v.StoreID], v)
|
||
}
|
||
return actStoreSkuMap
|
||
}
|
||
|
||
func SplitActStoreSku2List(actStoreSkuList []*model.ActStoreSku2) (actStoreSkuListList [][]*model.ActStoreSku2) {
|
||
actStoreSkuMap := SplitActStoreSku(actStoreSkuList)
|
||
for _, v := range actStoreSkuMap {
|
||
actStoreSkuListList = append(actStoreSkuListList, v)
|
||
}
|
||
return actStoreSkuListList
|
||
}
|
||
|
||
func Act2ActMap(act *model.Act2) (actMap *model.ActMap) {
|
||
actMap = &model.ActMap{}
|
||
actMap.ID = act.MapID
|
||
return actMap
|
||
}
|
||
|
||
func ActStoreSku2ActStoreSkuMap(actStoreSku *model.ActStoreSku2) (actStoreSkuMap *model.ActStoreSkuMap) {
|
||
actStoreSkuMap = &model.ActStoreSkuMap{}
|
||
actStoreSkuMap.ID = actStoreSku.MapID
|
||
return actStoreSkuMap
|
||
}
|
||
|
||
func Act2Update(act *model.Act2, syncStatus int) (item *dao.KVUpdateItem) {
|
||
kvs := map[string]interface{}{
|
||
model.FieldSyncStatus: 0,
|
||
}
|
||
if syncStatus == model.SyncFlagDeletedMask {
|
||
kvs[model.FieldDeletedAt] = time.Now()
|
||
} else if syncStatus == model.SyncFlagNewMask {
|
||
kvs[model.FieldVendorActID] = act.VendorActID
|
||
}
|
||
item = &dao.KVUpdateItem{
|
||
Item: Act2ActMap(act),
|
||
KVs: kvs,
|
||
}
|
||
return item
|
||
}
|
||
|
||
func ActStoreSku2Update(actStoreSkuList []*model.ActStoreSku2, syncStatus int) (items []*dao.KVUpdateItem) {
|
||
for _, v := range actStoreSkuList {
|
||
kvs := map[string]interface{}{
|
||
model.FieldSyncStatus: 0,
|
||
}
|
||
if syncStatus == model.SyncFlagDeletedMask {
|
||
kvs[model.FieldDeletedAt] = time.Now()
|
||
} else if syncStatus == model.SyncFlagNewMask {
|
||
kvs[model.FieldVendorActID] = v.VendorActID
|
||
}
|
||
items = append(items, &dao.KVUpdateItem{
|
||
Item: ActStoreSku2ActStoreSkuMap(v),
|
||
KVs: kvs,
|
||
})
|
||
}
|
||
return items
|
||
}
|