package com.m2pool.lease.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.*;

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

/**
 * <p>
 * 用户拥有商品详情表
 * </p>
 *
 * @author yyb
 * @since 2025-07-23
 */
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class LeaseUserOwnedProduct implements Serializable {

    private static final long serialVersionUID=1L;

    /**
     * ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 用户ID(暂时使用租赁者钱包地址)
     */
    private String userId;

    private Long orderId;


    /**
     * 挖矿机器 对应的矿工账号
     */
    private String user;

    /**
     * 挖矿机器编号
     */
    private String miner;


    /**
     * 商品对应的机器id
     */
    private Long productMachineId;

    /**
     * 订单明细 ID，关联订单中的购买记录
     */
    private Long orderItemId;



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

    /**
     * 商品使用结束时间
     */
    private LocalDateTime endTime;

    /**
     * 挖矿币种 nexa rxd dgbo dgbq dgbs alph enx grs mona
     */
    private String coin;

    /**
     * 购买算力的量，当 type 为 1 时有效
     */
    private BigDecimal purchasedComputingPower;


    /**
     * 预估商品结束时的总收益 单位币种
     */
    private BigDecimal estimatedEndIncome;


    /**
     * 预估商品结束时的总收益 单位usdt
     */
    private BigDecimal estimatedEndUsdtIncome;

    /**
     * 当前收益（根据购买机器到现在的平均算力计算得到） 单位币种
     */
    private BigDecimal currentIncome;


    /**
     * 当前收益（根据购买机器到现在的平均算力计算得到）单位usdt
     */
    private BigDecimal currentUsdtIncome;

    private BigDecimal settleIncome ;

    private BigDecimal settleUsdtIncome ;

    /**
     * 商品状态，0 表示运行中，1 表示已过期
     */
    private Integer status;

    /**
     * 商品类型，0 表示挖矿机器，1 表示算力套餐
     */
    private Integer type;

    /**
     * 卖方钱包地址
     */
    private String address;

    /**
     * 购买时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 逻辑删除字段
     */
    private Boolean del;


}
