门店商品直接活动
This commit is contained in:
@@ -608,7 +608,7 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
|
|||||||
if len(priceList) > 0 {
|
if len(priceList) > 0 {
|
||||||
_, err = putils.FreeBatchStoreSkuInfo("更新门店商品价格", func(task tasksch.ITask, batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, successCount int, err error) {
|
_, err = putils.FreeBatchStoreSkuInfo("更新门店商品价格", func(task tasksch.ITask, batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, successCount int, err error) {
|
||||||
if isNeedHandleAct(causeFlag) {
|
if isNeedHandleAct(causeFlag) {
|
||||||
cancelStoreSkuActs(ctx, task, vendorID, storeDetail.VendorOrgCode, storeID, vendorStoreID, batchedStoreSkuList)
|
cancelStoreSkuActs(ctx, task, vendorID, storeDetail.VendorOrgCode, storeID, vendorStoreID, batchedStoreSkuList, true)
|
||||||
}
|
}
|
||||||
var failedList []*partner.StoreSkuInfoWithErr
|
var failedList []*partner.StoreSkuInfoWithErr
|
||||||
failedList, err = storeSkuHandler.UpdateStoreSkusPrice(ctx, storeDetail.VendorOrgCode, storeID, vendorStoreID, batchedStoreSkuList)
|
failedList, err = storeSkuHandler.UpdateStoreSkusPrice(ctx, storeDetail.VendorOrgCode, storeID, vendorStoreID, batchedStoreSkuList)
|
||||||
@@ -620,7 +620,7 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
|
|||||||
updateStoreSku(dao.GetDB(), vendorID, bareSku2Sync(successList), model.SyncFlagPriceMask)
|
updateStoreSku(dao.GetDB(), vendorID, bareSku2Sync(successList), model.SyncFlagPriceMask)
|
||||||
}
|
}
|
||||||
if isNeedHandleAct(causeFlag) {
|
if isNeedHandleAct(causeFlag) {
|
||||||
createStoreSkuActs(ctx, task, vendorID, storeDetail.VendorOrgCode, storeID, vendorStoreID, batchedStoreSkuList)
|
createStoreSkuActs(ctx, task, vendorID, storeDetail.VendorOrgCode, storeID, vendorStoreID, batchedStoreSkuList, true)
|
||||||
}
|
}
|
||||||
return nil, len(successList), err
|
return nil, len(successList), err
|
||||||
}, ctx, task, priceList, storeSkuHandler.GetStoreSkusBatchSize(partner.FuncUpdateStoreSkusPrice), isContinueWhenError2)
|
}, ctx, task, priceList, storeSkuHandler.GetStoreSkusBatchSize(partner.FuncUpdateStoreSkusPrice), isContinueWhenError2)
|
||||||
@@ -934,13 +934,14 @@ func MergeSkuSaleStatusWithStoreOpTime(sku *dao.StoreSkuSyncInfo, storeDetail *d
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetVendorSkuIDList(l []*partner.StoreSkuInfoWithErr) (vendorSkuIDs []string) {
|
func GetVendorSkuIDList(l []*partner.StoreSkuInfoWithErr) (vendorSkuIDs []string) {
|
||||||
vendorSkuIDs2 := make([]string, len(l))
|
|
||||||
if len(l) > 0 {
|
if len(l) > 0 {
|
||||||
for k, v := range l {
|
for _, v := range l {
|
||||||
vendorSkuIDs2[k] = v.StoreSkuInfo.VendorSkuID
|
if v.StoreSkuInfo != nil {
|
||||||
|
vendorSkuIDs = append(vendorSkuIDs, v.StoreSkuInfo.VendorSkuID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return vendorSkuIDs2
|
}
|
||||||
|
return vendorSkuIDs
|
||||||
}
|
}
|
||||||
|
|
||||||
func skuAct2Update(storeSkuAct *model.StoreSkuAct, isCreateAct bool) (item *dao.KVUpdateItem) {
|
func skuAct2Update(storeSkuAct *model.StoreSkuAct, isCreateAct bool) (item *dao.KVUpdateItem) {
|
||||||
@@ -1005,7 +1006,7 @@ func parseStoreSkuActList(isCreateAct bool, storeSkuList []*partner.StoreSkuInfo
|
|||||||
return outStoreSkuList, storeSkuActMap
|
return outStoreSkuList, storeSkuActMap
|
||||||
}
|
}
|
||||||
|
|
||||||
func createStoreSkuActs(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID int, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
|
func createStoreSkuActs(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID int, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo, isChangePrice bool) (err error) {
|
||||||
globals.SugarLogger.Debugf("createStoreSkuActs vendorID:%d, storeID:%d, storeSkuList:%s", vendorID, storeID, utils.Format4Output(storeSkuList, true))
|
globals.SugarLogger.Debugf("createStoreSkuActs vendorID:%d, storeID:%d, storeSkuList:%s", vendorID, storeID, utils.Format4Output(storeSkuList, true))
|
||||||
skuIDs := putils.StoreSkuList2IDs(storeSkuList)
|
skuIDs := putils.StoreSkuList2IDs(storeSkuList)
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
@@ -1013,6 +1014,9 @@ func createStoreSkuActs(ctx *jxcontext.Context, parentTask tasksch.ITask, vendor
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
storeSkuList2, storeSkuActMap := parseStoreSkuActList(true, storeSkuList, storeSkuActList)
|
storeSkuList2, storeSkuActMap := parseStoreSkuActList(true, storeSkuList, storeSkuActList)
|
||||||
if len(storeSkuList2) > 0 {
|
if len(storeSkuList2) > 0 {
|
||||||
|
if isChangePrice {
|
||||||
|
time.Sleep(1 * time.Second) // 改价后马上建活动可能失败
|
||||||
|
}
|
||||||
storeSkuHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformStoreSkuHandler)
|
storeSkuHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformStoreSkuHandler)
|
||||||
_, err = putils.FreeBatchStoreSkuInfo(fmt.Sprintf("创建门店%d直降活动", storeID), func(task tasksch.ITask, batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, successCount int, err error) {
|
_, err = putils.FreeBatchStoreSkuInfo(fmt.Sprintf("创建门店%d直降活动", storeID), func(task tasksch.ITask, batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, successCount int, err error) {
|
||||||
var failedList []*partner.StoreSkuInfoWithErr
|
var failedList []*partner.StoreSkuInfoWithErr
|
||||||
@@ -1020,7 +1024,7 @@ func createStoreSkuActs(ctx *jxcontext.Context, parentTask tasksch.ITask, vendor
|
|||||||
if len(failedList) > 0 {
|
if len(failedList) > 0 {
|
||||||
task.AddFailedList(failedList)
|
task.AddFailedList(failedList)
|
||||||
}
|
}
|
||||||
successList := putils.UnselectStoreSkuListByVendorSkuIDs(batchedStoreSkuList, GetVendorSkuIDList(failedList))
|
successList := putils.UnselectStoreSkuListBySkuIDs(batchedStoreSkuList, putils.StoreSkuInfoWithErrList2SkuIDs(failedList))
|
||||||
if len(successList) > 0 {
|
if len(successList) > 0 {
|
||||||
updateStoreSkuAct(dao.GetDB(), vendorID, bareSku2StoreSkuAct(storeSkuActMap, successList), true)
|
updateStoreSkuAct(dao.GetDB(), vendorID, bareSku2StoreSkuAct(storeSkuActMap, successList), true)
|
||||||
}
|
}
|
||||||
@@ -1031,7 +1035,7 @@ func createStoreSkuActs(ctx *jxcontext.Context, parentTask tasksch.ITask, vendor
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func cancelStoreSkuActs(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID int, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
|
func cancelStoreSkuActs(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID int, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo, isChangePrice bool) (err error) {
|
||||||
globals.SugarLogger.Debugf("cancelStoreSkuActs vendorID:%d, storeID:%d, storeSkuList:%s", vendorID, storeID, utils.Format4Output(storeSkuList, true))
|
globals.SugarLogger.Debugf("cancelStoreSkuActs vendorID:%d, storeID:%d, storeSkuList:%s", vendorID, storeID, utils.Format4Output(storeSkuList, true))
|
||||||
skuIDs := putils.StoreSkuList2IDs(storeSkuList)
|
skuIDs := putils.StoreSkuList2IDs(storeSkuList)
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
@@ -1046,12 +1050,15 @@ func cancelStoreSkuActs(ctx *jxcontext.Context, parentTask tasksch.ITask, vendor
|
|||||||
if len(failedList) > 0 {
|
if len(failedList) > 0 {
|
||||||
task.AddFailedList(failedList)
|
task.AddFailedList(failedList)
|
||||||
}
|
}
|
||||||
successList := putils.UnselectStoreSkuListByVendorSkuIDs(batchedStoreSkuList, GetVendorSkuIDList(failedList))
|
successList := putils.UnselectStoreSkuListBySkuIDs(batchedStoreSkuList, putils.StoreSkuInfoWithErrList2SkuIDs(failedList))
|
||||||
if len(successList) > 0 {
|
if len(successList) > 0 {
|
||||||
updateStoreSkuAct(dao.GetDB(), vendorID, bareSku2StoreSkuAct(storeSkuActMap, successList), false)
|
updateStoreSkuAct(dao.GetDB(), vendorID, bareSku2StoreSkuAct(storeSkuActMap, successList), false)
|
||||||
}
|
}
|
||||||
return nil, len(successList), err
|
return nil, len(successList), err
|
||||||
}, ctx, parentTask, storeSkuList2, storeSkuHandler.GetStoreSkusBatchSize(partner.FuncCancelActs), true)
|
}, ctx, parentTask, storeSkuList2, storeSkuHandler.GetStoreSkusBatchSize(partner.FuncCancelActs), true)
|
||||||
|
if isChangePrice && vendorID == model.VendorIDJD {
|
||||||
|
time.Sleep(1 * time.Second) // 取消活动后马上改价可能失败
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ func actStoreSu2Ebai4Delete(oneStoreActSku []*model.ActStoreSku2) (skus []string
|
|||||||
|
|
||||||
func act2EbaiActivity(act *model.Act2, actOrderRules []*model.ActOrderRule) (activity *ebaiapi.ActivityInfo) {
|
func act2EbaiActivity(act *model.Act2, actOrderRules []*model.ActOrderRule) (activity *ebaiapi.ActivityInfo) {
|
||||||
activity = &ebaiapi.ActivityInfo{
|
activity = &ebaiapi.ActivityInfo{
|
||||||
ActivityName: act.GetRealActName(),
|
ActivityName: utils.LimitMixedStringLen(act.GetRealActName(), ebaiapi.MaxActivityNameLength),
|
||||||
ActivityType: actType2Ebai(act.Type),
|
ActivityType: actType2Ebai(act.Type),
|
||||||
StartTime: act.BeginAt.Unix(),
|
StartTime: act.BeginAt.Unix(),
|
||||||
EndTime: act.EndAt.Unix(),
|
EndTime: act.EndAt.Unix(),
|
||||||
@@ -83,7 +83,7 @@ func act2EbaiActivity(act *model.Act2, actOrderRules []*model.ActOrderRule) (act
|
|||||||
WeekDay: "0,1,2,3,4,5,6",
|
WeekDay: "0,1,2,3,4,5,6",
|
||||||
ActivityDesc: act.Advertising,
|
ActivityDesc: act.Advertising,
|
||||||
ShowCategory: model.ActTypeName[act.Type],
|
ShowCategory: model.ActTypeName[act.Type],
|
||||||
PromotionSkuDesc: act.Advertising,
|
PromotionSkuDesc: utils.LimitMixedStringLen(act.Advertising, ebaiapi.MaxActivityDescLength),
|
||||||
DayLimit: act.LimitDaily,
|
DayLimit: act.LimitDaily,
|
||||||
ActivityPlatform: ebaiapi.ActivityPFAll,
|
ActivityPlatform: ebaiapi.ActivityPFAll,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -465,10 +465,10 @@ func SelectStoreSkuListByOpResult(storeSkuList []*partner.StoreSkuInfo, opResult
|
|||||||
|
|
||||||
func (p *PurchaseHandler) CreateStoreSkusAct(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func (p *PurchaseHandler) CreateStoreSkusAct(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
||||||
for _, v := range storeSkuList {
|
for _, v := range storeSkuList {
|
||||||
if vendorActID, err2 := createOneShopAct(putils.GetFixDirectDownAct(vendorOrgCode, storeID, v.SkuID), utils.Int2Str(storeID), putils.StoreSku2ActStoreSku([]*partner.StoreSkuInfo{v})); err2 != nil {
|
if vendorActID, err2 := createOneShopAct(putils.GetFixDirectDownAct(vendorOrgCode, storeID, v.SkuID), utils.Int2Str(storeID), putils.StoreSku2ActStoreSku(model.SyncFlagNewMask, vendorStoreID, []*partner.StoreSkuInfo{v})); err2 != nil {
|
||||||
failedList = append(failedList, &partner.StoreSkuInfoWithErr{
|
failedList = append(failedList, &partner.StoreSkuInfoWithErr{
|
||||||
StoreSkuInfo: v,
|
StoreSkuInfo: v,
|
||||||
VendoreID: model.VendorIDJD,
|
VendoreID: model.VendorIDEBAI,
|
||||||
StoreID: storeID,
|
StoreID: storeID,
|
||||||
ErrMsg: err2.Error(),
|
ErrMsg: err2.Error(),
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -264,7 +264,7 @@ func SelectStoreSkuListByResponseList(storeSkuList []*partner.StoreSkuInfo, resp
|
|||||||
|
|
||||||
func (p *PurchaseHandler) CreateStoreSkusAct(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func (p *PurchaseHandler) CreateStoreSkusAct(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
||||||
for _, v := range storeSkuList {
|
for _, v := range storeSkuList {
|
||||||
if vendorActID, err2 := createSkuAct(ctx, putils.GetFixDirectDownAct(vendorOrgCode, storeID, v.SkuID), putils.StoreSku2ActStoreSku([]*partner.StoreSkuInfo{v})); err2 != nil {
|
if vendorActID, err2 := createSkuAct(ctx, putils.GetFixDirectDownAct(vendorOrgCode, storeID, v.SkuID), putils.StoreSku2ActStoreSku(model.SyncFlagNewMask, vendorStoreID, []*partner.StoreSkuInfo{v})); err2 != nil {
|
||||||
failedList = append(failedList, &partner.StoreSkuInfoWithErr{
|
failedList = append(failedList, &partner.StoreSkuInfoWithErr{
|
||||||
StoreSkuInfo: v,
|
StoreSkuInfo: v,
|
||||||
VendoreID: model.VendorIDJD,
|
VendoreID: model.VendorIDJD,
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/partner/putils"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
)
|
)
|
||||||
@@ -58,7 +59,7 @@ func storeSku2ActData(act *model.Act2, actStoreSku []*model.ActStoreSku2, handle
|
|||||||
ActPrice: jxutils.IntPrice2Standard(v.ActualActPrice),
|
ActPrice: jxutils.IntPrice2Standard(v.ActualActPrice),
|
||||||
// DiscountCoefficient: 0,
|
// DiscountCoefficient: 0,
|
||||||
// Sequence: int(v.ActPrice), // 此字段不允许重复
|
// Sequence: int(v.ActPrice), // 此字段不允许重复
|
||||||
ItemID: utils.Str2Int64WithDefault(v.VendorActID, 0),
|
// ItemID: utils.Str2Int64WithDefault(v.VendorActID, 0),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -85,14 +86,17 @@ func createOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*mode
|
|||||||
if len(actData) > 0 {
|
if len(actData) > 0 {
|
||||||
if globals.EnableMtwmStoreWrite {
|
if globals.EnableMtwmStoreWrite {
|
||||||
actResult, faileInfoList, err2 := api.MtwmAPI.RetailDiscountBatchSave2(vendorStoreID, jxActType2Mtwm(act.Type), actData)
|
actResult, faileInfoList, err2 := api.MtwmAPI.RetailDiscountBatchSave2(vendorStoreID, jxActType2Mtwm(act.Type), actData)
|
||||||
// globals.SugarLogger.Debugf("mtwm createOneShopAct err2:%v", err2)
|
err = err2
|
||||||
if err = err2; err != nil {
|
// 忽略错误,都放在failedList里
|
||||||
return nil, err
|
// if err != nil {
|
||||||
}
|
// return nil, err
|
||||||
|
// }
|
||||||
|
// globals.SugarLogger.Debugf("mtwm createOneShopAct actResult:%s, faileInfoList:%s err2:%v", utils.Format4Output(actResult, true), utils.Format4Output(faileInfoList, true), err2)
|
||||||
actStoreSkuMap := make(map[int]*model.ActStoreSku2)
|
actStoreSkuMap := make(map[int]*model.ActStoreSku2)
|
||||||
for _, v := range actStoreSku {
|
for _, v := range actStoreSku {
|
||||||
actStoreSkuMap[v.SkuID] = v
|
actStoreSkuMap[v.SkuID] = v
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, v := range actResult {
|
for _, v := range actResult {
|
||||||
if v2 := actStoreSkuMap[int(utils.Str2Int64WithDefault(v.AppFoodCode, 0))]; v2 != nil {
|
if v2 := actStoreSkuMap[int(utils.Str2Int64WithDefault(v.AppFoodCode, 0))]; v2 != nil {
|
||||||
v2.VendorActID = utils.Int64ToStr(v.ActID)
|
v2.VendorActID = utils.Int64ToStr(v.ActID)
|
||||||
@@ -122,7 +126,25 @@ func createOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*mode
|
|||||||
func cancelOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*model.ActStoreSku2) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func cancelOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*model.ActStoreSku2) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
||||||
if list := storeSku2ActData4Delete(actStoreSku, nil /*model.IsSyncStatusNeedDelete*/); len(list) > 0 {
|
if list := storeSku2ActData4Delete(actStoreSku, nil /*model.IsSyncStatusNeedDelete*/); len(list) > 0 {
|
||||||
if globals.EnableMtwmStoreWrite {
|
if globals.EnableMtwmStoreWrite {
|
||||||
err = api.MtwmAPI.RetailDiscountDelete(vendorStoreID, jxActType2Mtwm(act.Type), list)
|
failedList2, err2 := api.MtwmAPI.RetailDiscountDelete2(vendorStoreID, jxActType2Mtwm(act.Type), list)
|
||||||
|
actStoreSkuMap := make(map[string]*model.ActStoreSku2)
|
||||||
|
for _, v := range actStoreSku {
|
||||||
|
actStoreSkuMap[v.VendorActID] = v
|
||||||
|
}
|
||||||
|
for _, v := range failedList2 {
|
||||||
|
if !mtwmapi.CanDeleteActErrMsgIgnore(v.ErrorMsg) {
|
||||||
|
failedList = append(failedList, &partner.StoreSkuInfoWithErr{
|
||||||
|
StoreSkuInfo: &partner.StoreSkuInfo{
|
||||||
|
SkuID: actStoreSkuMap[utils.Int64ToStr(v.ActID)].SkuID,
|
||||||
|
},
|
||||||
|
StoreID: int(utils.Str2Int64WithDefault(vendorStoreID, 0)),
|
||||||
|
ErrMsg: v.ErrorMsg,
|
||||||
|
VendoreID: model.VendorIDMTWM,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err = err2
|
||||||
|
err = nil // 强制不返回错误,使用部分错误
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return failedList, err
|
return failedList, err
|
||||||
@@ -142,7 +164,18 @@ func createSkuAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.A
|
|||||||
task := tasksch.NewParallelTask("mtwm createSkuAct", nil, ctx,
|
task := tasksch.NewParallelTask("mtwm createSkuAct", nil, ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
list := batchItemList[0].([]*model.ActStoreSku2)
|
list := batchItemList[0].([]*model.ActStoreSku2)
|
||||||
if _, err = createOneShopAct(act, list[0].VendorStoreID, list); err == nil {
|
failedList, err2 := createOneShopAct(act, list[0].VendorStoreID, list)
|
||||||
|
if err = err2; err2 == nil {
|
||||||
|
if len(failedList) > 0 {
|
||||||
|
failedMap := putils.StoreSkuInfoWithErrList2MapBySku(failedList)
|
||||||
|
list = []*model.ActStoreSku2{}
|
||||||
|
for _, v := range actStoreSku {
|
||||||
|
if failedMap[v.SkuID] == nil {
|
||||||
|
list = append(list, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
list = []*model.ActStoreSku2{}
|
||||||
|
}
|
||||||
retVal = []interface{}{list}
|
retVal = []interface{}{list}
|
||||||
}
|
}
|
||||||
return retVal, err
|
return retVal, err
|
||||||
|
|||||||
@@ -580,9 +580,15 @@ func SelectStoreSkuListByFoodList(storeSkuList interface{}, foodList []*mtwmapi.
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) CreateStoreSkusAct(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func (p *PurchaseHandler) CreateStoreSkusAct(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
||||||
return createOneShopAct(putils.GetFixDirectDownAct(vendorOrgCode, storeID, 0), vendorStoreID, putils.StoreSku2ActStoreSku(storeSkuList))
|
actStoreSkuList := putils.StoreSku2ActStoreSku(model.SyncFlagNewMask, vendorStoreID, storeSkuList)
|
||||||
|
failedList, err = createOneShopAct(putils.GetFixDirectDownAct(vendorOrgCode, storeID, 0), vendorStoreID, actStoreSkuList)
|
||||||
|
storeSkuMap := putils.StoreSkuList2MapBySkuID(storeSkuList)
|
||||||
|
for _, v := range actStoreSkuList {
|
||||||
|
storeSkuMap[v.SkuID].VendorActID = v.VendorActID
|
||||||
|
}
|
||||||
|
return failedList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) CancelActs(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func (p *PurchaseHandler) CancelActs(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
||||||
return cancelOneShopAct(putils.GetFixDirectDownAct(vendorOrgCode, storeID, 0), vendorStoreID, putils.StoreSku2ActStoreSku(storeSkuList))
|
return cancelOneShopAct(putils.GetFixDirectDownAct(vendorOrgCode, storeID, 0), vendorStoreID, putils.StoreSku2ActStoreSku(model.SyncFlagDeletedMask, vendorStoreID, storeSkuList))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -340,20 +340,33 @@ func GenPartialFailedErr(failedInfo interface{}, failedCount int) (err error) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func StoreSku2ActStoreSku(storeSkuList []*partner.StoreSkuInfo) (actStoreSku []*model.ActStoreSku2) {
|
func StoreSku2ActStoreSku(syncStatus int8, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (actStoreSku []*model.ActStoreSku2) {
|
||||||
for _, v := range storeSkuList {
|
for _, v := range storeSkuList {
|
||||||
actStoreSku = append(actStoreSku, &model.ActStoreSku2{
|
actStoreSku = append(actStoreSku, &model.ActStoreSku2{
|
||||||
ActStoreSku: model.ActStoreSku{
|
ActStoreSku: model.ActStoreSku{
|
||||||
SkuID: v.SkuID,
|
SkuID: v.SkuID,
|
||||||
Stock: 200,
|
Stock: 200,
|
||||||
},
|
},
|
||||||
|
VendorStoreID: vendorStoreID,
|
||||||
VendorSkuID: v.VendorSkuID,
|
VendorSkuID: v.VendorSkuID,
|
||||||
|
VendorActID: v.VendorActID,
|
||||||
ActualActPrice: v.ActPrice,
|
ActualActPrice: v.ActPrice,
|
||||||
|
SyncStatus: syncStatus,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return actStoreSku
|
return actStoreSku
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func UpdateStoreSkuByActStoreSku(storeSkuList []*partner.StoreSkuInfo, actStoreSku []*model.ActStoreSku2) []*partner.StoreSkuInfo {
|
||||||
|
storeSkuMap := StoreSkuList2MapBySkuID(storeSkuList)
|
||||||
|
for _, v := range actStoreSku {
|
||||||
|
if storeSku := storeSkuMap[v.SkuID]; storeSku != nil {
|
||||||
|
storeSku.VendorActID = v.VendorActID
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return storeSkuList
|
||||||
|
}
|
||||||
|
|
||||||
func GetFixDirectDownAct(vendorOrgCode string, storeID, skuID int) (act *model.Act2) {
|
func GetFixDirectDownAct(vendorOrgCode string, storeID, skuID int) (act *model.Act2) {
|
||||||
name := fmt.Sprintf("自动直降活动%d:%d:%d", storeID, skuID, time.Now().Unix())
|
name := fmt.Sprintf("自动直降活动%d:%d:%d", storeID, skuID, time.Now().Unix())
|
||||||
act = &model.Act2{
|
act = &model.Act2{
|
||||||
@@ -365,9 +378,26 @@ func GetFixDirectDownAct(vendorOrgCode string, storeID, skuID int) (act *model.A
|
|||||||
LimitUser: 1,
|
LimitUser: 1,
|
||||||
LimitCount: 1,
|
LimitCount: 1,
|
||||||
BeginAt: utils.Time2Date(time.Now()),
|
BeginAt: utils.Time2Date(time.Now()),
|
||||||
EndAt: utils.Time2Date(time.Now().Add(365 * 24 * time.Hour)),
|
EndAt: utils.Time2Date(time.Now().Add(50 * 24 * time.Hour)), // 饿百平台要求只能是2个月长的活动
|
||||||
},
|
},
|
||||||
VendorOrgCode: vendorOrgCode,
|
VendorOrgCode: vendorOrgCode,
|
||||||
}
|
}
|
||||||
return act
|
return act
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func StoreSkuInfoWithErrList2SkuIDs(list []*partner.StoreSkuInfoWithErr) (skuIDs []int) {
|
||||||
|
for _, v := range list {
|
||||||
|
if v.StoreSkuInfo != nil && v.StoreSkuInfo.SkuID > 0 {
|
||||||
|
skuIDs = append(skuIDs, v.StoreSkuInfo.SkuID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return skuIDs
|
||||||
|
}
|
||||||
|
|
||||||
|
func StoreSkuInfoWithErrList2MapBySku(list []*partner.StoreSkuInfoWithErr) (mapInfo map[int]*partner.StoreSkuInfoWithErr) {
|
||||||
|
mapInfo = make(map[int]*partner.StoreSkuInfoWithErr)
|
||||||
|
for _, v := range list {
|
||||||
|
mapInfo[v.StoreSkuInfo.SkuID] = v
|
||||||
|
}
|
||||||
|
return mapInfo
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user