diff --git a/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoUserInviteServiceImplement.java b/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoUserInviteServiceImplement.java index 9b28eac..3d40765 100644 --- a/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoUserInviteServiceImplement.java +++ b/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoUserInviteServiceImplement.java @@ -66,6 +66,7 @@ public class GaoUserInviteServiceImplement implements GaoUserInviteService { private static final long REGISTER_RATE_LIMIT_TTL = Time.M * 10; private static final int CODE_RATE_LIMIT = 30; private static final int REGISTER_VALUE_RATE_LIMIT = 10; + private static final String INVALID_INVITE_MESSAGE = "邀请码无效或已过期"; private static final SecureRandom SECURE_RANDOM = new SecureRandom(); @@ -152,9 +153,16 @@ public class GaoUserInviteServiceImplement implements GaoUserInviteService { public GaoUserInviteValidateResponse validate(String code) { TimiException.required(code, "not found code"); checkCodeRateLimit(code); - GaoUserInviteCache cache = requireValidInvite(code); - validateInviteTarget(cache); - return new GaoUserInviteValidateResponse(true, cache.getExpireAt()); + try { + GaoUserInviteCache cache = requireValidInvite(code); + validateInviteTarget(cache); + return new GaoUserInviteValidateResponse(true, cache.getExpireAt()); + } catch (TimiException e) { + if (TimiCode.ARG_BAD == e.getCode() && INVALID_INVITE_MESSAGE.equals(e.getMessage())) { + return new GaoUserInviteValidateResponse(false, -1L); + } + throw e; + } } @Transactional(TimiServerDBConfig.ROLLBACKER) @@ -354,7 +362,7 @@ public class GaoUserInviteServiceImplement implements GaoUserInviteService { } private TimiException invalidInvite() { - return new TimiException(TimiCode.ARG_BAD, "邀请码无效或已过期"); + return new TimiException(TimiCode.ARG_BAD, INVALID_INVITE_MESSAGE); } private boolean isCoreAdmin() { diff --git a/src/main/java/com/imyeyu/api/modules/gao/vo/GaoUserInviteValidateResponse.java b/src/main/java/com/imyeyu/api/modules/gao/vo/GaoUserInviteValidateResponse.java index e6197ae..5c9ff40 100644 --- a/src/main/java/com/imyeyu/api/modules/gao/vo/GaoUserInviteValidateResponse.java +++ b/src/main/java/com/imyeyu/api/modules/gao/vo/GaoUserInviteValidateResponse.java @@ -14,6 +14,6 @@ public class GaoUserInviteValidateResponse { /// true 为邀请码可用 private boolean valid; - /// 邀请过期时间,毫秒时间戳 + /// 邀请过期时间,毫秒时间戳;valid 为 false 时为 0 private Long expireAt; }