评价:很多情况,我们使用map,string等作为返回值,这样的话:
在代码中就容易出现多次map.put(),去返回不同类型的值;
导致代码上面的冗余;
//resultMap.put()
//每次去返回数据时,这些数据上的状态和给到前端的信息,就都必须要put进行
@Deprecated
@RequestMapping(value = "")
public Map<String,Object> requestLiveLogin(String version, String idNo, String userName,
String businessType, String businessNo, String page, String sign) throws IOException {
Map<String, Object> resultMap = this.pubService.getResult();
Map<String, Object> param = new HashMap<String, Object>();
param.put("businessType", businessType);
param.put("businessNo", businessNo);
param.put("idNo", idNo);
param.put("version", version);
String nSign = MD5Util.sign(param, MD5Util.APIkey);
if(pubService.checkSign(sign, nSign)){
resultMap.put(MicroConstant.FLAG, MicroConstant.NO);
resultMap.put(MicroConstant.MESSAGE, MicroMsgConstant.CHECK_SIGN_FAIL);
return resultMap;
}
if(StringUtil.isEmpty(idNo) || StringUtil.isEmpty(userName)) {
resultMap.put(MicroConstant.FLAG, MicroConstant.NO);
resultMap.put(MicroConstant.MESSAGE, "客户姓名或身份证号为空");
return resultMap;
}
if(StringUtil.isEmpty(businessType) || StringUtil.isEmpty(businessNo)) {
resultMap.put(MicroConstant.FLAG, MicroConstant.NO);
resultMap.put(MicroConstant.MESSAGE, "业务号或业务类型为空");
return resultMap;
}
if(StringUtil.isEmpty(version)) {
resultMap.put(MicroConstant.FLAG, MicroConstant.NO);
resultMap.put(MicroConstant.MESSAGE, "版本号为空");
return resultMap;
}
param.put("webankAppId", webankAppId);
param.put("ownerId", ownerId);
param.put("userId", idNo);
param.put("userName", userName);
********
Map<String, Object> irsResult = null;
try {
param.put("url", URLEncoder.encode(url.toString(), "UTF-8"));
irsResult = EsbContext.getEsbService(IrsEsbService.class).requestLiveLogin(param);
} catch (Exception e) {
logger.error("------requestLiveLogin--businessNo:"+ businessNo +"--exception:", e);
resultMap.put(MicroConstant.FLAG, MicroConstant.NO);
resultMap.put(MicroConstant.MESSAGE, "系统异常");
return resultMap;
}
resultMap.put("irsResult", irsResult);
return resultMap;
}
如果我们写一个工具类,专门去管理这个返回值,在以后遇到返回时都可以用到的话,就非常完美了。
package com.sinolife.yihai.util;
import java.io.Serializable;
public class ResponseResult<T> implements Serializable {
private final static long serialVersionUID = 8588366170318736907L;
public final static int SUCCESS = 200;//请求成功
public final static int UNAUTHORIZED = 401;//未认证
public final static int SYSTEM_ERROR = 500;//系统错误
public final static int OPERATION_ERROR = 600;//操作失败(通用)
public final static int PARAM_ERROR = 450;//参数错误
private String msg;//状态描述
private T data;//数据
private int code;//状态码
public ResponseResult(String msg, T data, int code) {
this.msg = msg;
this.data = data;
this.code = code;
}
/**
* 请求成功
* @param <T>
* @return code-状态码、msg-状态描述、data-数据
*/
public static <T> ResponseResult<T> ok(){
return new ResponseResult<T>("Success",null,SUCCESS);
}
/**
* 请求成功
* @param data 数据
* @param <T>
* @return code-状态码、msg-状态描述、data-数据
*/
public static <T> ResponseResult<T> ok(T data){
return new ResponseResult<T>("Success",data,SUCCESS);
}
/**
* 操作失败
* @param <T>
* @return code-状态码、msg-状态描述、data-数据
*/
public static <T> ResponseResult<T> fail(){
return new ResponseResult<T>("fail",null,OPERATION_ERROR);
}
/**
* 操作失败
* @param msg 状态描述
* @param <T>
* @return code-状态码、msg-状态描述、data-数据
*/
public static <T> ResponseResult<T> fail(String msg){
return new ResponseResult<T>(msg,null,OPERATION_ERROR);
}
/**
* 操作失败
* @param code
* @param msg
* @param <T>
* @return code-状态码、msg-状态描述、data-数据
*/
public static <T> ResponseResult<T> fail(int code,String msg){
return new ResponseResult<T>(msg,null,code);
}
/**
* 未认证
*
* @return code-状态码、msg-状态描述、data-数据
*/
public static <T> ResponseResult<T> unauthorized(){
return new ResponseResult<T>("UNAUTHORIZED",null,UNAUTHORIZED);
}
/**
* 未认证
*
* @param msg 状态描述
* @return code-状态码、msg-状态描述、data-数据
*/
public static <T> ResponseResult<T> unauthorized(String msg){
return new ResponseResult<T>(msg,null,UNAUTHORIZED);
}
/**
* 参数错误
*
* @return code-状态码、msg-状态描述、data-数据
*/
public static <T> ResponseResult<T> paramError(){
return new ResponseResult<T>("Param Error",null,PARAM_ERROR);
}
/**
* 参数错误
*
* @return code-状态码、msg-状态描述、data-数据
*/
public static <T> ResponseResult<T> paramError(String msg){
return new ResponseResult<T>(msg,null,PARAM_ERROR);
}
/**
* 系统错误
* @param <T>
* @return code-状态码、msg-状态描述、data-数据
*/
public static <T> ResponseResult<T> systemError(){
return new ResponseResult<T>("System Error",null,SYSTEM_ERROR);
}
/**
* 系统错误
* @param msg
* @param <T>
* @return code-状态码、msg-状态描述、data-数据
*/
public static <T> ResponseResult<T> systemError(String msg){
return new ResponseResult<T>(msg,null,SYSTEM_ERROR);
}
/**
* 自定义错误
* @param msg 状态描述
* @param code 状态码
* @param <T>
* @return code-状态码、msg-状态描述、data-数据
*/
public static <T> ResponseResult<T> customError(String msg,int code){
return new ResponseResult<T>(msg,null,code);
}
/**
* 请求成功结果返回
* @param result
* @return
*/
public static boolean isOK(ResponseResult result){
if (result!=null && result.getCode()==SUCCESS){
return true;
}
return false;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
@Override
public String toString() {
return "ResponseResult{" +
"msg='" + msg + '\'' +
", data=" + data +
", code=" + code +
'}';
}
}
而我们在使用时:
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping("/testResult")
public ResponseResult testResult(String str){
if (!"admin".equals(str)){
return ResponseResult.fail("登陆失败");
}
return ResponseResult.ok();
}
}
这样是不是方便很多呢?