package cn.timer.api.utils;

import java.io.Serializable;

import org.springframework.stereotype.Service;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * @Description:Json返回结果集工具类
 * @Package:org.jeese.model
 * @author:wubc
 * @version:1.0
 * @date:2017年10月30日-下午1:51:24
 * @Copyright:2017 Inc. All rights reserved.
 */
@ApiModel
@Service("responseResultnew")
public class ResponseResultNew<T> implements Serializable {
	private static final long serialVersionUID = 1L;
	
	@ApiModelProperty(value="code",example="101")
	private String code;
	
	@ApiModelProperty(value="result",example="101")
	private boolean result;
	
	@ApiModelProperty(value="message",example="101")
	private String message;
	
	@ApiModelProperty(value="data",example="101")
	private T data;
	
//	private List<T> datas;
//	
//	private T page;
//	
//	
//	private static final String PAGE_KEY = "page";
//	private static final String NUMBER_KEY = "number";
//	private static final String SIZE_KEY = "size";
//	private static final String TOTALELEMENTS_KEY = "totalelements";
//	private static final String TOTALPAGES_KEY = "totalpages";
//	private static final String OFFSET_KEY = "offset";
	
	private static final String MESSAGE_SUCCESS = "操作成功";
//	private static final String MESSAGE_FAIL = "操作失败";
//	private static final String MESSAGE_ERROR = "操作错误";
//	private static final String MESSAGE_UNLOGIN = "会话超时,请重新登录";
//	private static final String MESSAGE_KICKOUT = "当前账户已在其他地方登录,请重新登录";
//	private static final String MESSAGE_PARAMERROR = "参数错误";
//	private static final String MESSAGE_UNAUTHORIZED = "授权错误";
//	private static final String MESSAGE_UNAUTHENTICATED = "认证错误";
//	private static final String MESSAGE_EXCEPTION = "服务器异常";

	private static final String STATUS_CODE_SUCCESS = "200";
//	private static final String STATUS_CODE_FAIL = "201";
//	private static final String STATUS_CODE_ERROR = "202";
//	private static final String STATUS_CODE_UNLOGIN = "301";
//	private static final String STATUS_CODE_KICKOUT = "302";
//	private static final String STATUS_CODE_UNPARAM = "400";
//	private static final String STATUS_CODE_UNAUTHORIZED = "401";
//	private static final String STATUS_CODE_UNAUTHENTICATED = "405";
//	private static final String STATUS_CODE_EXCEPTION = "500";

	
	public ResponseResultNew() {
		this.code = STATUS_CODE_SUCCESS;
		this.result = Boolean.TRUE;
		this.message = MESSAGE_SUCCESS;
		this.data = null;
	}
	
	

	/**
	 * 请求成功
	 * 
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResponseResultNew success() {
		this.code = STATUS_CODE_SUCCESS;
		this.result = Boolean.TRUE;
		this.message = MESSAGE_SUCCESS;
		this.data = null;
		return this;
	}

	/**
	 * 请求成功,并带消息
	 * 
	 * @param message
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResponseResultNew success(String message) {
		this.code = STATUS_CODE_SUCCESS;
		this.result = Boolean.TRUE;
		this.message = message;
		this.data = null;
		return this;
	}
	@SuppressWarnings("rawtypes")
	public ResponseResultNew fail(String message) {
		this.code = STATUS_CODE_SUCCESS;
		this.result = Boolean.TRUE;
		this.message = message;
		this.data = null;
		return this;
	}

	/**
	 * @param obj
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public ResponseResultNew successData(T data) {
		this.code = STATUS_CODE_SUCCESS;
		this.result = Boolean.TRUE;
		this.message = MESSAGE_SUCCESS;
		this.data = data;
		return this;
	}
}