实验StoreSkuAct
This commit is contained in:
@@ -326,6 +326,7 @@ func isSkuLockTimeValid(sku *dao.StoreSkuSyncInfo) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag int, isFull bool, vendorID, storeID int, nameIDs, skuIDs, excludeSkuIDs []int, useVendorPriceDirectly, isContinueWhenError bool) (err error) {
|
func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag int, isFull bool, vendorID, storeID int, nameIDs, skuIDs, excludeSkuIDs []int, useVendorPriceDirectly, isContinueWhenError bool) (err error) {
|
||||||
|
globals.SugarLogger.Debugf("syncStoreSkuNew causeFlag:%d", causeFlag)
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
storeDetail, err := dao.GetStoreDetail(db, storeID, vendorID)
|
storeDetail, err := dao.GetStoreDetail(db, storeID, vendorID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -606,6 +607,9 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
|
|||||||
case 6:
|
case 6:
|
||||||
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) {
|
||||||
|
cancelStoreSkuActs(ctx, task, vendorID, storeDetail.VendorOrgCode, storeID, vendorStoreID, batchedStoreSkuList)
|
||||||
|
}
|
||||||
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)
|
||||||
if len(failedList) > 0 {
|
if len(failedList) > 0 {
|
||||||
@@ -615,6 +619,9 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
|
|||||||
if len(successList) > 0 {
|
if len(successList) > 0 {
|
||||||
updateStoreSku(dao.GetDB(), vendorID, bareSku2Sync(successList), model.SyncFlagPriceMask)
|
updateStoreSku(dao.GetDB(), vendorID, bareSku2Sync(successList), model.SyncFlagPriceMask)
|
||||||
}
|
}
|
||||||
|
if isNeedHandleAct(causeFlag) {
|
||||||
|
createStoreSkuActs(ctx, task, vendorID, storeDetail.VendorOrgCode, storeID, vendorStoreID, batchedStoreSkuList)
|
||||||
|
}
|
||||||
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)
|
||||||
}
|
}
|
||||||
@@ -649,6 +656,10 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func isNeedHandleAct(causeFlag int) bool {
|
||||||
|
return globals.IsStoreSkuAct && (causeFlag&model.SyncFlagPriceMask != 0)
|
||||||
|
}
|
||||||
|
|
||||||
func checkRemoteCatExist(outRemoteCatMap map[string]int, localCatMap map[string]*dao.SkuStoreCatInfo, remoteCatList []*partner.BareCategoryInfo) (cat2Delete []*partner.BareCategoryInfo) {
|
func checkRemoteCatExist(outRemoteCatMap map[string]int, localCatMap map[string]*dao.SkuStoreCatInfo, remoteCatList []*partner.BareCategoryInfo) (cat2Delete []*partner.BareCategoryInfo) {
|
||||||
for _, v := range remoteCatList {
|
for _, v := range remoteCatList {
|
||||||
localCat := localCatMap[v.VendorCatID]
|
localCat := localCatMap[v.VendorCatID]
|
||||||
@@ -931,3 +942,117 @@ func GetVendorSkuIDList(l []*partner.StoreSkuInfoWithErr) (vendorSkuIDs []string
|
|||||||
}
|
}
|
||||||
return vendorSkuIDs2
|
return vendorSkuIDs2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func skuAct2Update(storeSkuAct *model.StoreSkuAct, isCreateAct bool) (item *dao.KVUpdateItem) {
|
||||||
|
storeSkuAct.SyncStatus = 0
|
||||||
|
if !isCreateAct {
|
||||||
|
storeSkuAct.VendorActID = ""
|
||||||
|
}
|
||||||
|
kvs := map[string]interface{}{
|
||||||
|
"VendorActID": storeSkuAct.VendorActID,
|
||||||
|
"VendorActPrice": storeSkuAct.VendorActPrice,
|
||||||
|
"SyncStatus": storeSkuAct.SyncStatus,
|
||||||
|
}
|
||||||
|
item = &dao.KVUpdateItem{
|
||||||
|
Item: storeSkuAct,
|
||||||
|
KVs: kvs,
|
||||||
|
}
|
||||||
|
return item
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateStoreSkuAct(db *dao.DaoDB, vendorID int, storeSkuActList []*model.StoreSkuAct, isCreateAct bool) (num int64, err error) {
|
||||||
|
if len(storeSkuActList) > 0 {
|
||||||
|
updateItemList := make([]*dao.KVUpdateItem, len(storeSkuActList))
|
||||||
|
for k, v := range storeSkuActList {
|
||||||
|
updateItemList[k] = skuAct2Update(v, isCreateAct)
|
||||||
|
}
|
||||||
|
num, err = dao.BatchUpdateEntityByKV(db, updateItemList)
|
||||||
|
}
|
||||||
|
return num, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func bareSku2StoreSkuAct(storeSkuActMap map[int]*model.StoreSkuAct, storeSkuList []*partner.StoreSkuInfo) (storeSkuActList []*model.StoreSkuAct) {
|
||||||
|
for _, v := range storeSkuList {
|
||||||
|
storeSkuAct := storeSkuActMap[v.SkuID]
|
||||||
|
storeSkuAct.VendorActID = v.VendorActID
|
||||||
|
storeSkuAct.VendorActPrice = v.ActPrice
|
||||||
|
storeSkuActList = append(storeSkuActList, storeSkuAct)
|
||||||
|
}
|
||||||
|
return storeSkuActList
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseStoreSkuActList(isCreateAct bool, storeSkuList []*partner.StoreSkuInfo, storeSkuActList []*model.StoreSkuAct) (outStoreSkuList []*partner.StoreSkuInfo, storeSkuActMap map[int]*model.StoreSkuAct) {
|
||||||
|
storeSkuMap := make(map[int]*partner.StoreSkuInfo)
|
||||||
|
for _, v := range storeSkuList {
|
||||||
|
storeSkuMap[v.SkuID] = v
|
||||||
|
}
|
||||||
|
|
||||||
|
storeSkuActMap = make(map[int]*model.StoreSkuAct)
|
||||||
|
for _, v := range storeSkuActList {
|
||||||
|
if isCreateAct && v.VendorActID == "" && v.ActPercentage > 0 ||
|
||||||
|
!isCreateAct && v.VendorActID != "" {
|
||||||
|
storeSku := storeSkuMap[v.SkuID]
|
||||||
|
if isCreateAct {
|
||||||
|
storeSku.ActPrice = int64(jxutils.CaculateSkuVendorPrice(int(storeSku.VendorPrice), v.ActPercentage, 0))
|
||||||
|
} else {
|
||||||
|
storeSku.VendorActID = v.VendorActID
|
||||||
|
}
|
||||||
|
outStoreSkuList = append(outStoreSkuList, storeSku)
|
||||||
|
storeSkuActMap[v.SkuID] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return outStoreSkuList, storeSkuActMap
|
||||||
|
}
|
||||||
|
|
||||||
|
func createStoreSkuActs(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID int, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
|
||||||
|
globals.SugarLogger.Debugf("createStoreSkuActs vendorID:%d, storeID:%d, storeSkuList:%s", vendorID, storeID, utils.Format4Output(storeSkuList, true))
|
||||||
|
skuIDs := putils.StoreSkuList2IDs(storeSkuList)
|
||||||
|
db := dao.GetDB()
|
||||||
|
storeSkuActList, err := dao.GetStoresSkusAct(db, []int{storeID}, skuIDs, []int{vendorID}, 1, 0)
|
||||||
|
if err == nil {
|
||||||
|
storeSkuList2, storeSkuActMap := parseStoreSkuActList(true, storeSkuList, storeSkuActList)
|
||||||
|
if len(storeSkuList2) > 0 {
|
||||||
|
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) {
|
||||||
|
var failedList []*partner.StoreSkuInfoWithErr
|
||||||
|
failedList, err = storeSkuHandler.CreateStoreSkusAct(ctx, vendorOrgCode, storeID, vendorStoreID, batchedStoreSkuList)
|
||||||
|
if len(failedList) > 0 {
|
||||||
|
task.AddFailedList(failedList)
|
||||||
|
}
|
||||||
|
successList := putils.UnselectStoreSkuListByVendorSkuIDs(batchedStoreSkuList, GetVendorSkuIDList(failedList))
|
||||||
|
if len(successList) > 0 {
|
||||||
|
updateStoreSkuAct(dao.GetDB(), vendorID, bareSku2StoreSkuAct(storeSkuActMap, successList), true)
|
||||||
|
}
|
||||||
|
return nil, len(successList), err
|
||||||
|
}, ctx, parentTask, storeSkuList2, storeSkuHandler.GetStoreSkusBatchSize(partner.FuncCancelActs), true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func cancelStoreSkuActs(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID int, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
|
||||||
|
globals.SugarLogger.Debugf("cancelStoreSkuActs vendorID:%d, storeID:%d, storeSkuList:%s", vendorID, storeID, utils.Format4Output(storeSkuList, true))
|
||||||
|
skuIDs := putils.StoreSkuList2IDs(storeSkuList)
|
||||||
|
db := dao.GetDB()
|
||||||
|
storeSkuActList, err := dao.GetStoresSkusAct(db, []int{storeID}, skuIDs, []int{vendorID}, 0, 0)
|
||||||
|
if err == nil {
|
||||||
|
storeSkuList2, storeSkuActMap := parseStoreSkuActList(false, storeSkuList, storeSkuActList)
|
||||||
|
if len(storeSkuList2) > 0 {
|
||||||
|
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) {
|
||||||
|
var failedList []*partner.StoreSkuInfoWithErr
|
||||||
|
failedList, err = storeSkuHandler.CancelActs(ctx, vendorOrgCode, storeID, vendorStoreID, batchedStoreSkuList)
|
||||||
|
if len(failedList) > 0 {
|
||||||
|
task.AddFailedList(failedList)
|
||||||
|
}
|
||||||
|
successList := putils.UnselectStoreSkuListByVendorSkuIDs(batchedStoreSkuList, GetVendorSkuIDList(failedList))
|
||||||
|
if len(successList) > 0 {
|
||||||
|
updateStoreSkuAct(dao.GetDB(), vendorID, bareSku2StoreSkuAct(storeSkuActMap, successList), false)
|
||||||
|
}
|
||||||
|
return nil, len(successList), err
|
||||||
|
}, ctx, parentTask, storeSkuList2, storeSkuHandler.GetStoreSkusBatchSize(partner.FuncCancelActs), true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|||||||
@@ -380,9 +380,11 @@ func (t *BaseTask) GetFailedList() (failedList []interface{}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *BaseTask) AddFailedList(failedList ...interface{}) {
|
func (t *BaseTask) AddFailedList(failedList ...interface{}) {
|
||||||
|
if len(failedList) > 0 {
|
||||||
t.locker.Lock()
|
t.locker.Lock()
|
||||||
defer t.locker.Unlock()
|
defer t.locker.Unlock()
|
||||||
t.FailedList = append(t.FailedList, failedList...)
|
t.FailedList = append(t.FailedList, failedList...)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// func (t *BaseTask) GetDetailErrList() []error {
|
// func (t *BaseTask) GetDetailErrList() []error {
|
||||||
|
|||||||
@@ -221,14 +221,15 @@ type StoreSkuAct struct {
|
|||||||
SkuID int `orm:"column(sku_id);index"`
|
SkuID int `orm:"column(sku_id);index"`
|
||||||
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
||||||
|
|
||||||
ActID int `orm:"column(act_id);index" json:"actID"`
|
ActPercentage int `json:"actPercentage"` // 直降活动百分比
|
||||||
VendorActID string `orm:"column(vendor_act_id);size(48);index" json:"vendorActID"`
|
|
||||||
SyncStatus int8 `orm:"default(2)" json:"syncStatus"`
|
SyncStatus int8 `orm:"default(2)" json:"syncStatus"`
|
||||||
VendorPrice int64 `json:"vendorPrice"` // 创建活动时的平台价格
|
// ActID int `orm:"column(act_id);index" json:"actID"`
|
||||||
ActualActPrice int64 `json:"actualActPrice"` // 单品级活动用,创建活动时商品的活动价格
|
VendorActID string `orm:"column(vendor_act_id);size(48);index" json:"vendorActID"`
|
||||||
|
VendorActPrice int64 `json:"vendorActPrice"` // 保存数据用,实际的活动价
|
||||||
|
Remark string `orm:"column(remark);size(1024)" json:"remark"`
|
||||||
|
|
||||||
EarningActID int `orm:"column(earning_act_id);index" json:"earningActID"`
|
// EarningActID int `orm:"column(earning_act_id);index" json:"earningActID"`
|
||||||
EarningPrice int64 `json:"earningPrice"`
|
// EarningPrice int64 `json:"earningPrice"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*StoreSkuAct) TableUnique() [][]string {
|
func (*StoreSkuAct) TableUnique() [][]string {
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import (
|
|||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/globals/refutil"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type ActMapPureInfo struct {
|
type ActMapPureInfo struct {
|
||||||
@@ -440,70 +439,71 @@ func UpdateActStatusByTime(db *DaoDB, refTime time.Time) (num int64, err error)
|
|||||||
return num, err
|
return num, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func ActStoreSkuMap2StoreSkuAct(actStoreSkuMap *model.ActStoreSkuMap, isCanceled bool) (storeSkuAct *model.StoreSkuAct) {
|
// func ActStoreSkuMap2StoreSkuAct(actStoreSkuMap *model.ActStoreSkuMap, isCanceled bool) (storeSkuAct *model.StoreSkuAct) {
|
||||||
storeSkuAct = &model.StoreSkuAct{
|
// storeSkuAct = &model.StoreSkuAct{
|
||||||
StoreID: actStoreSkuMap.StoreID,
|
// StoreID: actStoreSkuMap.StoreID,
|
||||||
SkuID: actStoreSkuMap.SkuID,
|
// SkuID: actStoreSkuMap.SkuID,
|
||||||
VendorID: actStoreSkuMap.VendorID,
|
// VendorID: actStoreSkuMap.VendorID,
|
||||||
}
|
// }
|
||||||
storeSkuAct.CreatedAt = actStoreSkuMap.CreatedAt
|
// storeSkuAct.CreatedAt = actStoreSkuMap.CreatedAt
|
||||||
storeSkuAct.UpdatedAt = actStoreSkuMap.UpdatedAt
|
// storeSkuAct.UpdatedAt = actStoreSkuMap.UpdatedAt
|
||||||
storeSkuAct.LastOperator = actStoreSkuMap.LastOperator
|
// storeSkuAct.LastOperator = actStoreSkuMap.LastOperator
|
||||||
|
|
||||||
if actStoreSkuMap.ActualActPrice > 0 {
|
// if actStoreSkuMap.ActualActPrice > 0 {
|
||||||
if isCanceled || !utils.IsTimeZero(actStoreSkuMap.DeletedAt) {
|
// if isCanceled || !utils.IsTimeZero(actStoreSkuMap.DeletedAt) {
|
||||||
storeSkuAct.ActID = 0
|
// storeSkuAct.ActID = 0
|
||||||
} else {
|
// } else {
|
||||||
storeSkuAct.ActID = actStoreSkuMap.ActID
|
// storeSkuAct.ActID = actStoreSkuMap.ActID
|
||||||
storeSkuAct.VendorActID = actStoreSkuMap.VendorActID
|
// storeSkuAct.VendorActID = actStoreSkuMap.VendorActID
|
||||||
storeSkuAct.SyncStatus = actStoreSkuMap.SyncStatus
|
// storeSkuAct.SyncStatus = actStoreSkuMap.SyncStatus
|
||||||
storeSkuAct.VendorPrice = actStoreSkuMap.VendorPrice
|
// storeSkuAct.VendorPrice = actStoreSkuMap.VendorPrice
|
||||||
storeSkuAct.ActualActPrice = actStoreSkuMap.ActualActPrice
|
// storeSkuAct.ActualActPrice = actStoreSkuMap.ActualActPrice
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
if actStoreSkuMap.EarningPrice > 0 {
|
// if actStoreSkuMap.EarningPrice > 0 {
|
||||||
if isCanceled || !utils.IsTimeZero(actStoreSkuMap.DeletedAt) {
|
// if isCanceled || !utils.IsTimeZero(actStoreSkuMap.DeletedAt) {
|
||||||
storeSkuAct.EarningActID = 0
|
// storeSkuAct.EarningActID = 0
|
||||||
} else {
|
// } else {
|
||||||
storeSkuAct.EarningActID = actStoreSkuMap.ActID
|
// storeSkuAct.EarningActID = actStoreSkuMap.ActID
|
||||||
storeSkuAct.EarningPrice = actStoreSkuMap.EarningPrice
|
// storeSkuAct.EarningPrice = actStoreSkuMap.EarningPrice
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return storeSkuAct
|
// return storeSkuAct
|
||||||
}
|
// }
|
||||||
|
|
||||||
func BatchUpdateActEntity(db *DaoDB, isCanceled bool, items []*KVUpdateItem) (num int64, err error) {
|
func BatchUpdateActEntity(db *DaoDB, isCanceled bool, items []*KVUpdateItem) (num int64, err error) {
|
||||||
if globals.IsStoreSkuAct {
|
return BatchUpdateEntityByKV(db, items)
|
||||||
Begin(db)
|
// if globals.IsStoreSkuAct {
|
||||||
defer func() {
|
// Begin(db)
|
||||||
if r := recover(); r != nil || err != nil {
|
// defer func() {
|
||||||
Rollback(db)
|
// if r := recover(); r != nil || err != nil {
|
||||||
if r != nil {
|
// Rollback(db)
|
||||||
panic(r)
|
// if r != nil {
|
||||||
}
|
// panic(r)
|
||||||
}
|
// }
|
||||||
}()
|
// }
|
||||||
|
// }()
|
||||||
|
|
||||||
for _, v := range items {
|
// for _, v := range items {
|
||||||
if actStoreSku, ok := v.Item.(*model.ActStoreSkuMap); ok {
|
// if actStoreSku, ok := v.Item.(*model.ActStoreSkuMap); ok {
|
||||||
for k1, v1 := range v.KVs {
|
// for k1, v1 := range v.KVs {
|
||||||
refutil.SetObjFieldByName(actStoreSku, k1, v1)
|
// refutil.SetObjFieldByName(actStoreSku, k1, v1)
|
||||||
}
|
// }
|
||||||
if err = CreateOrUpdateActStoreSku(db, ActStoreSkuMap2StoreSkuAct(actStoreSku, isCanceled)); err != nil {
|
// if err = CreateOrUpdateActStoreSku(db, ActStoreSkuMap2StoreSkuAct(actStoreSku, isCanceled)); err != nil {
|
||||||
return 0, err
|
// return 0, err
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
if _, err = BatchUpdateEntityByKV(db, items); err != nil {
|
// if _, err = BatchUpdateEntityByKV(db, items); err != nil {
|
||||||
return 0, err
|
// return 0, err
|
||||||
}
|
// }
|
||||||
|
|
||||||
if globals.IsStoreSkuAct {
|
// if globals.IsStoreSkuAct {
|
||||||
Commit(db)
|
// Commit(db)
|
||||||
}
|
// }
|
||||||
return num, err
|
// return num, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateOrUpdateActStoreSku(db *DaoDB, storeSkuAct *model.StoreSkuAct) (err error) {
|
func CreateOrUpdateActStoreSku(db *DaoDB, storeSkuAct *model.StoreSkuAct) (err error) {
|
||||||
@@ -519,7 +519,7 @@ func CreateOrUpdateActStoreSku(db *DaoDB, storeSkuAct *model.StoreSkuAct) (err e
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetStoresSkusAct(db *DaoDB, storeIDs, skuIDs, vendorIDs []int) (storeSkuActList []*model.StoreSkuAct, err error) {
|
func GetStoresSkusAct(db *DaoDB, storeIDs, skuIDs, vendorIDs []int, minActPercentage, maxActPercentage int) (storeSkuActList []*model.StoreSkuAct, err error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM store_sku_act t1
|
FROM store_sku_act t1
|
||||||
@@ -538,14 +538,22 @@ func GetStoresSkusAct(db *DaoDB, storeIDs, skuIDs, vendorIDs []int) (storeSkuAct
|
|||||||
sql += " AND t1.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
sql += " AND t1.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
||||||
sqlParams = append(sqlParams, vendorIDs)
|
sqlParams = append(sqlParams, vendorIDs)
|
||||||
}
|
}
|
||||||
|
if minActPercentage > 0 {
|
||||||
|
sql += " AND t1.act_percentage >= ?"
|
||||||
|
sqlParams = append(sqlParams, minActPercentage)
|
||||||
|
}
|
||||||
|
if maxActPercentage > 0 {
|
||||||
|
sql += " AND t1.act_percentage <= ?"
|
||||||
|
sqlParams = append(sqlParams, maxActPercentage)
|
||||||
|
}
|
||||||
err = GetRows(db, &storeSkuActList, sql, sqlParams...)
|
err = GetRows(db, &storeSkuActList, sql, sqlParams...)
|
||||||
return storeSkuActList, err
|
return storeSkuActList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetStoresSkusAndActInfo(db *DaoDB, storeIDs, skuIDs, vendorIDs []int) (storeSkuAndActList []*StoreSkuAndAct, err error) {
|
func GetStoresSkusAndActInfo(db *DaoDB, storeIDs, skuIDs, vendorIDs []int, minActPercentage, maxActPercentage int) (storeSkuAndActList []*StoreSkuAndAct, err error) {
|
||||||
storeSkuList, err := GetStoresSkusInfo(db, storeIDs, skuIDs)
|
storeSkuList, err := GetStoresSkusInfo(db, storeIDs, skuIDs)
|
||||||
if err == nil && len(storeSkuList) > 0 {
|
if err == nil && len(storeSkuList) > 0 {
|
||||||
storeSkuActList, err2 := GetStoresSkusAct(db, storeIDs, skuIDs, vendorIDs)
|
storeSkuActList, err2 := GetStoresSkusAct(db, storeIDs, skuIDs, vendorIDs, minActPercentage, maxActPercentage)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
actMap := make(map[int64][]*model.StoreSkuAct)
|
actMap := make(map[int64][]*model.StoreSkuAct)
|
||||||
for _, v := range storeSkuActList {
|
for _, v := range storeSkuActList {
|
||||||
@@ -566,42 +574,42 @@ func GetStoresSkusAndActInfo(db *DaoDB, storeIDs, skuIDs, vendorIDs []int) (stor
|
|||||||
return storeSkuAndActList, err
|
return storeSkuAndActList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetConflictStoreSkuActInfo(db *DaoDB, vendorIDs []int, inStoreSkuActList []*model.StoreSkuAct) (outStoreSkuActList []*model.StoreSkuAct, err error) {
|
// func GetConflictStoreSkuActInfo(db *DaoDB, vendorIDs []int, inStoreSkuActList []*model.StoreSkuAct) (outStoreSkuActList []*model.StoreSkuAct, err error) {
|
||||||
storeIDMap := make(map[int]int)
|
// storeIDMap := make(map[int]int)
|
||||||
skuIDMap := make(map[int]int)
|
// skuIDMap := make(map[int]int)
|
||||||
inStoreSkuActMap := make(map[int64]*model.StoreSkuAct)
|
// inStoreSkuActMap := make(map[int64]*model.StoreSkuAct)
|
||||||
for _, v := range inStoreSkuActList {
|
// for _, v := range inStoreSkuActList {
|
||||||
storeIDMap[v.StoreID] = 1
|
// storeIDMap[v.StoreID] = 1
|
||||||
skuIDMap[v.SkuID] = 1
|
// skuIDMap[v.SkuID] = 1
|
||||||
inStoreSkuActMap[jxutils.Combine2Int(v.StoreID, v.SkuID)] = v
|
// inStoreSkuActMap[jxutils.Combine2Int(v.StoreID, v.SkuID)] = v
|
||||||
}
|
// }
|
||||||
storeIDs := jxutils.IntMap2List(storeIDMap)
|
// storeIDs := jxutils.IntMap2List(storeIDMap)
|
||||||
skuIDs := jxutils.IntMap2List(skuIDMap)
|
// skuIDs := jxutils.IntMap2List(skuIDMap)
|
||||||
|
|
||||||
sql := `
|
// sql := `
|
||||||
SELECT *
|
// SELECT *
|
||||||
FROM store_sku_act t1
|
// FROM store_sku_act t1
|
||||||
WHERE
|
// WHERE
|
||||||
t1.store_id IN (` + GenQuestionMarks(len(storeIDs)) + `)
|
// t1.store_id IN (` + GenQuestionMarks(len(storeIDs)) + `)
|
||||||
AND t1.sku_id IN (` + GenQuestionMarks(len(skuIDs)) + `)
|
// AND t1.sku_id IN (` + GenQuestionMarks(len(skuIDs)) + `)
|
||||||
`
|
// `
|
||||||
sqlParams := []interface{}{
|
// sqlParams := []interface{}{
|
||||||
storeIDs,
|
// storeIDs,
|
||||||
skuIDs,
|
// skuIDs,
|
||||||
}
|
// }
|
||||||
if len(vendorIDs) > 0 {
|
// if len(vendorIDs) > 0 {
|
||||||
sql += ` AND t1.vendor_Id IN (` + GenQuestionMarks(len(storeIDs)) + `)`
|
// sql += ` AND t1.vendor_Id IN (` + GenQuestionMarks(len(storeIDs)) + `)`
|
||||||
sqlParams = append(sqlParams, vendorIDs)
|
// sqlParams = append(sqlParams, vendorIDs)
|
||||||
}
|
// }
|
||||||
|
|
||||||
var tmpStoreSkuActList []*model.StoreSkuAct
|
// var tmpStoreSkuActList []*model.StoreSkuAct
|
||||||
if err = GetRows(db, &tmpStoreSkuActList, sql, sqlParams...); err == nil {
|
// if err = GetRows(db, &tmpStoreSkuActList, sql, sqlParams...); err == nil {
|
||||||
for _, v := range tmpStoreSkuActList {
|
// for _, v := range tmpStoreSkuActList {
|
||||||
tmpStoreSkuAct := inStoreSkuActMap[jxutils.Combine2Int(v.StoreID, v.SkuID)]
|
// tmpStoreSkuAct := inStoreSkuActMap[jxutils.Combine2Int(v.StoreID, v.SkuID)]
|
||||||
if tmpStoreSkuAct != nil && (tmpStoreSkuAct.ActualActPrice > 0 && v.ActID != 0 && v.SyncStatus == 0 || tmpStoreSkuAct.EarningPrice > 0 && v.EarningActID != 0) {
|
// if tmpStoreSkuAct != nil && (tmpStoreSkuAct.ActualActPrice > 0 && v.ActID != 0 && v.SyncStatus == 0 || tmpStoreSkuAct.EarningPrice > 0 && v.EarningActID != 0) {
|
||||||
outStoreSkuActList = append(outStoreSkuActList, v)
|
// outStoreSkuActList = append(outStoreSkuActList, v)
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return outStoreSkuActList, err
|
// return outStoreSkuActList, err
|
||||||
}
|
// }
|
||||||
|
|||||||
@@ -22,6 +22,9 @@ const (
|
|||||||
FuncCreateStoreSkus = 7
|
FuncCreateStoreSkus = 7
|
||||||
FuncUpdateStoreSkus = 8
|
FuncUpdateStoreSkus = 8
|
||||||
FuncDeleteStoreSkus = 9
|
FuncDeleteStoreSkus = 9
|
||||||
|
|
||||||
|
FuncCreateActs = 10
|
||||||
|
FuncCancelActs = 11
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -40,7 +43,11 @@ type StoreSkuInfo struct {
|
|||||||
Stock int `json:"stock,omitempty"`
|
Stock int `json:"stock,omitempty"`
|
||||||
VendorPrice int64 `json:"price,omitempty"`
|
VendorPrice int64 `json:"price,omitempty"`
|
||||||
Status int `json:"status,omitempty"`
|
Status int `json:"status,omitempty"`
|
||||||
|
|
||||||
Seq int `json:"seq,omitempty"`
|
Seq int `json:"seq,omitempty"`
|
||||||
|
|
||||||
|
ActPrice int64 `json:"actPrice,omitempty"`
|
||||||
|
VendorActID string `json:"vendorActID,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type StoreSkuInfoWithErr struct {
|
type StoreSkuInfoWithErr struct {
|
||||||
@@ -141,6 +148,9 @@ type IPurchasePlatformStoreSkuHandler interface {
|
|||||||
UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*StoreSkuInfo) (failedList []*StoreSkuInfoWithErr, err error)
|
UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*StoreSkuInfo) (failedList []*StoreSkuInfoWithErr, err error)
|
||||||
UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*StoreSkuInfo, status int) (failedList []*StoreSkuInfoWithErr, err error)
|
UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*StoreSkuInfo, status int) (failedList []*StoreSkuInfoWithErr, err error)
|
||||||
UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*StoreSkuInfo) (failedList []*StoreSkuInfoWithErr, err error)
|
UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*StoreSkuInfo) (failedList []*StoreSkuInfoWithErr, err error)
|
||||||
|
|
||||||
|
CreateStoreSkusAct(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*StoreSkuInfo) (failedList []*StoreSkuInfoWithErr, err error)
|
||||||
|
CancelActs(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*StoreSkuInfo) (failedList []*StoreSkuInfoWithErr, err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type ISingleStoreStoreSkuHandler interface {
|
type ISingleStoreStoreSkuHandler interface {
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ func (p *PurchaseHandler) GetStoreSkusBatchSize(funcID int) (batchSize int) {
|
|||||||
batchSize = 1
|
batchSize = 1
|
||||||
case partner.FuncGetStoreSkusFullInfo:
|
case partner.FuncGetStoreSkusFullInfo:
|
||||||
batchSize = 1
|
batchSize = 1
|
||||||
|
case partner.FuncCreateActs, partner.FuncCancelActs:
|
||||||
|
batchSize = 1
|
||||||
}
|
}
|
||||||
return batchSize
|
return batchSize
|
||||||
}
|
}
|
||||||
@@ -460,3 +462,33 @@ func SelectStoreSkuListByOpResult(storeSkuList []*partner.StoreSkuInfo, opResult
|
|||||||
}
|
}
|
||||||
return selectedStoreSkuList
|
return selectedStoreSkuList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 {
|
||||||
|
if vendorActID, err2 := createOneShopAct(putils.GetFixDirectDownAct(storeID, v.SkuID), utils.Int2Str(storeID), putils.StoreSku2ActStoreSku([]*partner.StoreSkuInfo{v})); err2 != nil {
|
||||||
|
failedList = append(failedList, &partner.StoreSkuInfoWithErr{
|
||||||
|
StoreSkuInfo: v,
|
||||||
|
VendoreID: model.VendorIDJD,
|
||||||
|
StoreID: storeID,
|
||||||
|
ErrMsg: err.Error(),
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
v.VendorActID = 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) {
|
||||||
|
for _, v := range storeSkuList {
|
||||||
|
if err2 := ActivityDisable(utils.Str2Int64(v.VendorActID), utils.Int2Str(storeID), 0, 0); err2 != nil {
|
||||||
|
failedList = append(failedList, &partner.StoreSkuInfoWithErr{
|
||||||
|
StoreSkuInfo: v,
|
||||||
|
VendoreID: model.VendorIDJD,
|
||||||
|
StoreID: storeID,
|
||||||
|
ErrMsg: err.Error(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return failedList, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ func (p *PurchaseHandler) GetStoreSkusBatchSize(funcID int) (batchSize int) {
|
|||||||
switch funcID {
|
switch funcID {
|
||||||
case partner.FuncUpdateStoreSkusStock, partner.FuncUpdateStoreSkusStatus, partner.FuncUpdateStoreSkusPrice:
|
case partner.FuncUpdateStoreSkusStock, partner.FuncUpdateStoreSkusStatus, partner.FuncUpdateStoreSkusPrice:
|
||||||
batchSize = jdapi.MaxStoreSkuBatchSize
|
batchSize = jdapi.MaxStoreSkuBatchSize
|
||||||
|
case partner.FuncCreateActs, partner.FuncCancelActs:
|
||||||
|
batchSize = 1
|
||||||
}
|
}
|
||||||
return batchSize
|
return batchSize
|
||||||
}
|
}
|
||||||
@@ -259,3 +261,33 @@ func SelectStoreSkuListByResponseList(storeSkuList []*partner.StoreSkuInfo, resp
|
|||||||
}
|
}
|
||||||
return selectedStoreSkuList
|
return selectedStoreSkuList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 {
|
||||||
|
if vendorActID, err2 := createSkuAct(ctx, putils.GetFixDirectDownAct(storeID, v.SkuID), putils.StoreSku2ActStoreSku([]*partner.StoreSkuInfo{v})); err2 != nil {
|
||||||
|
failedList = append(failedList, &partner.StoreSkuInfoWithErr{
|
||||||
|
StoreSkuInfo: v,
|
||||||
|
VendoreID: model.VendorIDJD,
|
||||||
|
StoreID: storeID,
|
||||||
|
ErrMsg: err.Error(),
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
v.VendorActID = 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) {
|
||||||
|
for _, v := range storeSkuList {
|
||||||
|
if err2 := cancelSkuAct(ctx, putils.GetFixDirectDownAct(storeID, v.SkuID), v.VendorActID); err2 != nil {
|
||||||
|
failedList = append(failedList, &partner.StoreSkuInfoWithErr{
|
||||||
|
StoreSkuInfo: v,
|
||||||
|
VendoreID: model.VendorIDJD,
|
||||||
|
StoreID: storeID,
|
||||||
|
ErrMsg: err.Error(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return failedList, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -26,3 +26,11 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg
|
|||||||
func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (successList []*partner.StoreSkuInfo, err error) {
|
func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (successList []*partner.StoreSkuInfo, err error) {
|
||||||
return successList, err
|
return successList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) CreateStoreSkusAct(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
||||||
|
return failedList, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) CancelActs(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
||||||
|
return failedList, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -80,22 +80,34 @@ func isCreateOrUpdate(syncStatus int8) bool {
|
|||||||
return model.IsSyncStatusNeedCreate(syncStatus) || model.IsSyncStatusNeedUpdate(syncStatus)
|
return model.IsSyncStatusNeedCreate(syncStatus) || model.IsSyncStatusNeedUpdate(syncStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*model.ActStoreSku2) (err error) {
|
func createOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*model.ActStoreSku2) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
||||||
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, jxActType2Mtwm(act.Type), actData)
|
actResult, faileInfoList, err2 := api.MtwmAPI.RetailDiscountBatchSave2(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 nil, err
|
||||||
}
|
|
||||||
actResultMap := make(map[string]*mtwmapi.RetailDiscountActResult)
|
|
||||||
for _, v := range actResult {
|
|
||||||
actResultMap[v.AppFoodCode] = v
|
|
||||||
}
|
}
|
||||||
|
actStoreSkuMap := make(map[int]*model.ActStoreSku2)
|
||||||
for _, v := range actStoreSku {
|
for _, v := range actStoreSku {
|
||||||
if result := actResultMap[utils.Int2Str(v.SkuID)]; result != nil {
|
actStoreSkuMap[v.SkuID] = v
|
||||||
v.VendorActID = utils.Int64ToStr(result.ActID)
|
}
|
||||||
|
for _, v := range actResult {
|
||||||
|
if v2 := actStoreSkuMap[int(utils.Str2Int64WithDefault(v.AppFoodCode, 0))]; v2 != nil {
|
||||||
|
v2.VendorActID = utils.Int64ToStr(v.ActID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, v := range faileInfoList {
|
||||||
|
if v2 := actStoreSkuMap[int(utils.Str2Int64WithDefault(v.AppFoodCode, 0))]; v2 != nil {
|
||||||
|
failedList = append(failedList, &partner.StoreSkuInfoWithErr{
|
||||||
|
StoreSkuInfo: &partner.StoreSkuInfo{
|
||||||
|
SkuID: v2.SkuID,
|
||||||
|
},
|
||||||
|
VendoreID: model.VendorIDMTWM,
|
||||||
|
StoreID: int(utils.Str2Int64WithDefault(vendorStoreID, 0)),
|
||||||
|
ErrMsg: v.ErrorMsg,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -104,16 +116,16 @@ func createOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*mode
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
return failedList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func cancelOneShopAct(ctx *jxcontext.Context, act *model.Act2, actStoreSku []*model.ActStoreSku2) (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(actStoreSku[0].VendorStoreID, jxActType2Mtwm(act.Type), list)
|
err = api.MtwmAPI.RetailDiscountDelete(vendorStoreID, jxActType2Mtwm(act.Type), list)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
return failedList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func getActStoreSkuFromTaskResult(taskReslt []interface{}) (list []*model.ActStoreSku2) {
|
func getActStoreSkuFromTaskResult(taskReslt []interface{}) (list []*model.ActStoreSku2) {
|
||||||
@@ -130,7 +142,7 @@ 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 {
|
if _, err = createOneShopAct(act, list[0].VendorStoreID, list); err == nil {
|
||||||
retVal = []interface{}{list}
|
retVal = []interface{}{list}
|
||||||
}
|
}
|
||||||
return retVal, err
|
return retVal, err
|
||||||
@@ -146,7 +158,7 @@ func cancelSkuAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.A
|
|||||||
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, act, actStoreSkuList); err == nil {
|
if _, err = cancelOneShopAct(act, actStoreSkuList[0].VendorStoreID, actStoreSkuList); err == nil {
|
||||||
retVal = []interface{}{actStoreSkuList}
|
retVal = []interface{}{actStoreSkuList}
|
||||||
}
|
}
|
||||||
return retVal, err
|
return retVal, err
|
||||||
|
|||||||
@@ -47,6 +47,10 @@ func (p *PurchaseHandler) GetStoreSkusBatchSize(funcID int) (batchSize int) {
|
|||||||
batchSize = 1 // mtwmapi.MaxStoreSkuBatchSize
|
batchSize = 1 // mtwmapi.MaxStoreSkuBatchSize
|
||||||
case partner.FuncGetStoreSkusFullInfo:
|
case partner.FuncGetStoreSkusFullInfo:
|
||||||
batchSize = 1
|
batchSize = 1
|
||||||
|
case partner.FuncCreateActs:
|
||||||
|
batchSize = mtwmapi.MaxRetailDiscountCreateBatchSize
|
||||||
|
case partner.FuncCancelActs:
|
||||||
|
batchSize = mtwmapi.MaxRetailDiscountDeleteBatchSize
|
||||||
}
|
}
|
||||||
return batchSize
|
return batchSize
|
||||||
}
|
}
|
||||||
@@ -574,3 +578,11 @@ func SelectStoreSkuListByFoodList(storeSkuList interface{}, foodList []*mtwmapi.
|
|||||||
}
|
}
|
||||||
return selectedStoreSkuList
|
return selectedStoreSkuList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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(storeID, 0), vendorStoreID, putils.StoreSku2ActStoreSku(storeSkuList))
|
||||||
|
}
|
||||||
|
|
||||||
|
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(storeID, 0), vendorStoreID, putils.StoreSku2ActStoreSku(storeSkuList))
|
||||||
|
}
|
||||||
|
|||||||
@@ -3,10 +3,12 @@ package putils
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"sort"
|
"sort"
|
||||||
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
@@ -219,6 +221,14 @@ func StoreSkuList2MapBySkuID(storeSkuList []*partner.StoreSkuInfo) (storeSkuMap
|
|||||||
return storeSkuMap
|
return storeSkuMap
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func StoreSkuList2IDs(storeSkuList []*partner.StoreSkuInfo) (ids []int) {
|
||||||
|
ids = make([]int, len(storeSkuList))
|
||||||
|
for k, v := range storeSkuList {
|
||||||
|
ids[k] = v.SkuID
|
||||||
|
}
|
||||||
|
return ids
|
||||||
|
}
|
||||||
|
|
||||||
func UnselectStoreSkuListByVendorSkuIDs(storeSkuList []*partner.StoreSkuInfo, vendorSkuIDs []string) (selectedStoreSkuList []*partner.StoreSkuInfo) {
|
func UnselectStoreSkuListByVendorSkuIDs(storeSkuList []*partner.StoreSkuInfo, vendorSkuIDs []string) (selectedStoreSkuList []*partner.StoreSkuInfo) {
|
||||||
if len(vendorSkuIDs) > 0 {
|
if len(vendorSkuIDs) > 0 {
|
||||||
vendorSkuIDMap := jxutils.StringList2Map(vendorSkuIDs)
|
vendorSkuIDMap := jxutils.StringList2Map(vendorSkuIDs)
|
||||||
@@ -312,3 +322,34 @@ func GenPartialFailedErr(failedInfo interface{}, failedCount int) (err error) {
|
|||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func StoreSku2ActStoreSku(storeSkuList []*partner.StoreSkuInfo) (actStoreSku []*model.ActStoreSku2) {
|
||||||
|
for _, v := range storeSkuList {
|
||||||
|
actStoreSku = append(actStoreSku, &model.ActStoreSku2{
|
||||||
|
ActStoreSku: model.ActStoreSku{
|
||||||
|
SkuID: v.SkuID,
|
||||||
|
Stock: 200,
|
||||||
|
},
|
||||||
|
VendorSkuID: v.VendorSkuID,
|
||||||
|
ActualActPrice: v.ActPrice,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return actStoreSku
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetFixDirectDownAct(storeID, skuID int) (act *model.Act2) {
|
||||||
|
name := fmt.Sprintf("自动直降活动%d:%d:%d", storeID, skuID, time.Now().Unix())
|
||||||
|
act = &model.Act2{
|
||||||
|
Act: model.Act{
|
||||||
|
Name: name,
|
||||||
|
Advertising: name,
|
||||||
|
Type: model.ActSkuDirectDown,
|
||||||
|
Status: model.ActStatusCreated,
|
||||||
|
LimitUser: 1,
|
||||||
|
LimitCount: 1,
|
||||||
|
BeginAt: utils.Time2Date(time.Now()),
|
||||||
|
EndAt: utils.Time2Date(time.Now().Add(365 * 24 * time.Hour)),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return act
|
||||||
|
}
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ func Init() {
|
|||||||
IsUseThingMap = beego.AppConfig.DefaultBool("useThingMap", false)
|
IsUseThingMap = beego.AppConfig.DefaultBool("useThingMap", false)
|
||||||
|
|
||||||
IsAddEvent = !IsProductEnv()
|
IsAddEvent = !IsProductEnv()
|
||||||
IsStoreSkuAct = false
|
IsStoreSkuAct = !IsProductEnv()
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsCallbackAlwaysReturnSuccess() bool {
|
func IsCallbackAlwaysReturnSuccess() bool {
|
||||||
|
|||||||
Reference in New Issue
Block a user