package com.fs.qw.service;

import com.fs.common.exception.CustomException;
import com.fs.his.dto.SendResultDetailDTO;
import com.fs.qw.bo.SendMsgLogBo;
import com.fs.qw.domain.QwAcquisitionAssistant;
import com.fs.qw.vo.AcquisitionAssistantDetailVO;

import java.util.List;

/**
 * 企微-获客链接管理Service接口
 *
 * @author fs
 * @date 2026-03-16
 */
public interface IQwAcquisitionAssistantService
{
    /**
     * 查询企微-获客链接管理列表
     *
     * @param qwAcquisitionAssistant 企微-获客链接管理
     * @return 企微-获客链接管理集合
     */
    public List<QwAcquisitionAssistant> selectQwAcquisitionAssistantList(QwAcquisitionAssistant qwAcquisitionAssistant);

    /**
     * 发送获客链接短信
     *
     * @param phone 待发送短信的手机号
     * @param qwAcquisitionId 获客链接Id
     * @return 结果
     */
    public SendResultDetailDTO sendMessageAcquisition(String phone, Long qwAcquisitionId, SendMsgLogBo sendMsgLogBo);

    /**
     * 获取获客链接详情（从企微实时查询）
     * @param linkId 获客链接ID
     * @return 企微返回的详情数据
     * @throws CustomException 当调用企微API失败时抛出
     */
    public AcquisitionAssistantDetailVO getDetailWithQw(String linkId);

    /**
     * 创建获客链接
     *
     * @param corpid 企业ID
     * @param corpsecret 应用密钥
     * @param assistant 获客链接信息
     * @return 创建成功的完整对象（包含企微返回的link_id、url等）
     */
    public QwAcquisitionAssistant createWithQw(String corpid,String corpsecret,QwAcquisitionAssistant assistant, Long companyId);

    /**
     * 修改企微-获客链接管理
     *
     * @param qwAcquisitionAssistant 企微-获客链接管理
     * @return 结果
     */
    public QwAcquisitionAssistant updateWithQw(String corpId, String secret, QwAcquisitionAssistant qwAcquisitionAssistant,Long companyId);

    /**
     * 删除获客链接
     * @param corpid 企业ID
     * @param corpsecret 应用密钥
     * @param assistant 获客链接信息（必须包含linkId）
     * @throws CustomException 当调用企微API失败时抛出
     */
    public void deleteWithQw(String corpid, String corpsecret, QwAcquisitionAssistant assistant);

    /**
     * 查询企微-获客链接管理
     *
     * @param id 企微-获客链接管理主键
     * @return 企微-获客链接管理
     */
    public QwAcquisitionAssistant selectQwAcquisitionAssistantById(Long id);

    /**
     * 根据页面参数查询获客链接url
     * */
    public String selectQwAcquisitionUrlByPageParam(String pageParam);
    public void resetAcquisitionLinkUserLimit();

}
