diff --git a/.workbuddy/expert-history.json b/.workbuddy/expert-history.json new file mode 100644 index 0000000..5ded824 --- /dev/null +++ b/.workbuddy/expert-history.json @@ -0,0 +1,17 @@ +{ + "version": 2, + "sessions": { + "da2fb4dc76a94426a7dfef478f674489": [ + { + "expertId": "SeniorDeveloper", + "name": "Will", + "profession": "高级开发工程师", + "avatarUrl": "https://acc-1258344699.cos.accelerate.myqcloud.com/workbuddy/experts/avatars/02-Engineering/SeniorDeveloper/SeniorDeveloper.png", + "promptUrl": "https://acc-1258344699.cos.accelerate.myqcloud.com/workbuddy/experts/experts/02-Engineering/SeniorDeveloper/SeniorDeveloper_zh.md", + "usedAt": 1775495439006, + "industryId": "all" + } + ] + }, + "lastUpdated": 1775497010453 +} \ No newline at end of file diff --git a/.workbuddy/memory/2026-04-07.md b/.workbuddy/memory/2026-04-07.md new file mode 100644 index 0000000..2eae388 --- /dev/null +++ b/.workbuddy/memory/2026-04-07.md @@ -0,0 +1,12 @@ +## 2026-04-07 工作记录 + +### 微信扫码登录问题修复 +1. 修复了UserSyncService中tenant_id字段名问题(从tenantId改为tenant_id) +2. 同时发送两种格式的tenant_id字段确保兼容性 +3. 修改了WxOfficialController,在同步前从数据库重新加载用户对象 +4. 添加了详细的调试日志便于问题排查 + +### 待解决问题 +1. websopy侧app_user_cache同步失败(tenant_id为null) +2. 扫码成功后需跳转到强制绑定手机号页面 +3. 注册成功后应跳转到控制台/console \ No newline at end of file diff --git a/src/main/java/com/gxwebsoft/auto/dto/QrLoginStatusResponse.java b/src/main/java/com/gxwebsoft/auto/dto/QrLoginStatusResponse.java index 99114aa..b833615 100644 --- a/src/main/java/com/gxwebsoft/auto/dto/QrLoginStatusResponse.java +++ b/src/main/java/com/gxwebsoft/auto/dto/QrLoginStatusResponse.java @@ -37,6 +37,15 @@ public class QrLoginStatusResponse { @Schema(description = "状态提示信息") private String message; + @Schema(description = "下一步操作:bind_phone-绑定手机号, redirect-跳转, login-直接登录") + private String nextAction; + + @Schema(description = "跳转URL(当nextAction为redirect时使用)") + private String redirectUrl; + + @Schema(description = "成功消息") + private String successMessage; + public QrLoginStatusResponse(String status, String accessToken, User userInfo, Long expiresIn, Integer tenantId) { this.status = status; this.accessToken = accessToken; 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 87feed1..e959fb1 100644 --- a/src/main/java/com/gxwebsoft/auto/service/impl/QrLoginServiceImpl.java +++ b/src/main/java/com/gxwebsoft/auto/service/impl/QrLoginServiceImpl.java @@ -442,6 +442,18 @@ public class QrLoginServiceImpl implements QrLoginService { || QR_LOGIN_STATUS_BIND_PHONE.equals(qrLoginData.getStatus())); response.setMessage(qrLoginData.getMessage()); + // 设置下一步操作逻辑 + if (QR_LOGIN_STATUS_BIND_PHONE.equals(qrLoginData.getStatus()) || Boolean.TRUE.equals(qrLoginData.getNeedBindPhone())) { + response.setNextAction("bind_phone"); + response.setRedirectUrl(null); + } else if (QR_LOGIN_STATUS_CONFIRMED.equals(qrLoginData.getStatus()) && StrUtil.isNotBlank(qrLoginData.getAccessToken())) { + response.setNextAction("redirect"); + response.setRedirectUrl("/console"); + response.setSuccessMessage("登录成功,即将跳转到控制台"); + } else { + response.setNextAction("wait"); + } + if (qrLoginData.getUserId() != null) { try { User user = userService.getAllByUserId(String.valueOf(qrLoginData.getUserId()));