package com.fs.qw.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.fs.qw.domain.QwSopSmsLogs;

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

/**
 * 润天发送短信日志Service接口
 *
 * @author fs
 * @date 2026-03-02
 */
public interface IQwSopSmsLogsService extends IService<QwSopSmsLogs>{
    /**
     * 查询润天发送短信日志
     *
     * @param id 润天发送短信日志主键
     * @return 润天发送短信日志
     *
     */
    QwSopSmsLogs selectQwSopSmsLogsById(Long id);

    /**
     * 查询润天发送短信日志列表
     *
     * @param qwSopSmsLogs 润天发送短信日志
     * @return 润天发送短信日志集合
     *
     */
    List<QwSopSmsLogs> selectQwSopSmsLogsList(QwSopSmsLogs qwSopSmsLogs);

    /**
     * 新增润天发送短信日志
     *
     * @param qwSopSmsLogs 润天发送短信日志
     * @return 结果
     */
    int insertQwSopSmsLogs(QwSopSmsLogs qwSopSmsLogs);

    /**
     * 修改润天发送短信日志
     *
     * @param qwSopSmsLogs 润天发送短信日志
     * @return 结果
     */
    int updateQwSopSmsLogs(QwSopSmsLogs qwSopSmsLogs);

    /**
     * 批量删除润天发送短信日志
     *
     * @param ids 需要删除的润天发送短信日志主键集合
     * @return 结果
     */
    int deleteQwSopSmsLogsByIds(Long[] ids);

    /**
     * 删除润天发送短信日志信息
     *
     * @param id 润天发送短信日志主键
     * @return 结果
     */
    int deleteQwSopSmsLogsById(Long id);

    /**
     * 分页查询待发送短信（游标分页），用于海量数据避免 OOM
     *
     * @param serverIds   ipad信息
     * @param status    状态（0未发送）
     * @param endTime   结束时间
     * @param lastId    上一页最后一条 id，首次传 0
     * @param pageSize  每页条数
     * @return 本页记录
     */
    List<QwSopSmsLogs> selectPendingSmsByGroupAndTimePage(List<Long> serverIds, String status,Date endTime, Long lastId, int pageSize);

    /**
     * 批量更新状态（内部分批 IN，支持海量 id）
     *
     * @param ids    主键集合
     * @param status 状态（1发送中 2成功 3失败）
     * @return 更新行数
     */
    int updateStatusByIds(List<Long> ids, String status);

    /**
     * 根据主键 id 和 index 查询一条记录
     *
     * @param id    主键
     * @param index 下标
     * @return 润天发送短信日志，不存在返回 null
     */
    List<QwSopSmsLogs> selectQwSopSmsLogsByIdAndIndex(Long id, Long index);


    /**
     * 修改润天发送短信日志
     *
     * @param qwSopSmsLogs 润天发送短信日志
     * @return 结果
     */
    int updateSmsNotifyInfo(QwSopSmsLogs qwSopSmsLogs);



    void batchInsertQwSopSmsLogsOneTouch(List<QwSopSmsLogs> logsToInsert);
}
