fix(user-sync): 修复用户同步时tenantId为空问题

- 在用户同步数据中添加tenantId字段,tenantId为空时默认传0
- 更新同步日志,增加tenantId信息输出,便于调试跟踪
- 在扫码登录流程中添加多处详细调试日志,输出关键变量状态
- 添加System.out调试信息,帮助排查绑定用户及扫码登录异常情况
This commit is contained in:
2026-04-06 23:27:25 +08:00
parent 4ff46dbefe
commit 003a248d37
3 changed files with 52 additions and 3 deletions

View File

@@ -306,6 +306,9 @@ public class WxOfficialController extends BaseController {
.eq(UserOauth::getTenantId, tenantId));
if (existingUser != null) {
userId = existingUser.getUserId();
System.out.println("已存在绑定用户 userId = " + userId);
} else {
System.out.println("警告count=1但未找到对应的绑定记录unionid=" + unionid + ", tenantId=" + tenantId);
}
}
}
@@ -318,6 +321,7 @@ public class WxOfficialController extends BaseController {
*/
private void completeQrLogin(String token, Integer userId, Integer tenantId) {
try {
System.out.println("开始完成扫码登录: token=" + token + ", userId=" + userId + ", tenantId=" + tenantId);
String redisKey = "qr-login:token:" + token;
QrLoginData qrLoginData = redisUtil.get(redisKey, QrLoginData.class);
if (qrLoginData == null) {
@@ -352,9 +356,14 @@ public class WxOfficialController extends BaseController {
}
redisUtil.set(redisKey, qrLoginData, ttlSeconds, TimeUnit.SECONDS);
log.info("扫码登录状态已更新token={}, userId={}, status={}", token, userId, qrLoginData.getStatus());
log.info("扫码登录状态已更新token={}, userId={}, status={}, needBindPhone={}, message={}, ttlSeconds={}",
token, userId, qrLoginData.getStatus(), qrLoginData.getNeedBindPhone(),
qrLoginData.getMessage(), ttlSeconds);
System.out.println("扫码登录完成token=" + token + ", userId=" + userId +
", status=" + qrLoginData.getStatus() + ", message=" + qrLoginData.getMessage());
} catch (Exception e) {
log.error("完成扫码登录失败", e);
System.out.println("完成扫码登录异常: " + e.getMessage());
}
}

View File

@@ -64,12 +64,15 @@ public class UserSyncService {
userCache.put("phone", user.getPhone());
userCache.put("status", user.getStatus());
userCache.put("updateTime", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
// tenantId 可能为 null但在 websopy 端是必填字段,至少传 0
Integer tenantIdValue = user.getTenantId() != null ? user.getTenantId() : 0;
userCache.put("tenantId", tenantIdValue);
String url = websopyBaseUrl + "/api/app/user-sync/single";
String body = userCache.toJSONString();
log.info("同步用户到 websopy: userId={}, username={}, nickname={}, phone={}, url={}",
user.getUserId(), user.getUsername(), user.getNickname(), user.getPhone(), url);
log.info("同步用户到 websopy: userId={}, username={}, nickname={}, phone={}, tenantId={}, url={}",
user.getUserId(), user.getUsername(), user.getNickname(), user.getPhone(), user.getTenantId(), url);
log.debug("同步用户请求体: {}", body);
// 发送 HTTP POST 请求