【JAVA】JAVA接口公共返回体ResponseData封装

一、JAVA接口公共返回体ResponseData封装,使用泛型的经典 例子

public class ResponseData<T> implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 7098362967623367826L;

    /**
     * 响应状态码
     */
    private Integer code;

    /**
     * 响应信息
     */
    private String message;

    /**
     * 响应对象
     */
    private T data;

    /** 是否加密返回参数*/
    private boolean encrypt;

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
     
         if(getCode().toString().startsWith("40") ||  getCode().toString().startsWith("50")) {
             this.message = "内部程序暂时出小差了"; 
         }else {
             this.message = message; 
         }
        
       
    }


    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public static <T> ResponseData<T> success() {
        return success(ResponseCode.SUCCESS);
    }

    public static <T> ResponseData<T> success(ResponseCode code) {
        return success(code, null);
    }

    public static <T> ResponseData<T> success(T object) {
        return success(ResponseCode.SUCCESS, object);
    }

    public static <T> ResponseData<T> success(ResponseCode code, T object) {
        return success(code.getCode(), code.getMessage(), object);
    }

    public static <T> ResponseData<T> success(Integer code, String message, T data) {
        ResponseData<T> response = new ResponseData<>();
        response.setCode(code);
        response.setMessage(message);
        response.setData(data);
        return response;
    }

    public static <T> ResponseData<T> error() {
        return error(ResponseCode.FAILED);
    }

    public static <T> ResponseData<T> error(ResponseCode code) {
        return error(code, null);
    }

    public static <T> ResponseData<T> error(String message) {
        return error(ResponseCode.FAILED.getCode(), message, null);
    }

    public static <T> ResponseData<T> error(Integer code, String message) {
        return error(code, message, null);
    }

    public static <T> ResponseData<T> error(ResponseCode code, T data) {
        return error(code.getCode(), code.getMessage(), data);
    }

    public static <T> ResponseData<T> error(Integer code, String message, T data) {
        ResponseData<T> response = new ResponseData<>();
        response.setCode(code);
        response.setMessage(message);
        response.setData(data);
        return response;
    }


    public boolean isEncrypt() {
        return encrypt;
    }

    public void setEncrypt(boolean encrypt) {
        this.encrypt = encrypt;
    }
}
 

public class ResponseData<T> implements Serializable {/*** */private static final long serialVersionUID = 7098362967623367826L;/*** 响应状态码*/private Integer code;/*** 响应信息*/private String message;/*** 响应对象*/private T data;/** 是否加密返回参数*/private boolean encrypt;public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {if(getCode().toString().startsWith("40") ||  getCode().toString().startsWith("50")) {this.message = "内部程序暂时出小差了"; }else {this.message = message; }}public T getData() {return data;}public void setData(T data) {this.data = data;}public static <T> ResponseData<T> success() {return success(ResponseCode.SUCCESS);}public static <T> ResponseData<T> success(ResponseCode code) {return success(code, null);}public static <T> ResponseData<T> success(T object) {return success(ResponseCode.SUCCESS, object);}public static <T> ResponseData<T> success(ResponseCode code, T object) {return success(code.getCode(), code.getMessage(), object);}public static <T> ResponseData<T> success(Integer code, String message, T data) {ResponseData<T> response = new ResponseData<>();response.setCode(code);response.setMessage(message);response.setData(data);return response;}public static <T> ResponseData<T> error() {return error(ResponseCode.FAILED);}public static <T> ResponseData<T> error(ResponseCode code) {return error(code, null);}public static <T> ResponseData<T> error(String message) {return error(ResponseCode.FAILED.getCode(), message, null);}public static <T> ResponseData<T> error(Integer code, String message) {return error(code, message, null);}public static <T> ResponseData<T> error(ResponseCode code, T data) {return error(code.getCode(), code.getMessage(), data);}public static <T> ResponseData<T> error(Integer code, String message, T data) {ResponseData<T> response = new ResponseData<>();response.setCode(code);response.setMessage(message);response.setData(data);return response;}public boolean isEncrypt() {return encrypt;}public void setEncrypt(boolean encrypt) {this.encrypt = encrypt;}
}

二、返回状态码封装ResponseCode,枚举类型

public enum ResponseCode {

    /* 公共状态码 */
    SUCCESS(200, "成功"),
    FAILED(400, "失败"),
    UNAUTHORIZED(401, "签名错误"),
    NOT_FOUND(404, "此接口不存在"),
    INTERNAL_SERVER_ERROR(500, "系统繁忙,请稍后再试"),

    /* 参数错误:10001-19999 */
    PARAM_IS_INVALID(10001, "参数无效"),
    PARAM_IS_BLANK(10002, "参数为空"),
    PARAM_TYPE_BIND_ERROR(10003, "参数类型错误"),
    PARAM_NOT_COMPLETE(10004, "参数缺失"),

    /* 用户错误:20001-29999*/
    USER_NOT_LOGGED_IN(20001, "用户未登录"),
    USER_LOGIN_ERROR(20002, "账号不存在或密码错误"),
    USER_ACCOUNT_FORBIDDEN(20003, "账号已被禁用"),
    USER_NOT_EXIST(20004, "用户不存在"),
    USER_HAS_EXISTED(20005, "用户已存在"),
    LOGIN_CREDENTIAL_EXISTED(20006, "凭证已存在"),

    //微信授权 错误码
    WEIXIN_ENCRYPT_ERROR(30001,"企业微信授权解密失败"),
    
    
    /*权限相关:40001-49999 */
    NO_PERMISS(40001,"无权限访问"),
    IS_LIMIT_ACC(40002,"访问过于频繁限制访问"),

    /* 业务错误:50001-59999 */
    WX_QRCODE_NULL(50001,"微信二维码获取内容不可用"),

    /* 业务错误:60001-69999 */
    XSS_CODE_ERROR(60001,"存在xss 恶意攻击脚本"),
    
    PASS_REPEAT_ERROR(60002,"密码 不能与 前三次相同,请更换新密码");
    

    private Integer code;

    private String message;

    ResponseCode(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}

public enum ResponseCode {/* 公共状态码 */SUCCESS(200, "成功"),FAILED(400, "失败"),UNAUTHORIZED(401, "签名错误"),NOT_FOUND(404, "此接口不存在"),INTERNAL_SERVER_ERROR(500, "系统繁忙,请稍后再试"),/* 参数错误:10001-19999 */PARAM_IS_INVALID(10001, "参数无效"),PARAM_IS_BLANK(10002, "参数为空"),PARAM_TYPE_BIND_ERROR(10003, "参数类型错误"),PARAM_NOT_COMPLETE(10004, "参数缺失"),/* 用户错误:20001-29999*/USER_NOT_LOGGED_IN(20001, "用户未登录"),USER_LOGIN_ERROR(20002, "账号不存在或密码错误"),USER_ACCOUNT_FORBIDDEN(20003, "账号已被禁用"),USER_NOT_EXIST(20004, "用户不存在"),USER_HAS_EXISTED(20005, "用户已存在"),LOGIN_CREDENTIAL_EXISTED(20006, "凭证已存在"),//微信授权 错误码WEIXIN_ENCRYPT_ERROR(30001,"企业微信授权解密失败"),/*权限相关:40001-49999 */NO_PERMISS(40001,"无权限访问"),IS_LIMIT_ACC(40002,"访问过于频繁限制访问"),/* 业务错误:50001-59999 */WX_QRCODE_NULL(50001,"微信二维码获取内容不可用"),/* 业务错误:60001-69999 */XSS_CODE_ERROR(60001,"存在xss 恶意攻击脚本"),PASS_REPEAT_ERROR(60002,"密码 不能与 前三次相同,请更换新密码");private Integer code;private String message;ResponseCode(int code, String message) {this.code = code;this.message = message;}public int getCode() {return code;}public String getMessage() {return message;}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/63783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AlipayHK支付宝HK接入-商户收款(PHP)

一打开支付宝国际版 二、点开商户服务 三、下载源码

【Prompt Engineering】6 文本扩展

一、引言 文本扩展&#xff1a;将短文本输入到大型语言模型中&#xff0c;生成更长的文本。应用场景&#xff1a;头脑风暴、生成电子邮件或论文等。风险&#xff1a;可能被用于生成垃圾邮件。使用原则&#xff1a;负责任地使用&#xff0c;确保有益于人们。技术准备&#xff1…

nginx学习总结(不包含安装过程)

1. nginx常见配置 http服务上支持【若干虚拟主机】。每个虚拟主机对应一个server配置项&#xff0c;配置项里面包含该虚拟主机相关的配置。 server{listen 80 default;server_name www.yonqin.com;index index.html index.htm index.php;root /data/www;location ~ .*\.(gif|…

CSS系列(29)-- Scroll Snap详解

前端技术探索系列&#xff1a;CSS Scroll Snap详解 &#x1f4dc; 致读者&#xff1a;探索流畅滚动体验 &#x1f44b; 前端开发者们&#xff0c; 今天我们将深入探讨 CSS Scroll Snap&#xff0c;这个强大的滚动优化特性。 基础特性 &#x1f680; 容器设置 /* 基础滚动…

如何设计高效的商品系统并提升扩展性:从架构到实践的全方位探索

在现代电商、零售及企业资源管理系统中&#xff0c;商品管理无疑是核心模块之一。随着市场的变化与企业规模的扩展&#xff0c;商品系统需要具备强大的功能支持以及高效的扩展能力&#xff0c;以应对日益复杂的业务需求。一个设计良好的商品系统不仅仅是一个商品信息的容器&…

RFdiffusion get_torsions函数解读

函数功能 get_torsions 函数根据输入的原子坐标(xyz_in)和氨基酸序列(seq),计算一组主链和侧链的扭转角(torsions)。同时生成备用扭转角(torsions_alt),用于表示可以镜像翻转的几何结构,并返回掩码(tors_mask)和是否平面化(tors_planar)的信息。 输入参数 xyz…

docker springboot 运维部署详细实例

环境安装 [rootiZbp1dcnzq7pzpg9607m6pZ ~]# docker -v Docker version 26.1.4, build 5650f9b镜像构建 Dockerfile 文件内容 FROM openjdk:8 # Author Info 创建人信息 MAINTAINER ratelcloudfoxmail.com ENV PORT20001 EXPOSE 20001 RUN mkdir /usr/local/ratel-boot-serv…

贪心算法在背包问题上的运用(Python)

背包问题 有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 这就是典型的背包问题(又称为0-1背包问题),也是具体的、没有经过任何延伸的背包问题模型。 背包问题的传统求解方法较为复杂,现定义有一个可以载重为8kg的背…

【ArcGIS Pro微课1000例】0063:处理无人机数据(空三、生成DOM、DSM、DTM)

使用ArcGIS Pro 正射拼接处理无人机数据流程化工具,不需要额外产品许可的支持,只需要桌面是高级版许可即可支持。ArcGIS Pro处理无人机摄影测量数据主要内容有:空三、生成DOM、DSM、DTM。 文章目录 一、创建映射项目二、提交自由空三三、添加控制点优化四、提交产品生产一、…

解锁 Jenkins 搭建全攻略

一、Jenkins 简介 &#xff08;一&#xff09;简述 Jenkins 的作用与价值 Jenkins 是一款在软件开发领域备受瞩目的开源软件项目&#xff0c;它基于 Java 开发&#xff0c;是极为重要的持续集成工具。在软件开发的整个流程中&#xff0c;Jenkins 发挥着关键作用&#xff0c;能…

人工智能ACA(四)--机器学习基础

零、参考资料 一篇文章完全搞懂正则化&#xff08;Regularization&#xff09;-CSDN博客 一、 机器学习概述 0. 机器学习的层次结构 学习范式&#xff08;最高层&#xff09; 怎么学 监督学习 无监督学习 半监督学习 强化学习 学习任务&#xff08;中间层&#xff0…

豆包MarsCode:小U的数字插入问题

问题描述 问题分析 问题的核心是找到将数字 b 插入到数字 a 的某个位置后&#xff0c;使形成的数字尽可能大。需要仔细分析以下几个要点&#xff1a; 1. 分析数字的特性 输入的两个数字&#xff1a; a 是一个正整数&#xff08;例如 76543&#xff09;。b 是一个非负整数&am…

雅思真题短语梳理(八)

126员工流动率高 high staff turnover 127(多)负担一些工作任务 cover some duties / an increased workload 128不满 feel upset and resentful 129偏向性待遇 preferential treatment 130介入帮忙 step in and help 131切实的好处 tangible benefits 132挽留 staff retention…

【Cadence射频仿真学习笔记】IC设计中电感的分析、建模与绘制(EMX电磁仿真,RFIC-GPT生成无源器件及与cadence的交互)

一、理论讲解 1. 电感设计的两个角度 电感的设计可以从两个角度考虑&#xff0c;一个是外部特性&#xff0c;一个是内部特性。外部特性就是把电感视为一个黑盒子&#xff0c;带有两个端子&#xff0c;如果带有抽头的电感就有三个端子&#xff0c;需要去考虑其电感值、Q值和自…

基础元器件的学习

1、二极管 1.1二极管的符号 ZD是稳压二极管 VD、V、D是普通二极管的符号。 1.2二极管的反向恢复时间 首先交流电为上正下负&#xff0c;然后下正上负。当二极管接到反向电压&#xff0c;二极管存在寄生电容&#xff0c;电压不能立刻突变&#xff0c;当输入频率变高时&#…

EdgeX物联网平台

一、概述 EdgeX Foundry是一个由Linux基金会支持的边缘计算开源平台。它的定位是作为通用工业物联网边缘计算通用框架,部署在路由器和交换机等边缘设备上。EdgeX Foundry为各种传感器、设备或其他物联网器件提供即插即用功能,并管理它们,进一步收集和分析它们的数据,或者导…

基于小样本学习的自然场景图像中茶叶病害识别技术综述

基于小样本学习的自然场景图像中茶叶病害识别技术综述 引言 茶叶作为全球广泛消费的饮品之一&#xff0c;其产量和品质直接关系到茶农的经济收益。然而&#xff0c;茶树在生长过程中容易受到多种病害的侵染&#xff0c;这些病害不仅影响茶叶的产量和品质&#xff0c;还给茶农…

Linux之帮助命令

一、man帮助命令 语法&#xff1a; man 你要查找的命令例如&#xff1a;man ls 即可得到你要的命令说明&#xff0c;按q退出 二、内置命令和外部命令 一部分基础功能的系统命令是直接内嵌在shel中的&#xff0c;系统加载启动之后会随着shll一起加载&#xff0c;常驻系统内存中…

MONI后台管理系统-swagger3(springdoc-openapi)集成

springdoc-openapi Java 库有助于使用 Spring Boot 项目自动生成 API 文档。springdoc-openapi 通过在运行时检查应用程序来根据 Spring 配置、类结构和各种注释推断 API 语义。 该库会自动生成 JSON/YAML 和 HTML 格式的页面文档。生成的文档可以使用swagger-api注释进行补充。…

GFPS扩展技术原理(七)-音频切换消息流

音频切换消息流 Seeker和Provider通过消息流来同步音频切换能力&#xff0c;触发连接做切换&#xff0c;获取或设置音频切换偏好&#xff0c;通知连接状态等等。为此专门定义了音频切换消息流Message Group 为0x07&#xff0c;Message codes如下&#xff1a; MAC of Audio s…