package com.erp.product.sku.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 平台SKU实体（第三方平台商品）
 */
@Data
@TableName("platforms")
public class Platform {
    
    @TableId(type = IdType.AUTO)
    private Long id;
    
    /**
     * 店铺授权ID
     */
    private Long shopAuthId;
    
    /**
     * 平台商品ID
     */
    private String platformProductId;
    
    /**
     * 平台SKU ID
     */
    private String platformSkuId;
    
    /**
     * 商品标题
     */
    private String title;
    
    /**
     * 商品描述
     */
    private String description;
    
    /**
     * 价格
     */
    private BigDecimal price;
    
    /**
     * 原价
     */
    private BigDecimal originalPrice;
    
    /**
     * 库存
     */
    private Integer stock;
    
    /**
     * 已售数量
     */
    private Integer sold;
    
    /**
     * 图片列表（JSON）
     */
    private String images;
    
    /**
     * 规格属性（JSON）
     */
    private String specs;
    
    /**
     * 状态：on_sale在售, off_sale下架, deleted已删除
     */
    private String status;
    
    /**
     * 同步状态：pending待同步, syncing同步中, synced已同步, failed同步失败
     */
    private String syncStatus;
    
    /**
     * 最后同步时间
     */
    private LocalDateTime lastSyncAt;
    
    /**
     * 同步错误信息
     */
    private String syncError;
    
    /**
     * 创建时间
     */
    private LocalDateTime createdAt;
    
    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;
    
    /**
     * 获取状态标签
     */
    public String getStatusLabel() {
        return switch (status) {
            case "on_sale" -> "在售";
            case "off_sale" -> "下架";
            case "deleted" -> "已删除";
            default -> "未知";
        };
    }
    
    /**
     * 获取同步状态标签
     */
    public String getSyncStatusLabel() {
        return switch (syncStatus) {
            case "pending" -> "待同步";
            case "syncing" -> "同步中";
            case "synced" -> "已同步";
            case "failed" -> "同步失败";
            default -> "未知";
        };
    }
}
