返回工具类

评价:很多情况,我们使用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();
    }
}

这样是不是方便很多呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值