- DeleteCategory added.

This commit is contained in:
gazebo
2018-09-10 15:17:58 +08:00
parent 7d7b2e29e9
commit 67655f57e0
7 changed files with 81 additions and 20 deletions

View File

@@ -16,10 +16,10 @@ var (
// parentID 为-1表示所有
func GetVendorCategories(vendorID int, parentID int) (vendorCats []*model.SkuVendorCategory, err error) {
cond := map[string]interface{}{
"VendorID": vendorID,
model.FieldVendorID: vendorID,
}
if parentID != -1 {
cond["ParentID"] = parentID
cond[model.FieldParentID] = parentID
}
return vendorCats, dao.GetEntities(nil, &vendorCats, cond, false)
}
@@ -36,7 +36,7 @@ func GetCategories(parentID int) (cats []*model.SkuCategory, err error) {
if parentID == -1 {
return cats, dao.GetEntities(nil, &cats, nil, false)
}
return cats, dao.GetEntities(nil, &cats, utils.Params2Map("ParentID", parentID), false)
return cats, dao.GetEntities(nil, &cats, utils.Params2Map(model.FieldParentID, parentID), false)
}
func AddCategory(cat *model.SkuCategory, userName string) (outCat *model.SkuCategory, err error) {
@@ -54,7 +54,7 @@ func UpdateCategory(categoryID int, payload map[string]interface{}, userName str
cat := &model.SkuCategory{}
cat.ID = categoryID
valid := jxutils.NormalMakeMapByStructObject(payload, cat, userName)
valid["JdSyncStatus"] = model.SyncFlagModifiedMask
valid[model.FieldJdSyncStatus] = model.SyncFlagModifiedMask
db := dao.GetDB()
if num, err = dao.UpdateEntityByKV(db, cat, valid, nil); err == nil {
err = CurVendorSync.SyncCategory(categoryID, false, userName)
@@ -68,7 +68,7 @@ func ReorderCategories(parentID int, categoryIDs []int, userName string) (err er
parentCat.ID = parentID
db := dao.GetDB()
if err = dao.GetEntity(db, parentCat); err == nil {
if err = dao.GetEntities(db, &cats, utils.Params2Map("ParentID", parentID), false); err == nil {
if err = dao.GetEntities(db, &cats, utils.Params2Map(model.FieldParentID, parentID), false); err == nil {
catsLen := len(cats)
if catsLen != len(categoryIDs) {
return ErrInputCatsDoesntMatch
@@ -95,5 +95,30 @@ func ReorderCategories(parentID int, categoryIDs []int, userName string) (err er
func DeleteCategory(categoryID int, isForce bool, userName string) (num int64, err error) {
cat := &model.SkuCategory{}
cat.ID = categoryID
return dao.DeleteEntity(nil, cat, nil, userName)
var countInfos []*struct{ Ct int }
if err = dao.GetRows(nil, &countInfos, `
SELECT COUNT(*) ct
FROM sku t1
WHERE t1.category_id = ?
UNION ALL
SELECT COUNT(*) ct
FROM sku_name t1
WHERE t1.category_id = ?
UNION ALL
SELECT COUNT(*) ct
FROM sku_category t1
WHERE t1.parent_id = ?
`, categoryID, categoryID, categoryID, &countInfos); err == nil {
if countInfos[0].Ct != 0 {
return 0, errors.New("还有商品使用此类别,不能删除")
} else if countInfos[1].Ct != 0 {
return 0, errors.New("还有商品名使用此类别,不能删除")
} else if countInfos[2].Ct != 0 {
return 0, errors.New("还有商品类别使用此类别,不能删除")
}
if num, err = dao.DeleteEntity(nil, cat, nil, userName, utils.Params2Map(model.FieldJdSyncStatus, model.SyncFlagDeletedMask)); err == nil && num == 1 {
err = CurVendorSync.SyncCategory(cat.ID, false, userName)
}
}
return num, err
}