package com.lesingle.modules.leai.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lesingle.modules.leai.entity.LeaiWebhookEvent;

import java.util.List;

/**
 * 乐读派 Webhook 事件 Service 接口
 */
public interface ILeaiWebhookEventService extends IService<LeaiWebhookEvent> {

    /**
     * 检查事件是否已存在（幂等去重）
     *
     * @param eventId 事件唯一ID
     * @return true-已存在（重复事件）
     */
    boolean existsByEventId(String eventId);

    /**
     * 保存 Webhook 事件记录（兼容旧接口，默认处理成功）
     */
    void saveEvent(String eventId, String eventType, String remoteWorkId, Object payload);

    /**
     * 保存 Webhook 事件记录（含处理状态）
     *
     * @param eventId       事件唯一ID
     * @param eventType     事件类型
     * @param remoteWorkId  乐读派作品ID
     * @param payload       事件载荷
     * @param success       是否处理成功
     * @param errorMsg      失败原因（成功时为 null）
     */
    void saveEvent(String eventId, String eventType, String remoteWorkId, Object payload, boolean success, String errorMsg);

    /**
     * 查询需要重试的失败事件（处理状态为失败，且重试次数未达上限）
     *
     * @param maxRetryCount 最大重试次数
     * @param limit         查询条数
     * @return 失败事件列表
     */
    List<LeaiWebhookEvent> findFailedEvents(int maxRetryCount, int limit);
}
