package com.ycwl.basic.model.snowFlake;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serial;
import java.io.Serializable;

/**
 * @author Created by liuhongguang on 2019年10月27日
 * @Description
 */
@NoArgsConstructor
@AllArgsConstructor
@Data
public class UniqueId implements Serializable {

    /**
     * 0     +   41       +   5             +       5           +       12
     * 固定  +  时间戳    +   工作机器ID     +     数据中心ID    +      序列号
     */

    @Serial
    private static final long serialVersionUID = 8632670752020316524L;

    /**
     * 工作机器ID、数据中心ID、序列号、上次生成ID的时间戳
     */
    @ApiModelProperty(value = "机器ID")
    private long machineId;

    @ApiModelProperty(value = "数据中心ID")
    private long datacenterId;

    @ApiModelProperty(value = "毫秒内序列")
    private long sequence;

    @ApiModelProperty(value = "时间戳")
    private long timestamp;

    @Override
    public String toString() {
        return "UniqueIdRespVo{" +
                "服务机器ID=" + machineId +
                ", 数据中心ID=" + datacenterId +
                ", 毫秒内的序列=" + sequence +
                ", 生成时间与预设时间戳间隔=" + timestamp +
                '}';
    }
}
