package com.ruoyi.ibs.list.service;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.ibs.list.domain.SysCampaignGroupCustomer;

import java.rmi.ServerException;
import java.util.List;

/**
 * 活动分群客户关联关系，推送成功后，插入一条记录Service接口
 *
 * @author ruoyi
 * @date 2024-09-14
 */
public interface ISysCampaignGroupCustomerService {
    /**
     * 查询活动分群客户关联关系，推送成功后，插入一条记录
     *
     * @param id 活动分群客户关联关系，推送成功后，插入一条记录主键
     * @return 活动分群客户关联关系，推送成功后，插入一条记录
     */
    public SysCampaignGroupCustomer selectSysCampaignGroupCustomerById(Long id);

    /**
     * 查询活动分群客户关联关系，推送成功后，插入一条记录列表
     *
     * @param sysCampaignGroupCustomer 活动分群客户关联关系，推送成功后，插入一条记录
     * @return 活动分群客户关联关系，推送成功后，插入一条记录集合
     */
    public List<SysCampaignGroupCustomer> selectSysCampaignGroupCustomerList(SysCampaignGroupCustomer sysCampaignGroupCustomer);

    /**
     * 新增活动分群客户关联关系，推送成功后，插入一条记录
     *
     * @param sysCampaignGroupCustomer 活动分群客户关联关系，推送成功后，插入一条记录
     * @return 结果
     */
    public int insertSysCampaignGroupCustomer(SysCampaignGroupCustomer sysCampaignGroupCustomer);

    /**
     * 修改活动分群客户关联关系，推送成功后，插入一条记录
     *
     * @param sysCampaignGroupCustomer 活动分群客户关联关系，推送成功后，插入一条记录
     * @return 结果
     */
    public int updateSysCampaignGroupCustomer(SysCampaignGroupCustomer sysCampaignGroupCustomer);

    /**
     * 批量删除活动分群客户关联关系，推送成功后，插入一条记录
     *
     * @param ids 需要删除的活动分群客户关联关系，推送成功后，插入一条记录主键集合
     * @return 结果
     */
    public int deleteSysCampaignGroupCustomerByIds(Long[] ids);

    /**
     * 删除活动分群客户关联关系，推送成功后，插入一条记录信息
     *
     * @param id 活动分群客户关联关系，推送成功后，插入一条记录主键
     * @return 结果
     */
    public int deleteSysCampaignGroupCustomerById(Long id);


    /**
     * 推送已有客群的新增用戶 到 对应的活动中，
     * @param groupId   客群id
     * @param custIds    客户列表， 如果不传，则处理全部客群客户 ，手动减去已经推送活动的客户
     * @param campaignIds   关联的活动id ，如果不传 则处理所有所有
     * @return
     */
    public int appointHisCamp(String groupId, List<String>custIds, List<String> campaignIds) throws ServerException;


    /**
     *  从客户视图的客户添加到已有活动中
     * @param custId
     * @param campaignId
     * @param custType
     * @return
     * @throws ServerException
     * TODO   客户视图中客户添加到活动中
     */
    public int appointCustCamp( String custId,String custName,String custIdc,String custPhone,String custIsn,String socialCreditCode,String lpName,String campaignId,String custType) throws ServerException;

    public int appoint(String groupId, String campaignId, List<String> custIds, List<Long> userIds, List<Long> deptIds, String createRole);

    /**
     * 手动指定过程中，如果是总行推送支行， 则需按照支行二次分配情况继续推送
     * @param campaignGroupCustomers
     * @param campaignId
     * @param groupIds
     * @return
     */
    public int secondAppoint(List<SysCampaignGroupCustomer> campaignGroupCustomers,String campaignId,List<String> groupIds);


    public int orgClaim(String groupId, String campaignId) throws ServerException;

    public int custClaim(String groupId, String campaignId, List<String> custId) throws ServerException;
}
