package com.ruoyi.jarvis.service;

import java.util.List;
import com.ruoyi.jarvis.domain.FavoriteProduct;

/**
 * 常用商品Service接口
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public interface IFavoriteProductService 
{
    /**
     * 查询常用商品
     * 
     * @param id 常用商品主键
     * @return 常用商品
     */
    public FavoriteProduct selectFavoriteProductById(Long id);

    /**
     * 查询常用商品列表
     * 
     * @param favoriteProduct 常用商品
     * @return 常用商品集合
     */
    public List<FavoriteProduct> selectFavoriteProductList(FavoriteProduct favoriteProduct);

    /**
     * 新增常用商品
     * 
     * @param favoriteProduct 常用商品
     * @return 结果
     */
    public int insertFavoriteProduct(FavoriteProduct favoriteProduct);

    /**
     * 修改常用商品
     * 
     * @param favoriteProduct 常用商品
     * @return 结果
     */
    public int updateFavoriteProduct(FavoriteProduct favoriteProduct);

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

    /**
     * 删除常用商品信息
     * 
     * @param id 常用商品主键
     * @return 结果
     */
    public int deleteFavoriteProductById(Long id);

    /**
     * 根据SKUID查询常用商品
     * 
     * @param skuid SKUID
     * @return 常用商品
     */
    public FavoriteProduct selectFavoriteProductBySkuid(String skuid);

    /**
     * 添加商品到常用列表
     * 
     * @param favoriteProduct 常用商品信息
     * @return 结果
     */
    public int addToFavorites(FavoriteProduct favoriteProduct);

    /**
     * 从常用列表移除商品
     * 
     * @param skuid SKUID
     * @return 结果
     */
    public int removeFromFavorites(String skuid);

    /**
     * 更新使用次数和最后使用时间
     * 
     * @param id 常用商品ID
     * @return 结果
     */
    public int updateUseCountAndTime(Long id);

    /**
     * 更新置顶状态
     * 
     * @param id 常用商品ID
     * @param isTop 是否置顶
     * @return 结果
     */
    public int updateTopStatus(Long id, Integer isTop);

    /**
     * 批量置顶/取消置顶
     * 
     * @param ids 常用商品ID数组
     * @param isTop 是否置顶
     * @return 结果
     */
    public int batchUpdateTopStatus(Long[] ids, Integer isTop);

    /**
     * 查询用户的常用商品列表（按置顶和排序权重排序）
     * 
     * @param createUserId 创建用户ID
     * @return 常用商品集合
     */
    public List<FavoriteProduct> selectUserFavoriteProducts(Long createUserId);

    /**
     * 根据线报消息创建常用商品
     * 
     * @param xbMessageItem 线报消息项
     * @return 结果
     */
    public int createFromXbMessage(Object xbMessageItem);

    /**
     * 快速发品（从常用商品）
     * 
     * @param id 常用商品ID
     * @param appid ERP应用ID
     * @return 结果
     */
    public Object quickPublishFromFavorite(Long id, String appid);

    /**
     * 更新发品信息
     * 
     * @param favoriteProduct 常用商品信息
     * @return 结果
     */
    public int updateProductInfo(FavoriteProduct favoriteProduct);
}
