package com.fs.hisStore.service;

import java.util.List;
import com.fs.hisStore.domain.FsStoreProductAttrValueScrm;
import com.fs.hisStore.param.FsProductAttrValueParam;
import com.fs.hisStore.param.FsStoreProductAttrValueQueryParam;
import com.fs.hisStore.param.FsStoreTuiProductAttrValueParam;
import com.fs.hisStore.vo.FsStoreProductAttrValueQueryVO;
import com.fs.hisStore.vo.FsStoreProductAttrValueVO;
import com.fs.hisStore.vo.FsStoreTuiProductAttrValueVO;

/**
 * 商品属性值Service接口
 *
 * @author fs
 * @date 2022-03-15
 */
public interface IFsStoreProductAttrValueScrmService
{
    /**
     * 查询商品属性值
     *
     * @param id 商品属性值ID
     * @return 商品属性值
     */
    public FsStoreProductAttrValueScrm selectFsStoreProductAttrValueById(Long id);

    /**
     * 查询商品属性值列表
     *
     * @param fsStoreProductAttrValue 商品属性值
     * @return 商品属性值集合
     */
    public List<FsStoreProductAttrValueScrm> selectFsStoreProductAttrValueList(FsStoreProductAttrValueScrm fsStoreProductAttrValue);

    /**
     * 新增商品属性值
     *
     * @param fsStoreProductAttrValue 商品属性值
     * @return 结果
     */
    public int insertFsStoreProductAttrValue(FsStoreProductAttrValueScrm fsStoreProductAttrValue);

    /**
     * 修改商品属性值
     *
     * @param fsStoreProductAttrValue 商品属性值
     * @return 结果
     */
    public int updateFsStoreProductAttrValue(FsStoreProductAttrValueScrm fsStoreProductAttrValue);

    /**
     * 批量删除商品属性值
     *
     * @param ids 需要删除的商品属性值ID
     * @return 结果
     */
    public int deleteFsStoreProductAttrValueByIds(Long[] ids);

    /**
     * 删除商品属性值信息
     *
     * @param id 商品属性值ID
     * @return 结果
     */
    public int deleteFsStoreProductAttrValueById(Long id);

    List<FsStoreProductAttrValueScrm> selectFsStoreProductAttrValueByProductId(Long productId);

    int incProductAttrStock(Long num, Long productId, Long productAttrValueId);

    List<FsStoreProductAttrValueVO> selectFsStoreProductAttrValueListVO(FsProductAttrValueParam param);

    List<FsStoreProductAttrValueQueryVO> selectStoreProductAttrValueListQuery(FsStoreProductAttrValueQueryParam param);


    List<FsStoreTuiProductAttrValueVO> selectStoreTuiProductAttrValueVOList(FsStoreTuiProductAttrValueParam param);

    List<FsStoreProductAttrValueScrm> getFsStoreProductAttrValueListInProductId(List<Long> storeProductIds);
}
