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