package com.vci.starter.web.pagemodel;
|
|
import com.vci.starter.web.constant.PltWebConstant;
|
import com.vci.starter.web.enumpck.ResultCodeEnum;
|
import org.apache.commons.lang3.StringUtils;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.util.Arrays;
|
import java.util.Collection;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 统一的数据返回对象,保证feign、restTemplate或者其他rest请求客户端可以统一处理
|
* @author weidy
|
* @date 2019/12/3 6:57 PM
|
*/
|
public class BaseResult<T> implements java.io.Serializable{
|
|
/**
|
* 禁止修改这个值
|
*/
|
private static final long serialVersionUID = 4746146117790499683L;
|
|
/**
|
* 是否成功
|
*/
|
private boolean success = false;
|
|
/**
|
* 提示信息
|
*/
|
private String msg = "";
|
|
/**
|
* 提示消息多语
|
*/
|
private Object[] msgObjs;
|
|
/**
|
* 包含数据对象
|
*/
|
private T obj = null;
|
|
/**
|
* 业务编码
|
*/
|
private int code = ResultCodeEnum.FAIL.code;
|
|
/**
|
* 链路的ID,用于追查错误信息
|
*/
|
private String traceId;
|
|
/**
|
* 请求链路的ID,不是日志的链路,可以用于控制幂等性
|
*/
|
private String requestTraceId;
|
|
/**
|
* 异常的类名称
|
*/
|
private String exceptionClassName;
|
|
/**
|
* 异常的编号
|
*/
|
private String exceptionCode;
|
|
/**
|
* 异常的错误对象
|
*/
|
private Object[] exceptionObjs;
|
|
/**
|
* 完成时间
|
*/
|
private long finishTime;
|
|
/**
|
* 列表总数,extjs和easyui使用total,layui使用count,这里统一为total,layui可以在table.js里修改源码,
|
*/
|
private long total = 0;
|
|
/**
|
* 数据,easyui使用的rows, extjs和layui默认为data;easyui也可以修改为data,因此均使用data
|
*/
|
private Collection<T> data;
|
|
/**
|
* 树的数据
|
*/
|
private Collection<BaseTree> treeData;
|
|
public Object[] getMsgObjs() {
|
return msgObjs;
|
}
|
|
public void setMsgObjs(Object[] msgObjs) {
|
this.msgObjs = msgObjs;
|
}
|
|
public boolean isSuccess() {
|
return success;
|
}
|
|
public void setSuccess(boolean success) {
|
this.success = success;
|
}
|
|
public String getMsg() {
|
return msg;
|
}
|
|
public void setMsg(String msg) {
|
this.msg = msg;
|
}
|
|
public T getObj() {
|
return obj;
|
}
|
|
public void setObj(T obj) {
|
this.obj = obj;
|
}
|
|
public int getCode() {
|
return code;
|
}
|
|
public void setCode(int code) {
|
this.code = code;
|
}
|
|
public String getTraceId() {
|
return traceId;
|
}
|
|
public void setTraceId(String traceId) {
|
this.traceId = traceId;
|
}
|
|
public String getRequestTraceId() {
|
return requestTraceId;
|
}
|
|
public void setRequestTraceId(String requestTraceId) {
|
this.requestTraceId = requestTraceId;
|
}
|
|
public String getExceptionClassName() {
|
return exceptionClassName;
|
}
|
|
public void setExceptionClassName(String exceptionClassName) {
|
this.exceptionClassName = exceptionClassName;
|
}
|
|
public String getExceptionCode() {
|
return exceptionCode;
|
}
|
|
public void setExceptionCode(String exceptionCode) {
|
this.exceptionCode = exceptionCode;
|
}
|
|
public Object[] getExceptionObjs() {
|
return exceptionObjs;
|
}
|
|
public void setExceptionObjs(Object[] exceptionObjs) {
|
this.exceptionObjs = exceptionObjs;
|
}
|
|
public long getFinishTime() {
|
return finishTime;
|
}
|
|
public void setFinishTime(long finishTime) {
|
this.finishTime = finishTime;
|
}
|
|
public long getTotal() {
|
return total;
|
}
|
|
public void setTotal(long total) {
|
this.total = total;
|
}
|
|
public Collection<T> getData() {
|
return data;
|
}
|
|
public void setData(Collection<T> data) {
|
this.data = data;
|
}
|
|
public Collection<BaseTree> getTreeData() {
|
return treeData;
|
}
|
|
public void setTreeData(Collection<BaseTree> treeData) {
|
this.treeData = treeData;
|
}
|
|
/**
|
* 成功,没有任何返回信息
|
* @return 返回统一数据对象
|
*/
|
public static BaseResult success(){
|
return success(null);
|
}
|
|
/**
|
* 成功,有返回数据
|
* @param obj 返回的数据
|
* @param <T> 数据类型
|
* @return 返回统一数据对象
|
*/
|
public static <T> BaseResult<T> success(T obj){
|
BaseResult<T> baseResult = new BaseResult<>();
|
baseResult.setSuccess(true);
|
baseResult.setCode(ResultCodeEnum.SUCCESS.code);
|
baseResult.setObj(obj);
|
return baseResult;
|
}
|
|
/**
|
* 成功,有返回数据
|
* @param obj 返回的数据
|
* @param <T> 数据类型
|
* @param msg 提示信息
|
* @return 返回统一数据对象
|
*/
|
public static <T> BaseResult<T> success(T obj,String msg){
|
BaseResult<T> baseResult = new BaseResult<>();
|
baseResult.setSuccess(true);
|
baseResult.setCode(ResultCodeEnum.SUCCESS.code);
|
baseResult.setObj(obj);
|
baseResult.setMsg(msg);
|
return baseResult;
|
}
|
|
/**
|
* 成功,有返回数据
|
* @param obj 返回的数据
|
* @param <T> 数据类型
|
* @param msg 提示信息
|
* @param msgObjs 用于格式化消息用的对象
|
* @return 返回统一数据对象
|
*/
|
public static <T> BaseResult<T> success(T obj,String msg,Object...msgObjs){
|
BaseResult<T> baseResult = new BaseResult<>();
|
baseResult.setSuccess(true);
|
baseResult.setCode(ResultCodeEnum.SUCCESS.code);
|
baseResult.setObj(obj);
|
baseResult.setMsg(msg);
|
return baseResult;
|
}
|
|
/**
|
* 成功,而且有提示信息
|
* @param msg 提示信息
|
* @return 返回统一数据对象
|
*/
|
public static BaseResult successMsg(String msg){
|
BaseResult baseResult = new BaseResult();
|
baseResult.setSuccess(true);
|
baseResult.setCode(ResultCodeEnum.SUCCESS.code);
|
baseResult.setMsg(msg);
|
return baseResult;
|
}
|
|
/**
|
* 成功,而且有提示信息
|
* @param msg 提示信息
|
* @param msgObjs 用于格式化消息用的对象
|
* @return 返回统一数据对象
|
*/
|
public static BaseResult successMsg(String msg,Object...msgObjs){
|
BaseResult baseResult = new BaseResult();
|
baseResult.setSuccess(true);
|
baseResult.setCode(ResultCodeEnum.SUCCESS.code);
|
baseResult.setMsg(msg);
|
baseResult.setMsgObjs(msgObjs);
|
return baseResult;
|
}
|
|
/**
|
* 失败,包含错误信息
|
* @param msg 消息内容
|
* @return 返回统一数据对象
|
*/
|
public static BaseResult fail(String msg){
|
return makeResult(ResultCodeEnum.FAIL.code,msg,null);
|
}
|
|
/**
|
* 失败,包含错误信息,且包含用于格式化消息用的对象
|
* @param msg 消息内容
|
* @param msgObjs 用于格式化消息用的对象
|
* @return 返回统一数据对象
|
*/
|
public static BaseResult fail(String msg,Object...msgObjs){
|
BaseResult baseResult = makeResult(ResultCodeEnum.FAIL.code,msg,null);
|
baseResult.setMsgObjs(msgObjs);
|
return baseResult;
|
}
|
|
/**
|
* 错误,包含错误信息
|
* @param msg 错误消息
|
* @return 返回统一数据对象
|
*/
|
public static BaseResult error(String msg){
|
return makeResult(ResultCodeEnum.INTERNAL_SERVER_ERROR.code,msg,null);
|
}
|
|
/**
|
* 创建返回对象
|
* @param code 状态码
|
* @param msg 错误消息
|
* @param obj 数据对象
|
* @param <T> 数据对象的所属类型
|
* @return 统一数据对象
|
*/
|
public static <T> BaseResult<T> makeResult(int code,String msg,T obj){
|
BaseResult<T> baseResult = new BaseResult<>();
|
baseResult.setSuccess(false);
|
baseResult.setCode(code);
|
baseResult.setMsg(msg);
|
baseResult.setObj(obj);
|
return baseResult;
|
}
|
|
/**
|
* 根据列表获取统一数据对象
|
* @param dataGrid 列表数据
|
* @param <T> 列表的元素类型
|
* @return 统一数据对象
|
*/
|
public static <T> BaseResult<T> dataGrid(DataGrid<T> dataGrid){
|
BaseResult<T> baseResult = new BaseResult<>();
|
if(dataGrid ==null){
|
baseResult.setCode(ResultCodeEnum.SUCCESS.code);
|
baseResult.setSuccess(true);
|
}else{
|
if(StringUtils.isNotBlank(dataGrid.getMsg())){
|
baseResult.setCode(ResultCodeEnum.FAIL.code);
|
baseResult.setSuccess(false);
|
baseResult.setMsg(dataGrid.getMsg());
|
}else{
|
baseResult.setCode(ResultCodeEnum.SUCCESS.code);
|
baseResult.setSuccess(true);
|
baseResult.setData(dataGrid.getData());
|
baseResult.setTotal(dataGrid.getTotal());
|
}
|
}
|
return baseResult;
|
}
|
|
/**
|
* 返回list
|
*
|
* @param data 数据
|
* @param <T> T 泛型标记
|
* @return R
|
*/
|
public static <T> BaseResult<T> dataList(T data) {
|
return dataList(data, PltWebConstant.DEFAULT_SUCCESS_MESSAGE);
|
}
|
|
/**
|
* 返回list
|
*
|
* @param data 数据
|
* @param msg 消息
|
* @param <T> T 泛型标记
|
* @return R
|
*/
|
public static <T> BaseResult<T> dataList(T data, String msg) {
|
return dataList(HttpServletResponse.SC_OK, data, msg);
|
}
|
|
/**
|
* 返回list
|
*
|
* @param code 状态码
|
* @param data 数据
|
* @param msg 消息
|
* @param <T> T 泛型标记
|
* @return R
|
*/
|
public static <T> BaseResult<T> dataList(int code, T data, String msg) {
|
return new BaseResult<>(code, data, data == null ? PltWebConstant.DEFAULT_NULL_MESSAGE : msg);
|
}
|
|
private BaseResult(int code, T data, String msg) {
|
this.code = code;
|
this.data = (Collection<T>) data;
|
this.msg = msg;
|
this.success = ResultCodeEnum.SUCCESS.code == code;
|
}
|
|
public BaseResult() {
|
}
|
|
/**
|
* 根据列表获取统一数据对象
|
* @param treeList 树节点集合
|
* @return 统一数据对象
|
*/
|
public static BaseResult tree(Collection<? extends BaseTree> treeList){
|
BaseResult baseResult = new BaseResult<>();
|
baseResult.setCode(ResultCodeEnum.SUCCESS.code);
|
baseResult.setSuccess(true);
|
baseResult.setTreeData(treeList);
|
return baseResult;
|
}
|
|
@Override
|
public String toString() {
|
return "BaseResult{" +
|
"success=" + success +
|
", msg='" + msg + '\'' +
|
", obj=" + obj +
|
", code='" + code + '\'' +
|
", traceId='" + traceId + '\'' +
|
", requestTraceId='" + requestTraceId + '\'' +
|
", exceptionClassName='" + exceptionClassName + '\'' +
|
", exceptionCode='" + exceptionCode + '\'' +
|
", exceptionObjs=" + Arrays.toString(exceptionObjs) +
|
", finishTime=" + finishTime +
|
", total=" + total +
|
", data=" + data +
|
", treeData=" + treeData +
|
'}';
|
}
|
|
}
|