package com.yolo.keyboard.controller.admin.productitems.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import cn.idev.excel.annotation.*;

@Schema(description = "管理后台 - 内购商品 Response VO")
@Data
@ExcelIgnoreUnannotated
public class KeyboardProductItemsRespVO {

    @Schema(description = "主键，自增，唯一标识每个产品项", requiredMode = Schema.RequiredMode.REQUIRED, example = "7855")
    @ExcelProperty("主键，自增，唯一标识每个产品项")
    private Long id;

    @Schema(description = "产品标识符，唯一标识每个产品（如 com.loveKey.nyx.2month）", requiredMode = Schema.RequiredMode.REQUIRED, example = "15153")
    @ExcelProperty("产品标识符，唯一标识每个产品（如 com.loveKey.nyx.2month）")
    private String productId;

    @Schema(description = "产品类型，区分订阅（subscription）和内购（in-app-purchase）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("产品类型，区分订阅（subscription）和内购（in-app-purchase）")
    private String type;

    @Schema(description = "产品名称（如 100, 2）", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @ExcelProperty("产品名称（如 100, 2）")
    private String name;

    @Schema(description = "产品单位（如 金币，个月）")
    @ExcelProperty("产品单位（如 金币，个月）")
    private String unit;

    @Schema(description = "订阅时长的数值部分（如 2）")
    @ExcelProperty("订阅时长的数值部分（如 2）")
    private Integer durationValue;

    @Schema(description = "订阅时长的单位部分（如 月，天）")
    @ExcelProperty("订阅时长的单位部分（如 月，天）")
    private String durationUnit;

    @Schema(description = "产品价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "25376")
    @ExcelProperty("产品价格")
    private BigDecimal price;

    @Schema(description = "产品的货币单位，如美元（$）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("产品的货币单位，如美元（$）")
    private String currency;

    @Schema(description = "产品的描述，提供更多细节信息", example = "你说的对")
    @ExcelProperty("产品的描述，提供更多细节信息")
    private String description;

    @Schema(description = "产品项的创建时间，默认当前时间")
    @ExcelProperty("产品项的创建时间，默认当前时间")
    private LocalDateTime createdAt;

    @Schema(description = "产品项的最后更新时间，更新时自动设置为当前时间")
    @ExcelProperty("产品项的最后更新时间，更新时自动设置为当前时间")
    private LocalDateTime updatedAt;

    @Schema(description = "订阅时长的具体天数", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("订阅时长的具体天数")
    private Integer durationDays;

    @Schema(description = "订阅等级")
    private Integer level;

    @Schema(description = "平台")
    private String platform;
}