diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index f38286eb2..655345ff8 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -2946,6 +2946,29 @@ func UpdateVendorCategoryMap(ctx *jxcontext.Context, ID int, vendorCategoryMap * } } } + var countInfos []*struct{ Ct int } + db := dao.GetDB() + if err = dao.GetRows(db, &countInfos, ` + SELECT COUNT(*) ct + FROM sku t1 + WHERE t1.category_id = ? AND t1.deleted_at = ? + UNION ALL + SELECT COUNT(*) ct + FROM sku_name t1 + WHERE t1.category_id = ? AND t1.deleted_at = ? + UNION ALL + SELECT COUNT(*) ct + FROM sku_category t1 + WHERE t1.parent_id = ? AND t1.deleted_at = ? + `, vendorCategoryMap2.CategoryID, utils.DefaultTimeValue, vendorCategoryMap2.CategoryID, utils.DefaultTimeValue, vendorCategoryMap2.CategoryID, utils.DefaultTimeValue, &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("还有商品类别使用此类别,不能删除") + } + } } vendorOrgCodes, err := dao.GetVendorOrgCode(db, vendorCategoryMap2.VendorID, vendorCategoryMap2.VendorOrgCode, model.VendorOrgTypePlatform) dao.Begin(db) @@ -3016,6 +3039,9 @@ func LoadStoreVendorCategories(ctx *jxcontext.Context, vendorOrgCode string, ven return fmt.Errorf("未查询到该门店有门店分类,请重新选择! [%v]", storeID) } vendorOrgCodes, _ := dao.GetVendorOrgCode(db, vendorID, vendorOrgCode, model.VendorOrgTypePlatform) + if vendorCatMap, _ := dao.GetVendorCategoryMap(db, -1, 0, vendorID, vendorOrgCode, 0); len(vendorCatMap) > 0 { + return fmt.Errorf("该账号下已有分类,请在这里修改!") + } dao.Begin(db) defer func() { if r := recover(); r != nil { diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 5937d1b8f..675177160 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -3267,36 +3267,36 @@ func UpdateStoreCategoryMap(ctx *jxcontext.Context, ID int, storeCategoryMap *mo } } } - // var storeSkus []*model.StoreSkuBind - // sql := ` - // SELECT a.* - // FROM store_sku_bind a - // JOIN sku b ON a.sku_id = b.id - // JOIN sku_name c ON c.id = b.name_id - // WHERE a.deleted_at = ? AND b.deleted_at = ? AND c.deleted_at = ? - // AND c.category_id = ? AND a.store_id = ? - // UNION ALL - // SELECT a.* - // FROM store_sku_bind a - // JOIN sku b ON a.sku_id = b.id - // JOIN sku_name c ON c.id = b.name_id - // JOIN sku_category d ON d.id = c.category_id - // JOIN sku_category e ON e.id = d.parent_id - // WHERE a.deleted_at = ? AND b.deleted_at = ? AND c.deleted_at = ? - // AND e.id = ? AND a.store_id = ? - // ` - // sqlParams := []interface{}{ - // utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue, - // storeCategoryMap2.CategoryID, storeCategoryMap2.StoreID, - // utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue, - // storeCategoryMap2.CategoryID, storeCategoryMap2.StoreID, - // } - // if err = dao.GetRows(db, &storeSkus, sql, sqlParams); err != nil { - // return 0, err - // } - // if len(storeSkus) > 0 { - // return 0, fmt.Errorf("该分类下或该分类的子分类下有关注的商品,不可删除!分类名:[%v]", storeCategoryMap2.StoreCategoryName) - // } + var storeSkus []*model.StoreSkuBind + sql := ` + SELECT a.* + FROM store_sku_bind a + JOIN sku b ON a.sku_id = b.id + JOIN sku_name c ON c.id = b.name_id + WHERE a.deleted_at = ? AND b.deleted_at = ? AND c.deleted_at = ? + AND c.category_id = ? AND a.store_id = ? + UNION ALL + SELECT a.* + FROM store_sku_bind a + JOIN sku b ON a.sku_id = b.id + JOIN sku_name c ON c.id = b.name_id + JOIN sku_category d ON d.id = c.category_id + JOIN sku_category e ON e.id = d.parent_id + WHERE a.deleted_at = ? AND b.deleted_at = ? AND c.deleted_at = ? + AND e.id = ? AND a.store_id = ? + ` + sqlParams := []interface{}{ + utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue, + storeCategoryMap2.CategoryID, storeCategoryMap2.StoreID, + utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue, + storeCategoryMap2.CategoryID, storeCategoryMap2.StoreID, + } + if err = dao.GetRows(db, &storeSkus, sql, sqlParams); err != nil { + return 0, err + } + if len(storeSkus) > 0 { + return 0, fmt.Errorf("该分类下或该分类的子分类下有关注的商品,不可删除!分类名:[%v]", storeCategoryMap2.StoreCategoryName) + } catIDs = append(catIDs, storeCategoryMap.CategoryID) SetStoreCategorySyncStatus2(db, []int{storeCategoryMap2.StoreID}, catIDs, model.SyncFlagModifiedMask) } else {