feat(qr-login): 添加租户ID字段以支持多租户场景

在 QR 登码登录流程中,新增 tenantId 字段用于标识用户所属租户。
同时移除了调试用的 System.out.println语句,优化代码整洁性。
调整了 QrLoginStatusResponse 的构造参数,确保返回信息包含租户 ID。
This commit is contained in:
2025-09-22 14:32:05 +08:00
parent 5431e4bc81
commit 289ff69812

View File

@@ -58,6 +58,7 @@ public class QrLoginServiceImpl implements QrLoginService {
QrLoginData qrLoginData = new QrLoginData(); QrLoginData qrLoginData = new QrLoginData();
qrLoginData.setToken(token); qrLoginData.setToken(token);
qrLoginData.setStatus(QR_LOGIN_STATUS_PENDING); qrLoginData.setStatus(QR_LOGIN_STATUS_PENDING);
qrLoginData.setTenantId(tenantId);
qrLoginData.setCreateTime(DateUtil.formatDateTime(DateUtil.date())); qrLoginData.setCreateTime(DateUtil.formatDateTime(DateUtil.date()));
qrLoginData.setExpireTime(DateUtil.formatDateTime(DateUtil.offsetSecond(DateUtil.date(), QR_LOGIN_TOKEN_TTL.intValue()))); qrLoginData.setExpireTime(DateUtil.formatDateTime(DateUtil.offsetSecond(DateUtil.date(), QR_LOGIN_TOKEN_TTL.intValue())));
@@ -93,21 +94,21 @@ public class QrLoginServiceImpl implements QrLoginService {
@Override @Override
public QrLoginStatusResponse checkQrLoginStatus(String token) { public QrLoginStatusResponse checkQrLoginStatus(String token) {
if (StrUtil.isBlank(token)) { if (StrUtil.isBlank(token)) {
return new QrLoginStatusResponse(QR_LOGIN_STATUS_EXPIRED, null, null, 0L); return new QrLoginStatusResponse(QR_LOGIN_STATUS_EXPIRED, null, null, 0L, null);
} }
String redisKey = QR_LOGIN_TOKEN_KEY + token; String redisKey = QR_LOGIN_TOKEN_KEY + token;
QrLoginData qrLoginData = redisUtil.get(redisKey, QrLoginData.class); QrLoginData qrLoginData = redisUtil.get(redisKey, QrLoginData.class);
if (qrLoginData == null) { if (qrLoginData == null) {
return new QrLoginStatusResponse(QR_LOGIN_STATUS_EXPIRED, null, null, 0L); return new QrLoginStatusResponse(QR_LOGIN_STATUS_EXPIRED, null, null, 0L, null);
} }
// 检查是否过期 // 检查是否过期
if (DateUtil.date().after(DateUtil.parseDateTime(qrLoginData.getExpireTime()))) { if (DateUtil.date().after(DateUtil.parseDateTime(qrLoginData.getExpireTime()))) {
// 删除过期的token // 删除过期的token
redisUtil.delete(redisKey); redisUtil.delete(redisKey);
return new QrLoginStatusResponse(QR_LOGIN_STATUS_EXPIRED, null, null, 0L); return new QrLoginStatusResponse(QR_LOGIN_STATUS_EXPIRED, null, null, 0L, null);
} }
// 计算剩余过期时间 // 计算剩余过期时间
@@ -124,7 +125,6 @@ public class QrLoginServiceImpl implements QrLoginService {
// 获取用户信息 // 获取用户信息
if (qrLoginData.getUserId() != null) { if (qrLoginData.getUserId() != null) {
User user = userService.getAllByUserId("" + qrLoginData.getUserId()); User user = userService.getAllByUserId("" + qrLoginData.getUserId());
System.out.println("qrLoginData->user = " + user);
if (user != null) { if (user != null) {
// 清除敏感信息 // 清除敏感信息
user.setPassword(null); user.setPassword(null);
@@ -182,7 +182,6 @@ public class QrLoginServiceImpl implements QrLoginService {
qrLoginData.setUsername(user.getUsername()); qrLoginData.setUsername(user.getUsername());
qrLoginData.setAccessToken(accessToken); qrLoginData.setAccessToken(accessToken);
qrLoginData.setTenantId(user.getTenantId()); qrLoginData.setTenantId(user.getTenantId());
System.out.println("qrLoginData = " + qrLoginData);
// 更新Redis中的数据 // 更新Redis中的数据
redisUtil.set(redisKey, qrLoginData, 60L, TimeUnit.SECONDS); // 给前端60秒时间获取token redisUtil.set(redisKey, qrLoginData, 60L, TimeUnit.SECONDS); // 给前端60秒时间获取token
@@ -191,7 +190,7 @@ public class QrLoginServiceImpl implements QrLoginService {
// 清除敏感信息 // 清除敏感信息
user.setPassword(null); user.setPassword(null);
return new QrLoginStatusResponse(QR_LOGIN_STATUS_CONFIRMED, accessToken, user, 60L); return new QrLoginStatusResponse(QR_LOGIN_STATUS_CONFIRMED, accessToken, user, 60L, user.getTenantId());
} }
@Override @Override