package com.m2pool.lease.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * <p>
 * 商品表对应的物品机器表
 * </p>
 *
 * @author yyb
 * @since 2025-07-23
 */
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class LeaseProductMachine implements Serializable {

    private static final long serialVersionUID=1L;

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


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

    /**
     * 商品 ID
     */
    private Long productId;

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

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

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

    /**
     * 单机理论收入(每日)
     */
    private BigDecimal theoryIncome;

    /**
     * 单机预估实际收入(每日)
     */
    //private BigDecimal actualIncome;

    /**
     * 矿机型号
     */
    private String type;

    /**
     * 实际价格单价
     */
    private BigDecimal price;

    /**
     * 算力大小（计算得到，商家不能够自己添加和修改）
     */
    private BigDecimal computingPower;

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

    /**
     * 售出状态 0未售出 1已售出 2售出中
     */
    private Integer saleState;

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

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

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


    /**
     * 商品机器单机理论算力（卖方手动填写）
     */
    private BigDecimal  theoryPower;

    /**
     * 商品机器单机算力单位
     */
    private String  unit;


    /**
     * 功耗 单位kw/h
     */
    private BigDecimal powerDissipation;

    /**
     * 默认价格$ [ 功耗 * 电费 * 24 * (1 + 收益率) ]
     */
    private BigDecimal  cost;


    /**
     * 电费 单位 $/度
     */
    //private BigDecimal electricityBill;

    /**
     * 收益率 单位 %
     */
    private BigDecimal incomeRate;

    private Integer maxLeaseDays;

    @TableField(exist = false)
    private Integer updateCount;
}
