package com.m2pool.lease.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

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

/**
 * <p>
 * 用户拥有商品返回对象
 * </p>
 *
 * @author yyb
 * @since 2025-07-23
 */
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value="UserOwnedProductDto", description="UserOwnedProductDto")
public class UserOwnedProductDto {

    @ApiModelProperty(value = "ID")
    private Long id;

    /**
     * 用户ID(暂时使用租赁者钱包地址)
     */
    @ApiModelProperty(value = "用户id(邮箱)")
    private String userId;

    /**
     * 商品对应的机器id
     */
    @ApiModelProperty(value = "商品对应的机器id")
    private Long productMachineId;

    /**
     * 订单明细 ID，关联订单中的购买记录
     */
    @ApiModelProperty(value = "订单明细 ID，关联订单中的购买记录")
    private Long orderItemId;

    /**
     * 商品开始使用时间(购买当天24点生效)
     */
    @ApiModelProperty(value = "商品开始使用时间(购买当天24点生效)")
    private LocalDateTime startTime;

    /**
     * 商品使用结束时间
     */
    @ApiModelProperty(value = "商品使用结束时间")
    private LocalDateTime endTime;

    /**
     * 购买算力的量，当 type 为 1 时有效
     */
    @ApiModelProperty(value = "购买算力的量，当 type 为 1 时有效")
    private BigDecimal purchasedComputingPower;

    /**
     * 当前实时算力
     */
    @ApiModelProperty(value = "当前实时算力:单位默认MH/S")
    private BigDecimal currentComputingPower;

    /**
     * 商品状态，0 表示运行中，1 表示已过期
     */
    @ApiModelProperty(value = "商品状态，0 表示运行中，1 表示已过期")
    private Integer status;

    /**
     * 商品类型，0 表示挖矿机器，1 表示算力套餐
     */
    @ApiModelProperty(value = "商品类型，0 表示挖矿机器，1 表示算力套餐")
    private Integer type;

    /**
     * 购买时间
     */
    @ApiModelProperty(value = "购买时间")
    private LocalDateTime createTime;


    /**
     * 预估商品结束时的总收益
     */
    @ApiModelProperty(value = "预估商品结束时的总收益")
    private BigDecimal estimatedEndIncome;


    /**
     * 预估商品结束时的总收益 单位usdt
     */
    @ApiModelProperty(value = "预估商品结束时的总收益 单位usdt")
    private BigDecimal estimatedEndUsdtIncome;
    /**
     * 当前收益（根据购买机器到现在的平均算力计算得到）
     */
    @ApiModelProperty(value = "当前收益（根据购买机器到现在的平均算力计算得到）")
    private BigDecimal currentIncome;

    /**
     * 当前收益（根据购买机器到现在的平均算力计算得到）单位usdt
     */
    @ApiModelProperty(value = "当前收益（根据购买机器到现在的平均算力计算得到）单位usdt")
    private BigDecimal currentUsdtIncome;
}
