修复ReorderCategories中的bug
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user