package com.red.circle.wallet.infra.database.rds.service.freight;


import com.red.circle.framework.dto.PageResult;
import com.red.circle.framework.mybatis.service.BaseService;
import com.red.circle.wallet.infra.database.rds.entity.freight.FreightSeller;
import com.red.circle.wallet.inner.model.cmd.UserFreightSellerPageQryCmd;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
 * 经销商卖家信息 服务类.
 * </p>
 *
 * @author zongpubin on 2023-07-14 15:28
 */
public interface FreightSellerService extends BaseService<FreightSeller> {

  /**
   * 是否存卖家.
   *
   * @param userId 用户id
   * @return true 存在，false 不存在
   */
  boolean existsSeller(Long userId);

  /**
   * 统计卖家数量.
   *
   * @param sysOrigin 平台
   * @param freightId 经销商id
   * @return 卖家数量
   */
  Long countByFreightId(Long freightId, String sysOrigin);

  /**
   * 查询卖家列表.
   *
   * @param sysOrigin 平台
   * @param freightId 经销商id
   * @return 查询卖家列表
   */
  List<FreightSeller> listFreightSeller(String sysOrigin, Long freightId);

  /**
   * 查询卖家.
   *
   * @param userId 用户id
   * @return 查询卖家
   */
  FreightSeller getFreightSellerByUserId(Long userId);

  /**
   * 获取一组指定经销商卖家真实数量映射
   */
  Map<Long, Long> mapSellerQuantityByFreightIds(Set<Long> freightIds);

  /**
   * 分页查询经销商卖家信息
   */
  PageResult<FreightSeller> pageFreightSeller(UserFreightSellerPageQryCmd query);

  /**
   * 删除经销商卖家信息
   */
  void removeFreightSeller(Long id);
}
