fix(archive-service): 解决群聊消息接收者字段过长导致插入失败问题
- 添加判断接收者列表长度的逻辑 - 当接收者超过一个时,将 to_user 字段置空以避免数据库截断错误 - 单一接收者时保持原有 JSON 序列化保存方式 - 注释说明群聊场景下接收者数据保存和读取的处理机制
This commit is contained in:
parent
ac476c1889
commit
a9a762a761
@ -292,7 +292,15 @@ public class ArchivePullService {
|
|||||||
|
|
||||||
Object tolistObj = msgMap.get("tolist");
|
Object tolistObj = msgMap.get("tolist");
|
||||||
if (tolistObj instanceof java.util.List) {
|
if (tolistObj instanceof java.util.List) {
|
||||||
|
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));
|
message.setToUser(JsonUtils.toJson(tolistObj));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
message.setToUser((String) tolistObj);
|
message.setToUser((String) tolistObj);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user