add Gao user invite

This commit is contained in:
Timi
2026-08-14 11:57:10 +08:00
parent f1e10df6a7
commit e369a38e2e
14 changed files with 573 additions and 17 deletions
@@ -18,6 +18,7 @@ import com.imyeyu.java.bean.timi.TimiException;
import com.imyeyu.spring.TimiSpring;
import com.imyeyu.spring.util.Redis;
import com.imyeyu.utils.Digest;
import com.imyeyu.utils.Regex;
import com.imyeyu.utils.Time;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -38,7 +39,6 @@ import java.util.concurrent.ThreadLocalRandom;
@RequiredArgsConstructor(onConstructor_ = {@Lazy})
public class UserLoginServiceImplement implements UserLoginService, TimiJava {
private static final String REGEX_PHONE_NO = "^1\\d{10}$";
private static final String USER_TOKEN_KEY_PREFIX = "USER:TOKEN:";
private static final String PHONE_VERIFY_KEY_PREFIX = "USER:PHONE:VERIFY:";
private static final long PHONE_VERIFY_CODE_TTL = Time.M * 5;
@@ -61,7 +61,7 @@ public class UserLoginServiceImplement implements UserLoginService, TimiJava {
User dbUser = userService.get(req.getUser());
if (dbUser == null && req.getUser().contains("@")) {
dbUser = userService.getByVerifiedEmail(req.getUser());
} else if (dbUser == null && isPhoneNo(req.getUser())) {
} else if (dbUser == null && Regex.isMatch(Regex.MOBILE_PHONE, req.getUser())) {
dbUser = userService.getByVerifiedPhoneNo(req.getUser());
} else if (dbUser == null) {
dbUser = userService.getByName(req.getUser());
@@ -143,8 +143,8 @@ public class UserLoginServiceImplement implements UserLoginService, TimiJava {
@Transactional(TimiServerDBConfig.ROLLBACKER)
@Override
public void sendPhoneVerifyCode(String phoneNo) {
TimiException.requiredTrue(isPhoneNo(phoneNo), "invalid phone number");
User verifiedUser = userService.getByVerifiedPhoneNo(phoneNo);
TimiException.requiredTrue(Regex.isMatch(Regex.MOBILE_PHONE, phoneNo), "invalid phone number");
User verifiedUser = userService.getByPhoneNo(phoneNo);
User loginUser = getRequireLoginUser();
TimiException.requiredTrue(verifiedUser == null || verifiedUser.getId().equals(loginUser.getId()), "existed phone number");
@@ -156,11 +156,11 @@ public class UserLoginServiceImplement implements UserLoginService, TimiJava {
@Transactional(TimiServerDBConfig.ROLLBACKER)
@Override
public void verifyPhoneNo(String phoneNo, String verifyCode) {
TimiException.requiredTrue(isPhoneNo(phoneNo), "invalid phone number");
TimiException.requiredTrue(Regex.isMatch(Regex.MOBILE_PHONE, phoneNo), "invalid phone number");
TimiException.required(verifyCode, "not found verify code");
User user = getRequireLoginUser();
User verifiedUser = userService.getByVerifiedPhoneNo(phoneNo);
User verifiedUser = userService.getByPhoneNo(phoneNo);
TimiException.requiredTrue(verifiedUser == null || verifiedUser.getId().equals(user.getId()), "existed phone number");
String cacheCode = redisUserPhoneVerify.get(getPhoneVerifyKey(phoneNo));
@@ -188,10 +188,6 @@ public class UserLoginServiceImplement implements UserLoginService, TimiJava {
userService.delete(user.getId());
}
private boolean isPhoneNo(String value) {
return TimiJava.isNotEmpty(value) && value.matches(REGEX_PHONE_NO);
}
private String getPhoneVerifyKey(String phoneNo) {
return "%s%s".formatted(PHONE_VERIFY_KEY_PREFIX, phoneNo);
}
@@ -57,7 +57,7 @@ public class UserServiceImplement extends AbstractEntityService<User, String> im
{
if (TimiJava.isNotEmpty(user.getPhoneNo())) {
TimiException.requiredTrue(user.isValidPhone(), "invalid phone");
User byPhoneNo = getByVerifiedPhoneNo(user.getPhoneNo());
User byPhoneNo = getByPhoneNo(user.getPhoneNo());
TimiException.requiredNull(byPhoneNo, "existed phone number");
}
}
@@ -94,7 +94,7 @@ public class UserServiceImplement extends AbstractEntityService<User, String> im
if (TimiJava.isNotEmpty(phoneNo)) {
TimiException.requiredTrue(user.isValidPhone(), "invalid phone");
if (!phoneNo.equals(dbUser.getPhoneNo())) {
User byPhoneNo = getByVerifiedPhoneNo(phoneNo);
User byPhoneNo = getByPhoneNo(phoneNo);
TimiException.requiredTrue(byPhoneNo == null || byPhoneNo.getId().equals(dbUser.getId()), "existed phone number");
}
}