liusuyi
2024-07-26 92a1a1e5b8fa53e908d1e0a398acc524b8798d0e
ard-work/src/main/java/com/ruoyi/call/service/impl/ArdCallHistoryServiceImpl.java
@@ -1,24 +1,37 @@
package com.ruoyi.call.service.impl;
import java.util.HashMap;
import java.util.List;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.call.domain.*;
import com.ruoyi.call.dto.MessageEvent;
import com.ruoyi.call.mapper.*;
import com.ruoyi.call.service.IArdCallGroupService;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.utils.websocket.util.WebSocketUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.call.service.IArdCallHistoryService;
import javax.annotation.Resource;
import javax.websocket.Session;
import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
@@ -38,6 +51,10 @@
    private ArdCallUnreadMessagesMapper ardCallUnreadMessagesMapper;
    @Resource
    private ArdCallGroupUserMapper ardCallGroupUserMapper;
    @Resource
    private IArdCallGroupService ardCallGroupService;
    @Autowired
    private ApplicationEventPublisher eventPublisher;
    /**
     * 查询会话历史
@@ -47,7 +64,18 @@
     */
    @Override
    public ArdCallHistory selectArdCallHistoryById(String id) {
        return ardCallHistoryMapper.selectArdCallHistoryById(id);
        ArdCallHistory ardCallHistory = ardCallHistoryMapper.selectArdCallHistoryById(id);
        if (ardCallHistory != null) {
            //群聊则将targetNickName改为群名称
            ArdCallSession ardCallSession = ardCallSessionMapper.selectArdCallSessionById(ardCallHistory.getSessionId());
            if (ardCallSession != null && ardCallSession.getType().equals("1")) {
                ArdCallGroup ardCallGroup = ardCallGroupService.selectArdCallGroupById(ardCallHistory.getTargetId());
                if (ardCallGroup != null) {
                    ardCallHistory.setTargetNickName(ardCallGroup.getName());
                }
            }
        }
        return ardCallHistory;
    }
    /**
@@ -58,7 +86,18 @@
     */
    @Override
    public List<ArdCallHistory> selectArdCallHistoryList(ArdCallHistory ardCallHistory) {
        return ardCallHistoryMapper.selectArdCallHistoryList(ardCallHistory);
        List<ArdCallHistory> ardCallHistories = ardCallHistoryMapper.selectArdCallHistoryList(ardCallHistory);
        ardCallHistories.stream().forEach(aCallHistory -> {
            //群聊则将targetNickName改为群名称
            ArdCallSession ardCallSession = ardCallSessionMapper.selectArdCallSessionById(aCallHistory.getSessionId());
            if (ardCallSession != null && ardCallSession.getType().equals("1")) {
                ArdCallGroup ardCallGroup = ardCallGroupService.selectArdCallGroupById(aCallHistory.getTargetId());
                if (ardCallGroup != null) {
                    aCallHistory.setTargetNickName(ardCallGroup.getName());
                }
            }
        });
        return ardCallHistories;
    }
    /**
@@ -80,13 +119,17 @@
                ardCallUnreadMessages.setUserId(ardCallHistory.getTargetId());
                ardCallUnreadMessages.setSessionId(ardCallHistory.getSessionId());
                ardCallUnreadMessages.setUnreadCount(1);
                ardCallUnreadMessagesMapper.insertArdCallUnreadMessages(ardCallUnreadMessages);
                int rows = ardCallUnreadMessagesMapper.selectCountByUserIdAndSessionId(ardCallUnreadMessages.getUserId(), ardCallUnreadMessages.getSessionId());
                if (rows == 0) {
                    ardCallUnreadMessagesMapper.insertArdCallUnreadMessages(ardCallUnreadMessages);
                }
            } else {
                ardCallUnreadMessages.setUnreadCount(ardCallUnreadMessages.getUnreadCount() + 1);
                ardCallUnreadMessagesMapper.updateArdCallUnreadMessages(ardCallUnreadMessages);
            }
            //websocket发送给targetId
            WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(ardCallHistory.getTargetId()),ardCallHistory.getContent());
            MessageEvent messageEvent = new MessageEvent(ardCallHistory.getTargetId(), ardCallHistory);
            eventPublisher.publishEvent(messageEvent);
        } else {
            //更新群聊用户未读消息计数
            ArdCallGroupUser ardCallGroupUser = new ArdCallGroupUser();
@@ -101,16 +144,19 @@
                        ardCallUnreadMessages.setUserId(groupUser.getUserId());
                        ardCallUnreadMessages.setSessionId(ardCallHistory.getSessionId());
                        ardCallUnreadMessages.setUnreadCount(1);
                        ardCallUnreadMessagesMapper.insertArdCallUnreadMessages(ardCallUnreadMessages);
                        int rows = ardCallUnreadMessagesMapper.selectCountByUserIdAndSessionId(ardCallUnreadMessages.getUserId(), ardCallUnreadMessages.getSessionId());
                        if (rows == 0) {
                            ardCallUnreadMessagesMapper.insertArdCallUnreadMessages(ardCallUnreadMessages);
                        }
                    } else {
                        ardCallUnreadMessages.setUnreadCount(ardCallUnreadMessages.getUnreadCount() + 1);
                        ardCallUnreadMessagesMapper.updateArdCallUnreadMessages(ardCallUnreadMessages);
                    }
                    //websocket发送给targetId
                    MessageEvent messageEvent = new MessageEvent(groupUser.getUserId(), ardCallHistory);
                    eventPublisher.publishEvent(messageEvent);
                }
                //websocket发送给targetId
                WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(groupUser.getUserId()),ardCallHistory.getContent());
            });
        }
        return ardCallHistoryMapper.insertArdCallHistory(ardCallHistory);
    }