package cn.axzo.msg.center.dal;

import cn.axzo.msg.center.domain.entity.MNSMessage;
import cn.axzo.msg.center.domain.query.MessageQuery;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * 消息记录表 服务类
 * </p>
 *
 * @author zhaoyong
 * @since 2021-05-19
 */
public interface MNSMessageDao extends IService<MNSMessage> {

    /**
     * 分页查询消息
     * @param query
     * @return
     */
    IPage<MNSMessage> queryByPage(MessageQuery query);

    /**
     * 渠道网络异常
     * @param id
     * @return
     */
    boolean channelException(Long id);

    Boolean updateExceptionToFail(String messageOrderNo);

    /**
     * 通过批次号和手机号查询message
     * @param batchNo
     * @param mobile
     * @return
     */
    MNSMessage getByBatchNoAndPhone(String batchNo, String mobile);

    /**
     * 根据渠道响应查询
     * @param channelMsgId
     * @param mobile
     * @return
     */
    MNSMessage getByChannelMsgId(String channelMsgId, String mobile);

    /**
     * 更新批量消息渠道消息
     * @param channelCode
     * @param channelName
     * @param batchNo
     * @return
     */
    boolean updateBatchMessageChannelInfo(String channelCode, String channelName, String batchNo);

    /**
     * 更新所有批量消息失败
     * @param errorMsg
     * @param batchNo
     * @return
     */
    boolean updateAllBatchMessageFail(String errorMsg, String batchNo);

    /**
     * 更新消息状态和备注
     * @param id
     * @param status
     * @param remark
     * @return
     */
    boolean updateStatusAndRemarkById(Long id, String status, String remark);
}
