package com.erp.platformsync.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 订单拉取配置实体
 * 支持多平台配置（淘宝/京东/拼多多/抖音）
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("order_pull_config")
public class OrderPullConfig {

    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 配置名称
     */
    private String name;

    /**
     * 平台编码：taobao/jd/pinduoduo/douyin
     */
    private String platform;

    /**
     * 店铺ID
     */
    private Long shopId;

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

    /**
     * 拉取类型：all-全量拉取/increment-增量拉取
     */
    private String pullType;

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

    /**
     * Cron表达式（定时拉取时使用）
     */
    private String cronExpression;

    /**
     * 是否启用：0-禁用/1-启用
     */
    @TableField(select = false)
    private Boolean enabled;

    /**
     * 是否自动重试：0-否/1-是
     */
    private Boolean retryEnabled;

    /**
     * 最大重试次数
     */
    private Integer maxRetries;

    /**
     * 重试间隔（分钟）
     */
    private Integer retryInterval;

    /**
     * 状态：RUNNING/STOPPED/ERROR
     */
    private String status;

    /**
     * 上次拉取时间
     */
    private LocalDateTime lastPullTime;

    /**
     * 下次拉取时间
     */
    private LocalDateTime nextPullTime;

    /**
     * 上次成功拉取时间
     */
    private LocalDateTime lastSuccessTime;

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

    /**
     * 租户ID
     */
    private String tenantId;

    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    @TableField(fill = FieldFill.INSERT)
    private String createdBy;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updatedBy;

    @TableLogic
    private LocalDateTime deletedAt;
}
