package com.njcn.msgpush.module.push.service.message;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.msgpush.module.push.controller.admin.message.vo.MessageRecordReqVO;
import com.njcn.msgpush.module.push.dal.dataobject.channel.ChannelProviderConfigDO;
import com.njcn.msgpush.module.push.dal.dataobject.message.MessageRecordDO;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

public interface MessageRecordService {

    /**
     * 发送消息（包括email、sms、app_push）
     *
     * @param reqVOList
     * @return 发送是否成功的结果
     */
    boolean send(List<MessageRecordReqVO> reqVOList);

    /**
     * 处理发送消息
     * @param messageRecordDO
     * @return 发送是否成功的结果
     */
    boolean processSendMsg(MessageRecordDO messageRecordDO);

    /**
     * 添加消息记录
     *
     * @param messageRecordSendReqVO
     * @return
     */
    boolean add(MessageRecordReqVO messageRecordSendReqVO);

    MessageRecordDO getById(String messageId);

    List<MessageRecordDO> listByIds(Collection<? extends Serializable> ids);

    Page<MessageRecordDO> getPage(MessageRecordReqVO reqVO);

    boolean update(MessageRecordReqVO reqVO);

    boolean delete(List<String> ids);

    /**
     * 更新消息记录状态
     *
     * @param messageId
     * @param status
     * @return
     */
    boolean updateStatus(String messageId, String status);

    /**
     * 更新消息记录重试次数
     *
     * @param messageId
     * @return
     */
    boolean updateRetryCount(String messageId);
}
