修复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) {
|
||||
var cats []*model.SkuCategory
|
||||
parentCat := &model.SkuCategory{}
|
||||
parentCat.ID = parentID
|
||||
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 {
|
||||
catsLen := len(cats)
|
||||
if catsLen != len(categoryIDs) {
|
||||
return ErrInputCatsDoesntMatch
|
||||
if err = dao.GetEntitiesByKV(db, &cats, utils.Params2Map(model.FieldParentID, parentID), false); err == nil {
|
||||
catsLen := len(cats)
|
||||
if catsLen != len(categoryIDs) {
|
||||
return ErrInputCatsDoesntMatch
|
||||
}
|
||||
catsMap := make(map[int]*model.SkuCategory, catsLen)
|
||||
for _, cat := range cats {
|
||||
catsMap[cat.ID] = cat
|
||||
}
|
||||
|
||||
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 {
|
||||
catsMap[cat.ID] = cat
|
||||
}()
|
||||
for k, v := range categoryIDs {
|
||||
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].LastOperator = ctx.GetUserName()
|
||||
if _, err = dao.UpdateEntity(db, catsMap[v]); err != nil {
|
||||
break
|
||||
}
|
||||
catsMap[v].Seq = k
|
||||
catsMap[v].LastOperator = ctx.GetUserName()
|
||||
if _, err = dao.UpdateEntity(db, catsMap[v]); err != nil {
|
||||
dao.Rollback(db)
|
||||
return err
|
||||
}
|
||||
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)
|
||||
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)
|
||||
if err == nil {
|
||||
_, err = CurVendorSync.SyncReorderCategories(ctx, db, parentID, false, userName)
|
||||
CurVendorSync.SyncStoresCategory(ctx, db, nil, nil, false, true, true)
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user