package com.ghy.goods.service;

import com.ghy.goods.domain.Goods;
import com.ghy.goods.domain.GoodsStandard;
import com.ghy.goods.request.AppGoodsRequest;

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

/**
 * 商品规格service层
 *
 * @author clunt
 */
public interface GoodsStandardService {

    /**
     * @param goodsStandardId 规格id
     * @return 规格实体
     */
    GoodsStandard selectById(Long goodsStandardId);

    /**
     * @param goodsStandardIds 规格id集合
     * @return 规格集合
     */
    List<GoodsStandard> selectByIds(Collection<Long> goodsStandardIds);

    /**
     * @param goodsId 商品id
     * @return 所有规格集合
     */
    List<GoodsStandard> selectByGoodsId(Long goodsId);

    List<GoodsStandard> selectByGoodsStandardId(Long goodsStandardId);

    /**
     * @param goodsStandardList 批量添加商品规格
     * @return 添加成功条数
     */
    int batchInsert(List<GoodsStandard> goodsStandardList);

    int insertGoodsStandard(GoodsStandard goodsStandard);

    void deleteByGoodsId(Long goodsId);

    /**
     * @param request 校验的商品数量
     * @return 返回结果
     */
    List<GoodsStandard> checkStore(AppGoodsRequest request);

    /**
     * 全量保存
     */
    int save(List<GoodsStandard> goodsStandardList);

    int updateSaleNum(GoodsStandard goodsStandard);

    int update(GoodsStandard goodsStandard);

    /**
     * 根据规格名称模糊查询商品规格
     * @param standardName 规格名称（支持模糊查询）
     * @return 符合条件的商品规格列表
     */
    List<GoodsStandard> selectByStandardNameLike(String standardName);

    /**
     * 根据部门商品分类ID获取所有商品
     * @param deptGoodsCategoryId 部门商品分类ID
     * @return 商品列表
     */
    List<Goods> selectGoodsByDeptGoodsCategoryId(Long deptGoodsCategoryId);

}
