R.java 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package top.lvzhiqiang.dto;
  2. import lombok.Data;
  3. import top.lvzhiqiang.enumeration.ResultCodeEnum;
  4. /**
  5. * 统一结果类
  6. *
  7. * @author lvzhiqiang
  8. * 2022/4/11 16:55
  9. */
  10. @Data
  11. public class R<T> {
  12. private Boolean success;
  13. private Integer code;
  14. private String message;
  15. private T data;
  16. // 构造器私有
  17. private R() {
  18. }
  19. // 通用返回成功
  20. public static R ok() {
  21. R r = new R();
  22. r.setSuccess(ResultCodeEnum.SUCCESS.getSuccess());
  23. r.setCode(ResultCodeEnum.SUCCESS.getCode());
  24. r.setMessage(ResultCodeEnum.SUCCESS.getMessage());
  25. return r;
  26. }
  27. // 通用返回失败,未知错误
  28. public static R error() {
  29. R r = new R();
  30. r.setSuccess(ResultCodeEnum.UNKNOWN_ERROR.getSuccess());
  31. r.setCode(ResultCodeEnum.UNKNOWN_ERROR.getCode());
  32. r.setMessage(ResultCodeEnum.UNKNOWN_ERROR.getMessage());
  33. return r;
  34. }
  35. // 设置结果,形参为结果枚举
  36. public static R setResult(ResultCodeEnum result) {
  37. R r = new R();
  38. r.setSuccess(result.getSuccess());
  39. r.setCode(result.getCode());
  40. r.setMessage(result.getMessage());
  41. return r;
  42. }
  43. /**
  44. * ------------使用链式编程,返回类本身-----------
  45. **/
  46. // 自定义返回数据
  47. public R data(T data) {
  48. this.setData(data);
  49. return this;
  50. }
  51. // 自定义状态信息
  52. public R message(String message) {
  53. this.setMessage(message);
  54. return this;
  55. }
  56. // 自定义状态码
  57. public R code(Integer code) {
  58. this.setCode(code);
  59. return this;
  60. }
  61. // 自定义返回结果
  62. public R success(Boolean success) {
  63. this.setSuccess(success);
  64. return this;
  65. }
  66. }