- 修复updateStoreSkusSaleWithoutSync中的bug

This commit is contained in:
gazebo
2019-08-28 16:43:30 +08:00
parent 07edb6a495
commit 9e6a0148f8
2 changed files with 31 additions and 27 deletions

View File

@@ -1319,7 +1319,7 @@ func formatAutoSaleTime(autoSaleTime time.Time) (outAutoSaleTime time.Time) {
} }
// todo 应该用updateStoresSkusWithoutSync实现 // 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 var num int64
db := dao.GetDB() db := dao.GetDB()
needSyncIDMap := make(map[int]int) needSyncIDMap := make(map[int]int)
@@ -1345,10 +1345,11 @@ func updateStoreSkusSaleWithoutSync(ctx *jxcontext.Context, storeID int, skuBind
autoSaleTime = formatAutoSaleTime(autoSaleTime) autoSaleTime = formatAutoSaleTime(autoSaleTime)
for _, skuBind := range storeSkuList { for _, skuBind := range storeSkuList {
if v := skuBindSkuInfosMap[skuBind.SkuID]; v != nil && v.IsSale != 0 { if v := skuBindSkuInfosMap[skuBind.SkuID]; v != nil && v.IsSale != 0 {
if v.IsSale == 1 { if !(!utils.IsTimeZero(autoSaleTime) && ignoreDontSale && skuBind.Status == model.StoreSkuBindStatusDontSale) {
skuBind.Status = model.StoreSkuBindStatusNormal if v.IsSale == -1 || !utils.IsTimeZero(autoSaleTime) {
} else {
skuBind.Status = model.StoreSkuBindStatusDontSale skuBind.Status = model.StoreSkuBindStatusDontSale
} else if v.IsSale == 1 {
skuBind.Status = model.StoreSkuBindStatusNormal
} }
kvs := map[string]interface{}{ kvs := map[string]interface{}{
model.FieldStatus: skuBind.Status, model.FieldStatus: skuBind.Status,
@@ -1358,9 +1359,10 @@ func updateStoreSkusSaleWithoutSync(ctx *jxcontext.Context, storeID int, skuBind
model.FieldWscSyncStatus: skuBind.WscSyncStatus | model.SyncFlagSaleMask, model.FieldWscSyncStatus: skuBind.WscSyncStatus | model.SyncFlagSaleMask,
} }
if utils.IsTimeZero(autoSaleTime) || skuBind.Status == model.SkuStatusNormal { if utils.IsTimeZero(autoSaleTime) || skuBind.Status == model.SkuStatusNormal {
autoSaleTime = utils.DefaultTimeValue kvs["AutoSaleAt"] = utils.DefaultTimeValue
} } else {
kvs["AutoSaleAt"] = autoSaleTime kvs["AutoSaleAt"] = autoSaleTime
}
if num, err = dao.UpdateEntityLogically(db, skuBind, kvs, userName, nil); err != nil { if num, err = dao.UpdateEntityLogically(db, skuBind, kvs, userName, nil); err != nil {
dao.Rollback(db) dao.Rollback(db)
return nil, err return nil, err
@@ -1370,6 +1372,7 @@ func updateStoreSkusSaleWithoutSync(ctx *jxcontext.Context, storeID int, skuBind
} }
} }
} }
}
dao.Commit(db) dao.Commit(db)
needSyncSkus = jxutils.IntMap2List(needSyncIDMap) needSyncSkus = jxutils.IntMap2List(needSyncIDMap)
return needSyncSkus, err return needSyncSkus, err
@@ -1386,13 +1389,13 @@ func uniqueStoreSkuBind(skuBindSkuInfos []*StoreSkuBindSkuInfo) (outSkuBindSkuIn
return outSkuBindSkuInfos 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) storeIDs = uniqueStoreIDs(storeIDs)
skuBindSkuInfos = uniqueStoreSkuBind(skuBindSkuInfos) skuBindSkuInfos = uniqueStoreSkuBind(skuBindSkuInfos)
var num int64 var num int64
for _, storeID := range storeIDs { 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 { if err = err2; err != nil {
return "", err return "", err
} }

View File

@@ -265,7 +265,8 @@ func (c *StoreSkuController) CopyStoreSkus() {
// @Param storeIDs formData string true "门店ID列表" // @Param storeIDs formData string true "门店ID列表"
// @Param payload formData string true "json数据StoreSkuBindSkuInfo对象数组" // @Param payload formData string true "json数据StoreSkuBindSkuInfo对象数组"
// @Param isContinueWhenError formData bool false "单个同步失败是否继续缺省false" // @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 "是否异步操作" // @Param isAsync formData bool false "是否异步操作"
// @Success 200 {object} controllers.CallResult // @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult
@@ -281,7 +282,7 @@ func (c *StoreSkuController) UpdateStoresSkusSale() {
if err != nil { if err != nil {
return retVal, "", err 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 return retVal, "", err
}) })
} }