package com.hzs.sale.wares.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.sale.ext.BdWaresSpecsSkuExt;
import com.hzs.common.domain.sale.wares.BdWaresSpecsSku;
import com.hzs.retail.wares.param.RetailWaresDetailParam;
import com.hzs.retail.wares.vo.RetailWaresDetailVO;
import com.hzs.sale.shopping.vo.ProductGroup;
import com.hzs.sale.shopping.vo.WaresItemVo;
import com.hzs.sale.shopping.vo.WaresItemWaresInfo;
import com.hzs.sale.wares.param.CuWaresItemsParams;
import com.hzs.sale.wares.param.CuWaresParams;
import com.hzs.sale.wares.param.SpecsSkuParam;

import java.util.List;

/**
 * 规格sku表 服务类
 */
public interface IBdWaresSpecsSkuService extends IService<BdWaresSpecsSku> {

    /**
     * 根据编号查找商品的sku
     *
     * @param specialArea   专区
     * @param waresCode     商品编号
     * @param loginMemberId 登录用户主键
     * @param pkCountry     前端传递结算国（）
     */
    CuWaresParams queryWaresSpecsSku(Integer specialArea, String waresCode, Long loginMemberId, Integer pkCountry);

    /**
     * 购物车查询数量专用
     **/
    CuWaresParams queryWaresSpecsSkuCount(Integer specialArea, String waresCode, Long loginMemberId, Integer pkCountry);

    /**
     * 查询商品sku信息购物车专用
     **/
    CuWaresParams queryWaresSpecsSkuShopping(Integer specialArea, String waresCode, Long loginMemberId, Integer pkCountry, Integer systemType);

    /**
     * 通过规格列表查询商品最小库存单位，
     *
     * @param cuWaresItemsParams 明细参数，产品明细，
     */
    SpecsSkuParam queryWaresDetailSkuBySpecs(CuWaresItemsParams cuWaresItemsParams);

    /**
     * 根据id修改值
     *
     * @param sku
     */
    void updateBySkuId(BdWaresSpecsSku sku);

    /**
     * 根据id查询sku （可查询删除数据）
     *
     * @param pkWaresSpecsSku
     * @return
     */
    BdWaresSpecsSku selectByWaresSpecsSkuIdAndDel(Integer pkWaresSpecsSku);

    /**
     * 根据商品id 查询
     *
     * @param waresIds
     * @return
     */
    List<BdWaresSpecsSkuExt> selectByWaresSpecsSku(List<Integer> waresIds);

    /**
     * 根据id 批量查询sku 信息
     *
     * @param pkWaresSpecsSku
     * @return
     */
    List<WaresItemWaresInfo> selectByPkIds(List<Integer> pkWaresSpecsSku);

    /**
     * 查询商品封装为返回到会员端商品信息
     */
    WaresItemVo selectWaresItemsVO(Long pkMember, Integer pkCountry, Integer specialArea, String waresCode, List<ProductGroup> productGroup, Integer quantity);

    /**
     * 根据商品id查询规格价格最小值
     *
     * @param pkWaresIds
     * @return
     */
    List<BdWaresSpecsSkuExt> selectByMinWaresSpecsSkuByPkWaresList(List<Integer> pkWaresIds);

    /**
     * 根据id 查询
     *
     * @param pkWaresSpecsSku
     * @return
     */
    BdWaresSpecsSkuExt selectByPkWaresSpecsSku(Integer pkWaresSpecsSku);

    /**
     * 查询商品详情
     *
     * @param param   查询参数
     * @param pkGrade 会员等级
     * @return
     */
    RetailWaresDetailVO queryWaresDetail(RetailWaresDetailParam param, Integer pkGrade);

}
