package com.ruoyi.ibs.list.mapper;

import com.ruoyi.ibs.customerselect.domain.ListSelectForUser;
import com.ruoyi.ibs.list.domain.SysCampaignGroupCustomer;
import org.apache.ibatis.annotations.Param;

import java.util.List;

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

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

    /**
     * 支行管理员查询机构以及机构下级数据
     *
     * @param sysCampaignGroupCustomer 活动分群客户关联关系，推送成功后，插入一条记录
     * @return 活动分群客户关联关系，推送成功后，插入一条记录集合
     */
    public List<SysCampaignGroupCustomer> selectSysCampaignGroupCustomerList2(SysCampaignGroupCustomer sysCampaignGroupCustomer);

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

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


    public int insertHeadHandledMission(@Param("campaignId")  String campaignId,@Param("userName") String userName);

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

    /**
     * 批量修改活动分群客户关联关系，推送成功后，插入一条记录
     *
     * @param list
     * @return 结果
     */
    public int updateSysCampaignGroupCustomerBatch(@Param("list") List<SysCampaignGroupCustomer> list);

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

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

    public Long getDeptIdByUserId(Long userId);

    /**
     * 获取已认领活动数量
     *
     * @param groupId 需要删除的数据主键集合
     * @return 结果
     */
    public List<String> getReceiveUserNum(@Param("groupId") String groupId ,@Param("campaignId") String campaignId,@Param("deptId") Long deptId,@Param("userDept") Long userDept);

    /**
     * 获取所有活动数量
     *
     * @param groupId 需要删除的数据主键集合
     * @return 结果
     */
    public List<String> getAllUserNum(@Param("groupId") String groupId ,@Param("campaignId") String campaignId, @Param("deptId") Long deptId,@Param("userDept") Long userDept);


    public List<String> getReceiveUserNumOutlet(@Param("groupId") String groupId ,@Param("campaignId") String campaignId,@Param("userDept") Long userDept);

    /**
     * 获取所有活动数量
     *
     * @param groupId 需要删除的数据主键集合
     * @return 结果
     */
    public List<String> getAllUserNumOutlet(@Param("groupId") String groupId ,@Param("campaignId") String campaignId,@Param("userDept") Long userDept);


    /**
     * 获取客群客户所属客户经理
     *
     * @param listSelectForUser 清单名称或者活动名称关键词
     * @return 客户经理
     */
    public List<String> getUserInfoList(ListSelectForUser listSelectForUser);

    /**
     * 获取客群所属客户id
     *
     * @param groupId 清单名称或者活动名称关键词
     * @return 网格名称
     */
    public List<String> getGroupCustIdByGroupId(@Param("groupId") String groupId , @Param("deptId")Long deptId);

    public List<SysCampaignGroupCustomer> selectSysCampaignGroupCustomerListUnsuccess(SysCampaignGroupCustomer sysCampaignGroupCustomer);

}
