diff --git a/src/main/java/com/gxwebsoft/common/system/controller/WxOfficialController.java b/src/main/java/com/gxwebsoft/common/system/controller/WxOfficialController.java index edf3e3b..1a8157c 100644 --- a/src/main/java/com/gxwebsoft/common/system/controller/WxOfficialController.java +++ b/src/main/java/com/gxwebsoft/common/system/controller/WxOfficialController.java @@ -296,16 +296,32 @@ public class WxOfficialController extends BaseController { */ private void completeQrLogin(String token, Integer userId, Integer tenantId) { try { - // 更新扫码登录状态 - String redisKey = "QR_LOGIN_TOKEN:" + token; - JSONObject qrLoginData = new JSONObject(); - qrLoginData.put("status", "confirmed"); - qrLoginData.put("userId", userId); - qrLoginData.put("tenantId", tenantId); - qrLoginData.put("confirmTime", System.currentTimeMillis()); - // 保存1分钟,给前端足够时间获取 - redisUtil.set(redisKey, qrLoginData.toJSONString(), 60L, TimeUnit.SECONDS); - System.out.println("扫码登录完成,token=" + token + ", userId=" + userId); + // 获取已有的扫码登录数据 + String redisKey = "qr-login:token:" + token; + String existingData = redisUtil.get(redisKey); + + // 如果有现有数据,解析后更新 + if (StrUtil.isNotBlank(existingData)) { + JSONObject jsonData = JSONObject.parseObject(existingData); + jsonData.put("status", "confirmed"); + jsonData.put("userId", userId); + jsonData.put("tenantId", tenantId); + jsonData.put("confirmTime", System.currentTimeMillis()); + // 保存60秒,给前端足够时间获取 + redisUtil.set(redisKey, jsonData.toJSONString(), 60L, TimeUnit.SECONDS); + System.out.println("扫码登录完成,token=" + token + ", userId=" + userId); + } else { + // 没有现有数据,创建一个新的 + JSONObject qrLoginData = new JSONObject(); + qrLoginData.put("token", token); + qrLoginData.put("status", "confirmed"); + qrLoginData.put("userId", userId); + qrLoginData.put("tenantId", tenantId); + qrLoginData.put("confirmTime", System.currentTimeMillis()); + // 保存60秒 + redisUtil.set(redisKey, qrLoginData.toJSONString(), 60L, TimeUnit.SECONDS); + System.out.println("扫码登录完成(新建),token=" + token + ", userId=" + userId); + } } catch (Exception e) { log.error("完成扫码登录失败: {}", e.getMessage()); }