diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index a25b61bbd..736766c2c 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -1319,7 +1319,7 @@ func formatAutoSaleTime(autoSaleTime time.Time) (outAutoSaleTime time.Time) { } // todo 应该用updateStoresSkusWithoutSync实现 -func updateStoreSkusSaleWithoutSync(ctx *jxcontext.Context, storeID int, skuBindSkuInfos []*StoreSkuBindSkuInfo, autoSaleTime time.Time, userName string) (needSyncSkus []int, err error) { +func updateStoreSkusSaleWithoutSync(ctx *jxcontext.Context, storeID int, skuBindSkuInfos []*StoreSkuBindSkuInfo, autoSaleTime time.Time, ignoreDontSale bool, userName string) (needSyncSkus []int, err error) { var num int64 db := dao.GetDB() needSyncIDMap := make(map[int]int) @@ -1345,28 +1345,31 @@ func updateStoreSkusSaleWithoutSync(ctx *jxcontext.Context, storeID int, skuBind autoSaleTime = formatAutoSaleTime(autoSaleTime) for _, skuBind := range storeSkuList { if v := skuBindSkuInfosMap[skuBind.SkuID]; v != nil && v.IsSale != 0 { - if v.IsSale == 1 { - skuBind.Status = model.StoreSkuBindStatusNormal - } else { - skuBind.Status = model.StoreSkuBindStatusDontSale - } - kvs := map[string]interface{}{ - model.FieldStatus: skuBind.Status, - model.FieldJdSyncStatus: skuBind.JdSyncStatus | model.SyncFlagSaleMask, - model.FieldEbaiSyncStatus: skuBind.EbaiSyncStatus | model.SyncFlagSaleMask, - model.FieldMtwmSyncStatus: skuBind.MtwmSyncStatus | model.SyncFlagSaleMask, - model.FieldWscSyncStatus: skuBind.WscSyncStatus | model.SyncFlagSaleMask, - } - if utils.IsTimeZero(autoSaleTime) || skuBind.Status == model.SkuStatusNormal { - autoSaleTime = utils.DefaultTimeValue - } - kvs["AutoSaleAt"] = autoSaleTime - if num, err = dao.UpdateEntityLogically(db, skuBind, kvs, userName, nil); err != nil { - dao.Rollback(db) - return nil, err - } - if num == 1 { - needSyncIDMap[v.SkuID] = 1 + if !(!utils.IsTimeZero(autoSaleTime) && ignoreDontSale && skuBind.Status == model.StoreSkuBindStatusDontSale) { + if v.IsSale == -1 || !utils.IsTimeZero(autoSaleTime) { + skuBind.Status = model.StoreSkuBindStatusDontSale + } else if v.IsSale == 1 { + skuBind.Status = model.StoreSkuBindStatusNormal + } + kvs := map[string]interface{}{ + model.FieldStatus: skuBind.Status, + model.FieldJdSyncStatus: skuBind.JdSyncStatus | model.SyncFlagSaleMask, + model.FieldEbaiSyncStatus: skuBind.EbaiSyncStatus | model.SyncFlagSaleMask, + model.FieldMtwmSyncStatus: skuBind.MtwmSyncStatus | model.SyncFlagSaleMask, + model.FieldWscSyncStatus: skuBind.WscSyncStatus | model.SyncFlagSaleMask, + } + if utils.IsTimeZero(autoSaleTime) || skuBind.Status == model.SkuStatusNormal { + kvs["AutoSaleAt"] = utils.DefaultTimeValue + } else { + kvs["AutoSaleAt"] = autoSaleTime + } + if num, err = dao.UpdateEntityLogically(db, skuBind, kvs, userName, nil); err != nil { + dao.Rollback(db) + return nil, err + } + if num == 1 { + needSyncIDMap[v.SkuID] = 1 + } } } } @@ -1386,13 +1389,13 @@ func uniqueStoreSkuBind(skuBindSkuInfos []*StoreSkuBindSkuInfo) (outSkuBindSkuIn return outSkuBindSkuInfos } -func UpdateStoresSkusSale(ctx *jxcontext.Context, storeIDs []int, skuBindSkuInfos []*StoreSkuBindSkuInfo, autoSaleTime time.Time, userName string, isAsync, isContinueWhenError bool) (hint string, err error) { +func UpdateStoresSkusSale(ctx *jxcontext.Context, storeIDs []int, skuBindSkuInfos []*StoreSkuBindSkuInfo, autoSaleTime time.Time, ignoreDontSale bool, userName string, isAsync, isContinueWhenError bool) (hint string, err error) { storeIDs = uniqueStoreIDs(storeIDs) skuBindSkuInfos = uniqueStoreSkuBind(skuBindSkuInfos) var num int64 for _, storeID := range storeIDs { - skuIDs, err2 := updateStoreSkusSaleWithoutSync(ctx, storeID, skuBindSkuInfos, autoSaleTime, userName) + skuIDs, err2 := updateStoreSkusSaleWithoutSync(ctx, storeID, skuBindSkuInfos, autoSaleTime, ignoreDontSale, userName) if err = err2; err != nil { return "", err } diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 16dd14bcd..4b1d44889 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -265,7 +265,8 @@ func (c *StoreSkuController) CopyStoreSkus() { // @Param storeIDs formData string true "门店ID列表" // @Param payload formData string true "json数据,StoreSkuBindSkuInfo对象数组" // @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false" -// @Param autoSaleAt formData string false "自动可售时间" +// @Param autoSaleAt formData string false "临时不可售到期时间" +// @Param ignoreDontSale formData bool false "在临时不可售时,是否忽略当前是不可售的商品" // @Param isAsync formData bool false "是否异步操作" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult @@ -281,7 +282,7 @@ func (c *StoreSkuController) UpdateStoresSkusSale() { if err != nil { return retVal, "", err } - retVal, err = cms.UpdateStoresSkusSale(params.Ctx, storeIDs, skuBindSkuInfos, timeList[0], params.Ctx.GetUserName(), params.IsAsync, params.IsContinueWhenError) + retVal, err = cms.UpdateStoresSkusSale(params.Ctx, storeIDs, skuBindSkuInfos, timeList[0], params.IgnoreDontSale, params.Ctx.GetUserName(), params.IsAsync, params.IsContinueWhenError) return retVal, "", err }) }