美团活动支持秒杀
This commit is contained in:
@@ -320,9 +320,13 @@ func checkDiscountValidation(vendorIDs []int, actType int, pricePercentage float
|
|||||||
} else if len(vendorIDs) > 0 && vendorIDs[0] == model.VendorIDMTWM && pricePercentageMin < minDiscount4SkuDirectDownMTWM {
|
} else if len(vendorIDs) > 0 && vendorIDs[0] == model.VendorIDMTWM && pricePercentageMin < minDiscount4SkuDirectDownMTWM {
|
||||||
err = fmt.Errorf("美团平台%s活动折扣必须大于:%d", model.ActTypeName[actType], minDiscount4SkuDirectDownMTWM)
|
err = fmt.Errorf("美团平台%s活动折扣必须大于:%d", model.ActTypeName[actType], minDiscount4SkuDirectDownMTWM)
|
||||||
}
|
}
|
||||||
} else if actType == model.ActSkuSecKill && pricePercentageMax > maxDiscount4SkuSecKill {
|
} else if actType == model.ActSkuSecKill {
|
||||||
|
if len(vendorIDs) > 0 && vendorIDs[0] == model.VendorIDMTWM && pricePercentageMax > minDiscount4SkuDirectDownMTWM {
|
||||||
|
err = fmt.Errorf("美团平台%s活动折扣必须小于:%d", model.ActTypeName[actType], minDiscount4SkuDirectDownMTWM)
|
||||||
|
} else if pricePercentageMax > maxDiscount4SkuSecKill {
|
||||||
err = fmt.Errorf("%s活动折扣必须小于:%d", model.ActTypeName[actType], maxDiscount4SkuSecKill)
|
err = fmt.Errorf("%s活动折扣必须小于:%d", model.ActTypeName[actType], maxDiscount4SkuSecKill)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -343,8 +347,6 @@ func checkActValidation(act *model.Act, vendorIDs []int) (err error) {
|
|||||||
errList.AddErr(fmt.Errorf("必须指定缺省活动折扣"))
|
errList.AddErr(fmt.Errorf("必须指定缺省活动折扣"))
|
||||||
} else if err = checkDiscountValidation(vendorIDs, act.Type, float64(act.PricePercentage)); err != nil {
|
} else if err = checkDiscountValidation(vendorIDs, act.Type, float64(act.PricePercentage)); err != nil {
|
||||||
errList.AddErr(err)
|
errList.AddErr(err)
|
||||||
} else if act.Type == model.ActSkuSecKill && vendorIDMap[model.VendorIDMTWM] == 1 {
|
|
||||||
errList.AddErr(fmt.Errorf("%s平台不支持%s活动", model.VendorChineseNames[model.VendorIDMTWM], model.ActTypeName[model.ActSkuSecKill]))
|
|
||||||
}
|
}
|
||||||
} else if act.Type == model.ActSkuFake {
|
} else if act.Type == model.ActSkuFake {
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,16 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func jxActType2Mtwm(actType int) int {
|
||||||
|
if actType == model.ActSkuDirectDown {
|
||||||
|
actType = mtwmapi.RetailActTypeDirectDown
|
||||||
|
} else if actType == model.ActSkuSecKill {
|
||||||
|
actType = mtwmapi.RetailActTypeSecKill
|
||||||
|
}
|
||||||
|
actType = 0
|
||||||
|
return actType
|
||||||
|
}
|
||||||
|
|
||||||
func actOrderRules2Mtwm(actOrderRules []*model.ActOrderRule) (actDetails []*mtwmapi.FullDiscountActDetail) {
|
func actOrderRules2Mtwm(actOrderRules []*model.ActOrderRule) (actDetails []*mtwmapi.FullDiscountActDetail) {
|
||||||
for _, v := range actOrderRules {
|
for _, v := range actOrderRules {
|
||||||
actDetails = append(actDetails, &mtwmapi.FullDiscountActDetail{
|
actDetails = append(actDetails, &mtwmapi.FullDiscountActDetail{
|
||||||
@@ -73,7 +83,7 @@ func createOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*mode
|
|||||||
actData := storeSku2ActData(act, actStoreSku, isCreateOrUpdate)
|
actData := storeSku2ActData(act, actStoreSku, isCreateOrUpdate)
|
||||||
if len(actData) > 0 {
|
if len(actData) > 0 {
|
||||||
if globals.EnableMtwmStoreWrite {
|
if globals.EnableMtwmStoreWrite {
|
||||||
actResult, err2 := api.MtwmAPI.RetailDiscountBatchSave(vendorStoreID, actData)
|
actResult, err2 := api.MtwmAPI.RetailDiscountBatchSave(vendorStoreID, jxActType2Mtwm(act.Type), actData)
|
||||||
globals.SugarLogger.Debugf("mtwm createOneShopAct err2:%v", err2)
|
globals.SugarLogger.Debugf("mtwm createOneShopAct err2:%v", err2)
|
||||||
if err = err2; err != nil {
|
if err = err2; err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -96,10 +106,10 @@ func createOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*mode
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func cancelOneShopAct(ctx *jxcontext.Context, actStoreSku []*model.ActStoreSku2) (err error) {
|
func cancelOneShopAct(ctx *jxcontext.Context, act *model.Act2, actStoreSku []*model.ActStoreSku2) (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(actStoreSku[0].VendorStoreID, list)
|
err = api.MtwmAPI.RetailDiscountDelete(actStoreSku[0].VendorStoreID, jxActType2Mtwm(act.Type), list)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
@@ -129,13 +139,13 @@ func createSkuAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.A
|
|||||||
return getActStoreSkuFromTaskResult(result), err
|
return getActStoreSkuFromTaskResult(result), err
|
||||||
}
|
}
|
||||||
|
|
||||||
func cancelSkuAct(ctx *jxcontext.Context, parentTask tasksch.ITask, actStoreSku []*model.ActStoreSku2) (canceledList []*model.ActStoreSku2, err error) {
|
func cancelSkuAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actStoreSku []*model.ActStoreSku2) (canceledList []*model.ActStoreSku2, err error) {
|
||||||
globals.SugarLogger.Debugf("mtwm cancelSkuAct")
|
globals.SugarLogger.Debugf("mtwm cancelSkuAct")
|
||||||
actStoreSkuListList := partner.SplitActStoreSku2List(actStoreSku)
|
actStoreSkuListList := partner.SplitActStoreSku2List(actStoreSku)
|
||||||
task := tasksch.NewParallelTask("mtwm cancelSkuAct", nil, ctx,
|
task := tasksch.NewParallelTask("mtwm cancelSkuAct", 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) {
|
||||||
actStoreSkuList := batchItemList[0].([]*model.ActStoreSku2)
|
actStoreSkuList := batchItemList[0].([]*model.ActStoreSku2)
|
||||||
if err = cancelOneShopAct(ctx, actStoreSkuList); err == nil {
|
if err = cancelOneShopAct(ctx, act, actStoreSkuList); err == nil {
|
||||||
retVal = []interface{}{actStoreSkuList}
|
retVal = []interface{}{actStoreSkuList}
|
||||||
}
|
}
|
||||||
return retVal, err
|
return retVal, err
|
||||||
@@ -162,7 +172,7 @@ func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITa
|
|||||||
}
|
}
|
||||||
err = func() (err error) {
|
err = func() (err error) {
|
||||||
if model.IsSyncStatusDelete(act.SyncStatus) {
|
if model.IsSyncStatusDelete(act.SyncStatus) {
|
||||||
canceledList, err2 := cancelSkuAct(ctx, nil, actStoreSkuList)
|
canceledList, err2 := cancelSkuAct(ctx, nil, act, actStoreSkuList)
|
||||||
updateItems = append(updateItems, partner.ActStoreSku2Update(ctx, canceledList, model.SyncFlagModifiedMask)...)
|
updateItems = append(updateItems, partner.ActStoreSku2Update(ctx, canceledList, model.SyncFlagModifiedMask)...)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
updateItems = append(updateItems, partner.Act2Update(ctx, act, model.SyncFlagModifiedMask))
|
updateItems = append(updateItems, partner.Act2Update(ctx, act, model.SyncFlagModifiedMask))
|
||||||
@@ -183,7 +193,7 @@ func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(actStoreSkuList4Delete) > 0 {
|
if len(actStoreSkuList4Delete) > 0 {
|
||||||
deletedList, err2 := cancelSkuAct(ctx, nil, actStoreSkuList4Delete)
|
deletedList, err2 := cancelSkuAct(ctx, nil, act, actStoreSkuList4Delete)
|
||||||
updateItems = append(updateItems, partner.ActStoreSku2Update(ctx, deletedList, model.SyncFlagDeletedMask)...)
|
updateItems = append(updateItems, partner.ActStoreSku2Update(ctx, deletedList, model.SyncFlagDeletedMask)...)
|
||||||
if err = err2; err != nil {
|
if err = err2; err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
Reference in New Issue
Block a user