From 513e5442723f501525bf9ca6210b16561e5d3a2b Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Tue, 24 Mar 2026 11:41:07 +0800
Subject: [PATCH] 1
---
trading-order-service/src/main/java/com/yami/trading/service/chat/online/OnlineChatMessageServiceImpl.java | 21 +++++++++++++++++----
trading-order-admin/src/main/java/com/yami/trading/admin/controller/chat/NewAdminOnlineChatController.java | 16 ++++++++++++++++
2 files changed, 33 insertions(+), 4 deletions(-)
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/chat/NewAdminOnlineChatController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/chat/NewAdminOnlineChatController.java
index c6f40cb..8457470 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/chat/NewAdminOnlineChatController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/chat/NewAdminOnlineChatController.java
@@ -1,6 +1,8 @@
package com.yami.trading.admin.controller.chat;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.yami.trading.bean.chat.domain.MessageUser;
import com.yami.trading.bean.chat.domain.OnlineChatMessage;
import com.yami.trading.bean.model.Customer;
@@ -10,6 +12,7 @@
import com.yami.trading.common.util.DateUtils;
import com.yami.trading.common.util.StringUtils;
import com.yami.trading.common.web.ResultObject;
+import com.yami.trading.dao.chat.OnlinechatMessageMapper;
import com.yami.trading.security.common.util.SecurityUtils;
import com.yami.trading.service.AwsS3OSSFileService;
import com.yami.trading.service.chat.online.OnlineChatMessageService;
@@ -46,6 +49,9 @@
@Autowired
AwsS3OSSFileService awsS3OSSFileService;
+
+ @Autowired
+ OnlinechatMessageMapper onlinechatMessageMapper;
/**
* 在线聊天-人员列表
@@ -165,6 +171,16 @@
onlineChatVisitorMessageService.updateUnread(partyid, "customer", "read");
}
} else {
+ // 修复:缓存空时,直接查询数据库兜底
+ if (CollectionUtils.isEmpty(list)) {
+ QueryWrapper<OnlineChatMessage> wrapper = new QueryWrapper<>();
+ wrapper.eq("party_id", partyid)
+ .orderByDesc("create_time")
+ .last("limit 30");
+ list = onlinechatMessageMapper.selectList(wrapper);
+ onlineChatMessageService.putMessage(partyid, list);
+ }
+
if (cacheMessageUser != null && cacheMessageUser.getCustomerUnreadmsg() > 0) {
onlineChatMessageService.updateUnread(partyid, "customer", "read");
}
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/chat/online/OnlineChatMessageServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/chat/online/OnlineChatMessageServiceImpl.java
index e073409..2dc9017 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/chat/online/OnlineChatMessageServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/chat/online/OnlineChatMessageServiceImpl.java
@@ -95,7 +95,7 @@
});
}
- int start = cacheIndex(messageId, result);
+ /*int start = cacheIndex(messageId, result);
// start = start == 0 ? start : start + 1;// 空消息则表示首页,消息索引的后一条为起始
int end = start + pageSize;
@@ -107,7 +107,14 @@
List<OnlineChatMessage> list = result.subList(start, end);
- return list;
+ return list;*/
+
+ // 4. 计算分页起始位置
+ int start = cacheIndex(messageId, result);
+ int end = Math.min(start + pageSize, result.size());
+
+ // 5. 安全截取
+ return start >= end ? new LinkedList<>() : result.subList(start, end);
}
/**
@@ -127,10 +134,16 @@
index = i;
}
}
- if (index == -1) {
+ /*if (index == -1) {
throw new BusinessException("参数异常,消息获取失败");
}
- return index + 1;
+ return index + 1;*/
+ // 修复1:没找到消息,返回0(首页),不抛异常
+ if (index == -1) {
+ return 0;
+ }
+ // 修复2:最后一条消息,返回列表长度,不越界
+ return Math.min(index + 1, list.size());
}
@Override
--
Gitblit v1.9.3