修复ReorderCategories中的bug

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

View File

@@ -211,37 +211,47 @@ 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 { if err = dao.GetEntitiesByKV(db, &cats, utils.Params2Map(model.FieldParentID, parentID), false); err == nil {
err = dao.GetEntity(db, parentCat) catsLen := len(cats)
} else { if catsLen != len(categoryIDs) {
parentCat = nil return ErrInputCatsDoesntMatch
} }
if err == nil { catsMap := make(map[int]*model.SkuCategory, catsLen)
if err = dao.GetEntitiesByKV(db, &cats, utils.Params2Map(model.FieldParentID, parentID), false); err == nil { for _, cat := range cats {
catsLen := len(cats) catsMap[cat.ID] = cat
if catsLen != len(categoryIDs) { }
return ErrInputCatsDoesntMatch
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
panic(r)
} }
catsMap := make(map[int]*model.SkuCategory, catsLen) }()
for _, cat := range cats { for k, v := range categoryIDs {
catsMap[cat.ID] = cat if catsMap[v] == nil {
dao.Rollback(db)
return fmt.Errorf("分类:%d不在%d分类下", v, parentID)
} }
for k, v := range categoryIDs { 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 { dao.Rollback(db)
break return err
}
} }
SetStoreCategorySyncStatus2(db, nil, categoryIDs, model.SyncFlagModifiedMask) if err = OnUpdateThing(db, int64(catsMap[v].ID), model.ThingTypeCategory); err != nil {
if err == nil { dao.Rollback(db)
_, err = CurVendorSync.SyncReorderCategories(ctx, db, parentID, false, userName) return err
CurVendorSync.SyncStoresCategory(ctx, db, nil, nil, false, true, true)
} }
} }
dao.Commit(db)
SetStoreCategorySyncStatus2(db, nil, categoryIDs, model.SyncFlagModifiedMask)
if err == nil {
_, err = CurVendorSync.SyncReorderCategories(ctx, db, parentID, false, userName)
CurVendorSync.SyncStoresCategory(ctx, db, nil, nil, false, true, true)
}
} }
return err return err
} }