package com.ruoyi.jarvis.service;

import com.ruoyi.jarvis.domain.BatchPublishTask;
import com.ruoyi.jarvis.domain.BatchPublishItem;
import com.ruoyi.jarvis.domain.request.BatchPublishRequest;
import com.ruoyi.jarvis.domain.request.ParseLineReportRequest;

import java.util.List;
import java.util.Map;

/**
 * 批量发品Service接口
 * 
 * @author ruoyi
 * @date 2025-01-10
 */
public interface IBatchPublishService 
{
    /**
     * 解析线报消息，提取商品列表
     * 
     * @param request 解析请求
     * @return 商品列表
     */
    List<Map<String, Object>> parseLineReport(ParseLineReportRequest request);

    /**
     * 批量发品（支持多账号、多商品）
     * 
     * @param request 批量发品请求
     * @return 任务ID
     */
    Long batchPublish(BatchPublishRequest request);

    /**
     * 查询批量发品任务
     * 
     * @param taskId 任务ID
     * @return 任务信息
     */
    BatchPublishTask getTaskById(Long taskId);

    /**
     * 查询批量发品明细列表
     * 
     * @param taskId 任务ID
     * @return 明细列表
     */
    List<BatchPublishItem> getItemsByTaskId(Long taskId);

    /**
     * 查询批量发品任务列表
     * 
     * @param task 任务查询条件
     * @return 任务列表
     */
    List<BatchPublishTask> selectTaskList(BatchPublishTask task);

    /**
     * 延迟上架商品
     * 
     * @param itemId 明细ID
     * @param delaySeconds 延迟秒数
     */
    void schedulePublish(Long itemId, Integer delaySeconds);

    /**
     * 重新调度执行某个任务的未完成明细
     * @param taskId 任务ID
     */
    void retryTask(Long taskId);
}

