Commit 0e3b32b0d0e7dc8f3b3860220743065b95efcd23
1 parent
86386133
feat(usr): 统一响应 Result + 错误码常量 REQ-USR-001
Showing
3 changed files
with
85 additions
and
0 deletions
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 | +} |