Commit 0e3b32b0d0e7dc8f3b3860220743065b95efcd23

Authored by zichun
1 parent 86386133

feat(usr): 统一响应 Result + 错误码常量 REQ-USR-001

backend/src/main/java/com/xly/test4/common/response/Result.java 0 → 100644
  1 +package com.xly.test4.common.response;
  2 +
  3 +import lombok.Getter;
  4 +
  5 +@Getter
  6 +public class Result<T> {
  7 +
  8 + private final int code;
  9 + private final String message;
  10 + private final T data;
  11 + private final long timestamp;
  12 +
  13 + private Result(int code, String message, T data) {
  14 + this.code = code;
  15 + this.message = message;
  16 + this.data = data;
  17 + this.timestamp = System.currentTimeMillis();
  18 + }
  19 +
  20 + public static <T> Result<T> success(T data) {
  21 + return new Result<>(ResultCode.OK, "操作成功", data);
  22 + }
  23 +
  24 + public static <T> Result<T> fail(int code, String message) {
  25 + return new Result<>(code, message, null);
  26 + }
  27 +}
... ...
backend/src/main/java/com/xly/test4/common/response/ResultCode.java 0 → 100644
  1 +package com.xly.test4.common.response;
  2 +
  3 +public final class ResultCode {
  4 +
  5 + private ResultCode() {
  6 + }
  7 +
  8 + public static final int OK = 200;
  9 + public static final int PARAM_INVALID = 40001;
  10 + public static final int USER_NAME_DUPLICATE = 40002;
  11 + public static final int USER_CODE_DUPLICATE = 40003;
  12 + public static final int EMPLOYEE_INVALID = 40004;
  13 + public static final int PERMISSION_INVALID = 40005;
  14 + public static final int UNAUTHENTICATED = 40101;
  15 + public static final int FORBIDDEN = 40301;
  16 + public static final int INTERNAL_ERROR = 50000;
  17 +}
... ...
backend/src/test/java/com/xly/test4/common/response/ResultTest.java 0 → 100644
  1 +package com.xly.test4.common.response;
  2 +
  3 +import org.junit.jupiter.api.Test;
  4 +
  5 +import static org.assertj.core.api.Assertions.assertThat;
  6 +
  7 +class ResultTest {
  8 +
  9 + @Test
  10 + void successContainsDataAndCode200() {
  11 + Result<String> r = Result.success("hello");
  12 +
  13 + assertThat(r.getCode()).isEqualTo(200);
  14 + assertThat(r.getMessage()).isEqualTo("操作成功");
  15 + assertThat(r.getData()).isEqualTo("hello");
  16 + assertThat(r.getTimestamp()).isGreaterThan(0L);
  17 + }
  18 +
  19 + @Test
  20 + void failNullsDataAndSetsCustomCode() {
  21 + Result<Object> r = Result.fail(40002, "用户名已存在");
  22 +
  23 + assertThat(r.getCode()).isEqualTo(40002);
  24 + assertThat(r.getMessage()).isEqualTo("用户名已存在");
  25 + assertThat(r.getData()).isNull();
  26 + assertThat(r.getTimestamp()).isGreaterThan(0L);
  27 + }
  28 +
  29 + @Test
  30 + void resultCodeConstantsMatchSpec() {
  31 + assertThat(ResultCode.OK).isEqualTo(200);
  32 + assertThat(ResultCode.PARAM_INVALID).isEqualTo(40001);
  33 + assertThat(ResultCode.USER_NAME_DUPLICATE).isEqualTo(40002);
  34 + assertThat(ResultCode.USER_CODE_DUPLICATE).isEqualTo(40003);
  35 + assertThat(ResultCode.EMPLOYEE_INVALID).isEqualTo(40004);
  36 + assertThat(ResultCode.PERMISSION_INVALID).isEqualTo(40005);
  37 + assertThat(ResultCode.UNAUTHENTICATED).isEqualTo(40101);
  38 + assertThat(ResultCode.FORBIDDEN).isEqualTo(40301);
  39 + assertThat(ResultCode.INTERNAL_ERROR).isEqualTo(50000);
  40 + }
  41 +}
... ...