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

import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.manage.api.dto.QywxTagCallbackDTO;
import com.gic.haoban.manage.api.dto.QywxTagInfoDTO;
import com.gic.haoban.manage.api.dto.QywxTagItemDTO;
import com.gic.haoban.manage.api.dto.QywxTagRelationDTO;

import java.util.List;

/**
 * Created 2021/6/21.
 *
 * @author hua
 */
public interface QywxTagApiService {
    /**
     * 拉取企业微信标签
     *
     * @param wxEnterpriseId
     */
    public void pullQywxTag(String wxEnterpriseId);

    /**
     * 同步会员导购标签到qywx
     *
     * @param infoDTO 标签
     * @param items   标签项
     */
    public ServiceResponse syncTagToQywx(String wxEnterpriseId, String enterpriseId, QywxTagInfoDTO infoDTO, List<QywxTagItemDTO> items);

    /**
     * 关闭同步
     *
     * @param wxEnterpriseId
     * @param memberTagId
     */
    public ServiceResponse closeSync(String wxEnterpriseId, String memberTagId);

    /**
     * 删除gic标签项导致 并删除企业微信的数据
     *
     * @param wxEnterpriseId
     * @param tagItemId
     */
    public ServiceResponse delGicTagItem(String wxEnterpriseId, String tagItemId);

    /**
     * 查询所有同步的标签
     *
     * @param wxEnterpriseId
     * @return
     */
    public List<QywxTagRelationDTO> listAllByWxEnterpriseId(String wxEnterpriseId);

    /**
     * 新增回调
     *
     * @param callbackDTO
     */
    public void addQywxTag(QywxTagCallbackDTO callbackDTO);

    /**
     * 删除回调
     *
     * @param callbackDTO
     */
    public void delQywxTag(QywxTagCallbackDTO callbackDTO);

    /**
     * 修改回调
     *
     * @param callbackDTO
     */
    public void editQywxTag(QywxTagCallbackDTO callbackDTO);

    /**
     * 同步好友标签到企业微信
     *
     * @param wxEnterpriseId
     * @param enterpriseId
     * @param externalUserId
     */
    public ServiceResponse syncFriendTagToQywxByExternalUserId(String wxEnterpriseId, String enterpriseId, String externalUserId, List<String> tagItemIds);


    public ServiceResponse syncFriendTagToQywxByExternalUserId(String wxEnterpriseId, String enterpriseId, String externalUserId, List<String> tagItemIds , String externalUserInfo);


    /**
     * 同步企业微信导入gic的会员标签
     *
     * @param wxEnterpriseId
     * @param externalUserId
     * @return
     */
    public ServiceResponse syncQywxTagToGicByExternalUserId(String wxEnterpriseId, String externalUserId, String wxUserId , String externalUserInfo);

    /**
     * 更改状态
     *
     * @param memberTagId
     * @param wxEnterpriseId
     * @param status
     */
    public void changeQywxTagStatus(String memberTagId, String wxEnterpriseId, int status);

    /**
     * 同步标签
     *
     * @param wxEnterpriseId
     * @param enterpriseId
     * @param memberTagIds
     * @return
     */
    public boolean saveRelation(String wxEnterpriseId, String enterpriseId, List<String> memberTagIds);

    /**
     * 更新qywx的标签或者标签组名称
     *
     * @param wxEnterpriseId
     * @param id             (企业微信的对应的id)
     * @param name
     * @param type
     * @return
     */
    public ServiceResponse renameQywxTag(String wxEnterpriseId, String id, String name, Integer type);


    /**
     * 根据会员标签id 拉取列表
     *
     * @param wxEnterpriseId
     * @param memberTagId
     * @return
     */
    public List<QywxTagRelationDTO> listQywxTagRelationByMemberTagId(String wxEnterpriseId, String memberTagId);

    /**
     * 根据会员标签关联id 查询关联信息
     *
     * @param relationId
     * @return
     */
    //无效接口
//    public QywxTagRelationDTO getQywxTagRelationByRelationId(String relationId);


    /**
     * 根据会员标签关联id 查询关联信息
     *
     * @param qywxTagId
     * @return
     */
    public QywxTagInfoDTO getQywxTagByQywxTagId(String qywxTagId);

    /**
     * 更新标签项 未同步状态 为同步状态
     *
     * @param tagItemId
     * @return
     */
    public void updateQywxTagRelationSyncStatusByTagItemId(String wxEnterpriseId, String tagItemId);

    /**
     * 校验企业微信标签同步
     */
    public void checkQywxSync(String params);

    /**
     * 企微打标签
     * "routerName": "qywxMarkTagMq"
     *
     * @param param 参数
     * @author mozhu
     * @date 2022-06-06 17:21:58
     */
    void qywxMarkTag(String param);

}
