fix(sync): 修复用户同步到 websopy 的数据格式及完整性问题
- 修正同步数据中的 tenant 字段名称为 tenant_id 以匹配 websopy 数据库字段 - 增加 tenantId 值的日志输出便于调试和校验 - 在 wx 官方控制器同步用户时先从数据库重新加载用户数据,保证同步数据完整性 - 若重新加载失败则回退使用当前用户对象进行同步 - 优化用户角色保存后同步操作的可靠性和准确性
This commit is contained in:
@@ -274,8 +274,14 @@ public class WxOfficialController extends BaseController {
|
|||||||
userRole.setTenantId(user.getTenantId());
|
userRole.setTenantId(user.getTenantId());
|
||||||
userRole.setRoleId(user.getRoleId());
|
userRole.setRoleId(user.getRoleId());
|
||||||
userRoleService.save(userRole);
|
userRoleService.save(userRole);
|
||||||
// 同步到 websopy
|
// 同步到 websopy - 从数据库重新加载确保有完整数据
|
||||||
userSyncService.syncUserToWebsopy(user);
|
User savedUser = userService.getAllByUserId(String.valueOf(userId));
|
||||||
|
if (savedUser != null) {
|
||||||
|
userSyncService.syncUserToWebsopy(savedUser);
|
||||||
|
} else {
|
||||||
|
// 如果无法重新加载,使用当前对象
|
||||||
|
userSyncService.syncUserToWebsopy(user);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
System.out.println("新微信公众号用户 userId = " + userId);
|
System.out.println("新微信公众号用户 userId = " + userId);
|
||||||
}
|
}
|
||||||
@@ -690,8 +696,14 @@ public class WxOfficialController extends BaseController {
|
|||||||
userRole.setTenantId(user.getTenantId());
|
userRole.setTenantId(user.getTenantId());
|
||||||
userRole.setRoleId(user.getRoleId());
|
userRole.setRoleId(user.getRoleId());
|
||||||
userRoleService.save(userRole);
|
userRoleService.save(userRole);
|
||||||
// 同步到 websopy
|
// 同步到 websopy - 从数据库重新加载确保有完整数据
|
||||||
userSyncService.syncUserToWebsopy(user);
|
User savedUser = userService.getAllByUserId(String.valueOf(userId));
|
||||||
|
if (savedUser != null) {
|
||||||
|
userSyncService.syncUserToWebsopy(savedUser);
|
||||||
|
} else {
|
||||||
|
// 如果无法重新加载,使用当前对象
|
||||||
|
userSyncService.syncUserToWebsopy(user);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
System.out.println("数据不一致:创建新用户 userId = " + userId);
|
System.out.println("数据不一致:创建新用户 userId = " + userId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,8 +65,9 @@ public class UserSyncService {
|
|||||||
userCache.put("status", user.getStatus());
|
userCache.put("status", user.getStatus());
|
||||||
userCache.put("updateTime", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
userCache.put("updateTime", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||||
// tenantId 可能为 null,但在 websopy 端是必填字段,至少传 0
|
// tenantId 可能为 null,但在 websopy 端是必填字段,至少传 0
|
||||||
|
// 注意:websopy 端数据库字段是 tenant_id(下划线),不是 tenantId(驼峰)
|
||||||
Integer tenantIdValue = user.getTenantId() != null ? user.getTenantId() : 0;
|
Integer tenantIdValue = user.getTenantId() != null ? user.getTenantId() : 0;
|
||||||
userCache.put("tenantId", tenantIdValue);
|
userCache.put("tenant_id", tenantIdValue);
|
||||||
|
|
||||||
String url = websopyBaseUrl + "/api/app/user-sync/single";
|
String url = websopyBaseUrl + "/api/app/user-sync/single";
|
||||||
String body = userCache.toJSONString();
|
String body = userCache.toJSONString();
|
||||||
@@ -74,6 +75,9 @@ public class UserSyncService {
|
|||||||
log.info("同步用户到 websopy: userId={}, username={}, nickname={}, phone={}, tenantId={}, url={}",
|
log.info("同步用户到 websopy: userId={}, username={}, nickname={}, phone={}, tenantId={}, url={}",
|
||||||
user.getUserId(), user.getUsername(), user.getNickname(), user.getPhone(), user.getTenantId(), url);
|
user.getUserId(), user.getUsername(), user.getNickname(), user.getPhone(), user.getTenantId(), url);
|
||||||
log.debug("同步用户请求体: {}", body);
|
log.debug("同步用户请求体: {}", body);
|
||||||
|
// 额外日志:tenantId 值检查
|
||||||
|
log.debug("tenantId检查 - 原始值: {}, 转换后值: {}, 请求体中tenant_id字段: {}",
|
||||||
|
user.getTenantId(), tenantIdValue, userCache.get("tenant_id"));
|
||||||
|
|
||||||
// 发送 HTTP POST 请求
|
// 发送 HTTP POST 请求
|
||||||
Map<String, String> headers = new HashMap<>();
|
Map<String, String> headers = new HashMap<>();
|
||||||
|
|||||||
Reference in New Issue
Block a user