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

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

import java.util.List;

public interface MemberUnionidRelatedApiService {

    /**
     * 根据导购导购微信id和会员id查询关联关系
     *
     * @param staffId : 导购微信id
     * @param memberId : 会员id
     * @return : 返回导购与会员关联关系
     */
    ExternalClerkRelatedDTO getByWxUserIdMemberId(String staffId, String memberId);

    /**
     * 外部联系人新增（加好友）
     *
     * @param dto
     * @return
     */
    String addMemberUnionidRelated(QwFrientNoticeDTO dto);

    /**
     * 外部联系人删除（删好友）
     *
     * @param dto
     */
    void delMemberUnionidRelated(QwFrientNoticeDTO dto);

    /**
     * 外部联系人新增（修改好友）
     *
     * @param dto
     */
    void editMemberUnionidRelated(QwFrientNoticeDTO dto);

    /**
     * 处理外部联系人异步
     * "routerName": "dealQywxExternalUserMq"
     *
     * @param params
     */
    void dealQywxExternalUser(String params);

    ExternalClerkRelatedDTO getByMemberId(String staffId, String memberId);

    /**
     * 查看是否可以跳转会员详情的会员列表
     *
     * @param externalUserid
     * @param storeId
     * @return
     */
    List<MemberStoreDTO> listByExTernalUseridAndWxUserId(String externalUserid, String staffId, String storeId);
    
    /**
     * 
    * @Title: getMemberIdForDetail
    * @Description: 好办打开会员详情-返回memberId
    * @author xugh
    * @param externalUserid
    * @param staffId
    * @return
    * @throws
     */
    com.gic.api.base.commons.ServiceResponse<MemberStoreDTO> getMemberIdForDetail(String externalUserid, String staffId, String enterpriseId);

    /**
     * 创建企业群发, 支出素材批量发送
     *
     * @param wxEnterpriseId : 微信企业id
     * @param staffId         : 用户id
     * @param extendUserList : 发送的用户id
     * @param materialIdList : 素材id列表
     * @return : 返回群发执行结果
     */
    JSONResponse sendMessage(String wxEnterpriseId, String staffId, List<String> extendUserList, List<String> materialIdList , String planId);
    
    JSONResponse sendMessageShare(String wxEnterpriseId, String staffId, List<String> extendUserList, String message ,List<ContentMaterialDTO> imgList);
    
    /**
     * 创建企业群发, 支出素材批量发送
     *
     * @param wxEnterpriseId : 微信企业id
     * @return : 返回群发执行结果
     */
    JSONResponse share(String wxEnterpriseId, List<String> clerkIdList, String message , List<ContentMaterialDTO> imgList);

    /**
     * 获取群发成员发送任务列表
     *
     * @param wxEnterpriseId : 微信企业id
     * @param wxMessageId    : 消息id
     * @param cursor         : 分页游标
     * @return : 返回请求结果
     */
    JSONResponse taskExternalMessage(String wxEnterpriseId, String wxMessageId, String cursor);

    /**
     * 获取企业群发成员执行结果
     *
     * @param wxEnterpriseId : 微信企业id
     * @param wxMessageId    : 消息id
     * @param cursor         : 分页游标
     * @param userId         : 用户id
     * @return : 返回请求结果
     */
    JSONResponse resultExternalMessage(String wxEnterpriseId, String wxMessageId, String cursor, String userId);

    JSONResponse getMessageStatus(String wxEnterpriseId, String wxMessageId);

    /**
     * 添加好友
     *
     * @param dto dto
     * @return {@link String }
     * @author mozhu
     * @date 2021-12-13 17:12:39
     */
    String addMemberUnionidRelatedNew(MemberUnionidRelatedDTO dto, String wxUserId);

    /**
     * 客户列表-自建
     *
     * @param wxEnterpriseId
     * @param wxUserId
     * @return
     */
    List<String> listSelfExterialList(String wxEnterpriseId, String wxUserId);

    /**
     * 客户详情-第三方
     *
     * @param wxEnterpriseId
     * @param wxUserId
     * @return
     */
    List<String> listExterialList(String wxEnterpriseId, String wxUserId);

    /**
     * 客户详情-自建
     *
     * @param wxEnterpriseId
     * @param wxUserId
     * @param externalUserId
     * @return
     */
    ExternalUserDTO getCorpSelfExternalUseridInfo(String wxEnterpriseId, String wxUserId, String externalUserId);
    
    ExternalUserDTO getCorpSelfExternalUseridInfoForMember(String wxEnterpriseId, String wxUserId, String externalUserId,String enterpriseId);

    public String dealMergeForReflsh(ExternalUserDTO externalUserDTO, String wxEnterpriseId , String staffId) ;
    /**
     * 获取客户详情-第三方
     *
     * @param wxEnterpriseId
     * @param wxUserId
     * @param externalUserId
     * from 0 企微加好友通知 1刷新好友
     * @return
     */
    ExternalUserDTO getExternalUseridInfo(String wxEnterpriseId, String wxUserId, String externalUserId , int from);

    /**
     * 清理外部联系人
     *
     * @param wxEnterpriseId
     * @param staffId
     * @param externalUserIds
     */
    void cleanNoExsitFriendNew(String wxEnterpriseId, String staffId, List<String> externalUserIds);

    /**
     * 根据会员的unionid 获取好友导购列表
     *
     * @param enterpriseId
     * @param unionId
     * @return
     */
    ServiceResponse<List<FriendStoreInfoDTO>> listFriendClerkByMemberUnionid(String enterpriseId, String unionId);


    /**
     * 根据企业内部外部联系人id 获取关联关系
     *
     * @param wxEnterpriseId     wx企业标识
     * @param selfExternalUserId 自外部的用户id
     * @return {@link MemberUnionidRelatedDTO }
     * @author mozhu
     * @date 2021-12-23 22:39:25
     */
    MemberUnionidRelatedDTO getBySelfExternalUserId(String wxEnterpriseId, String selfExternalUserId);


    /**
     * 关注公共号-会员回调好办关联好友（通过查询unionid关联导购对外联系人id接口）
     * "routerName"：addMemberUnionidWechatAccountMq
     *
     * @param res res
     * @author mozhu
     * @date 2022-01-22 16:59:25
     */
    void addMemberUnionidWechatAccount(String res);


    /**
     * 关注公共号-会员回调好办关联好友（通过公共号二维码带参数）
     * "routerName"：addMemberUnionidWechatAccountByClerkMq
     *
     * @param res res
     * @author mozhu
     * @date 2022-02-21 14:56:25
     */
    void addMemberUnionidWechatAccountByClerk(String res);
    
    /**
     * 
    * @Title: saveExternalMemberLog
    * @Description: 欢迎语业务
    * @author xugh
    * @param memberLog
    * @throws
     */
    void saveExternalMemberLog(ExternalMemberLogDTO memberLog);
}
