package com.gic.haoban.manage.service.dao.mapper.chat;

import java.util.Date;
import java.util.List;
import java.util.Set;

import org.apache.ibatis.annotations.Param;

import com.gic.haoban.manage.api.dto.chat.GroupChatDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatSearchQDTO;
import com.gic.haoban.manage.service.entity.chat.TabGroupChat;

/**
 * 
 * @ClassName: TabHaobanGroupChatMapper
 * @Description: TODO
 * @Author 徐高华
 * @Date 2022年11月25日 13:35:28
 * @Modify
 * @CopyRight 
 */
public interface GroupChatMapper {
    
    public int updateChatErrorRemark(@Param("groupChatId")Long groupChatId , @Param("chatRemark")String chatRemark) ;
    
    public int getCountByStaffId(String staffId);

    public int insert(TabGroupChat chat);

    public int update(TabGroupChat chat);
    
    /**
     * 更新代开发应用的群ID
     */
    public void updateWxChatIdDk(@Param("staffId") String staffId, @Param("name") String name,
            @Param("chatAddTime") Date chatAddTime, @Param("wxChatIdDk") String wxChatIdDk);

    public int updateData(@Param("groupChatId") Long groupChatId, @Param("totalCount") int totalCount,
            @Param("totalMemberCount") int totalMemberCount, @Param("addMemberCount") int addMemberCount,
            @Param("addCount") int addCount, @Param("quitCount") int quitCount,
            @Param("quitMemberCount") int quitMemberCount);

    public int addMemberCount(@Param("groupChatId") Long groupChatId);

    // 更新群状态
    public int updateChatStatus(@Param("groupChatId") Long groupChatId, @Param("chatStatus") int chatStatus);

    // 下线(标识不能通过活码入群)
    public int chatOff(@Param("groupChatId") Long groupChatId);

    public TabGroupChat selectById(Long groupChatId);

    public List<TabGroupChat> listByIdSet(@Param("idList") Set<Long> idList);

    public TabGroupChat selectByWxChatId(@Param("wxEnterpriseId") String wxEnterpriseId,
            @Param("wxChatId") String wxChatId);

    public TabGroupChat selectByWxChatIdDk(@Param("wxEnterpriseId") String wxEnterpriseId,
            @Param("wxChatIdDk") String wxChatIdDk);

    public List<TabGroupChat> listByWxWxChatIdList(@Param("wxEnterpriseId") String wxEnterpriseId,
            @Param("wxChatIdList") List<String> wxChatIdList);

    public List<TabGroupChat> listByWxWxChatIdListDk(@Param("wxEnterpriseId") String wxEnterpriseId,
            @Param("wxChatIdDkList") List<String> wxChatIdDkList);

    public List<TabGroupChat> listAllNeedInit();

    public List<TabGroupChat> listAllNeedInitWxChatIdDk();

    public List<GroupChatDTO> list(GroupChatSearchQDTO qdto);

    public void updateChatEnterpriseId(@Param("wxEnterpriseId") String wxEnterpriseId,
            @Param("enterpriseId") String enterpriseId, @Param("groupChatIdList") List<Long> groupChatIdList,
            @Param("force") int force);
    
    public List<GroupChatDTO> listChangeOwner() ;

    List<String> listOpenGroupChatDK(@Param("enterpriseId")String enterpriseId, @Param("staffId") String staffId);

    List<TabGroupChat> listByStaffIds(@Param("enterpriseId")String enterpriseId, @Param("staffIds") List<String> staffId);
}