新版仿ok交易所-后端
1
zyy
2026-03-24 513e5442723f501525bf9ca6210b16561e5d3a2b
1
2 files modified
37 ■■■■ changed files
trading-order-admin/src/main/java/com/yami/trading/admin/controller/chat/NewAdminOnlineChatController.java 16 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/chat/online/OnlineChatMessageServiceImpl.java 21 ●●●● patch | view | raw | blame | history
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");
                    }
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