diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 71f8e725c..80715e406 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -28,13 +28,10 @@ var ( func CreateStoreCategoryByStoreSku(ctx *jxcontext.Context, vendorID, storeID int, vendorStoreID string, nameIDs, skuIDs []int) (err error) { globals.SugarLogger.Debugf("CreateStoreCategoryByStoreSku vendorID:%d, storeID:%d", vendorID, storeID) db := dao.GetDB() - dao.Begin(db) defer func() { - if r := recover(); r != nil || err != nil { + if r := recover(); r != nil { dao.Rollback(db) - if r != nil { - panic(r) - } + panic(r) } }() for i := 0; i < 2; i++ { @@ -42,15 +39,19 @@ func CreateStoreCategoryByStoreSku(ctx *jxcontext.Context, vendorID, storeID int if err = err2; err != nil { return err } - for _, v := range localCats { - if v.MapID == 0 { - if err = dao.AddStoreCategoryMap(db, storeID, v.ID, vendorID, "", model.SyncFlagNewMask, ctx.GetUserName()); err != nil { - return err + if len(localCats) > 0 { + dao.Begin(db) + for _, v := range localCats { + if v.MapID == 0 { + if err = dao.AddStoreCategoryMap(db, storeID, v.ID, vendorID, "", model.SyncFlagNewMask, ctx.GetUserName()); err != nil { + dao.Rollback(db) + return err + } } } + dao.Commit(db) } } - dao.Commit(db) return err } @@ -257,6 +258,12 @@ func sku2Update(vendorID int, sku *dao.StoreSkuSyncInfo, syncStatus int8) (item func updateStoreSku(db *dao.DaoDB, vendorID int, storeSkuList []*dao.StoreSkuSyncInfo, syncStatus int8) (num int64, err error) { if len(storeSkuList) > 0 { + // defer func() { + // if r := recover(); r != nil { + // globals.SugarLogger.Debugf("updateStoreSku panic, vendorID:%d, len:%d, storeID0:%d, skuID0:%d, syncStatus:%d", vendorID, len(storeSkuList), storeSkuList[0].StoreID, storeSkuList[0].SkuID, syncStatus) + // panic(r) + // } + // }() updateItemList := make([]*dao.KVUpdateItem, len(storeSkuList)) for k, v := range storeSkuList { updateItemList[k] = sku2Update(vendorID, v, syncStatus) diff --git a/business/model/dao/dao_bz.go b/business/model/dao/dao_bz.go index 70838b7c5..649ea5eb0 100644 --- a/business/model/dao/dao_bz.go +++ b/business/model/dao/dao_bz.go @@ -73,8 +73,24 @@ func BatchUpdateEntityByKV(db *DaoDB, items []*KVUpdateItem) (num int64, err err // } // } // }() - for _, v := range items { - num2, err2 := UpdateEntityByKV(db, v.Item, v.KVs, nil) + + var item *KVUpdateItem + defer func() { + if r := recover(); r != nil { + if item != nil { + var bindID int64 + value := refutil.CheckAndGetStructValue(item.Item).FieldByName(model.FieldID) + if value.IsValid() { + bindID = value.Int() + } + globals.SugarLogger.Debugf("BatchUpdateEntityByKV panic, bindID:%d, KVs:%s", bindID, utils.Format4Output(item.KVs, true)) + } + panic(r) + } + }() + + for _, item = range items { + num2, err2 := UpdateEntityByKV(db, item.Item, item.KVs, nil) if err = err2; err != nil { return 0, err }