All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.basics.util.ReturnUtil Maven / Gradle / Ivy

package cn.basics.util;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;

/**
 * @ClassName: ReturnUtil 
 * @Description: TODO(返回消息工具) 
 * @author [email protected]
 * @date 2016-6-17 上午11:53:17
 * 	2017年8月22日 修改
 */
public class ReturnUtil {
	//-------------------------------常量-------------------------------
	/**请求成功状态码*/
	public static final Integer SUCCESS_CODE = 200;
	/**参数丢失状态码*/
	public static final Integer PARAMETER_LOSE_CODE = -100;
	/**未登录状态码*/
	public static final Integer NOT_LOGIN_CODE = -194;
	/**权限不足状态码*/
	public static final Integer NOT_AUTHORITY_CODE = -195;
	/**请求失败状态码*/
	public static final Integer ERROR_CODE = -200;
	/**账号或密码错误状态码*/
	public static final Integer ACCOUNT_PASSWORD_ERROR_CODE = -300;
	/**请求严重错误状态码*/
	public static final Integer SERIOUS_ERROR_CODE = -1994;
	//-------------------------------变量-------------------------------
	/**返回结果*/
	private Object result_data;
	/**返回结果字段信息*/
	private List result_data_column_comment;
	/**扩展信息*/
	private Object extend_info;
	/**返回码*/
	private Integer code = SUCCESS_CODE;
	/**返回码描述*/
	private String code_msg;
	/**错误描述*/
	private String error_msg;
	/**严重错误描述 <.若存在严重错误会自动跳转至错误页面并提示错误信息>*/
	private String serious_error_msg;
	/**操作日志,利用反射获取与赋值*/
	@SuppressWarnings("unused")
	private Object operation_logs;
	//-------------------------------构造-------------------------------
	/**禁止实例化*/
	private ReturnUtil(){}
	/**初始化ReturnUtil方法 */
	public static ReturnUtil init(){
		return new ReturnUtil();
	}
	//-------------------------------常用-------------------------------
	/**
	 * @Description 检查参数<.自动处理返回码>
	 * @author [email protected] (苟志强)
	 * @param obj	请求参数(完整)
	 * @param objs	验证参数值
	 */
	public ReturnUtil checkParameter(Object obj,Object... objs){
		result_data = obj;
		for (int i = 0,length = objs.length; i < length; i++) {
			if(DataUtil.isNull(objs[i])){
				sparameterLose();
				return this;
			}
		}
		return this;
	}
	/**
	 * @Description 检查参数<.自动处理返回码>
	 * @author [email protected] (苟志强)
	 * @param obj	请求参数(完整)
	 */
	public ReturnUtil checkParameter(Object obj){
		result_data = obj;
		JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(obj));
		for (String key : json.keySet()) {
			if(DataUtil.isNull(json.get(key))){
				sparameterLose();
				return this;
			}
		}
		return this;
	}
	/**
	 * @Description 根据Key检查参数<.自动处理返回码>
	 * @author [email protected] (苟志强)
	 * @param json	请求参数(完整)
	 * @param keys	非空的key
	 */
	public ReturnUtil checkParameterByKey(JSONObject json,String... keys){
		result_data = json;
		for (int i = 0,length = keys.length; i < length; i++) {
			if(DataUtil.isNull(json.get(keys[i]))){
				sparameterLose();
				return this;
			}
		}
		return this;
	}
	//-------------------------------日常-------------------------------
	/**添加返回数据<.不做返回码判断>*/
	public ReturnUtil addDataNotCode(Object obj) {
		result_data = obj;
		return this;
	}
	/**添加返回数据<.实现基础返回码判断>*/
	public ReturnUtil addData(Object obj) {
		result_data = obj;
		if((result_data instanceof Boolean && result_data.equals(true)) || (result_data instanceof Object && !DataUtil.isNull(obj))){
			setCode(SUCCESS_CODE);
		}else{
			setCode(ERROR_CODE);
		}
		return this;
	}
	/**添加错误描述<.自动处理返回码>*/
	public ReturnUtil addError(String msg) {
		error_msg = msg;
		setCode(ERROR_CODE);
		return this;
	}
	/**添加扩展信息<.不影响返回码>*/
	public ReturnUtil addExtendInfo(Object extend) {
		extend_info = extend;
		return this;
	}
	/**添加严重错误描述<.自动处理返回码>*/
	public ReturnUtil addSeriousErrorMsg(String msg) {
		serious_error_msg = msg;
		error_msg = msg;
		setCode(SERIOUS_ERROR_CODE);
		return this;
	}
	/**添加返回码<.不建议手动调用>*/
	public ReturnUtil addCode(Integer code) {
		setCode(code);
		return this;
	}
	/**添加列说明<.仅在getListAndColumnComment时调用>*/
	public ReturnUtil setResult_data_column_comment(List result_data_column_comment) {
		this.result_data_column_comment = result_data_column_comment;
		return this;
	}
	/**添加列说明<.仅在getListAndColumnComment时调用>
	 * @return */
	public ReturnUtil addResult_data_column_comment(String column_name,String column_comment) {
		JSONObject cc = new JSONObject();
		cc.put("column_name", column_name);
		cc.put("column_comment", column_comment);
		result_data_column_comment.add(cc);
		return this;
	}
	//-------------------------------常见错误-------------------------------
	/**参数丢失<.自动处理返回码与错误提示>*/
	public ReturnUtil sparameterLose() {
		setCode(PARAMETER_LOSE_CODE);
		return this;
	}
	/**未登录<.自动处理返回码与错误提示>*/
	public ReturnUtil snotLogin() {
		setCode(NOT_LOGIN_CODE);
		return this;
	}
	/**权限不足<.自动处理返回码与错误提示>*/
	public ReturnUtil snotAuthority() {
		setCode(NOT_AUTHORITY_CODE);
		return this;
	}
	/**账号或密码错误<.自动处理返回码与错误提示>*/
	public ReturnUtil saccountOrPasswordError() {
		setCode(ACCOUNT_PASSWORD_ERROR_CODE);
		return this;
	}
	/**私有化返回码set方法<.这里可以添加根据返回码设置返回描述>*/
	private void setCode(Integer code) {
		this.code = code;
		if(code==NOT_LOGIN_CODE){
			error_msg = "您还未登录,请登录后重试!";
		}else if(code==NOT_AUTHORITY_CODE){
			error_msg = "您的权限不足,服务器拒绝访问(拒绝请求)。";
		}else if(code==PARAMETER_LOSE_CODE){
			error_msg = "缺少参数,服务器拒绝访问(拒绝请求),请将“result_data”发送给管理员进行咨询或处理,或者点击反馈异常按钮,我们将第一时间对异常进行修复。";
		}else if(code==ACCOUNT_PASSWORD_ERROR_CODE){
			error_msg = "账号或密码错误,请输入正确的账号或密码。";
		}
	}
	//-------------------------------获参-------------------------------
	/**获取请求结果<.Map类型>*/
	@SuppressWarnings("unchecked")
	public Map gDataMap(){
		if(code == SUCCESS_CODE && (result_data instanceof Map || result_data instanceof HashMap))
			return (Map)result_data;
		return null;
	}
	/**获取请求结果<.ListMap类型类型>*/
	@SuppressWarnings("unchecked")
	public List> gDataListMap(){
		if(code == SUCCESS_CODE && result_data instanceof List)
			return (List>)result_data;
		return null;
	}
	/**获取请求结果<.单条泛型>*/
	@SuppressWarnings("unchecked")
	public  T gDataOne(Class clazz){
		return (T) result_data;
	}
	/**获取请求结果<.List泛型>*/
	@SuppressWarnings("unchecked")
	public  List gDataMany(Class clazz){
		return (List) result_data;
	}
	//-------------------------------get-------------------------------
	public Object getResult_data() {
		return result_data;
	}
	public List getResult_data_column_comment() {
		return result_data_column_comment;
	}
	public Object getExtend_info() {
		return extend_info;
	}
	public String getSerious_error_msg() {
		return serious_error_msg;
	}
	public String getError_msg() {
		return error_msg;
	}
	public Integer getCode() {
		return code;
	}
	public String getCode_msg() {
		return code_msg;
	}
	//-------------------------------toString-------------------------------
	@Override
	public String toString() {
		return JSONObject.toJSONString(this);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy