package com.younike.system.service;

import com.younike.system.domain.GoodsSpecification;
import com.younike.system.param.GoodsSpecificationAddParam;

import java.util.List;

/**
 * 团购商品规格Service接口
 * 
 * @author dail
 * @date 2022-03-11
 */
public interface IGoodsSpecificationService {
    /**
     * 查询团购商品规格
     * 
     * @param goodsSpecificationId 团购商品规格主键
     * @return 团购商品规格
     */
    GoodsSpecification selectGoodsSpecificationByGoodsSpecificationId(Long goodsSpecificationId);

    /**
     * 查询团购商品规格列表
     * 
     * @param goodsSpecification 团购商品规格
     * @return 团购商品规格集合
     */
    List<GoodsSpecification> selectGoodsSpecificationList(GoodsSpecification goodsSpecification);

    /**
     * 新增团购商品规格
     * 
     * @param goodsSpecification 团购商品规格
     * @return 结果
     */
    int insertGoodsSpecification(GoodsSpecification goodsSpecification);

    /**
     * 修改团购商品规格
     * 
     * @param goodsSpecification 团购商品规格
     * @return 结果
     */
    int updateGoodsSpecification(GoodsSpecification goodsSpecification);

    /**
     * 批量删除团购商品规格
     * 
     * @param goodsSpecificationIds 需要删除的团购商品规格主键集合
     * @return 结果
     */
    int deleteGoodsSpecificationByGoodsSpecificationIds(Long[] goodsSpecificationIds);

    /**
     * 删除团购商品规格信息
     * 
     * @param goodsSpecificationId 团购商品规格主键
     * @return 结果
     */
    int deleteGoodsSpecificationByGoodsSpecificationId(Long goodsSpecificationId);

    /**
     * 批量新增商品规格信息
     *
     * @param goodsSpecificationList
     */
    void insertBatch(List<GoodsSpecification> goodsSpecificationList);

    /**
     * 根据商品id删除商品规格信息
     *
     * @param goodsId
     */
    void removeGoodsSpecificationByGoodsId(Long goodsId);

    /**
     * 更新商品规格信息
     *
     * @param goodsId
     * @param goodsSpecificationList
     */
    void changeGoodsSpecification(Long goodsId, List<GoodsSpecificationAddParam> goodsSpecificationList);

    /**
     * 根据商品id列表查询商品规格信息
     *
     * @param goodsIds
     * @return
     */
    List<GoodsSpecification> listByGoodsIds(List<Long> goodsIds);
}
