package com.erp.platformsync.adapter;

import com.erp.platformsync.dto.PullOrdersResponse;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 平台API适配器接口
 * 定义各平台订单拉取和状态同步的标准操作
 */
public interface PlatformAdapter {

    /**
     * 获取平台编码
     */
    String getPlatformCode();

    /**
     * 获取平台名称
     */
    String getPlatformName();

    /**
     * 拉取订单列表
     *
     * @param shopId     店铺ID
     * @param pullType   拉取类型：new/modified/all
     * @param orderIds   指定订单ID列表（可选，用于单订单查询）
     * @param startTime  开始时间
     * @param endTime    结束时间
     * @return 订单列表
     */
    List<PullOrdersResponse.PullOrderItem> pullOrders(Long shopId, String pullType,
                                                      String orderIds, LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 同步订单状态到平台
     *
     * @param platformOrderSn 平台订单号
     * @param syncStatus     同步状态
     * @param expressCompany  快递公司
     * @param expressNo      快递单号
     * @return 是否成功
     */
    boolean syncOrderToPlatform(String platformOrderSn, String syncStatus,
                                 String expressCompany, String expressNo);

    /**
     * 检查适配器是否已配置（API密钥等）
     */
    boolean isConfigured();
}
