package com.qf.myafterprojecy.config; import lombok.Data; import org.springframework.http.HttpStatus; /** * 通用响应消息类,用于封装接口返回的数据结构 * 遵循RESTful API设计规范,提供统一的响应格式 * @param 数据类型,可以是任意Java对象 */ @Data public class ResponseMessage { // 状态码,通常用于表示请求的处理结果 private Integer code; // 响应消息,用于描述请求的处理结果信息 private String message; // 请求是否成功的标志,根据状态码自动设置 private boolean success; // 响应数据,泛型类型,支持不同类型的数据 private T data; /** * 构造方法,用于创建响应消息对象 * 自动根据状态码设置success字段 * @param code 状态码 * @param message 响应消息 * @param data 响应数据 */ public ResponseMessage(Integer code, String message, T data) { this.code = code; this.message = message; this.data = data; // 自动根据状态码判断是否成功 this.success = code >= 200 && code < 300; } /** * 完整参数的构造方法 * @param code 状态码 * @param message 响应消息 * @param data 响应数据 * @param success 是否成功 */ public ResponseMessage(Integer code, String message, T data, boolean success) { this.code = code; this.message = message; this.data = data; this.success = success; } // ----------------------------------- 成功响应方法 ----------------------------------- /** * 创建成功响应,默认消息为"操作成功" * @param data 响应数据 * @param 数据类型 * @return 成功响应对象 */ public static ResponseMessage success(T data) { return new ResponseMessage<>(HttpStatus.OK.value(), "操作成功", data, true); } /** * 创建成功响应,自定义消息 * @param data 响应数据 * @param message 响应消息 * @param 数据类型 * @return 成功响应对象 */ public static ResponseMessage success(T data, String message) { return new ResponseMessage<>(HttpStatus.OK.value(), message, data, true); } /** * 创建成功响应,自定义状态码 * @param code 状态码 * @param message 响应消息 * @param data 响应数据 * @param 数据类型 * @return 成功响应对象 */ public static ResponseMessage successWithCode(Integer code, String message, T data) { return new ResponseMessage<>(code, message, data, true); } /** * 创建空数据的成功响应 * @param message 响应消息 * @param 数据类型 * @return 成功响应对象 */ public static ResponseMessage successEmpty(String message) { return new ResponseMessage<>(HttpStatus.OK.value(), message, null, true); } // ----------------------------------- 错误响应方法 ----------------------------------- /** * 创建错误响应,默认状态码500 * @param message 错误消息 * @param 数据类型 * @return 错误响应对象 */ public static ResponseMessage error(String message) { return new ResponseMessage<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), message, null, false); } /** * 创建错误响应,自定义状态码 * @param code 状态码 * @param message 错误消息 * @param 数据类型 * @return 错误响应对象 */ public static ResponseMessage error(Integer code, String message) { return new ResponseMessage<>(code, message, null, false); } /** * 创建错误响应,包含错误数据 * @param code 状态码 * @param message 错误消息 * @param data 错误数据 * @param 数据类型 * @return 错误响应对象 */ public static ResponseMessage errorWithData(Integer code, String message, T data) { return new ResponseMessage<>(code, message, data, false); } /** * 创建参数错误响应,状态码400 * @param message 错误消息 * @param 数据类型 * @return 错误响应对象 */ public static ResponseMessage badRequest(String message) { return new ResponseMessage<>(HttpStatus.BAD_REQUEST.value(), message, null, false); } /** * 创建未找到资源响应,状态码404 * @param message 错误消息 * @param 数据类型 * @return 错误响应对象 */ public static ResponseMessage notFound(String message) { return new ResponseMessage<>(HttpStatus.NOT_FOUND.value(), message, null, false); } /** * 创建权限错误响应,状态码403 * @param message 错误消息 * @param 数据类型 * @return 错误响应对象 */ public static ResponseMessage forbidden(String message) { return new ResponseMessage<>(HttpStatus.FORBIDDEN.value(), message, null, false); } // ----------------------------------- 业务操作响应方法 ----------------------------------- /** * 创建保存操作响应 * @param success 是否成功 * @param data 响应数据 * @param 数据类型 * @return 操作响应对象 */ public static ResponseMessage save(boolean success, T data) { return success ? new ResponseMessage<>(HttpStatus.OK.value(), "保存成功", data, true) : new ResponseMessage<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), "保存失败", null, false); } /** * 创建更新操作响应 * @param success 是否成功 * @param data 响应数据 * @param 数据类型 * @return 操作响应对象 */ public static ResponseMessage update(boolean success, T data) { return success ? new ResponseMessage<>(HttpStatus.OK.value(), "更新成功", data, true) : new ResponseMessage<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), "更新失败", null, false); } /** * 创建删除操作响应 * @param success 是否成功 * @param 数据类型 * @return 操作响应对象 */ public static ResponseMessage delete(boolean success) { return success ? new ResponseMessage<>(HttpStatus.OK.value(), "删除成功", null, true) : new ResponseMessage<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), "删除失败", null, false); } /** * 创建批量删除操作响应 * @param success 是否成功 * @param deletedCount 删除的数量 * @param 数据类型 * @return 操作响应对象 */ public static ResponseMessage batchDelete(boolean success, int deletedCount) { return success ? new ResponseMessage<>(HttpStatus.OK.value(), "成功删除" + deletedCount + "条数据", null, true) : new ResponseMessage<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), "批量删除失败", null, false); } /** * 创建分页查询响应 * @param data 分页数据 * @param message 响应消息 * @param 数据类型 * @return 分页响应对象 */ public static ResponseMessage page(T data, String message) { return new ResponseMessage<>(HttpStatus.OK.value(), message, data, true); } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public boolean isSuccess() { return success; } public void setSuccess(boolean success) { this.success = success; } public T getData() { return data; } public void setData(T data) { this.data = data; } }