package com.erp.platformsync.dto.orderpull;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 订单拉取配置保存请求
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderPullConfigRequest {

    /**
     * 配置ID（更新时必填）
     */
    private Long id;

    /**
     * 配置名称
     */
    @NotBlank(message = "配置名称不能为空")
    private String name;

    /**
     * 平台编码
     */
    @NotBlank(message = "平台编码不能为空")
    private String platform;

    /**
     * 店铺ID
     */
    @NotNull(message = "店铺ID不能为空")
    private Long shopId;

    /**
     * 店铺名称
     */
    private String shopName;

    /**
     * 拉取类型：all/increment
     */
    @NotBlank(message = "拉取类型不能为空")
    private String pullType;

    /**
     * 拉取间隔（分钟）
     */
    private Integer pullInterval;

    /**
     * Cron表达式
     */
    private String cronExpression;

    /**
     * 是否启用
     */
    @Builder.Default
    private Boolean enabled = true;

    /**
     * 是否自动重试
     */
    @Builder.Default
    private Boolean retryEnabled = true;

    /**
     * 最大重试次数
     */
    @Builder.Default
    private Integer maxRetries = 3;

    /**
     * 重试间隔（分钟）
     */
    @Builder.Default
    private Integer retryInterval = 5;

    /**
     * 备注
     */
    private String remark;
}
