package com.ruoyi.ibs.list.mapper;

import com.ruoyi.ibs.customerselect.domain.GroupListVo;
import com.ruoyi.ibs.list.domain.CustomerList;
import com.ruoyi.ibs.list.domain.SysGroup;
import com.ruoyi.ibs.list.domain.SysGroupVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 客群圈选分群Mapper接口
 *
 * @author ruoyi
 * @date 2024-09-11
 */
public interface SysGroupMapper {
    /**
     * 查询客群圈选分群
     *
     * @param id 客群圈选分群主键
     * @return 客群圈选分群
     */
    public SysGroup selectSysGroupById(Long id);
    /**
     * 查询客群圈选分群
     *
     * @param groupId
     * @return 客群圈选分群
     */
    public SysGroup selectSysGroupByGroupId(String groupId);

    public String selectSysGroupNameByGroupId(String groupId);

    /**
    *总行管理员查询机构下客群
    */
    public List<SysGroup> selectSysGroupBydeptId(Long deptId);
    /**
     *支行管理员查询机构下客群
     */
    public List<SysGroup> selectSysGroupBydeptId1(Long deptId);
    /**
     *客户经理查询用户下客群
     */
    public List<SysGroup> selectSysGroupBydeptIdAndUserId(@Param("deptId")Long deptId,@Param("userName")String userName);

    /**
     * 查询客群圈选分群列表
     *
     * @param groupName 分群名称,groupType分群创建类型
     * @return 客群圈选分群集合
     */
    public List<SysGroupVo> selectSysGroupList(@Param("groupName") String groupName, @Param("deptId") Long deptId,@Param("createBy") String createBy,@Param("customerNumSort") Integer customerNumSort,@Param("updateTimeSort") Integer updateTimeSort,@Param("type")String type);


    /**
     * 支行管理员查询该部门我创建的分群
     *
     * @param groupName 分群名称,deptId部门id
     * @return 客群圈选分群集合
     */
    public List<SysGroupVo> selectSysGroupList1(@Param("groupName") String groupName, @Param("deptId") Long deptId,@Param("createBy") String createBy,@Param("customerNumSort") Integer customerNumSort,@Param("updateTimeSort") Integer updateTimeSort,@Param("type")String type);


    public List<CustomerList> selectCustomerList(@Param("groupId") String groupId, @Param("deptId") Long deptId, @Param("custId") String custId, @Param("custIdc") String custIdc,@Param("custName") String custName,@Param("custIsn") String custIsn,@Param("gridName") String gridName,
                                                 @Param("gridName2") String gridName2,@Param("deptName") String deptName, @Param("outlets") String outlets,@Param("username") String username,@Param("socialCreditCode") String socialCreditCode, @Param("pushStatus") String pushStatus);

    public List<CustomerList> selectUnsuccessCustomerList(@Param("groupId") String groupId, @Param("custId") String custId, @Param("custName") String custName, @Param("pushStatus") String pushStatus);

    /**
     * 总行管理员查看我创建客群下的客户列表
     * @param groupId
     * @param deptId
     * @param custId
     * @param custIdc
     * @param custName
     * @param custIsn
     * @param gridName
     * @param gridName2
     * @param deptName
     * @param outlets
     * @param username
     * @param socialCreditCode
     * @param pushStatus
     * @return
     */
    public List<CustomerList> selectSysGroupList5(@Param("groupId") String groupId, @Param("deptId") Long deptId, @Param("custId") String custId, @Param("custIdc") String custIdc,@Param("custName") String custName,@Param("custIsn") String custIsn,@Param("gridName") String gridName,
    @Param("gridName2") String gridName2,@Param("deptName") String deptName, @Param("outlets") String outlets,@Param("username") String username,@Param("socialCreditCode") String socialCreditCode, @Param("pushStatus") String pushStatus);

    public List<CustomerList> selectSysGroupListImport(@Param("groupId") String groupId, @Param("deptId") Long deptId, @Param("custId") String custId, @Param("custIdc") String custIdc,@Param("custName") String custName
                                                 ,@Param("socialCreditCode") String socialCreditCode,@Param("tellerId") String tellerId,@Param("pushStatus") String pushStatus);

    /**
     * 支行管理员查看我创建客群下的客户列表
     * @param groupId
     * @param deptId
     * @param custId
     * @param custIdc
     * @param custName
     * @param custIsn
     * @param gridName
     * @param gridName2
     * @param deptName
     * @param outlets
     * @param username
     * @param socialCreditCode
     * @param pushStatus
     * @return
     */
    public List<CustomerList> selectSysGroupList3(@Param("groupId") String groupId, @Param("deptId") Long deptId, @Param("custId") String custId, @Param("custIdc") String custIdc,@Param("custName") String custName,@Param("custIsn") String custIsn,@Param("gridName") String gridName,
                                                  @Param("gridName2") String gridName2,@Param("deptName") String deptName, @Param("outlets") String outlets,@Param("username") String username,@Param("socialCreditCode") String socialCreditCode, @Param("pushStatus") String pushStatus);

    /**
     * 支行管理员查看总行推荐给我客群下的客户列表
     * @param groupId
     * @param deptId
     * @param custId
     * @param custIdc
     * @param custName
     * @param custIsn
     * @param gridName
     * @param gridName2
     * @param deptName
     * @param outlets
     * @param username
     * @param socialCreditCode
     * @param pushStatus
     * @return
     */
    public List<CustomerList> selectSysGroupList2(@Param("groupId") String groupId, @Param("deptId") Long deptId, @Param("custId") String custId, @Param("custIdc") String custIdc,@Param("custName") String custName,@Param("custIsn") String custIsn,@Param("gridName") String gridName,
                                                  @Param("gridName2") String gridName2,@Param("deptName") String deptName, @Param("outlets") String outlets,@Param("username") String username,@Param("socialCreditCode") String socialCreditCode, @Param("pushStatus") String pushStatus);




    public String isHead(String username);

    /**
     * 新增客群圈选分群
     *
     * @param sysGroup 客群圈选分群
     * @return 结果
     */
    public int insertSysGroup(SysGroup sysGroup);

    /**
     * 修改客群圈选分群
     *
     * @param sysGroup 客群圈选分群
     * @return 结果
     */
    public int updateSysGroup(SysGroup sysGroup);

    public int updateSysGroupByIdc(SysGroup sysGroup);

    /**
     * 删除客群圈选分群
     *
     * @param id 客群圈选分群主键
     * @return 结果
     */
    public int deleteSysGroupById(Long id);

    /**
     * 批量删除客群圈选分群
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSysGroupByIds(Long[] ids);

    /**
     * 支行查询清单列表名称
     *
     * @param countDept 总行机构
     * @return 客群圈选分群集合
     */
    public List<GroupListVo> selectListNameByBank(@Param("countDept")Long countDept);

    /**
     * 客户经理查询清单列表名称
     *
     * @param UserId 总行机构
     * @return 客群圈选分群集合
     */
    public List<SysGroup> selectListNameByUser(@Param("UserId")Long UserId);

    public int selectCountByGroupName(@Param("groupName")String groupName, @Param("headId") String headId);


}
