package com.yolo.keyboard.dal.dataobject.productitems;

import com.yolo.keyboard.framework.tenant.core.aop.TenantIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.yolo.keyboard.framework.mybatis.core.dataobject.BaseDO;

/**
 * 内购商品 DO
 *
 * @author ziin
 */
@TableName("keyboard_product_items")
@KeySequence("keyboard_product_items_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TenantIgnore
public class KeyboardProductItemsDO{

    /**
     * 主键，自增，唯一标识每个产品项
     */
    @TableId
    private Long id;
    /**
     * 产品标识符，唯一标识每个产品（如 com.loveKey.nyx.2month）
     */
    private String productId;
    /**
     * 产品类型，区分订阅（subscription）和内购（in-app-purchase）
     */
    private String type;
    /**
     * 产品名称（如 100, 2）
     */
    private String name;
    /**
     * 产品单位（如 金币，个月）
     */
    private String unit;
    /**
     * 订阅时长的数值部分（如 2）
     */
    private Integer durationValue;
    /**
     * 订阅时长的单位部分（如 月，天）
     */
    private String durationUnit;
    /**
     * 产品价格
     */
    private BigDecimal price;
    /**
     * 产品的货币单位，如美元（$）
     */
    private String currency;
    /**
     * 产品的描述，提供更多细节信息
     */
    private String description;
    /**
     * 产品项的创建时间，默认当前时间
     */
    private LocalDateTime createdAt;
    /**
     * 产品项的最后更新时间，更新时自动设置为当前时间
     */
    private LocalDateTime updatedAt;
    /**
     * 订阅时长的具体天数
     */
    private Integer durationDays;
    /**
     * 订阅等级
     */
    private Integer level;

    private String platform;
}