- 修复updateStoreSkusSaleWithoutSync中更新StoreSkuBind的错误(应该先读再存)
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user