package com.gic.haoban.manage.api.service;

import com.gic.api.base.commons.Page;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.manage.api.dto.*;

import java.util.List;

public interface WxEnterpriseRelatedApiService {

	/**
	 * 查询好办所有的企业id
	 * @return : 返回好办关联的所有企业id
	 */
	List<String> findAllEnterpriseId();
	
	public EnterpriseDetailDTO getByEnterpriseId(String wxEnterpriseId, String enterpriseId) ;
	
	List<EnterpriseDetailDTO> listEnterpriseByWxEnterpriseId(String wxEnterpriseId);
	
	List<EnterpriseDetailDTO> listEnterpriseByWxEnterpriseIdList(List<String> wxEnterpriseIdList);
	
	List<EnterpriseDetailDTO> listEnterpriseByWxEnterpriseId(String wxEnterpriseId , String phoneNumber ,boolean filterFlag);

	//接口无效
//	String getGicEnterpriseIdByEnterpriseRelatedId(String wxEnterpriseRelatedId);

	boolean enterpriseUseNew(String enterpriseId);

	List<EnterpriseDetailDTO> queryAllHasGicEnterpriseId();
	
	List<EnterpriseDetailDTO> listEnterpriseByEnterpriseIds(List<String> enterpriseIds);

	/**
	 * 返回在一定时期内的信息
	 * @return
	 */
	//接口无效
//	List<EnterpriseDetailDTO> queryBindGicEnterpriseByTime(String seqTime);


	/**
	 * 企业绑定
	 *
	 * @param detailDTO
	 * @return
	 */
	ServiceResponse wxEnterpriseBind(WxEnterpriseRelationDetailDTO detailDTO);

	/**
	 * 异步刷新门店
	 * "routerName": "flushHaobanBindStoreMq"
	 *
	 * @param message
	 */
	public void flushBindStoreByDelayMq(String message);

	/**
	 * 刷新门店绑定到延迟队列
	 *
	 * @param enterpriseId
	 */
	public void flushBindStoreToDelayMq(String enterpriseId, FlushStoreMqDTO mqDTO);

	/**
	 * 刷新企业门店
	 *
	 * @param enterpriseId
	 * @param wxEnterpriseId
	 * @param optStaffId
	 * @param channalCode
	 * @return
	 */
	public ServiceResponse flushBindStoreByEnterpriseId(String enterpriseId, String wxEnterpriseId, String optStaffId, int channalCode);

	/**
	 * 获取企业绑定详情
	 *
	 * @param wxEnterpriseId
	 * @param enterpriseId
	 * @return
	 */
	public WxEnterpriseRelationDetailDTO getEnterpriseBindInfo(String wxEnterpriseId, String enterpriseId);

	/**
	 * 根据商户id 获取关联的微信企业列表
	 *
	 * @param enterpriseId
	 * @return
	 */
	public List<WxEnterpriseDTO> listWxEnterpriseByEid(String enterpriseId);
	
	public List<WxEnterpriseDTO> listWxEnterpriseByEid(String enterpriseId , String clerkPhoneNumber );

	/**
	 * 根据商户id 获取所有被绑定分组
	 *
	 * @param enterpriseId
	 * @return
	 */
	public List<StoreRangeInfoDTO> listAllBindStoreOrGroup(String enterpriseId);

	/**
	 * @param enterpriseId
	 * @param search
	 * @param pageInfo
	 * @return
	 */
	public Page<BindStoreInfoDTO> pageBindStoreByEnterpriseId(String wxEnterpriseId, String enterpriseId, String search, BasePageInfo pageInfo);

	/**
	 * 查询绑定得门店id
	 *
	 * @param wxEnterpriseId
	 * @return
	 */
	public List<String> listStoreIdByWxEnterpriseId(String wxEnterpriseId);

    /**
     * 查询绑定得门店id
     *
     * @param wxEnterpriseId
     * @return
     */
    public List<String> listStoreIdByEnterpriseId(String wxEnterpriseId, String enterpriseId);

    /**
     * 查询绑定得门店id
     *
     * @param wxEnterpriseId
     * @return
     */
    public List<StoreOrGroupInfoDTO> listStoreRelationByEnterpriseId(String wxEnterpriseId, String enterpriseId, String search);

    /**
     * 初始化历史门店数据
     *
     * @return
     */
    public boolean initHistoryEnterprise(String wxEnterpriseId);

    /**
	 * 初始化历史门店数据
	 *
	 * @return
	 */
	public boolean setClerkEditFlag(String wxEnterprieseRelatedId, int clerkEditFlag);
	
	public void saveClerkEditFlag(String wxEnterpriseId , String enterpriseId , int value) ;

	/**
	 * 判断企业是否是总部 true是 false 不是
	 *
	 * @return
	 */
	public boolean checkIsGeneral(String wxEnterpriseId, String enterpriseId);
	
	public List<StoreOrGroupInfoDTO> queryBindStoreRange(String enterpriseId, String wxEnterpriseId);
	
	public List<String> listStoreIdByName(String wxEnterpriseId, String enterpriseId , String storeName);

	/**
	 * 查询当前商户信息
	 * @param wxEnterpriseId
	 * @param enterpriseId
	 * @return
	 */
	com.gic.api.base.commons.ServiceResponse<EnterpriseDetailDTO> queryEnterpriseDetail(String wxEnterpriseId, String enterpriseId);
	
	public int getRelationCount(String enterpriseId) ;

}
