diff --git a/src/main/java/com/gxwebsoft/auto/dto/QrLoginData.java b/src/main/java/com/gxwebsoft/auto/dto/QrLoginData.java index 20ee1f9..39fadcc 100644 --- a/src/main/java/com/gxwebsoft/auto/dto/QrLoginData.java +++ b/src/main/java/com/gxwebsoft/auto/dto/QrLoginData.java @@ -52,4 +52,9 @@ public class QrLoginData { */ private String accessToken; + /** + * 租户ID + */ + private Integer tenantId; + } diff --git a/src/main/java/com/gxwebsoft/auto/dto/QrLoginStatusResponse.java b/src/main/java/com/gxwebsoft/auto/dto/QrLoginStatusResponse.java index 1eb0d4a..4c9a6f7 100644 --- a/src/main/java/com/gxwebsoft/auto/dto/QrLoginStatusResponse.java +++ b/src/main/java/com/gxwebsoft/auto/dto/QrLoginStatusResponse.java @@ -1,5 +1,7 @@ package com.gxwebsoft.auto.dto; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.models.auth.In; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; @@ -24,9 +26,12 @@ public class QrLoginStatusResponse { private String accessToken; @Schema(description = "用户信息(仅在confirmed状态时返回)") - private Object userInfo; + private User userInfo; @Schema(description = "剩余过期时间(秒)") private Long expiresIn; + @Schema(description = "租户ID") + private Integer tenantId; + } diff --git a/src/main/java/com/gxwebsoft/auto/service/impl/QrLoginServiceImpl.java b/src/main/java/com/gxwebsoft/auto/service/impl/QrLoginServiceImpl.java index cc3f9bb..e9f04c0 100644 --- a/src/main/java/com/gxwebsoft/auto/service/impl/QrLoginServiceImpl.java +++ b/src/main/java/com/gxwebsoft/auto/service/impl/QrLoginServiceImpl.java @@ -6,7 +6,6 @@ import cn.hutool.core.lang.UUID; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.gxwebsoft.auto.dto.*; import com.gxwebsoft.auto.service.QrLoginService; import com.gxwebsoft.common.core.config.ConfigProperties; @@ -18,7 +17,6 @@ import com.gxwebsoft.common.system.service.UserService; import com.gxwebsoft.common.system.service.WxService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.io.File; @@ -60,8 +58,8 @@ public class QrLoginServiceImpl implements QrLoginService { QrLoginData qrLoginData = new QrLoginData(); qrLoginData.setToken(token); qrLoginData.setStatus(QR_LOGIN_STATUS_PENDING); - qrLoginData.setCreateTime(DateUtil.date()); - qrLoginData.setExpireTime(DateUtil.offsetSecond(DateUtil.date(), QR_LOGIN_TOKEN_TTL.intValue())); + qrLoginData.setCreateTime(DateUtil.formatDateTime(DateUtil.date())); + qrLoginData.setExpireTime(DateUtil.formatDateTime(DateUtil.offsetSecond(DateUtil.date(), QR_LOGIN_TOKEN_TTL.intValue()))); // 存储到Redis,设置过期时间 String redisKey = QR_LOGIN_TOKEN_KEY + token; @@ -106,26 +104,27 @@ public class QrLoginServiceImpl implements QrLoginService { } // 检查是否过期 - if (DateUtil.date().after(qrLoginData.getExpireTime())) { + if (DateUtil.date().after(DateUtil.parseDateTime(qrLoginData.getExpireTime()))) { // 删除过期的token redisUtil.delete(redisKey); return new QrLoginStatusResponse(QR_LOGIN_STATUS_EXPIRED, null, null, 0L); } // 计算剩余过期时间 - long expiresIn = (qrLoginData.getExpireTime().getTime() - DateUtil.date().getTime()) / 1000; + long expiresIn = (DateUtil.parseDateTime(qrLoginData.getExpireTime()).getTime() - DateUtil.date().getTime()) / 1000; QrLoginStatusResponse response = new QrLoginStatusResponse(); response.setStatus(qrLoginData.getStatus()); response.setExpiresIn(expiresIn); + response.setTenantId(qrLoginData.getTenantId()); // 如果已确认,返回token和用户信息 if (QR_LOGIN_STATUS_CONFIRMED.equals(qrLoginData.getStatus())) { response.setAccessToken(qrLoginData.getAccessToken()); - // 获取用户信息 if (qrLoginData.getUserId() != null) { - User user = userService.getByIdRel(qrLoginData.getUserId()); + User user = userService.getAllByUserId("" + qrLoginData.getUserId()); + System.out.println("qrLoginData->user = " + user); if (user != null) { // 清除敏感信息 user.setPassword(null); @@ -134,7 +133,7 @@ public class QrLoginServiceImpl implements QrLoginService { } // 确认后删除token,防止重复使用 - redisUtil.delete(redisKey); +// redisUtil.delete(redisKey); } return response; @@ -157,7 +156,7 @@ public class QrLoginServiceImpl implements QrLoginService { } // 检查是否过期 - if (DateUtil.date().after(qrLoginData.getExpireTime())) { + if (DateUtil.date().after(DateUtil.parseDateTime(qrLoginData.getExpireTime()))) { redisUtil.delete(redisKey); throw new RuntimeException("扫码登录token已过期"); } @@ -173,7 +172,6 @@ public class QrLoginServiceImpl implements QrLoginService { throw new RuntimeException("用户已被冻结"); } - System.out.println("扫码登录->user = " + user); // 生成JWT token JwtSubject jwtSubject = new JwtSubject(user.getUsername(), user.getTenantId()); String accessToken = JwtUtil.buildToken(jwtSubject, configProperties.getTokenExpireTime(), configProperties.getTokenKey()); @@ -183,9 +181,8 @@ public class QrLoginServiceImpl implements QrLoginService { qrLoginData.setUserId(userId); qrLoginData.setUsername(user.getUsername()); qrLoginData.setAccessToken(accessToken); + qrLoginData.setTenantId(user.getTenantId()); System.out.println("qrLoginData = " + qrLoginData); - System.out.println("token = " + token); - System.out.println("getUsername. = " + user.getUsername()); // 更新Redis中的数据 redisUtil.set(redisKey, qrLoginData, 60L, TimeUnit.SECONDS); // 给前端60秒时间获取token @@ -211,7 +208,7 @@ public class QrLoginServiceImpl implements QrLoginService { } // 检查是否过期 - if (DateUtil.date().after(qrLoginData.getExpireTime())) { + if (DateUtil.date().after(DateUtil.parseDateTime(qrLoginData.getExpireTime()))) { redisUtil.delete(redisKey); return false; } @@ -221,7 +218,7 @@ public class QrLoginServiceImpl implements QrLoginService { qrLoginData.setStatus(QR_LOGIN_STATUS_SCANNED); // 计算剩余过期时间 - long remainingSeconds = (qrLoginData.getExpireTime().getTime() - DateUtil.date().getTime()) / 1000; + long remainingSeconds = (DateUtil.parseDateTime(qrLoginData.getExpireTime()).getTime() - DateUtil.date().getTime()) / 1000; redisUtil.set(redisKey, qrLoginData, remainingSeconds, TimeUnit.SECONDS); log.info("扫码登录token {} 状态更新为已扫码", token); diff --git a/src/main/java/com/gxwebsoft/common/system/controller/UserController.java b/src/main/java/com/gxwebsoft/common/system/controller/UserController.java index 5f7bfd4..81ff503 100644 --- a/src/main/java/com/gxwebsoft/common/system/controller/UserController.java +++ b/src/main/java/com/gxwebsoft/common/system/controller/UserController.java @@ -177,11 +177,8 @@ public class UserController extends BaseController { final Set collect = userList.stream().map(User::getPhone).collect(Collectors.toSet()); final List list = userService.list(new LambdaQueryWrapper().in(User::getPhone, collect).select(User::getPhone)); - System.out.println("list = " + list); final Map> phoneCollect = list.stream().collect(Collectors.groupingBy(User::getPhone)); - System.out.println("phoneCollect = " + phoneCollect); userList.removeIf(d -> phoneCollect.containsKey(d.getPhone())); - System.out.println("phoneCollect = " + phoneCollect); if (userService.saveBatch(userList)) { return success("添加成功");