package com.hys.app.service.goods;

import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hys.app.model.goods.dos.BrandDO;
import com.hys.app.model.goods.vo.SelectVO;
import com.hys.app.framework.database.WebPage;

import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
 * 品牌业务层
 *
 * @author fk
 * @version v2.0
 * @since v7.0.0 2018-03-16 16:32:45
 */
public interface BrandManager extends IService<BrandDO> {

	/**
	 * 查询品牌列表
	 *
	 * @param page 页码
	 * @param pageSize 每页数量
	 * @param name 品牌名称
     * @return WebPage 分页数据
	 */
	WebPage list(long page, long pageSize, String name);

	/**
	 * 添加品牌
	 *
	 * @param brand 品牌
	 * @return Brand 品牌
	 */
	BrandDO add(BrandDO brand);

	/**
	 * 修改品牌
	 *
	 * @param brand 品牌
	 * @param id 品牌主键
	 * @return Brand 品牌
	 */
	BrandDO edit(BrandDO brand, String id);

	/**
	 * 删除品牌
	 *
	 * @param ids 品牌主键
	 */
	void delete(Long[] ids);

	/**
	 * 获取品牌
	 *
	 * @param id 品牌主键
	 * @return Brand 品牌
	 */
	BrandDO getModel(String id);

	/**
	 * 查询某分类下的品牌
	 *
	 * @param categoryId 分类id
	 * @return 品牌列表
	 */
	List<BrandDO> getBrandsByCategory(Long categoryId);

	/**
	 * 查询分类品牌，所有品牌，分类绑定的品牌为已选中状态
	 *
	 * @param categoryId 分类id
	 * @return 品牌列表
	 */
	List<SelectVO> getCatBrand(Long categoryId);


	/**
	 * 查询全部的品牌
	 * @return 品牌列表
	 */
    List<BrandDO> getAllBrands();

	/**
	 * 查询品牌名称
	 * @param ids
	 * @return
	 */
    Map<String, String> mapNameByIds(List<String> ids);

	default List<BrandDO> listByIds(Collection<? extends Serializable> ids) {
		if (CollUtil.isEmpty(ids)) {
			return Collections.emptyList();
		}
		return this.getBaseMapper().selectBatchIds(ids);
	}
}
