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

com.digitalchina.platform.security.utils.Result Maven / Gradle / Ivy

The newest version!
package com.digitalchina.platform.security.utils;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.util.WebUtils;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

/**
 * http 接口返回值封装类
 * 

* status 定义于 cn.dceast.platform.common.result.Result.Status * message 消息,存放返回给用户的提示消息 * result 结果,返回给客户端的结果,可以是任何数据结构 * code 代码,需要精确定义错误代码时使用 *

* 客户端收到返回结果后的处理逻辑: *

* 先判断status是否为cn.dceast.platform.common.result.Result.Status#OK,如果不是OK状态,表示服务器端发生错误,给用户message提示。 * 如果是OK状态,且需要服务器端返回结果的,取result字段,根据接口约定,解析返回结果。 * 如果服务器端定义的接口有精确的返回code定义,在发生错误时,根据具体code来判断错误原因来做不同的处理。 */ public class Result { public static final String I18NCOOKIE_NAME = "i18n"; /** * 返回状态 */ public enum Status { OK, //正确返回 ERROR //错误返回 } private static SerializeConfig config = new SerializeConfig(); private String status; private String message; private Object result; private Integer code; static { } public Result(int code, String status, String message, Object result) { super(); this.status = status; this.message = message; if (result == null) { this.result = ""; } else { this.result = result; } this.code = code; } public Result(int code, String status, String message) { super(); this.status = status; this.message = message; this.code = code; } public Result() { super(); } public static String error(Integer code, Object result) { String msg = ApplicationConextUtil.getAc().getMessage(code + "", null, getLocale()); return new Result(code, Status.ERROR.name(), msg, result).toString(); } public static String error(Integer code) { String msg = ApplicationConextUtil.getAc().getMessage(code + "", null, getLocale()); return new Result(code, Status.ERROR.name(), msg, null).toString(); } public static String error(String errMsg, Object result) { return new Result(1000, Status.ERROR.name(), errMsg, result).toString(); } public static String ok(Integer code, Object result) { String msg = ApplicationConextUtil.getAc().getMessage(code + "", null, getLocale()); return new Result(code, Status.OK.name(), msg, result).toString(); } public static String ok(Integer code) { String msg = ApplicationConextUtil.getAc().getMessage(code + "", null, getLocale()); return new Result(code, Status.OK.name(), msg, null).toString(); } public static String ok(String msg, Object result) { return new Result(0, Status.OK.name(), msg, result).toString(); } public static String ok(Object result) { // String msg = ApplicationConextUtil.getAc().getMessage(0 + "", null, getLocale()); return new Result(0, Status.OK.name(), "", result).toString(); } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Object getResult() { return result; } public void setResult(Object result) { this.result = result; } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } private static Locale getLocale() { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder .getRequestAttributes()).getRequest(); Locale locale; Cookie cookie = WebUtils.getCookie(request, I18NCOOKIE_NAME); if (cookie != null) { locale = StringUtils.parseLocaleString(cookie.getValue()); if (locale != null) { return locale; } } locale = (Locale) request.getLocale(); if (locale != null) { return locale; } return locale; } @Override public String toString() { return JSONObject.toJSONString(this, config, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteDateUseDateFormat, SerializerFeature.DisableCircularReferenceDetect); } public Map toMap() { Map map = new HashMap(); if (status != null) { map.put("status", status); } if (message != null) { map.put("message", message); } if (result != null) { map.put("result", result); } if (code != null) { map.put("code", code); } return map; } /** * 解析result * * @param result String * @return Result */ public static Result parseJsonResult(String result) { JSONObject resultObj = (JSONObject) JSONObject.parse(result); Integer code = resultObj.getInteger("code"); String status = resultObj.getString("status"); String message = resultObj.getString("message"); Object result1 = resultObj.get("result"); return new Result(code, status, message, result1); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy