【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.pswp.cn/web/63783.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63783.shtml
英文地址,請注明出處:http://en.pswp.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…