package com.m2pool.lease.entity;

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

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

/**
 * <p>
 * gpu类型出售矿机表
 * </p>
 *
 * @author yyb
 * @since 2025-11-21
 */
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class LeaseMachine implements Serializable {

    private static final long serialVersionUID=1L;

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

    /**
     * 商铺ID
     */
    private Long shopId;

    /**
     * gpu 挖矿主机mac矿机编号
     */
    private String hostMac;

    /**
     * 0 ASIC 1 GPU
     */
    private Boolean type;



    /**
     * 矿机最大租售天数
     */
    private Integer maxLeaseDays;



    /**
     * 售出状态 0未售出 1已售出
     */
    private Boolean saleState;

    /**
     * 上下架状态，0 上架，1 下架
     */
    private Boolean state;

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

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

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

    /**
     * 矿机客户端在离线情况 0 离线 1 在线
     */
    private Boolean onlineStatus;

    /**
     * 挖矿机器 对应的矿工账号(mac地址代替)
     */
    private String user;

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

    /**
     * asci 类型矿机租售的台数
     */
    private Integer saleNumbers;

    /**
     * asci 类型矿机已租售的台数
     */
    private Integer saleOutNumbers;

    /**
     * asci 类型矿机可租售的台数
     */
    private Integer canSaleNumbers;

    /**
     * asci 类型矿机已锁定的台数 乐观锁
     */
    @TableField(exist = false)
    private Integer lockNumbers;

}
