From a9a762a761e877b9448782ebe1e08efc91418151 Mon Sep 17 00:00:00 2001 From: jqb Date: Fri, 4 Sep 2026 11:25:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(archive-service):=20=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E7=BE=A4=E8=81=8A=E6=B6=88=E6=81=AF=E6=8E=A5=E6=94=B6=E8=80=85?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=BF=87=E9=95=BF=E5=AF=BC=E8=87=B4=E6=8F=92?= =?UTF-8?q?=E5=85=A5=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加判断接收者列表长度的逻辑 - 当接收者超过一个时,将 to_user 字段置空以避免数据库截断错误 - 单一接收者时保持原有 JSON 序列化保存方式 - 注释说明群聊场景下接收者数据保存和读取的处理机制 --- .../com/artedu/archive/service/ArchivePullService.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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); }