package com.ghy.goods.service;

import com.ghy.common.core.domain.AjaxResult;
import com.ghy.common.core.domain.Ztree;
import com.ghy.goods.domain.DeptGoodsCategory;

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

/**
 * 分公司使用类目
 *
 * @author clunt
 */
public interface DeptGoodsCategoryService {

    /**
     * 用deptId查询出该公司的所有类目
     *
     * @param category 查询条件
     */
    List<DeptGoodsCategory> list(DeptGoodsCategory category);

    /**
     * 新增一条分公司类目
     *
     * @param deptGoodsCategory 分公司类目
     */
    int add(DeptGoodsCategory deptGoodsCategory);

    /**
     * 编辑分公司类目
     *
     * @param deptGoodsCategory 分公司类目
     */
    int edit(DeptGoodsCategory deptGoodsCategory);

    /**
     * 批量删除
     *
     * @param ids 分公司类目ID
     */
    int delete(Collection<Long> ids);

    /**
     * 用ID获取一条DeptGoodsCategory
     *
     * @param id 分公司类目ID
     * @return 分公司类目
     */
    DeptGoodsCategory get(long id);

    List<Ztree> tree(Long parentId);

    /**
     * @param deptGoodsCategory 筛选条件
     * @return 父子层级的list
     */
    List<DeptGoodsCategory> appList(DeptGoodsCategory deptGoodsCategory);

    /**
     * @param deptGoodsCategory 查询条件
     * @return 父子层级的list
     */
    List<DeptGoodsCategory> listByStep(DeptGoodsCategory deptGoodsCategory);

    int delete(String ids);

    /**
     * 用商品类目ID查一条分公司类目
     *
     * @param goodsCategoryId 商品类目
     */
    DeptGoodsCategory selectOneByGoodsCategoryId(Long goodsCategoryId);

    /**
     * 全量保存分公司类目
     *
     * @param parentId 分公司ID
     * @param checked  选中的类目ID
     */
    AjaxResult batchAdd(Long parentId, Long[] checked);

    /**
     * 递归查找类目的倒计时小时数，如果当前类目没有设置则查找上级类目
     *
     * @param deptGoodsCategoryId 分公司类目ID
     * @return 倒计时小时数，如果所有上级类目都没有设置则返回null
     */
    Integer findCountdownHoursRecursively(Long deptGoodsCategoryId);

}
