From c8e4298ef3ecec4cae87bb61c581f58a0ccb633e Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Tue, 20 Aug 2024 13:09:59 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=91=BC=E5=8F=AB=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WebrtcPrivateController.java | 2 +- .../service/impl/WebrtcGroupServiceImpl.java | 8 ++++++ .../impl/WebrtcPrivateServiceImpl.java | 26 +++++++++++++------ 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java index 3bf3764..ba67346 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java @@ -17,7 +17,7 @@ public class WebrtcPrivateController { private final WebrtcPrivateService webrtcPrivateService; - @OnlineCheck + @Operation(summary = "呼叫视频通话") @PostMapping("/call") public Result call(@RequestParam Long uid, @RequestParam(defaultValue = "video") String mode, diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java index 551e162..bac3c4d 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java @@ -61,6 +61,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void setup(WebrtcGroupSetupDTO dto) { UserSession userSession = SessionContext.getSession(); + log.info("发起群通话,sid:{},群id:{}", userSession.getUserId(), dto.getGroupId()); groupService.getAndCheckById(dto.getGroupId()); if (dto.getUserInfos().size() > webrtcConfig.getMaxChannel()) { throw new GlobalException("最多支持" + webrtcConfig.getMaxChannel() + "人进行通话"); @@ -126,6 +127,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void accept(Long groupId) { UserSession userSession = SessionContext.getSession(); + log.info("接受群通话,sid:{},群id:{}", userSession.getUserId(), groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); // 校验 if (!isExist(webrtcSession, userSession.getUserId())) { @@ -148,6 +150,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void reject(Long groupId) { UserSession userSession = SessionContext.getSession(); + log.info("拒绝群通话,sid:{},群id:{}", userSession.getUserId(), groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); // 校验 if (!isExist(webrtcSession, userSession.getUserId())) { @@ -175,6 +178,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void failed(WebrtcGroupFailedDTO dto) { UserSession userSession = SessionContext.getSession(); + log.info("未能进入群通话,sid:{},群id:{},reason:{}", userSession.getUserId(), dto.getGroupId(), dto.getReason()); WebrtcGroupSession webrtcSession = getWebrtcSession(dto.getGroupId()); // 校验 if (!isExist(webrtcSession, userSession.getUserId())) { @@ -205,6 +209,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void join(Long groupId) { UserSession userSession = SessionContext.getSession(); + log.info("加入群通话,sid:{},群id:{},reason:{}", userSession.getUserId(), groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); if (webrtcSession.getUserInfos().size() >= webrtcConfig.getMaxChannel()) { throw new GlobalException("人员已满,无法进入通话"); @@ -245,6 +250,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void invite(WebrtcGroupInviteDTO dto) { UserSession userSession = SessionContext.getSession(); + log.info("邀请成员加入群通话,sid:{},群id:{}", userSession.getUserId(), dto.getGroupId()); WebrtcGroupSession webrtcSession = getWebrtcSession(dto.getGroupId()); if (webrtcSession.getUserInfos().size() + dto.getUserInfos().size() > webrtcConfig.getMaxChannel()) { throw new GlobalException("最多支持" + webrtcConfig.getMaxChannel() + "人进行通话"); @@ -309,6 +315,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void cancel(Long groupId) { UserSession userSession = SessionContext.getSession(); + log.info("取消群通话,sid:{},群id:{}", userSession.getUserId(), groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); if (!userSession.getUserId().equals(webrtcSession.getHost().getId())) { throw new GlobalException("只有发起人可以取消通话"); @@ -330,6 +337,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService { @Override public void quit(Long groupId) { UserSession userSession = SessionContext.getSession(); + log.info("退出群通话,sid:{},群id:{}", userSession.getUserId(), groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); // 将用户从列表中移除 List inChatUsers = diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcPrivateServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcPrivateServiceImpl.java index a741e09..dd84d91 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcPrivateServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcPrivateServiceImpl.java @@ -3,6 +3,7 @@ package com.bx.implatform.service.impl; import com.bx.imclient.IMClient; import com.bx.imcommon.model.IMPrivateMessage; import com.bx.imcommon.model.IMUserInfo; +import com.bx.implatform.annotation.OnlineCheck; import com.bx.implatform.contant.RedisKey; import com.bx.implatform.entity.PrivateMessage; import com.bx.implatform.enums.MessageStatus; @@ -37,9 +38,11 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { private final PrivateMessageService privateMessageService; private final UserStateUtils userStateUtils; + @OnlineCheck @Override public void call(Long uid, String mode, String offer) { UserSession session = SessionContext.getSession(); + log.info("发起呼叫,sid:{},uid:{}", session.getUserId(), uid); // 创建webrtc会话 WebrtcPrivateSession webrtcSession = new WebrtcPrivateSession(); webrtcSession.setCallerId(session.getUserId()); @@ -48,11 +51,13 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { webrtcSession.setMode(mode); // 校验 if (!imClient.isOnline(uid)) { - this.sendActMessage(webrtcSession,MessageStatus.UNSEND,"未接通"); + this.sendActMessage(webrtcSession, MessageStatus.UNSEND, "未接通"); + log.info("对方不在线,uid:{}", uid); throw new GlobalException("对方目前不在线"); } if (userStateUtils.isBusy(uid)) { - this.sendActMessage(webrtcSession,MessageStatus.UNSEND,"未接通"); + this.sendActMessage(webrtcSession, MessageStatus.UNSEND, "未接通"); + log.info("对方正忙,uid:{}", uid); throw new GlobalException("对方正忙"); } // 保存rtc session @@ -83,6 +88,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { @Override public void accept(Long uid, @RequestBody String answer) { UserSession session = SessionContext.getSession(); + log.info("接受通话,sid:{},uid:{}", session.getUserId(), uid); // 查询webrtc会话 WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid); // 更新接受者信息 @@ -112,6 +118,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { @Override public void reject(Long uid) { UserSession session = SessionContext.getSession(); + log.info("拒绝通话,sid:{},uid:{}", session.getUserId(), uid); // 查询webrtc会话 WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid); // 删除会话信息 @@ -135,12 +142,13 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { sendMessage.setData(messageInfo); imClient.sendPrivateMessage(sendMessage); // 生成通话消息 - sendActMessage(webrtcSession, MessageStatus.READED,"已拒绝"); + sendActMessage(webrtcSession, MessageStatus.READED, "已拒绝"); } @Override public void cancel(Long uid) { UserSession session = SessionContext.getSession(); + log.info("取消通话,sid:{},uid:{}", session.getUserId(), uid); // 查询webrtc会话 WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid); // 删除会话信息 @@ -163,12 +171,13 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { // 通知对方取消会话 imClient.sendPrivateMessage(sendMessage); // 生成通话消息 - sendActMessage(webrtcSession, MessageStatus.UNSEND,"已取消"); + sendActMessage(webrtcSession, MessageStatus.UNSEND, "已取消"); } @Override public void failed(Long uid, String reason) { UserSession session = SessionContext.getSession(); + log.info("通话失败,sid:{},uid:{},reason:{}", session.getUserId(), uid, reason); // 查询webrtc会话 WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid); // 删除会话信息 @@ -193,12 +202,13 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { // 通知对方取消会话 imClient.sendPrivateMessage(sendMessage); // 生成消息 - sendActMessage(webrtcSession, MessageStatus.READED,"未接通"); + sendActMessage(webrtcSession, MessageStatus.READED, "未接通"); } @Override public void handup(Long uid) { UserSession session = SessionContext.getSession(); + log.info("挂断通话,sid:{},uid:{}", session.getUserId(), uid); // 查询webrtc会话 WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid); // 删除会话信息 @@ -223,7 +233,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { // 通知对方取消会话 imClient.sendPrivateMessage(sendMessage); // 生成通话消息 - sendActMessage(webrtcSession, MessageStatus.READED,"通话时长 " + chatTimeText(webrtcSession)); + sendActMessage(webrtcSession, MessageStatus.READED, "通话时长 " + chatTimeText(webrtcSession)); } @Override @@ -286,7 +296,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { return webrtcSession.getAcceptorTerminal(); } - private void sendActMessage(WebrtcPrivateSession rtcSession, MessageStatus status,String content) { + private void sendActMessage(WebrtcPrivateSession rtcSession, MessageStatus status, String content) { // 保存消息 PrivateMessage msg = new PrivateMessage(); msg.setSendId(rtcSession.getCallerId()); @@ -313,7 +323,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { } private String chatTimeText(WebrtcPrivateSession rtcSession) { - long chatTime = (System.currentTimeMillis() - rtcSession.getChatTimeStamp())/1000; + long chatTime = (System.currentTimeMillis() - rtcSession.getChatTimeStamp()) / 1000; int min = Math.abs((int)chatTime / 60); int sec = Math.abs((int)chatTime % 60); String strTime = min < 10 ? "0" : "";