项目中一些常用的参数类记录

 ---------------------持续更新,会慢一些--------------------

一、接口响应统一定义

        成功响应和失败响应可横向扩展。

import lombok.Data;

/**
 * http统一响应
 *
 * @Author: John Smith
 * @Date: 2022/4/23
 */
@Data
public class HttpResult<T> {

    /**
     * 是否成功
     */
    private boolean isSuccess;

    /**
     * 结果码
     */
    private String resultCode;

    /**
     * 结果描述
     */
    private String resultMsg;

    /**
     * 返回结果
     */
    private T resultData;

    private HttpResult(){

    }

    private HttpResult(String resultCode, String resultMsg, T resultData, boolean isSuccess) {
        this.resultCode = resultCode;
        this.resultMsg = resultMsg;
        this.resultData = resultData;
        this.isSuccess = isSuccess;
    }

    /**
     * 构造失败结果
     *
     * @param resultCode
     * @param resultMsg
     * @return
     * @param <T>
     */
    public static <T> HttpResult<T> fail(String resultCode, String resultMsg) {
        return new HttpResult<>(resultCode, resultMsg, null, false);
    }

    /**
     * 构造成功结果
     *
     * @param data
     * @param resultMsg
     * @return
     * @param <T>
     */
    public static <T> HttpResult<T> success(T data, String resultMsg) {
        return new HttpResult<T>(ResultCodeEnum.SUCCESS.getCode(), resultMsg, data, true);
    }

}

二、结果码枚举类

        同样,可扩展。

/**
 * 结果码接口
 *
 * @Author: John Smith
 * @Date: 2022/4/23
 */
public interface ResultCode {
    /**
     * 获取code
     *
     * @return
     */
    String getCode();

    /**
     * 获取错误信息
     * @return
     */
    String getMsg();

    /**
     * 获取name
     * @return
     */
    String getName();
}
import lombok.Getter;

/**
 * 结果码枚举类
 *
 * @Author: John Smith
 * @Date: 2022/4/23
 */
@Getter
public enum ResultCodeEnum implements ResultCode {

    SUCCESS("SUCCESS", 10000, "成功"),
    PARAM_ERROR("PARAM_ERROR",7001,"参数错误");

    /**
     * 结果码
     */
    private final String code;

    /**
     * 内部结果码
     */
    private Integer subCode;

    /**
     * 描述
     */
    private final String msg;

    ResultCodeEnum(String code, Integer subCode, String msg) {
        this.code = code;
        this.subCode = subCode;
        this.msg = msg;
    }

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }

    @Override
    public String getName() {
        return name();
    }

    public static ResultCodeEnum getByCode(String code) {
        for (ResultCodeEnum errorCodeEnum : ResultCodeEnum.values()) {
            if (errorCodeEnum.getCode().equals(code)) {
                return errorCodeEnum;
            }
        }
        return null;
    }
}

三、自定义异常

        定义通用异常类后,可根据不同层级定义该层级的异常类。

import lombok.Getter;

/**
 * 通用异常类定义
 *
 * @Author: John Smith
 * @Date: 2022/4/23
 */
@Getter
public class CommonException extends RuntimeException{

    /**
     * 结果码
     */
    private String code;

    /**
     * 结果信息
     */
    private String msg;

    /**
     * 参数
     */
    private String[] params;

    public CommonException(ResultCode resultCode) {
        super(resultCode.getMsg());
        this.code = resultCode.getCode();
        this.msg = resultCode.getMsg();
    }

    public CommonException(ResultCode resultCode, String msg) {
        super(msg);
        this.code = resultCode.getCode();
        this.msg = msg;
    }

    public CommonException(ResultCode resultCode, String[] params) {
        super(resultCode.getMsg());
        this.code = resultCode.getCode();
        this.msg = resultCode.getMsg();
        this.params = params;
    }

    public CommonException(ResultCode resultCode, String msg, String[] params) {
        super(msg);
        this.code = resultCode.getCode();
        this.msg = msg;
        this.params = params;
    }

    public CommonException(ResultCode resultCode, Throwable throwable) {
        super(resultCode.getMsg(), throwable);
        this.code = resultCode.getCode();
        this.msg = resultCode.getMsg();
    }

    public CommonException(ResultCode resultCode, Throwable throwable, String[] params) {
        super(resultCode.getMsg(), throwable);
        this.code = resultCode.getCode();
        this.msg = resultCode.getMsg();
        this.params = params;
    }

    public CommonException(ResultCode resultCode, Throwable throwable, String msg) {
        super(msg, throwable);
        this.code = resultCode.getCode();
        this.msg = msg;
    }

    public CommonException(ResultCode resultCode, Throwable throwable, String msg, String[] params) {
        super(msg, throwable);
        this.code = resultCode.getCode();
        this.msg = msg;
        this.params = params;
    }

    @Override
    public String toString() {
        return String.format("[%s] %s: %s", getClass().getName(), getCode(), getMsg());
    }
}
/**
 * 独立异常类定义
 *
 * @Author: John Smith
 * @Date: 2022/4/23
 */
public class BizException extends CommonException{

    public BizException(ResultCode resultCode) {
        super(resultCode);
    }

    public BizException(ResultCode resultCode, String msg) {
        super(resultCode, msg);
    }

    public BizException(ResultCode resultCode, Throwable throwable) {
        super(resultCode, throwable);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值