package com.ruoyi.ibs.list.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.ibs.customerselect.domain.CustBaseInfo;
import com.ruoyi.ibs.customerselect.domain.CustInfoDeleteFromAnchor;
import com.ruoyi.ibs.customerselect.domain.CustInfoUpdateFromAnchor;
import com.ruoyi.ibs.customerselect.domain.ListSelectForUser;
import com.ruoyi.ibs.grid.domain.dto.CustManageInfo;
import com.ruoyi.ibs.list.domain.CustInfoMerchant;
import com.ruoyi.ibs.list.domain.SysGroupCustomer;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 商户客户基本信息Mapper接口
 * 
 * @author ruoyi
 * @date 2024-10-28
 */
public interface CustInfoMerchantMapper extends BaseMapper<CustInfoMerchant>
{
    /**
     * 查询商户客户基本信息
     * 
     * @param id 商户客户基本信息主键
     * @return 商户客户基本信息
     */
    public CustInfoMerchant selectCustInfoMerchantById(Long id);

    /**
     * 查询商户客户基本信息列表
     * 
     * @param custInfoMerchant 商户客户基本信息
     * @return 商户客户基本信息集合
     */
    public List<CustInfoMerchant> selectCustInfoMerchantList(CustInfoMerchant custInfoMerchant);


    public List<CustInfoMerchant> selectCustInfoMerchantListByKeyword(@Param("keyword") String keyword);

    public List<CustInfoMerchant> selectCustInfoMerchantListByKeywordBranchAndManager(@Param("keyword") String keyword,@Param("deptId")Long deptId,@Param("outletsId")Long outletsId,@Param("userId")Long userId,@Param("opsDept") String opsDept);

    /**
     * 新增商户客户基本信息
     * 
     * @param custInfoMerchant 商户客户基本信息
     * @return 结果
     */
    public int insertCustInfoMerchant(CustInfoMerchant custInfoMerchant);

    /**
     * 修改商户客户基本信息
     * 
     * @param custInfoMerchant 商户客户基本信息
     * @return 结果
     */
    public int updateCustInfoMerchant(CustInfoMerchant custInfoMerchant);

    public int updateCustInfoMerchantLabel(CustInfoMerchant custInfoMerchant);

    /**
     * 删除商户客户基本信息
     * 
     * @param id 商户客户基本信息主键
     * @return 结果
     */
    public int deleteCustInfoMerchantById(Long id);

    /**
     * 批量删除商户客户基本信息
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCustInfoMerchantByIds(Long[] ids);

    /**
     * 查询商户客户基本信息列表
     *
     * @param sysCustomerBasedata 企业客户基本信息
     * @return 客户基本信息集合
     */
    public List<CustInfoMerchant> selectMyCustInfoMerchantList(CustBaseInfo sysCustomerBasedata);

    public List<CustInfoMerchant> selectMyCustInfoMerchantListHead(CustBaseInfo sysCustomerBasedata);

    public List<CustInfoMerchant> selectMyCustInfoMerchantListOps(CustBaseInfo sysCustomerBasedata);

    /**
     * 查询商户客户基本信息
     *
     * @param custId 商户客户基本信息主键
     * @return 企业客户基本信息
     */
    public CustInfoMerchant selectCustInfoMerchantByCustId(String custId);

    /**
     * 根据统信码查询商户客户基本信息
     * @param socialCreditCode
     * @return
     */
    public CustInfoMerchant selectCustInfoMerchantBySocialCreditCode(String socialCreditCode);

    /**
     * 使用机构id查询客户数量
     *
     * @param headDeptId 企业客户基本信息
     * @return 客户基本信息集合
     */
    public Long getMerchantNumByDeptId(Long headDeptId);

    /**
     * 使用经理id查询客户数量
     *
     * @param UserId 企业客户基本信息
     * @return 客户基本信息集合
     */
    public Long getMerchantNumByUserId(String UserId);

    /**
     * 使用证件号查询客户数量
     *
     * @param LegalId 企业客户基本信息
     * @return 客户基本信息集合
     */
    public Long getMerchantNumByLegalId(String LegalId);

    /**
     * 锚点更新客户信息
     *
     * @param custInfoUpdateFromAnchor 管户信息
     * @return 结果
     */
    public int updateMerchantByAnchor(CustInfoUpdateFromAnchor custInfoUpdateFromAnchor);

    /**
     * 锚点新增客户信息
     *
     * @param custInfoUpdateFromAnchor 客户信息
     * @return 结果
     */
    public int insertMerchantByAnchor(CustInfoUpdateFromAnchor custInfoUpdateFromAnchor);

    /**
     * 锚点删除客户信息
     *
     * @param custInfoDeleteFromAnchor 客户信息
     * @return 结果
     */
    public int deleteMerchantByAnchor(CustInfoDeleteFromAnchor custInfoDeleteFromAnchor);

    /**
     * 使用行政区划查询客户数量
     *
     * @param gridId 企业客户基本信息
     * @return 客户基本信息集合
     */
    public Long selectPosNumByAdmin(@Param("gridId")Long gridId, @Param("userDept")Long userDept);

    /**
     * 获取客群客户经营者名称
     *
     * @param listSelectForUser 清单名称或者活动名称关键词
     * @return 客户经理
     */
    public String getLpNameByCustId(ListSelectForUser listSelectForUser);

    public CustInfoMerchant selectCustInfoMerchatByCustNameAndCustIdc(@Param("custName") String custName,@Param("custIdc") String custIdc);

    /**
     * 使用客户号查询客户证件号
     *
     * @param custId 企业客户基本信息
     * @return 客户基本信息集合
     */
    public String getMerchantIdcByCustId(String custId);

    /**
     * 使用查询行政网格客户信息列表
     *
     * @param custManageInfo 企业客户基本信息
     * @return 客户基本信息集合
     */
    public List<CustManageInfo> selectMerchantInfoByManage(CustManageInfo custManageInfo);

    public CustInfoMerchant selectCustInfoMerchatByCustId(@Param("custId") String custId);

    Long countByCode(@Param("code") String code, @Param("deptCode") String deptCode);

    public int insertCustomersToMmerchantByScCode(List<SysGroupCustomer> sysGroupCustomers);

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

    List<CustInfoMerchant> selectRecord(String socialCreditCode);
}
