package com.fs.oms.service;

import com.fs.common.core.domain.R;
import com.fs.oms.domain.OmsProduct;
import com.fs.oms.param.OmsProductAddEditParam;
import com.fs.oms.vo.OmsProductExportVO;
import com.fs.oms.vo.OmsProductListVO;
import com.fs.store.domain.FsStoreProduct;
import com.fs.store.param.FsStoreProductAddEditParam;
import com.fs.store.vo.FsStoreProductExportVO;
import com.fs.store.vo.FsStoreProductListVO;

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


/**
 * 商品Service接口
 *
 * @author fs
 * @date 2023-06-07
 */
public interface IOmsProductService
{
    /**
     * 查询商品
     *
     * @param productId 商品ID
     * @return 商品
     */
    public OmsProduct selectOmsProductById(Long productId);

    /**
     * 查询商品列表
     *
     * @param omsProduct 商品
     * @return 商品集合
     */
    public List<OmsProduct> selectOmsProductList(OmsProduct omsProduct);

    /**
     * 新增商品
     *
     * @param omsProduct 商品
     * @return 结果
     */
    public int insertOmsProduct(OmsProduct omsProduct);

    /**
     * 修改商品
     *
     * @param omsProduct 商品
     * @return 结果
     */
    public int updateOmsProduct(OmsProduct omsProduct);

    /**
     * 批量删除商品
     *
     * @param productIds 需要删除的商品ID
     * @return 结果
     */
    public int deleteOmsProductByIds(Long[] productIds);

    /**
     * 删除商品信息
     *
     * @param productId 商品ID
     * @return 结果
     */
    public int deleteOmsProductById(Long productId);

    List<OmsProductListVO> selectOmsProductListVO(OmsProduct omsProduct);

    List<OmsProductListVO> selectOmsProductBarCodeListVO(OmsProduct omsProduct);

    List<OmsProductExportVO> selectOmsProductExportList(OmsProduct omsProduct);

    R addOrEdit(OmsProductAddEditParam omsProduct);

    Map<String,Object> getFormatAttr(Long productId, String jsonStr);
}
