package com.fs.qw.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fs.qw.domain.QwExternalContact;
import com.fs.qw.domain.QwGroupMsgUser;
import com.fs.qw.vo.QwGroupMsgDetailsVO;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 群发成员发送任务及执行结果反馈记录Mapper接口
 *
 * @author fs
 * @date 2024-06-20
 */
@Repository
public interface QwGroupMsgUserMapper extends BaseMapper<QwGroupMsgUser>
{
    /**
     * 查询群发成员发送任务及执行结果反馈记录
     *
     * @param id 群发成员发送任务及执行结果反馈记录主键
     * @return 群发成员发送任务及执行结果反馈记录
     */
    public QwGroupMsgUser selectQwGroupMsgUserById(Long id);

    /**
     * 查询群发成员发送任务及执行结果反馈记录列表
     *
     * @param qwGroupMsgUser 群发成员发送任务及执行结果反馈记录
     * @return 群发成员发送任务及执行结果反馈记录集合
     */
    public List<QwGroupMsgUser> selectQwGroupMsgUserList(QwGroupMsgUser qwGroupMsgUser);

    /**
     * 新增群发成员发送任务及执行结果反馈记录
     *
     * @param qwGroupMsgUser 群发成员发送任务及执行结果反馈记录
     * @return 结果
     */
    public int insertQwGroupMsgUser(QwGroupMsgUser qwGroupMsgUser);

    /**
     * 修改群发成员发送任务及执行结果反馈记录
     *
     * @param qwGroupMsgUser 群发成员发送任务及执行结果反馈记录
     * @return 结果
     */
    public int updateQwGroupMsgUser(QwGroupMsgUser qwGroupMsgUser);


    /** 更新 群发成员发送任务及执行结果反馈记录*/
    public int updateQwGroupMsgUserResult(QwGroupMsgUser qwGroupMsgUser);

    int batchUpdateQwGroupMsgUserResult(@Param("list") List<QwGroupMsgUser> list);

    /**
     * 删除群发成员发送任务及执行结果反馈记录
     *
     * @param id 群发成员发送任务及执行结果反馈记录主键
     * @return 结果
     */
    public int deleteQwGroupMsgUserById(Long id);

    /** 删除掉已经同步的 群 第一次的主记录数据 */
    @Delete("delete from qw_group_msg_user" +
            " where user_id=#{map.userId} " +
            "   and msg_id=#{map.msgId}" +
            "   and status=0 " +
            "   and send_status=0 " +
            "   and chat_id is null " +
            "   and chat_type='group' ")
    public int deleteQwGroupMsgUserByStatus(@Param("map") QwGroupMsgDetailsVO vo);

    /**
     * 批量删除群发成员发送任务及执行结果反馈记录
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteQwGroupMsgUserByIds(Long[] ids);
}
