From 8ec7239b1d0fd6e8f8a9fc6b6dedc6db75204900 Mon Sep 17 00:00:00 2001 From: Rosy-zhudan Date: Fri, 30 Aug 2019 13:42:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sku.go | 82 +++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index afef69ea5..4540ef494 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -1049,51 +1049,53 @@ func SortCategorySku(ctx *jxcontext.Context, catID int, skuIDList []int) (err er userName := ctx.GetUserName() var skuList []*model.Sku if skuList, err = dao.GetSkuByCats(db, []int{catID}); err == nil && len(skuList) > 0 { - if len(skuList) == len(skuIDList) { - skuIDMap := make(map[int]int) - for index, id := range skuIDList { - skuIDMap[id] = index + 1 + if len(skuList) != len(skuIDList) { + return errors.New("商品数量不匹配!") + } + skuIDMap := make(map[int]int) + for index, id := range skuIDList { + skuIDMap[id] = index + 1 + } + for _, value := range skuList { + if _, ok := skuIDMap[value.ID]; !ok { + return errors.New("商品数据不匹配!") } - - for _, value := range skuList { - if _, ok := skuIDMap[value.ID]; !ok { - err = errors.New("商品数据不匹配!") - break + } + + dao.Begin(db) + defer func() { + if r := recover(); r != nil || err != nil { + dao.Rollback(db) + if r != nil { + panic(r) } } - - dao.Begin(db) - defer func() { - if r := recover(); r != nil || err != nil { - dao.Rollback(db) - if r != nil { - panic(r) - } - } - }() - for _, value := range skuList { - seq := skuIDMap[value.ID] - kvs := map[string]interface{} { - model.FieldSkuSeq: seq, - } - dao.UpdateEntityLogically(db, value, kvs, userName, nil) - - sku := &model.Sku{} - sku.ID = value.ID - dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, sku, nil, ctx.GetUserName(), nil, model.FieldJdSyncStatus, model.SyncFlagModifiedMask) - - nameID := value.NameID - skuIDs, err2 := dao.GetSkuIDByNames(db, []int{nameID}) - if err = err2; err == nil && len(skuIDs) > 0 { - _, err = SetStoreSkuSyncStatus2(db, nil, partner.GetSingleStoreVendorIDs(), skuIDs, model.SyncFlagModifiedMask) - } - if err == nil { - dao.Commit(db) - _, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName) - } + }() + nameIDList := []int{} + for _, value := range skuList { + seq := skuIDMap[value.ID] + kvs := map[string]interface{} { + model.FieldSkuSeq: seq, } + dao.UpdateEntityLogically(db, value, kvs, userName, nil) + + sku := &model.Sku{} + sku.ID = value.ID + dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, sku, nil, ctx.GetUserName(), nil, model.FieldJdSyncStatus, model.SyncFlagModifiedMask) + + nameID := value.NameID + nameIDList = append(nameIDList, nameID) + _, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName) + } + + skuIDs, err2 := dao.GetSkuIDByNames(db, nameIDList) + if err = err2; err == nil && len(skuIDs) > 0 { + _, err = SetStoreSkuSyncStatus2(db, nil, partner.GetSingleStoreVendorIDs(), skuIDs, model.SyncFlagModifiedMask) + } + if err == nil { + dao.Commit(db) } else { - err = errors.New("商品数量不匹配!") + dao.Rollback(db) } }