diff --git a/backend/archive-service/src/main/java/com/artedu/archive/service/ArchivePullService.java b/backend/archive-service/src/main/java/com/artedu/archive/service/ArchivePullService.java index e843820..1f29bfc 100644 --- a/backend/archive-service/src/main/java/com/artedu/archive/service/ArchivePullService.java +++ b/backend/archive-service/src/main/java/com/artedu/archive/service/ArchivePullService.java @@ -292,7 +292,15 @@ public class ArchivePullService { Object tolistObj = msgMap.get("tolist"); if (tolistObj instanceof java.util.List) { - message.setToUser(JsonUtils.toJson(tolistObj)); + java.util.List tolist = (java.util.List) tolistObj; + if (tolist.size() > 1) { + // 群聊/多接收者:接收者 JSON 数组会超出 to_user(VARCHAR128) 触发 Data too long 截断, + // 导致整条群消息 INSERT 失败丢失。接收者列表已由下方 tolist(TEXT) 完整保存, + // 且读取侧(Controller/SessionService)查询会回退匹配 tolist,故此处 to_user 置空。 + message.setToUser(null); + } else { + message.setToUser(JsonUtils.toJson(tolistObj)); + } } else { message.setToUser((String) tolistObj); }