商品名前缀

This commit is contained in:
苏尹岚
2019-12-19 10:55:41 +08:00
parent be8a98dc90
commit 16823207c9
6 changed files with 90 additions and 15 deletions

View File

@@ -1341,6 +1341,7 @@ func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fro
var (
fromTimeP time.Time
toTimeP time.Time
db = dao.GetDB()
)
if fromTime != "" {
fromTimeP = utils.Str2Time(fromTime)
@@ -1351,17 +1352,60 @@ func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fro
if toTimeP.Before(fromTimeP) {
return "", fmt.Errorf("结束时间不可以小于开始时间!开始时间:[%v],结束时间:[%v]", fromTimeP, toTimeP)
}
task := tasksch.NewParallelTask("批量设置商品前缀", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
task := tasksch.NewParallelTask("批量设置商品前缀", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
nameID := batchItemList[0].(int)
payload := map[string]interface{}{
"exPrefix": exPrefix,
"exPrefixBegin": fromTimeP,
"exPrefixEnd": toTimeP,
step := batchItemList[0].(int)
switch step {
case 0:
task := tasksch.NewParallelTask("批量设置商品前缀", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
nameID := batchItemList[0].(int)
if (time.Now().Before(toTimeP) && time.Now().After(fromTimeP)) || (time.Now().After(fromTimeP) && time.Now().After(toTimeP)) {
payload := map[string]interface{}{
"exPrefix": exPrefix,
"exPrefixBegin": fromTimeP,
"exPrefixEnd": toTimeP,
}
_, err = UpdateSkuName(ctx, nameID, payload)
} else {
skuName := &model.SkuName{
ExPrefix: exPrefix,
ExPrefixBegin: fromTimeP,
ExPrefixEnd: toTimeP,
}
skuName.ID = nameID
skuName.LastOperator = ctx.GetLoginID()
skuName.UpdatedAt = time.Now()
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
panic(r)
}
}()
_, err = dao.UpdateEntity(db, skuName, "ExPrefix", "ExPrefixBegin", "ExPrefixEnd", "LastOperator", "UpdatedAt")
dao.Commit(db)
}
return retVal, err
}, nameIDs)
tasksch.HandleTask(task, nil, true).Run()
_, err = task.GetResult(0)
case 1:
if (time.Now().Before(toTimeP) && time.Now().After(fromTimeP)) || (time.Now().After(fromTimeP) && time.Now().After(toTimeP)) {
var skuIDs []int
skuList, err2 := dao.GetSkus(db, nil, nameIDs, nil, nil)
if err = err2; err == nil {
if len(skuList) > 0 {
for _, v := range skuList {
skuIDs = append(skuIDs, v.ID)
}
CurVendorSync.SyncStoresSkus2(ctx, db, []int{model.VendorIDEBAI, model.VendorIDMTWM}, nil, false, skuIDs, nil, 0, true, true)
}
}
}
}
_, err = UpdateSkuName(ctx, nameID, payload)
return retVal, err
}, nameIDs)
}, []int{0, 1})
tasksch.HandleTask(task, nil, true).Run()
if !isAsync {
_, err = task.GetResult(0)
@@ -1372,8 +1416,8 @@ func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fro
return hint, err
}
func SetSingleStoreSkuSyncModifyStauts(db *dao.DaoDB, vendorID int) (err error) {
_, err = dao.UpdateStoreSkuBindSyncStatusForExPrefix(db, []int{vendorID})
func SetSingleStoreSkuSyncModifyStauts(db *dao.DaoDB, vendorIDs []int) (err error) {
_, err = dao.UpdateStoreSkuBindSyncStatusForExPrefix(db, vendorIDs)
return err
}

View File

@@ -384,6 +384,7 @@ func (v *VendorSync) SyncStoresCategory(ctx *jxcontext.Context, db *dao.DaoDB, v
func (v *VendorSync) SyncStoresSkus2(ctx *jxcontext.Context, db *dao.DaoDB, vendorIDs []int, storeIDs []int, syncDisabled bool, skuIDs, excludeSkuIDs []int, setSyncStatus int, isAsync, isContinueWhenError bool) (hint string, err error) {
globals.SugarLogger.Debug("SyncStoresSkus2")
isManageIt := len(storeIDs) != 1 || len(skuIDs) == 0 || len(skuIDs) > 8
SetSingleStoreSkuSyncModifyStauts(db, []int{model.VendorIDEBAI, model.VendorIDMTWM})
task, hint, err := v.LoopStoresMap2(ctx, db, fmt.Sprintf("同步门店商品信息:%v", storeIDs), isAsync, isManageIt, vendorIDs, storeIDs,
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
loopMapInfo := batchItemList[0].(*LoopStoreMapInfo)
@@ -398,7 +399,6 @@ func (v *VendorSync) SyncStoresSkus2(ctx *jxcontext.Context, db *dao.DaoDB, vend
storeMap := batchItemList[0].(*model.StoreMap)
if syncDisabled || storeMap.Status > model.StoreStatusDisabled {
if setSyncStatus != 0 {
SetSingleStoreSkuSyncModifyStauts(db, storeMap.VendorID)
dao.SetStoreSkuSyncStatus(db, storeMap.VendorID, []int{storeMap.StoreID}, skuIDs, setSyncStatus)
}
if _, err = v.proxySyncStoreSku(ctx, task, storeMap, nil, skuIDs, excludeSkuIDs, false, isContinueWhenError); err != nil {

View File

@@ -228,7 +228,7 @@ func calVendorPrice4StoreSku(inSku *dao.StoreSkuSyncInfo, pricePercentagePack mo
func formalizeStoreSkuList(inSkuList []*dao.StoreSkuSyncInfo) []*dao.StoreSkuSyncInfo {
for _, skuItem := range inSkuList {
skuItem.MergedStatus = jxutils.MergeSkuStatus(skuItem.Status, skuItem.StoreSkuStatus)
skuItem.SkuName = jxutils.ComposeSkuName(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd)
skuItem.SkuName = jxutils.ComposeSkuNameSync(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd)
}
return inSkuList
}