当前位置: 首页 > news >正文

项目搭建之统一返回值

自定义枚举类

@Getter
public enum ReturnCodeEnum {/*** 操作失败**/RC999("999","操作XXX失败"),/*** 操作成功**/RC200("200","success"),/*** 服务降级**/RC201("201","服务开启降级保护,请稍后再试!"),/*** 热点参数限流**/RC202("202","热点参数限流,请稍后再试!"),/*** 系统规则不满足**/RC203("203","系统规则不满足要求,请稍后再试!"),/*** 授权规则不通过**/RC204("204","授权规则不通过,请稍后再试!"),/*** access_denied**/RC403("403","无访问权限,请联系管理员授予权限"),/*** access_denied**/RC401("401","匿名用户访问无权限资源时的异常"),RC404("404","404页面找不到的异常"),/*** 服务异常**/RC500("500","系统异常,请稍后重试"),RC375("375","数学运算异常,请稍后重试"),INVALID_TOKEN("2001","访问令牌不合法"),ACCESS_DENIED("2003","没有权限访问该资源"),CLIENT_AUTHENTICATION_FAILED("1001","客户端认证失败"),USERNAME_OR_PASSWORD_ERROR("1002","用户名或密码错误"),BUSINESS_ERROR("1004","业务逻辑异常"),UNSUPPORTED_GRANT_TYPE("1003","不支持的认证模式");/*** 自定义状态码*/private final String code;/*** 自定义描述信息*/private final String message;ReturnCodeEnum(String code, String message) {this.code = code;this.message = message;}/*** 遍历枚举* @param code 状态码* @return ReturnCodeEnum*/public static ReturnCodeEnum getReturnCodeEnum(String code) {for (ReturnCodeEnum element : ReturnCodeEnum.values()) {if (element.getCode().equalsIgnoreCase(code)) {return element;}}return null;}/*** 流式遍历枚举* @param code 状态码* @return ReturnCodeEnum*/public static ReturnCodeEnum getReturnCodeEnumByStream(String code) {return Arrays.stream(ReturnCodeEnum.values()).filter(x -> x.getCode().equalsIgnoreCase(code)).findFirst().orElse(null);}
}

统一定义返回值对象

@Data
@Accessors(chain = true)
public class ResultData<T> {/*** 结果状态 ,具体状态码参见枚举类ReturnCodeEnum*/private String code;/*** 描述信息*/private String message;/*** 数据*/private T data;/*** 当前时间*/private long timestamp ;public ResultData (){this.timestamp = System.currentTimeMillis();}public static <T> ResultData<T> success(T data) {ResultData<T> resultData = new ResultData<>();resultData.setCode(ReturnCodeEnum.RC200.getCode());resultData.setMessage(ReturnCodeEnum.RC200.getMessage());resultData.setData(data);return resultData;}public static <T> ResultData<T> fail(String code, String message) {ResultData<T> resultData = new ResultData<>();resultData.setCode(code);resultData.setMessage(message);resultData.setData(null);return resultData;}}

相关文章:

  • 【机器学习】包裹式特征选择之序列前向选择法
  • HCIP作业
  • ES6(一)箭头函数,解构赋值,模板字符串,let 和 const,类和继承
  • 数据结构——二叉搜索树详解
  • XUbuntu22.04之激活Linux最新Typora版本(二百二十五)
  • 以太网与数据链路层
  • 两个有序序列的中位数(全网首篇递归、分治解决)
  • Glide
  • 使用IDEA的反编译插件 反编译jar包
  • 开源博客项目Blog .NET Core源码学习(12:App.Application项目结构分析)
  • 快速上手Spring Cloud 十:Spring Cloud与微前端
  • Nexpose v6.6.243 for Linux Windows 下载 - 漏洞扫描
  • 【二分法】编码能力提升
  • Qt实现TFTP Server和 TFTP Client(四)
  • 【通用人工智能AGI元年-各领域的精彩AI/LLM(持续更新)】
  • C++类的相互关联
  • create-react-app做的留言板
  • E-HPC支持多队列管理和自动伸缩
  • export和import的用法总结
  • JS题目及答案整理
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • nodejs:开发并发布一个nodejs包
  • Octave 入门
  • opencv python Meanshift 和 Camshift
  • Python实现BT种子转化为磁力链接【实战】
  • Redash本地开发环境搭建
  • Redis学习笔记 - pipline(流水线、管道)
  • uva 10370 Above Average
  • windows下如何用phpstorm同步测试服务器
  • XML已死 ?
  • Zepto.js源码学习之二
  • Zsh 开发指南(第十四篇 文件读写)
  • 基于Android乐音识别(2)
  • 基于web的全景—— Pannellum小试
  • 解决iview多表头动态更改列元素发生的错误
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 区块链将重新定义世界
  • 我的zsh配置, 2019最新方案
  • 正则与JS中的正则
  • 第二十章:异步和文件I/O.(二十三)
  • 国内开源镜像站点
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • # Panda3d 碰撞检测系统介绍
  • #define、const、typedef的差别
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #每天一道面试题# 什么是MySQL的回表查询
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (十一)手动添加用户和文件的特殊权限
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (四)Linux Shell编程——输入输出重定向
  • (四)linux文件内容查看
  • (学习日记)2024.01.09
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)jQuery 基础