package com.qs.mp.channel.service;

import com.qs.mp.admin.domain.vo.IndexVO;
import com.qs.mp.channel.domain.Channel;
import com.qs.mp.channel.domain.vo.ChannelOperDataVO;
import com.qs.mp.channel.domain.vo.ChannelVO;

import com.qs.mp.common.enums.ChannelRoleEnum;
import com.qs.mp.user.domain.UserDeliverOrder;

import java.util.List;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * 渠道经销商 服务类
 * </p>
 *
 * @author quanshu
 * @since 2022-03-02
 */
public interface IChannelService extends IService<Channel> {

	/**
	 * 新增子渠道、经销商信息
	 *
	 * @param channel
	 * @param channelRole channel:子渠道  site: 经销商
	 * @return
	 */
    public void saveChannel(Channel channel, ChannelRoleEnum channelRole);

    /**
	 * 编辑子渠道、经销商信息
	 *
	 * @param channel
	 * @param mobileChange 手机号码是否发生变更
	 * @return
	 */
    public void updateChannel(Channel channel, boolean mobileChange);


	/**
	 * 获取我的下级渠道信息，支持翻页
	 *
	 * @param queryWrapper
	 * @return
	 */
	public List<ChannelVO> selectChannelVoList(Wrapper<Channel> queryWrapper);

	/**
	 * 获取我的下级渠道信息，统计经销商数和用户数，支持翻页
	 *
	 * @param queryWrapper
	 * @return
	 */
	public List<ChannelVO> selectChannelList(Wrapper<Channel> queryWrapper);

	/**
	 * 获取经销商列表信息，支持翻页
	 *
	 * @param queryWrapper
	 * @return
	 */
	public List<ChannelVO> selectSaleSiteList(Wrapper<Channel> queryWrapper);

	/**
	 * 根据用户ID查询渠道
	 *
	 * @param userId
	 * @return
	 */
	public Channel getChannelByUserId(Long userId);

    /**
     * 查询渠道及其子渠道经销商总数
     * @param channelNo
     * @return
     */
	public int getChannelSiteCnt(String channelNo);

	/**
	 * 根据channelNo统计最近几天days的经营数据
	 */
	public ChannelOperDataVO getChannelOperData(String channelNo, int days);


	/**
	 * 根据ID查询渠道VO
	 *
	 * @param userId
	 * @return
	 */
	public ChannelVO getChannelVoById(Long channelId);



	/**
	 * 根据channelNo统计全部的经营数据
	 */
	public ChannelOperDataVO getChannelTotalOperData(String channelNo);


   /**
    * 统计新增的经销商数
    * @param wrapper
    * @return
    */
	List<IndexVO> selectIndexSiteIncreaseList(Wrapper<Channel> wrapper);

	/**
	 * 审核通过的经销商
	 * @param channel
	 * @return
	 */
    boolean siteVerify(Channel channel);
}
