修复ReorderCategories中的bug

This commit is contained in:
gazebo
2019-12-04 11:05:33 +08:00
parent 2635fb035a
commit a255acb4f1

View File

@@ -211,15 +211,7 @@ func SetStoreCategorySyncStatus2(db *dao.DaoDB, storeIDs []int, catIDs []int, sy
func ReorderCategories(ctx *jxcontext.Context, parentID int, categoryIDs []int, userName string) (err error) { func ReorderCategories(ctx *jxcontext.Context, parentID int, categoryIDs []int, userName string) (err error) {
var cats []*model.SkuCategory var cats []*model.SkuCategory
parentCat := &model.SkuCategory{}
parentCat.ID = parentID
db := dao.GetDB() db := dao.GetDB()
if parentID != 0 {
err = dao.GetEntity(db, parentCat)
} else {
parentCat = nil
}
if err == nil {
if err = dao.GetEntitiesByKV(db, &cats, utils.Params2Map(model.FieldParentID, parentID), false); err == nil { if err = dao.GetEntitiesByKV(db, &cats, utils.Params2Map(model.FieldParentID, parentID), false); err == nil {
catsLen := len(cats) catsLen := len(cats)
if catsLen != len(categoryIDs) { if catsLen != len(categoryIDs) {
@@ -229,20 +221,38 @@ func ReorderCategories(ctx *jxcontext.Context, parentID int, categoryIDs []int,
for _, cat := range cats { for _, cat := range cats {
catsMap[cat.ID] = cat catsMap[cat.ID] = cat
} }
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
panic(r)
}
}()
for k, v := range categoryIDs { for k, v := range categoryIDs {
if catsMap[v] == nil {
dao.Rollback(db)
return fmt.Errorf("分类:%d不在%d分类下", v, parentID)
}
catsMap[v].Seq = k catsMap[v].Seq = k
catsMap[v].LastOperator = ctx.GetUserName() catsMap[v].LastOperator = ctx.GetUserName()
if _, err = dao.UpdateEntity(db, catsMap[v]); err != nil { if _, err = dao.UpdateEntity(db, catsMap[v]); err != nil {
break dao.Rollback(db)
return err
}
if err = OnUpdateThing(db, int64(catsMap[v].ID), model.ThingTypeCategory); err != nil {
dao.Rollback(db)
return err
} }
} }
dao.Commit(db)
SetStoreCategorySyncStatus2(db, nil, categoryIDs, model.SyncFlagModifiedMask) SetStoreCategorySyncStatus2(db, nil, categoryIDs, model.SyncFlagModifiedMask)
if err == nil { if err == nil {
_, err = CurVendorSync.SyncReorderCategories(ctx, db, parentID, false, userName) _, err = CurVendorSync.SyncReorderCategories(ctx, db, parentID, false, userName)
CurVendorSync.SyncStoresCategory(ctx, db, nil, nil, false, true, true) CurVendorSync.SyncStoresCategory(ctx, db, nil, nil, false, true, true)
} }
} }
}
return err return err
} }