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 | +} | ... | ... |