- mtwm sku act ready
This commit is contained in:
@@ -7,6 +7,8 @@ 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"
|
||||
)
|
||||
@@ -85,13 +87,107 @@ func createOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*mode
|
||||
return err
|
||||
}
|
||||
|
||||
func cancelOneShopAct(ctx *jxcontext.Context, vendorStoreID string, actStoreSku []*model.ActStoreSku2) (err error) {
|
||||
func cancelOneShopAct(ctx *jxcontext.Context, actStoreSku []*model.ActStoreSku2) (err error) {
|
||||
if list := storeSku2ActData4Delete(actStoreSku, model.IsSyncStatusNeedDelete); len(list) > 0 {
|
||||
err = api.MtwmAPI.RetailDiscountDelete(vendorStoreID, list)
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = api.MtwmAPI.RetailDiscountDelete(actStoreSku[0].VendorStoreID, list)
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSkuList []*model.ActStoreSku2) (err error) {
|
||||
return nil
|
||||
func getActStoreSkuFromTaskResult(taskReslt []interface{}) (list []*model.ActStoreSku2) {
|
||||
for _, v := range taskReslt {
|
||||
actStoreSkuList := v.([]*model.ActStoreSku2)
|
||||
list = append(list, actStoreSkuList...)
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
func createSkuAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreSku []*model.ActStoreSku2) (createdList []*model.ActStoreSku2, err error) {
|
||||
globals.SugarLogger.Debugf("mtwm createSkuAct")
|
||||
actStoreSkuListList := partner.SplitActStoreSku2List(actStoreSku)
|
||||
task := tasksch.NewParallelTask("mtwm createSkuAct", nil, ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
list := batchItemList[0].([]*model.ActStoreSku2)
|
||||
if err = createOneShopAct(act, utils.Int2Str(list[0].StoreID), list); err == nil {
|
||||
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, actStoreSku []*model.ActStoreSku2) (canceledList []*model.ActStoreSku2, err error) {
|
||||
globals.SugarLogger.Debugf("mtwm cancelSkuAct")
|
||||
actStoreSkuListList := partner.SplitActStoreSku2List(actStoreSku)
|
||||
task := tasksch.NewParallelTask("mtwm cancelSkuAct", nil, ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
actStoreSkuList := batchItemList[0].([]*model.ActStoreSku2)
|
||||
if err = cancelOneShopAct(ctx, actStoreSkuList); err == nil {
|
||||
retVal = []interface{}{actStoreSkuList}
|
||||
}
|
||||
return retVal, err
|
||||
}, actStoreSkuListList)
|
||||
tasksch.HandleTask(task, parentTask, true).Run()
|
||||
result, err := task.GetResult(0)
|
||||
return getActStoreSkuFromTaskResult(result), err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSkuList []*model.ActStoreSku2) (err error) {
|
||||
globals.SugarLogger.Debugf("mtwm SyncAct, actID:%d", act.ID)
|
||||
var actStoreSkuList4Create, actStoreSkuList4Delete []*model.ActStoreSku2
|
||||
var updateItems []*dao.KVUpdateItem
|
||||
|
||||
actStoreSkuMap := partner.SplitActStoreSku(actStoreSkuList)
|
||||
for storeID := range actStoreSkuMap {
|
||||
for _, actStoreSku := range actStoreSkuMap[storeID] {
|
||||
if model.IsSyncStatusNeedCreate(actStoreSku.SyncStatus) {
|
||||
actStoreSkuList4Create = append(actStoreSkuList4Create, actStoreSku)
|
||||
} else if model.IsSyncStatusNeedDelete(actStoreSku.SyncStatus) {
|
||||
actStoreSkuList4Delete = append(actStoreSkuList4Delete, 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, actStoreSkuList)
|
||||
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 := createSkuAct(ctx, nil, act, actStoreSkuList4Create)
|
||||
updateItems = append(updateItems, partner.ActStoreSku2Update(addedList, model.SyncFlagNewMask)...)
|
||||
if err = err2; err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if len(actStoreSkuList4Delete) > 0 {
|
||||
deletedList, err2 := cancelSkuAct(ctx, nil, actStoreSkuList4Delete)
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user