package com.ruoyi.ibs.list.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.ibs.customerselect.domain.ListSelectForUser;
import com.ruoyi.ibs.list.domain.CustomerList;
import com.ruoyi.ibs.list.domain.SysGroupCustomer;
import com.ruoyi.ibs.list.domain.SysGroupCustomerExportVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.security.core.parameters.P;

import java.util.List;

/**
 * 分群客户关联关系,导入的客群用户存放在这里Mapper接口
 *
 * @author ruoyi
 * @date 2024-09-14
 */
public interface SysGroupCustomerMapper {
    /**
     * 查询分群客户关联关系,导入的客群用户存放在这里
     *
     * @param id 分群客户关联关系,导入的客群用户存放在这里主键
     * @return 分群客户关联关系, 导入的客群用户存放在这里
     */
    public SysGroupCustomer selectSysGroupCustomerById(Long id);

    /**
     * 查询分群客户关联关系,导入的客群用户存放在这里列表
     *
     * @param sysGroupCustomer 分群客户关联关系,导入的客群用户存放在这里
     * @return 分群客户关联关系, 导入的客群用户存放在这里集合
     */
    public List<SysGroupCustomer> selectSysGroupCustomerList(SysGroupCustomer sysGroupCustomer);


    public List<SysGroupCustomer> selectSysGroupCustomerListIds(@Param("groupIds") List<String>groupIds , @Param("custFlag") String custFlag   ,@Param("custIds") List <String>custIds,@Param("filter") String filter);
    /**
     * 支行管理员查询机构及下级机构客群客户
     *
     * @param sysGroupCustomer 分群客户关联关系,导入的客群用户存放在这里
     * @return 分群客户关联关系, 导入的客群用户存放在这里集合
     */
    public List<SysGroupCustomer> selectSysGroupCustomerList2(SysGroupCustomer sysGroupCustomer);

    /**
     * 查询分群客户关联关系,导入的客群用户存放在这里列表
     *
     * @param groupId 分群客户关联关系,导入的客群用户存放在这里
     * @return 分群客户关联关系, 导入的客群用户存放在这里集合
     */
    public List<CustomerList> selectSysGroupCustomerListExport(String groupId);

    public List<CustomerList> selectSysGroupCustomerListExport(@Param("groupId")String groupId,@Param("pushStatus")String pushStatus);


    public List<CustomerList> selectSysGroupCustomerListExportByCustIds(@Param("groupId") String groupId, @Param("custIds") List<String> custIds);

    /**
     * 新增分群客户关联关系,导入的客群用户存放在这里
     *
     * @param sysGroupCustomer 分群客户关联关系,导入的客群用户存放在这里
     * @return 结果
     */
    public int insertSysGroupCustomer(SysGroupCustomer sysGroupCustomer);

    /**
     * 修改分群客户关联关系,导入的客群用户存放在这里
     *
     * @param sysGroupCustomer 分群客户关联关系,导入的客群用户存放在这里
     * @return 结果
     */
    public int updateSysGroupCustomer(SysGroupCustomer sysGroupCustomer);

    /**
     * 修改分群客户关联关系,导入的客群用户存放在这里
     *
     * @param list 批量修改客群数据
     * @return 结果
     */
    public int updateSysGroupCustomerBatch(@Param("list") List<SysGroupCustomer> list);

    /**
     * 删除分群客户关联关系,导入的客群用户存放在这里
     *
     * @param id 分群客户关联关系,导入的客群用户存放在这里主键
     * @return 结果
     */
    public int deleteSysGroupCustomerById(Long id);

    /**
     * 批量删除分群客户关联关系,导入的客群用户存放在这里
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSysGroupCustomerByIds(Long[] ids);


    /**
     * 获取客户数量
     *
     * @param groupId 数据主键集合
     * @return 结果
     */
    public Long getCustNumByGroupId(String groupId );

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


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

    public int updateOutletsIdAndUserIdByUsername(String groupId);

    public int updateCustIdAndCustIsn(@Param("groupId") String groupId, @Param("custType") String custType,@Param("list") List<String> list);

    public List<String> selectCustIds(@Param("custType") String custType,@Param("list") List<String> list);

    public int updateCustIdAndCustIsnBySocialCreditCode(@Param("groupId") String groupId, @Param("custType") String custType,@Param("list") List<String> list);

    public int insertSysGroupCustomerBatch(List<SysGroupCustomer> sysGroupCustomers);

    public String selectCustIdcBySocialCreditCode(@Param("custType") String custType,@Param("socialCreditCode")  String socialCreditCode);

    public List<SysGroupCustomer> selectCustIdcList(@Param("list") List<String> idcConditionList, @Param("custType") String custType, @Param("groupId") String groupId);

    public int deleteSysGroupCustomerByCustId(@Param("groupId") String groupId, @Param("custId") String custId );

}
