package com.fuyuanshen.global.mqtt.listener.domain;

import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

/**
 * 功能访问状态对象
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class FunctionAccessResult {
    
    /**
     * 状态码
     */
    private String status;
    
    /**
     * 消息描述
     */
    private String message;
    
    /**
     * 时间戳
     */
    private Long timestamp;
    
    /**
     * 设备IMEI（可选）
     */
    private String deviceImei;
    
    /**
     * 批次ID（可选）
     */
    private String batchId;
    
    public FunctionAccessResult(String status, String message) {
        this.status = status;
        this.message = message;
        this.timestamp = System.currentTimeMillis();
    }
    
    /**
     * 创建失败状态对象
     * @param message 消息
     * @return FunctionAccessResult
     */
    public static FunctionAccessResult failed(String message) {
        return new FunctionAccessResult("FAILED", message);
    }
    
    /**
     * 创建成功状态对象
     * @param message 消息
     * @return FunctionAccessResult
     */
    public static FunctionAccessResult ok(String message) {
        return new FunctionAccessResult("OK", message);
    }
    
    /**
     * 创建超时状态对象
     * @param message 消息
     * @return FunctionAccessResult
     */
    public static FunctionAccessResult timeout(String message) {
        return new FunctionAccessResult("TIMEOUT", message);
    }
    
    /**
     * 判断是否为失败状态
     * @return boolean
     */
    public boolean isFailed() {
        return "FAILED".equals(this.status);
    }
    
    /**
     * 判断是否为成功状态
     * @return boolean
     */
    public boolean isOk() {
        return "OK".equals(this.status);
    }
    
    /**
     * 判断是否为超时状态
     * @return boolean
     */
    public boolean isTimeout() {
        return "TIMEOUT".equals(this.status);
    }
}
