package com.ruoyi.jarvis.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 闲管家订单：MQ 主题、定时拉单与自动发货调度
 */
@Data
@Component
@ConfigurationProperties(prefix = "jarvis.goofish-order")
public class JarvisGoofishProperties {

    /** RocketMQ Topic（需配置 rocketmq.name-server 后生效） */
    private String mqTopic = "jarvis-goofish-erp-order";

    private String consumerGroup = "jarvis-goofish-order-consumer";

    /** 回溯拉单小时数（定时/增量） */
    private int pullLookbackHours = 72;

    /** 拉单定时 cron */
    private String pullCron = "0 * * * * ?";

    /** 同步运单 + 自动发货 cron */
    private String autoShipCron = "0 2/10 * * * ?";

    /**
     * 订单列表 page_size（开放平台最大 100）
     */
    private int pullPageSize = 100;

    /**
     * 单次拉单每授权最大页数（开放平台 page_no 最大 100；page_no×page_size 勿超过 10000）
     */
    private int pullMaxPagesPerShop = 100;

    /**
     * 全量/长历史拉单时，按 update_time 切片的窗口长度（秒），避免单窗内订单量过大触发平台限制
     */
    private int pullTimeChunkSeconds = 604800;

    /**
     * 订单列表单次请求中 update_time 区间最大跨度（秒）。开放平台返回「只能查询时间范围6个月内的数据」时须≤此值；默认约 180 天留余量
     */
    private int pullMaxUpdateTimeRangeSeconds = 15552000;

    /**
     * 全量拉单从「当前时间」往前推多少天作为起点（仅 full 接口；可自行改大）
     */
    private int pullFullHistoryDays = 1095;

    private int autoShipBatchSize = 20;

    /**
     * 允许触发闲鱼开放平台「发货」的本地 order_status（逗号分隔，与推送/列表一致）。默认 12 通常表示待发货。
     */
    private String autoShipOrderStatuses = "12";

    /**
     * 为 true 时定时/增量列表拉单仅按 {@link #autoShipOrderStatuses} 过滤（减少调用量，但会漏掉其它状态）。
     * 默认 false：按时间窗拉全状态，与本地 upsert 对齐，推送仍可用于更低延迟。
     */
    private boolean pullListOnlyAutoShipStatuses = false;

    /**
     * 未在 erp_open_config 配置 express_code 时，自动发货使用的默认快递公司编码（官方列表中日日顺多为 rrs）。
     */
    private String defaultShipExpressCode = "rrs";

    /** 与 defaultShipExpressCode 配套的展示名称 */
    private String defaultShipExpressName = "日日顺";
}
