package com.xinelu.manage.mapper.goodsAttributeDetails;

import com.xinelu.manage.domain.goodsAttributeDetails.GoodsAttributeDetails;
import com.xinelu.manage.dto.goodsInfo.GoodsAttributeDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 商品属性明细Mapper接口
 *
 * @author xinyilu
 * @date 2022-10-17
 */
public interface GoodsAttributeDetailsMapper {
    /**
     * 查询商品属性明细
     *
     * @param id 商品属性明细主键
     * @return 商品属性明细
     */
    GoodsAttributeDetails selectGoodsAttributeDetailsById(Long id);

    /**
     * 查询商品属性明细列表
     *
     * @param goodsAttributeDetails 商品属性明细
     * @return 商品属性明细集合
     */
    List<GoodsAttributeDetails> selectGoodsAttributeDetailsList(GoodsAttributeDetails goodsAttributeDetails);

    /**
     * 新增商品属性明细
     *
     * @param goodsAttributeDetails 商品属性明细
     * @return 结果
     */
    int insertGoodsAttributeDetails(GoodsAttributeDetails goodsAttributeDetails);

    /**
     * 修改商品属性明细
     *
     * @param goodsAttributeDetails 商品属性明细
     * @return 结果
     */
    int updateGoodsAttributeDetails(GoodsAttributeDetails goodsAttributeDetails);

    /**
     * 删除商品属性明细
     *
     * @param id 商品属性明细主键
     * @return 结果
     */
    int deleteGoodsAttributeDetailsById(Long id);

    /**
     * 批量删除商品属性明细
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteGoodsAttributeDetailsByIds(Long[] ids);


    /**
     * 批量新增商品属性明细
     *
     * @param goodAttributeDetailsLists 新增商品属性明细
     * @return int
     **/
    int insertGoodsAttributeDetailsList(@Param("goodAttributeDetailsLists") List<GoodsAttributeDetails> goodAttributeDetailsLists);

    /**
     * 查询商品属性明细列表
     *
     * @param goodsAttributeId 商品属性明细
     * @return 商品属性明细集合
     */
    Long[] selectGoodsAttributeDetailsByIdList(Long goodsAttributeId);

    /**
     * 新增商品属性明细
     *
     * @param goodsAttributeDetails 商品属性明细
     * @return 结果
     */
    int addGoodsAttributeDetails(GoodsAttributeDTO goodsAttributeDetails);

    /**
     * 修改商品属性明细
     *
     * @param goodsAttributeDetails 商品属性明细
     * @return 结果
     */
    int updateGoodsAttributeDetailss(GoodsAttributeDTO goodsAttributeDetails);


    /**
     * 增加库存数量
     *
     * @param id         主键id
     * @param goodsCount 库存数量
     * @return 影响数量
     */
    int addGoodsStockCount(@Param("id") Long id, @Param("goodsCount") Integer goodsCount);

    /**
     * 减少库存数量
     *
     * @param id         主键id
     * @param goodsCount 库存数量
     * @return 影响数量
     */
    int reduceGoodsStockCount(@Param("id") Long id, @Param("goodsCount") Integer goodsCount);
}
