package com.ghy.goods.service;

import com.ghy.common.core.domain.Ztree;
import com.ghy.goods.domain.GoodsCategory;

import java.util.Collection;
import java.util.List;

/**
 * @author clunt
 * 商品类别接口
 */
public interface GoodsCategoryService {


    /**
     * @param goodsCategory 商品类别属性
     * @return 成功条数
     */
    int insertGoodsCategory(GoodsCategory goodsCategory);

    /**
     * @param goodsCategory 商品类别属性
     * @return 成功条数
     */
    int updateGoodsCategory(GoodsCategory goodsCategory);

    /**
     * @param goodsCategory 商品类别入参
     * @return 商品类别集合
     */
    List<GoodsCategory> selectGoodsCategoryList(GoodsCategory goodsCategory);

    /**
     * 查询类目管理树
     *
     * @param goodsCategory 类目信息
     * @return 所有类目信息
     */
    List<Ztree> selectCategoryTree(GoodsCategory goodsCategory);

    /**
     * @param goodsCategoryId 商品类别id
     * @return 商品类别
     */
    GoodsCategory selectById(Long goodsCategoryId);

    /**
     * @param ids 商品类别ids
     * @return 删除结果
     */
    int deleteGoodsCategoryByIds(String ids);

    /**
     * 校验商品类别名称是否重复
     *
     * @param goodsCategory 商品类别属性
     * @return 校验结果 true重复 false不重复
     */
    boolean checkGoodsCategoryNameUnique(GoodsCategory goodsCategory);

    /**
     * 校验商品类别编码是否重复
     *
     * @param goodsCategory 商品类别属性
     * @return 校验结果 true重复 false不重复
     */
    boolean checkGoodsCategoryCodeUnique(GoodsCategory goodsCategory);

    /**
     * 通过ID批量查询商品类别
     *
     * @param ids 商品类别ID
     * @return
     */
    List<GoodsCategory> selectByIds(Collection<Long> ids);

    /**
     * 获取所有的商品类目，并标记出当前公司拥有的类目
     *
     * @param deptId 分公司ID
     * @param type 类目类型
     */
    List<Ztree> tree(Long deptId, Integer type);
}
