package com.example.demo.model.dto;
import java.time.LocalDateTime;
import java.util.Map;
/**
* 统一 API 响应封装。
*
* 所有接口返回的统一数据格式,包含状态码、消息、时间戳和具体数据。
*
*
* @param 数据类型
*/
public class ApiResponse {
/** 状态码,200 表示成功 */
private int code;
/** 提示消息 */
private String message;
/** 返回数据 */
private T data;
/** 响应时间戳 */
private LocalDateTime timestamp;
private ApiResponse() {
this.timestamp = LocalDateTime.now();
}
/**
* 创建成功响应。
*
* @param data 数据对象
* @param 数据类型
* @return 成功响应实例
*/
public static ApiResponse success(T data) {
ApiResponse resp = new ApiResponse<>();
resp.code = 200;
resp.message = "success";
resp.data = data;
return resp;
}
/**
* 创建成功响应(自定义消息)。
*
* @param message 自定义消息
* @param data 数据对象
* @param 数据类型
* @return 成功响应实例
*/
public static ApiResponse success(String message, T data) {
ApiResponse resp = new ApiResponse<>();
resp.code = 200;
resp.message = message;
resp.data = data;
return resp;
}
/**
* 创建失败响应。
*
* @param code 错误码
* @param message 错误消息
* @param 数据类型
* @return 失败响应实例
*/
public static ApiResponse error(int code, String message) {
ApiResponse resp = new ApiResponse<>();
resp.code = code;
resp.message = message;
resp.data = null;
return resp;
}
// ---------- Getters ----------
public int getCode() { return code; }
public String getMessage() { return message; }
public T getData() { return data; }
public LocalDateTime getTimestamp() { return timestamp; }
}