- 修复updateStoreSkusSaleWithoutSync中更新StoreSkuBind的错误(应该先读再存)

This commit is contained in:
gazebo
2019-06-22 01:16:59 +08:00
parent bbf381834f
commit 1c9e3acd0f

View File

@@ -918,6 +918,13 @@ func updateStoreSkusSaleWithoutSync(ctx *jxcontext.Context, storeID int, skuBind
var num int64 var num int64
db := dao.GetDB() db := dao.GetDB()
needSyncIDMap := make(map[int]int) needSyncIDMap := make(map[int]int)
skuIDMap := make(map[int]int)
skuBindSkuInfosMap := make(map[int]*StoreSkuBindSkuInfo)
for _, v := range skuBindSkuInfos {
skuIDMap[v.SkuID] = 1
skuBindSkuInfosMap[v.SkuID] = v
}
dao.Begin(db) dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
@@ -925,9 +932,13 @@ func updateStoreSkusSaleWithoutSync(ctx *jxcontext.Context, storeID int, skuBind
panic(r) panic(r)
} }
}() }()
for _, v := range skuBindSkuInfos { storeSkuList, err := dao.GetStoresSkusInfo(db, []int{storeID}, jxutils.IntMap2List(skuIDMap))
if v.IsSale != 0 { if err != nil {
skuBind := &model.StoreSkuBind{} dao.Rollback(db)
return nil, err
}
for _, skuBind := range storeSkuList {
if v := skuBindSkuInfosMap[skuBind.SkuID]; v != nil && v.IsSale != 0 {
if v.IsSale == 1 { if v.IsSale == 1 {
skuBind.Status = model.StoreSkuBindStatusNormal skuBind.Status = model.StoreSkuBindStatusNormal
} else { } else {
@@ -940,10 +951,7 @@ func updateStoreSkusSaleWithoutSync(ctx *jxcontext.Context, storeID int, skuBind
model.FieldMtwmSyncStatus: skuBind.MtwmSyncStatus | model.SyncFlagSaleMask, model.FieldMtwmSyncStatus: skuBind.MtwmSyncStatus | model.SyncFlagSaleMask,
model.FieldElmSyncStatus: skuBind.ElmSyncStatus | model.SyncFlagSaleMask, model.FieldElmSyncStatus: skuBind.ElmSyncStatus | model.SyncFlagSaleMask,
model.FieldWscSyncStatus: skuBind.WscSyncStatus | model.SyncFlagSaleMask, model.FieldWscSyncStatus: skuBind.WscSyncStatus | model.SyncFlagSaleMask,
}, userName, map[string]interface{}{ }, userName, nil); err != nil {
model.FieldStoreID: storeID,
model.FieldSkuID: v.SkuID,
}); err != nil {
dao.Rollback(db) dao.Rollback(db)
return nil, err return nil, err
} }