| | |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.ruoyi.call.domain.*; |
| | | 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.stereotype.Service; |
| | |
| | | private ArdCallUnreadMessagesMapper ardCallUnreadMessagesMapper; |
| | | @Resource |
| | | private ArdCallGroupUserMapper ardCallGroupUserMapper; |
| | | @Resource |
| | | private IArdCallGroupService ardCallGroupService; |
| | | |
| | | /** |
| | | * 查询会话历史 |
| | |
| | | */ |
| | | @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; |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @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; |
| | | } |
| | | |
| | | /** |
| | |
| | | Map<String, Object> messageMap = new HashMap<>(); |
| | | messageMap.put("type", "message"); |
| | | messageMap.put("message", JSON.toJSONString(ardCallHistory)); |
| | | ONLINE_USER_SESSIONS.entrySet().stream() |
| | | .filter(entry -> { |
| | | Matcher matcher = pattern.matcher(entry.getKey()); |
| | | return matcher.matches(); |
| | | }) |
| | | .map(Map.Entry::getValue) |
| | | .forEach(session -> WebSocketUtils.sendMessage(session, messageMap)); |
| | | ONLINE_USER_SESSIONS.entrySet().stream().filter(entry -> { |
| | | Matcher matcher = pattern.matcher(entry.getKey()); |
| | | return matcher.matches(); |
| | | }).map(Map.Entry::getValue).forEach(session -> WebSocketUtils.sendMessage(session, messageMap)); |
| | | |
| | | } else { |
| | | //更新群聊用户未读消息计数 |
| | |
| | | Map<String, Object> messageMap = new HashMap<>(); |
| | | messageMap.put("type", "message"); |
| | | messageMap.put("message", JSON.toJSONString(ardCallHistory)); |
| | | ONLINE_USER_SESSIONS.entrySet().stream() |
| | | .filter(entry -> |
| | | { |
| | | Matcher matcher = pattern.matcher(entry.getKey()); |
| | | return matcher.matches(); |
| | | }) |
| | | .map(Map.Entry::getValue) |
| | | .forEach(session -> WebSocketUtils.sendMessage(session, messageMap)); |
| | | ONLINE_USER_SESSIONS.entrySet().stream().filter(entry -> { |
| | | Matcher matcher = pattern.matcher(entry.getKey()); |
| | | return matcher.matches(); |
| | | }).map(Map.Entry::getValue).forEach(session -> WebSocketUtils.sendMessage(session, messageMap)); |
| | | } |
| | | |
| | | }); |