refactor: 多租户开发和代码规范调整

This commit is contained in:
Ray.Hao
2025-12-11 21:13:52 +08:00
parent 47cabcbcfc
commit 51d8220a18
67 changed files with 922 additions and 1157 deletions

View File

@@ -18,9 +18,10 @@ public interface AuthService {
*
* @param username 用户名
* @param password 密码
* @param tenantId 租户ID可选多租户模式下用于指定租户
* @return 登录结果
*/
AuthenticationToken login(String username, String password);
AuthenticationToken login(String username, String password, Long tenantId);
/**
* 登出

View File

@@ -21,6 +21,7 @@ import com.youlai.boot.security.model.WxMiniAppCodeAuthenticationToken;
import com.youlai.boot.security.model.WxMiniAppPhoneAuthenticationToken;
import com.youlai.boot.security.token.TokenManager;
import com.youlai.boot.security.util.SecurityUtils;
import com.youlai.boot.common.tenant.TenantContextHolder;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
@@ -61,10 +62,16 @@ public class AuthServiceImpl implements AuthService {
*
* @param username 用户名
* @param password 密码
* @param tenantId 租户ID可选多租户模式下用于指定租户
* @return 访问令牌
*/
@Override
public AuthenticationToken login(String username, String password) {
public AuthenticationToken login(String username, String password, Long tenantId) {
// 如果指定了租户ID需要先设置租户上下文以便查询该租户下的用户
if (tenantId != null) {
com.youlai.boot.common.tenant.TenantContextHolder.setTenantId(tenantId);
}
// 1. 创建用于密码认证的令牌(未认证)
UsernamePasswordAuthenticationToken authenticationToken =
new UsernamePasswordAuthenticationToken(username.trim(), password);
@@ -194,16 +201,16 @@ public class AuthServiceImpl implements AuthService {
String imageBase64Data = captcha.getImageBase64Data();
// 验证码文本缓存至Redis用于登录校验
String captchaKey = IdUtil.fastSimpleUUID();
String captchaId = IdUtil.fastSimpleUUID();
redisTemplate.opsForValue().set(
StrUtil.format(RedisConstants.Captcha.IMAGE_CODE, captchaKey),
StrUtil.format(RedisConstants.Captcha.IMAGE_CODE, captchaId),
captchaCode,
captchaProperties.getExpireSeconds(),
TimeUnit.SECONDS
);
return CaptchaVO.builder()
.captchaKey(captchaKey)
.captchaId(captchaId)
.captchaBase64(imageBase64Data)
.build();
}