package com.yiqi.core.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yiqi.core.domain.GoodsInfo;
import com.yiqi.core.domain.dto.GoodsInfoDto;
import com.yiqi.core.domain.dto.GoodsUpdateSalesDTO;
import com.yiqi.core.domain.dto.weapp.WeAppGoodsInfoQueryDTO;
import com.yiqi.core.domain.vo.GoodsInfoAddVO;
import com.yiqi.core.domain.vo.GoodsInfoQueryVO;
import com.yiqi.core.domain.vo.weapp.WeAppGoodsInfoQueryVO;
import com.yiqi.order.domain.dto.RetailQueryGoodsDTO;
import com.yiqi.order.domain.vo.OrderGoodsSkuInfoVO;

/**
 * 商品管理Service接口
 *
 * @author ruoyi
 * @date 2023-08-21
 */
public interface IGoodsInfoService extends IService<GoodsInfo> {

    public List<WeAppGoodsInfoQueryVO> findPage(WeAppGoodsInfoQueryDTO weAppGoodsInfoQueryDTO);

    /**
     * 查询商品管理
     *
     * @param id 商品管理主键
     * @return 商品管理
     */
    public GoodsInfoDto selectGoodsById(Long id);

    /**
     * 查询商品管理列表
     *
     * @param goodsInfoQueryVO 商品管理
     * @return 商品管理集合
     */
    public List<GoodsInfoQueryVO> selectGoodsList(GoodsInfoQueryVO goodsInfoQueryVO);

    /**
     * 新增商品管理
     *
     * @param goods 商品管理
     * @return 结果
     */
    public int insertGoods(GoodsInfoDto goods);

    /**
     * 修改商品管理
     *
     * @param goods 商品管理
     * @return 结果
     */
    public int updateGoods(GoodsInfoDto goods);

    /**
     * 批量删除商品管理
     *
     * @param ids 需要删除的商品管理主键集合
     * @return 结果
     */
    public int deleteGoodsByIds(Long[] ids);

    /**
     * 删除商品管理信息
     *
     * @param id 商品管理主键
     * @return 结果
     */
    public int deleteGoodsById(Long id);


    /**
     * 修改商品管理状态
     *
     * @param goods 商品管理
     * @return 结果
     */
    public int updateGoodsStatus(GoodsInfo goods);


    /**
     * 查询商品管理
     *
     * @param ids 商品管理主键集合
     * @return 商品管理
     */
    public int selectGoodsByBrandIds(Long[] ids);

    /**
     * 查询商品管理
     *
     * @param ids 商品管理主键集合
     * @return 商品管理
     */
    public int selectGoodsCategoryIds(Long[] ids);

    /**
     * 通过分类+门店id，查询零售商品
     *
     * @param retailQueryGoodsDTO 商品分类id
     * @return 商品管理
     */
    public List<GoodsInfo> selectGoodsByCategoryId(RetailQueryGoodsDTO retailQueryGoodsDTO);

    public int handleGoodsSellNum(List<GoodsUpdateSalesDTO> goodsUpdateSales, boolean isAdd);

    public int updateGoodsVirtualSellNum(Long goodsId, Integer virtualSellNum);


    public List<OrderGoodsSkuInfoVO> getSkuInfoList(List<Long> skuIdList, String sourceType);


    void clearGoodsSkuInfo();
}
