import com.alibaba.fastjson.JSON;
import com.mengxuegu.blog.util.enums.ResultEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.Serializable;
/**
* 用于封装接口统一响应结果
*/
@Data
@NoArgsConstructor // 无参构造方法
@AllArgsConstructor // 有参构造方法
public final class Result implements Serializable {
private static final Logger logger = LoggerFactory.getLogger(Result.class);
private static final long serialVersionUID = 1L;
/**
* 响应业务状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应中的数据
*/
private Object data;
public static Result ok() {
return new Result(ResultEnum.SUCCESS.getCode(), ResultEnum.SUCCESS.getDesc(), null);
}
public static Result ok(Object data) {
return new Result(ResultEnum.SUCCESS.getCode(), ResultEnum.SUCCESS.getDesc(), data);
}
public static Result ok(String message, Object data) {
return new Result(ResultEnum.SUCCESS.getCode(), message, data);
}
public static Result error(String message) {
logger.debug("返回错误:code={}, message={}", ResultEnum.ERROR.getCode(), message);
return new Result(ResultEnum.ERROR.getCode(), message, null);
}
public static Result build(int code, String message) {
logger.debug("返回结果:code={}, message={}", code, message);
return new Result(code, message, null);
}
public static Result build(ResultEnum resultEnum) {
logger.debug("返回结果:code={}, message={}", resultEnum.getCode(), resultEnum.getDesc());
return new Result(resultEnum.getCode(), resultEnum.getDesc(), null);
}
public String toJsonString() {
return JSON .toJSONString(this);
}
}
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ResultEnum {
SUCCESS(20000, "成功"),
ERROR(999, "错误"),
UNAUTHENTICATED(401, "请先通过身份认证"), AUTH_FAIL(1400, "认证失败"),
// token异常
TOKEN_PAST(1401, "身份过期,请求重新登录!"), TOKEN_ERROR(1402, "令牌错误"),
HEADEA_ERROR(1403, "请求头错误"),
AUTH_USERNAME_NONE(1405, "用户名不能为空"), AUTH_PASSWORD_NONE(1406, "密码不能为空"),
MENU_NO(306, "没此权限,请联系管理员!");
private Integer code;
private String desc;
}