|
|
|
|
@@ -7,6 +7,7 @@ import (
|
|
|
|
|
"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"
|
|
|
|
|
"git.rosy.net.cn/jx-callback/business/partner"
|
|
|
|
|
"git.rosy.net.cn/jx-callback/globals"
|
|
|
|
|
"git.rosy.net.cn/jx-callback/globals/api"
|
|
|
|
|
@@ -72,12 +73,15 @@ func act2EbaiActivity(act *model.Act2, actOrderRules []*model.ActOrderRule) (act
|
|
|
|
|
ActivityDesc: act.Advertising,
|
|
|
|
|
ShowCategory: act.Name,
|
|
|
|
|
PromotionSkuDesc: act.Name,
|
|
|
|
|
Rule: actOrderRules2Ebai(actOrderRules),
|
|
|
|
|
}
|
|
|
|
|
if actOrderRules != nil {
|
|
|
|
|
activity.Rule = actOrderRules2Ebai(actOrderRules)
|
|
|
|
|
}
|
|
|
|
|
return activity
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func createOneShopAct(shopID string, activity *ebaiapi.ActivityInfo, oneStoreActSku []*model.ActStoreSku2) (ebaiActIDStr string, err error) {
|
|
|
|
|
globals.SugarLogger.Debugf("ebai createOneShopAct")
|
|
|
|
|
if globals.EnableEbaiStoreWrite {
|
|
|
|
|
ebaiActID, err := api.EbaiAPI.ActivityCreate(shopID, 0, 0, activity)
|
|
|
|
|
if err == nil {
|
|
|
|
|
@@ -91,88 +95,215 @@ func createOneShopAct(shopID string, activity *ebaiapi.ActivityInfo, oneStoreAct
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func ActivitySkuAddBatch(activityID int64, shopID string, baiduShopID int64, activityType int, skuList []*ebaiapi.ActivitySkuInfo4Add, isSkuIDCustom bool) (successIDs []string, err error) {
|
|
|
|
|
return api.EbaiAPI.ActivitySkuAddBatch(activityID, shopID, baiduShopID, activityType, skuList, isSkuIDCustom)
|
|
|
|
|
globals.SugarLogger.Debugf("ebai ActivitySkuAddBatch")
|
|
|
|
|
if globals.EnableEbaiStoreWrite {
|
|
|
|
|
successIDs, err = api.EbaiAPI.ActivitySkuAddBatch(activityID, shopID, baiduShopID, activityType, skuList, isSkuIDCustom)
|
|
|
|
|
}
|
|
|
|
|
return successIDs, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func ActivitySkuDeleteBatch(activityID int64, shopID string, baiduShopID int64, skuIDs []string, isSkuIDCustom bool) (successIDs []string, err error) {
|
|
|
|
|
return api.EbaiAPI.ActivitySkuDeleteBatch(activityID, shopID, baiduShopID, skuIDs, isSkuIDCustom)
|
|
|
|
|
globals.SugarLogger.Debugf("ebai ActivitySkuDeleteBatch")
|
|
|
|
|
if globals.EnableEbaiStoreWrite {
|
|
|
|
|
successIDs, err = api.EbaiAPI.ActivitySkuDeleteBatch(activityID, shopID, baiduShopID, skuIDs, isSkuIDCustom)
|
|
|
|
|
}
|
|
|
|
|
return successIDs, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func ActivitySkuUpdateBatch(activityID int64, actSkuInfoList []*ebaiapi.ActivitySkuInfo4Update) (faildInfoList []string, err error) {
|
|
|
|
|
return api.EbaiAPI.ActivitySkuUpdateBatch(activityID, actSkuInfoList)
|
|
|
|
|
globals.SugarLogger.Debugf("ebai ActivitySkuUpdateBatch")
|
|
|
|
|
if globals.EnableEbaiStoreWrite {
|
|
|
|
|
faildInfoList, err = api.EbaiAPI.ActivitySkuUpdateBatch(activityID, actSkuInfoList)
|
|
|
|
|
}
|
|
|
|
|
return faildInfoList, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c *PurchaseHandler) CreateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSku []*model.ActStoreSku2) (err error) {
|
|
|
|
|
activity := act2EbaiActivity(act, actOrderRules)
|
|
|
|
|
if act.Type < model.ActOrderBegin {
|
|
|
|
|
actStoreSkuListList := partner.SplitActStoreSku2List(actStoreSku)
|
|
|
|
|
task := tasksch.NewParallelTask("ebai CreateAct", nil, ctx,
|
|
|
|
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
|
|
|
list := batchItemList[0].([]*model.ActStoreSku2)
|
|
|
|
|
var vendorActID string
|
|
|
|
|
vendorActID, err = createOneShopAct(utils.Int2Str(list[0].StoreID), activity, list)
|
|
|
|
|
for _, v := range list {
|
|
|
|
|
v.VendorActID = vendorActID
|
|
|
|
|
}
|
|
|
|
|
return nil, err
|
|
|
|
|
}, actStoreSkuListList)
|
|
|
|
|
tasksch.HandleTask(task, parentTask, true).Run()
|
|
|
|
|
_, err = task.GetResult(0)
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
func ActivityDisable(activityID int64, shopID string, baiduShopID, supplierID int64) (err error) {
|
|
|
|
|
globals.SugarLogger.Debugf("ebai ActivityDisable")
|
|
|
|
|
if globals.EnableEbaiStoreWrite {
|
|
|
|
|
err = api.EbaiAPI.ActivityDisable(activityID, shopID, baiduShopID, supplierID)
|
|
|
|
|
}
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c *PurchaseHandler) UpdateAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSku []*model.ActStoreSku2) (err error) {
|
|
|
|
|
// if act.Type < model.ActOrderBegin {
|
|
|
|
|
// actStoreSkuMap := partner.SplitActStoreSku(actStoreSku)
|
|
|
|
|
// task := tasksch.NewParallelTask("ebai UpdateAct", nil, ctx,
|
|
|
|
|
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
|
|
|
// v := batchItemList[0].(*model.ActStore2)
|
|
|
|
|
// if storeSkus := actStoreSkuMap[v.StoreID]; storeSkus != nil {
|
|
|
|
|
// if list := actStoreSu2Ebai4Delete(storeSkus); len(list) > 0 {
|
|
|
|
|
// if _, err = ActivitySkuDeleteBatch(utils.Str2Int64(v.VendorActID), utils.Int2Str(v.StoreID), 0, list, false); err != nil {
|
|
|
|
|
// return nil, err
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// if list := actStoreSu2Ebai4Add(storeSkus); len(list) > 0 {
|
|
|
|
|
// if _, err = ActivitySkuAddBatch(utils.Str2Int64(v.VendorActID), utils.Int2Str(v.StoreID), 0, actType2Ebai(act.Type), list, false); err != nil {
|
|
|
|
|
// return nil, err
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// if list := actStoreSu2Ebai4Update(storeSkus); len(list) > 0 {
|
|
|
|
|
// if _, err = ActivitySkuUpdateBatch(utils.Str2Int64(v.VendorActID), list); err != nil {
|
|
|
|
|
// return nil, err
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// return nil, err
|
|
|
|
|
// }, actStoreMap2Update)
|
|
|
|
|
// tasksch.HandleTask(task, parentTask, true).Run()
|
|
|
|
|
// _, err = task.GetResult(0)
|
|
|
|
|
// } else {
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
return err
|
|
|
|
|
func getActStoreSkuFromTaskResult(taskReslt []interface{}) (list []*model.ActStoreSku2) {
|
|
|
|
|
for _, v := range taskReslt {
|
|
|
|
|
actStoreSkuList := v.([]*model.ActStoreSku2)
|
|
|
|
|
list = append(list, actStoreSkuList...)
|
|
|
|
|
}
|
|
|
|
|
return list
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c *PurchaseHandler) CancelAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreSku []*model.ActStoreSku2) (err error) {
|
|
|
|
|
// if act.Type < model.ActOrderBegin {
|
|
|
|
|
// task := tasksch.NewParallelTask("ebai DeleteAct", nil, ctx,
|
|
|
|
|
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
|
|
|
// v := batchItemList[0].(*model.ActStore2)
|
|
|
|
|
// if globals.EnableEbaiStoreWrite {
|
|
|
|
|
// err = api.EbaiAPI.ActivityDisable(utils.Str2Int64(v.VendorActID), utils.Int2Str(v.StoreID), 0, 0)
|
|
|
|
|
// }
|
|
|
|
|
// return nil, err
|
|
|
|
|
// }, actStoreMap)
|
|
|
|
|
// tasksch.HandleTask(task, parentTask, true).Run()
|
|
|
|
|
// _, err = task.GetResult(0)
|
|
|
|
|
// }
|
|
|
|
|
return err
|
|
|
|
|
func createSkuAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreSku []*model.ActStoreSku2) (createdList []*model.ActStoreSku2, err error) {
|
|
|
|
|
globals.SugarLogger.Debugf("ebai createSkuAct")
|
|
|
|
|
activity := act2EbaiActivity(act, nil)
|
|
|
|
|
actStoreSkuListList := partner.SplitActStoreSku2List(actStoreSku)
|
|
|
|
|
task := tasksch.NewParallelTask("ebai createSkuAct", nil, ctx,
|
|
|
|
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
|
|
|
list := batchItemList[0].([]*model.ActStoreSku2)
|
|
|
|
|
var vendorActID string
|
|
|
|
|
if vendorActID, err = createOneShopAct(utils.Int2Str(list[0].StoreID), activity, list); err == nil {
|
|
|
|
|
for _, v := range list {
|
|
|
|
|
v.VendorActID = vendorActID
|
|
|
|
|
}
|
|
|
|
|
retVal = []interface{}{list}
|
|
|
|
|
}
|
|
|
|
|
return retVal, err
|
|
|
|
|
}, actStoreSkuListList)
|
|
|
|
|
tasksch.HandleTask(task, parentTask, true).Run()
|
|
|
|
|
result, err := task.GetResult(0)
|
|
|
|
|
return getActStoreSkuFromTaskResult(result), err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func cancelSkuAct(ctx *jxcontext.Context, parentTask tasksch.ITask, actStoreSkuMap map[string][]*model.ActStoreSku2) (canceledList []*model.ActStoreSku2, err error) {
|
|
|
|
|
globals.SugarLogger.Debugf("ebai cancelSkuAct")
|
|
|
|
|
var vendorActIDs []string
|
|
|
|
|
for k := range actStoreSkuMap {
|
|
|
|
|
vendorActIDs = append(vendorActIDs, k)
|
|
|
|
|
}
|
|
|
|
|
task := tasksch.NewParallelTask("ebai cancelSkuAct", nil, ctx,
|
|
|
|
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
|
|
|
vendorActID := batchItemList[0].(string)
|
|
|
|
|
actStoreSkuList := actStoreSkuMap[vendorActID]
|
|
|
|
|
if err = ActivityDisable(utils.Str2Int64(vendorActID), utils.Int2Str(actStoreSkuList[0].StoreID), 0, 0); err == nil {
|
|
|
|
|
retVal = []interface{}{actStoreSkuList}
|
|
|
|
|
}
|
|
|
|
|
return retVal, err
|
|
|
|
|
}, vendorActIDs)
|
|
|
|
|
tasksch.HandleTask(task, parentTask, true).Run()
|
|
|
|
|
result, err := task.GetResult(0)
|
|
|
|
|
return getActStoreSkuFromTaskResult(result), err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func deleteSkuActSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, actStoreSkuMap, vendorActInfoMap map[string][]*model.ActStoreSku2) (deletedList []*model.ActStoreSku2, err error) {
|
|
|
|
|
globals.SugarLogger.Debugf("ebai deleteSkuActSkus")
|
|
|
|
|
var vendorActIDs []string
|
|
|
|
|
for k := range actStoreSkuMap {
|
|
|
|
|
if k != "" {
|
|
|
|
|
vendorActIDs = append(vendorActIDs, k)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if len(vendorActIDs) > 0 {
|
|
|
|
|
task := tasksch.NewParallelTask("ebai deleteSkuAct", nil, ctx,
|
|
|
|
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
|
|
|
vendorActID := batchItemList[0].(string)
|
|
|
|
|
actStoreSkuList := actStoreSkuMap[vendorActID]
|
|
|
|
|
vendorActStoreSkuList := vendorActInfoMap[vendorActID]
|
|
|
|
|
if len(actStoreSkuList) < len(vendorActStoreSkuList) {
|
|
|
|
|
if list := actStoreSu2Ebai4Delete(actStoreSkuList); len(list) > 0 {
|
|
|
|
|
_, err = ActivitySkuDeleteBatch(utils.Str2Int64(vendorActID), utils.Int2Str(actStoreSkuList[0].StoreID), 0, list, false)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
err = ActivityDisable(utils.Str2Int64(vendorActID), utils.Int2Str(actStoreSkuList[0].StoreID), 0, 0)
|
|
|
|
|
}
|
|
|
|
|
if err == nil {
|
|
|
|
|
retVal = []interface{}{actStoreSkuList}
|
|
|
|
|
}
|
|
|
|
|
return retVal, err
|
|
|
|
|
}, vendorActIDs)
|
|
|
|
|
tasksch.HandleTask(task, parentTask, true).Run()
|
|
|
|
|
result, err2 := task.GetResult(0)
|
|
|
|
|
err = err2
|
|
|
|
|
deletedList = getActStoreSkuFromTaskResult(result)
|
|
|
|
|
}
|
|
|
|
|
return deletedList, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func addSkuActSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreSku []*model.ActStoreSku2, vendorActIDMap map[int]string) (addedList []*model.ActStoreSku2, err error) {
|
|
|
|
|
globals.SugarLogger.Debugf("ebai addSkuActSkus, actID:%d", act.ID)
|
|
|
|
|
actStoreSkuListList := partner.SplitActStoreSku2List(actStoreSku)
|
|
|
|
|
if len(actStoreSkuListList) > 0 {
|
|
|
|
|
task := tasksch.NewParallelTask("ebai addSkuActSkus", nil, ctx,
|
|
|
|
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
|
|
|
actStoreSkuList := batchItemList[0].([]*model.ActStoreSku2)
|
|
|
|
|
vendorActID := vendorActIDMap[actStoreSkuList[0].StoreID]
|
|
|
|
|
if vendorActID != "" {
|
|
|
|
|
if list := actStoreSu2Ebai4Add(actStoreSkuList); len(list) > 0 {
|
|
|
|
|
_, err = ActivitySkuAddBatch(utils.Str2Int64(vendorActID), utils.Int2Str(actStoreSkuList[0].StoreID), 0, actType2Ebai(act.Type), list, false)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
activity := act2EbaiActivity(act, nil)
|
|
|
|
|
vendorActID, err = createOneShopAct(utils.Int2Str(actStoreSkuList[0].StoreID), activity, actStoreSkuList)
|
|
|
|
|
}
|
|
|
|
|
if err == nil {
|
|
|
|
|
for _, v := range actStoreSkuList {
|
|
|
|
|
v.VendorActID = vendorActID
|
|
|
|
|
}
|
|
|
|
|
retVal = []interface{}{actStoreSkuList}
|
|
|
|
|
}
|
|
|
|
|
return retVal, err
|
|
|
|
|
}, actStoreSkuListList)
|
|
|
|
|
tasksch.HandleTask(task, parentTask, true).Run()
|
|
|
|
|
result, err2 := task.GetResult(0)
|
|
|
|
|
err = err2
|
|
|
|
|
addedList = getActStoreSkuFromTaskResult(result)
|
|
|
|
|
}
|
|
|
|
|
return addedList, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSkuList []*model.ActStoreSku2) (err error) {
|
|
|
|
|
return nil
|
|
|
|
|
globals.SugarLogger.Debugf("ebai SyncAct, actID:%d", act.ID)
|
|
|
|
|
vendorActInfoMap := make(map[string][]*model.ActStoreSku2)
|
|
|
|
|
deleteActInfoMap := make(map[string][]*model.ActStoreSku2)
|
|
|
|
|
vendorActIDMap := make(map[int]string)
|
|
|
|
|
var actStoreSkuList4Create []*model.ActStoreSku2
|
|
|
|
|
var updateItems []*dao.KVUpdateItem
|
|
|
|
|
|
|
|
|
|
actStoreSkuMap := partner.SplitActStoreSku(actStoreSkuList)
|
|
|
|
|
for storeID := range actStoreSkuMap {
|
|
|
|
|
for _, actStoreSku := range actStoreSkuMap[storeID] {
|
|
|
|
|
vendorActInfoMap[actStoreSku.VendorActID] = append(vendorActInfoMap[actStoreSku.VendorActID], actStoreSku)
|
|
|
|
|
if vendorActIDMap[storeID] == "" && actStoreSku.VendorActID != "" {
|
|
|
|
|
vendorActIDMap[storeID] = actStoreSku.VendorActID
|
|
|
|
|
}
|
|
|
|
|
if model.IsSyncStatusNeedCreate(actStoreSku.SyncStatus) {
|
|
|
|
|
actStoreSkuList4Create = append(actStoreSkuList4Create, actStoreSku)
|
|
|
|
|
} else if model.IsSyncStatusNeedDelete(actStoreSku.SyncStatus) {
|
|
|
|
|
vendorActID := actStoreSku.VendorActID
|
|
|
|
|
if vendorActID == "" {
|
|
|
|
|
vendorActID = act.VendorActID
|
|
|
|
|
}
|
|
|
|
|
deleteActInfoMap[vendorActID] = append(deleteActInfoMap[vendorActID], actStoreSku)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
err = func() (err error) {
|
|
|
|
|
if model.IsSyncStatusNeedCreate(act.SyncStatus) {
|
|
|
|
|
createdList, err2 := createSkuAct(ctx, nil, act, actStoreSkuList4Create)
|
|
|
|
|
updateItems = append(updateItems, partner.ActStoreSku2Update(createdList, model.SyncFlagNewMask)...)
|
|
|
|
|
if err = err2; err == nil {
|
|
|
|
|
updateItems = append(updateItems, partner.Act2Update(act, model.SyncFlagNewMask))
|
|
|
|
|
}
|
|
|
|
|
} else if model.IsSyncStatusNeedDelete(act.SyncStatus) {
|
|
|
|
|
canceledList, err2 := cancelSkuAct(ctx, nil, vendorActInfoMap)
|
|
|
|
|
updateItems = append(updateItems, partner.ActStoreSku2Update(canceledList, model.SyncFlagDeletedMask)...)
|
|
|
|
|
if err = err2; err == nil {
|
|
|
|
|
updateItems = append(updateItems, partner.Act2Update(act, model.SyncFlagDeletedMask))
|
|
|
|
|
}
|
|
|
|
|
} else if model.IsSyncStatusNeedUpdate(act.SyncStatus) {
|
|
|
|
|
// globals.SugarLogger.Debug(utils.Format4Output(updateItems, false))
|
|
|
|
|
if len(actStoreSkuList4Create) > 0 {
|
|
|
|
|
addedList, err2 := addSkuActSkus(ctx, nil, act, actStoreSkuList4Create, vendorActIDMap)
|
|
|
|
|
updateItems = append(updateItems, partner.ActStoreSku2Update(addedList, model.SyncFlagNewMask)...)
|
|
|
|
|
if err = err2; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if len(deleteActInfoMap) > 0 {
|
|
|
|
|
deletedList, err2 := deleteSkuActSkus(ctx, nil, deleteActInfoMap, vendorActInfoMap)
|
|
|
|
|
updateItems = append(updateItems, partner.ActStoreSku2Update(deletedList, model.SyncFlagDeletedMask)...)
|
|
|
|
|
if err = err2; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
updateItems = append(updateItems, partner.Act2Update(act, model.SyncFlagModifiedMask))
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
}()
|
|
|
|
|
db := dao.GetDB()
|
|
|
|
|
_, err2 := dao.BatchUpdateEntityByKV(db, updateItems)
|
|
|
|
|
if err == nil {
|
|
|
|
|
err = err2
|
|
|
|
|
}
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|