Browse Source

补充呼叫日志

master
xsx 2 years ago
parent
commit
c8e4298ef3
  1. 2
      im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java
  2. 8
      im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java
  3. 26
      im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcPrivateServiceImpl.java

2
im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java

@ -17,7 +17,7 @@ public class WebrtcPrivateController {
private final WebrtcPrivateService webrtcPrivateService; private final WebrtcPrivateService webrtcPrivateService;
@OnlineCheck
@Operation(summary = "呼叫视频通话") @Operation(summary = "呼叫视频通话")
@PostMapping("/call") @PostMapping("/call")
public Result call(@RequestParam Long uid, @RequestParam(defaultValue = "video") String mode, public Result call(@RequestParam Long uid, @RequestParam(defaultValue = "video") String mode,

8
im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java

@ -61,6 +61,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService {
@Override @Override
public void setup(WebrtcGroupSetupDTO dto) { public void setup(WebrtcGroupSetupDTO dto) {
UserSession userSession = SessionContext.getSession(); UserSession userSession = SessionContext.getSession();
log.info("发起群通话,sid:{},群id:{}", userSession.getUserId(), dto.getGroupId());
groupService.getAndCheckById(dto.getGroupId()); groupService.getAndCheckById(dto.getGroupId());
if (dto.getUserInfos().size() > webrtcConfig.getMaxChannel()) { if (dto.getUserInfos().size() > webrtcConfig.getMaxChannel()) {
throw new GlobalException("最多支持" + webrtcConfig.getMaxChannel() + "人进行通话"); throw new GlobalException("最多支持" + webrtcConfig.getMaxChannel() + "人进行通话");
@ -126,6 +127,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService {
@Override @Override
public void accept(Long groupId) { public void accept(Long groupId) {
UserSession userSession = SessionContext.getSession(); UserSession userSession = SessionContext.getSession();
log.info("接受群通话,sid:{},群id:{}", userSession.getUserId(), groupId);
WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId);
// 校验 // 校验
if (!isExist(webrtcSession, userSession.getUserId())) { if (!isExist(webrtcSession, userSession.getUserId())) {
@ -148,6 +150,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService {
@Override @Override
public void reject(Long groupId) { public void reject(Long groupId) {
UserSession userSession = SessionContext.getSession(); UserSession userSession = SessionContext.getSession();
log.info("拒绝群通话,sid:{},群id:{}", userSession.getUserId(), groupId);
WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId);
// 校验 // 校验
if (!isExist(webrtcSession, userSession.getUserId())) { if (!isExist(webrtcSession, userSession.getUserId())) {
@ -175,6 +178,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService {
@Override @Override
public void failed(WebrtcGroupFailedDTO dto) { public void failed(WebrtcGroupFailedDTO dto) {
UserSession userSession = SessionContext.getSession(); UserSession userSession = SessionContext.getSession();
log.info("未能进入群通话,sid:{},群id:{},reason:{}", userSession.getUserId(), dto.getGroupId(), dto.getReason());
WebrtcGroupSession webrtcSession = getWebrtcSession(dto.getGroupId()); WebrtcGroupSession webrtcSession = getWebrtcSession(dto.getGroupId());
// 校验 // 校验
if (!isExist(webrtcSession, userSession.getUserId())) { if (!isExist(webrtcSession, userSession.getUserId())) {
@ -205,6 +209,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService {
@Override @Override
public void join(Long groupId) { public void join(Long groupId) {
UserSession userSession = SessionContext.getSession(); UserSession userSession = SessionContext.getSession();
log.info("加入群通话,sid:{},群id:{},reason:{}", userSession.getUserId(), groupId);
WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId);
if (webrtcSession.getUserInfos().size() >= webrtcConfig.getMaxChannel()) { if (webrtcSession.getUserInfos().size() >= webrtcConfig.getMaxChannel()) {
throw new GlobalException("人员已满,无法进入通话"); throw new GlobalException("人员已满,无法进入通话");
@ -245,6 +250,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService {
@Override @Override
public void invite(WebrtcGroupInviteDTO dto) { public void invite(WebrtcGroupInviteDTO dto) {
UserSession userSession = SessionContext.getSession(); UserSession userSession = SessionContext.getSession();
log.info("邀请成员加入群通话,sid:{},群id:{}", userSession.getUserId(), dto.getGroupId());
WebrtcGroupSession webrtcSession = getWebrtcSession(dto.getGroupId()); WebrtcGroupSession webrtcSession = getWebrtcSession(dto.getGroupId());
if (webrtcSession.getUserInfos().size() + dto.getUserInfos().size() > webrtcConfig.getMaxChannel()) { if (webrtcSession.getUserInfos().size() + dto.getUserInfos().size() > webrtcConfig.getMaxChannel()) {
throw new GlobalException("最多支持" + webrtcConfig.getMaxChannel() + "人进行通话"); throw new GlobalException("最多支持" + webrtcConfig.getMaxChannel() + "人进行通话");
@ -309,6 +315,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService {
@Override @Override
public void cancel(Long groupId) { public void cancel(Long groupId) {
UserSession userSession = SessionContext.getSession(); UserSession userSession = SessionContext.getSession();
log.info("取消群通话,sid:{},群id:{}", userSession.getUserId(), groupId);
WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId);
if (!userSession.getUserId().equals(webrtcSession.getHost().getId())) { if (!userSession.getUserId().equals(webrtcSession.getHost().getId())) {
throw new GlobalException("只有发起人可以取消通话"); throw new GlobalException("只有发起人可以取消通话");
@ -330,6 +337,7 @@ public class WebrtcGroupServiceImpl implements WebrtcGroupService {
@Override @Override
public void quit(Long groupId) { public void quit(Long groupId) {
UserSession userSession = SessionContext.getSession(); UserSession userSession = SessionContext.getSession();
log.info("退出群通话,sid:{},群id:{}", userSession.getUserId(), groupId);
WebrtcGroupSession webrtcSession = getWebrtcSession(groupId); WebrtcGroupSession webrtcSession = getWebrtcSession(groupId);
// 将用户从列表中移除 // 将用户从列表中移除
List<IMUserInfo> inChatUsers = List<IMUserInfo> inChatUsers =

26
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.imclient.IMClient;
import com.bx.imcommon.model.IMPrivateMessage; import com.bx.imcommon.model.IMPrivateMessage;
import com.bx.imcommon.model.IMUserInfo; import com.bx.imcommon.model.IMUserInfo;
import com.bx.implatform.annotation.OnlineCheck;
import com.bx.implatform.contant.RedisKey; import com.bx.implatform.contant.RedisKey;
import com.bx.implatform.entity.PrivateMessage; import com.bx.implatform.entity.PrivateMessage;
import com.bx.implatform.enums.MessageStatus; import com.bx.implatform.enums.MessageStatus;
@ -37,9 +38,11 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService {
private final PrivateMessageService privateMessageService; private final PrivateMessageService privateMessageService;
private final UserStateUtils userStateUtils; private final UserStateUtils userStateUtils;
@OnlineCheck
@Override @Override
public void call(Long uid, String mode, String offer) { public void call(Long uid, String mode, String offer) {
UserSession session = SessionContext.getSession(); UserSession session = SessionContext.getSession();
log.info("发起呼叫,sid:{},uid:{}", session.getUserId(), uid);
// 创建webrtc会话 // 创建webrtc会话
WebrtcPrivateSession webrtcSession = new WebrtcPrivateSession(); WebrtcPrivateSession webrtcSession = new WebrtcPrivateSession();
webrtcSession.setCallerId(session.getUserId()); webrtcSession.setCallerId(session.getUserId());
@ -48,11 +51,13 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService {
webrtcSession.setMode(mode); webrtcSession.setMode(mode);
// 校验 // 校验
if (!imClient.isOnline(uid)) { if (!imClient.isOnline(uid)) {
this.sendActMessage(webrtcSession,MessageStatus.UNSEND,"未接通"); this.sendActMessage(webrtcSession, MessageStatus.UNSEND, "未接通");
log.info("对方不在线,uid:{}", uid);
throw new GlobalException("对方目前不在线"); throw new GlobalException("对方目前不在线");
} }
if (userStateUtils.isBusy(uid)) { if (userStateUtils.isBusy(uid)) {
this.sendActMessage(webrtcSession,MessageStatus.UNSEND,"未接通"); this.sendActMessage(webrtcSession, MessageStatus.UNSEND, "未接通");
log.info("对方正忙,uid:{}", uid);
throw new GlobalException("对方正忙"); throw new GlobalException("对方正忙");
} }
// 保存rtc session // 保存rtc session
@ -83,6 +88,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService {
@Override @Override
public void accept(Long uid, @RequestBody String answer) { public void accept(Long uid, @RequestBody String answer) {
UserSession session = SessionContext.getSession(); UserSession session = SessionContext.getSession();
log.info("接受通话,sid:{},uid:{}", session.getUserId(), uid);
// 查询webrtc会话 // 查询webrtc会话
WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid); WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid);
// 更新接受者信息 // 更新接受者信息
@ -112,6 +118,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService {
@Override @Override
public void reject(Long uid) { public void reject(Long uid) {
UserSession session = SessionContext.getSession(); UserSession session = SessionContext.getSession();
log.info("拒绝通话,sid:{},uid:{}", session.getUserId(), uid);
// 查询webrtc会话 // 查询webrtc会话
WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid); WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid);
// 删除会话信息 // 删除会话信息
@ -135,12 +142,13 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService {
sendMessage.setData(messageInfo); sendMessage.setData(messageInfo);
imClient.sendPrivateMessage(sendMessage); imClient.sendPrivateMessage(sendMessage);
// 生成通话消息 // 生成通话消息
sendActMessage(webrtcSession, MessageStatus.READED,"已拒绝"); sendActMessage(webrtcSession, MessageStatus.READED, "已拒绝");
} }
@Override @Override
public void cancel(Long uid) { public void cancel(Long uid) {
UserSession session = SessionContext.getSession(); UserSession session = SessionContext.getSession();
log.info("取消通话,sid:{},uid:{}", session.getUserId(), uid);
// 查询webrtc会话 // 查询webrtc会话
WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid); WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid);
// 删除会话信息 // 删除会话信息
@ -163,12 +171,13 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService {
// 通知对方取消会话 // 通知对方取消会话
imClient.sendPrivateMessage(sendMessage); imClient.sendPrivateMessage(sendMessage);
// 生成通话消息 // 生成通话消息
sendActMessage(webrtcSession, MessageStatus.UNSEND,"已取消"); sendActMessage(webrtcSession, MessageStatus.UNSEND, "已取消");
} }
@Override @Override
public void failed(Long uid, String reason) { public void failed(Long uid, String reason) {
UserSession session = SessionContext.getSession(); UserSession session = SessionContext.getSession();
log.info("通话失败,sid:{},uid:{},reason:{}", session.getUserId(), uid, reason);
// 查询webrtc会话 // 查询webrtc会话
WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid); WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid);
// 删除会话信息 // 删除会话信息
@ -193,12 +202,13 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService {
// 通知对方取消会话 // 通知对方取消会话
imClient.sendPrivateMessage(sendMessage); imClient.sendPrivateMessage(sendMessage);
// 生成消息 // 生成消息
sendActMessage(webrtcSession, MessageStatus.READED,"未接通"); sendActMessage(webrtcSession, MessageStatus.READED, "未接通");
} }
@Override @Override
public void handup(Long uid) { public void handup(Long uid) {
UserSession session = SessionContext.getSession(); UserSession session = SessionContext.getSession();
log.info("挂断通话,sid:{},uid:{}", session.getUserId(), uid);
// 查询webrtc会话 // 查询webrtc会话
WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid); WebrtcPrivateSession webrtcSession = getWebrtcSession(session.getUserId(), uid);
// 删除会话信息 // 删除会话信息
@ -223,7 +233,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService {
// 通知对方取消会话 // 通知对方取消会话
imClient.sendPrivateMessage(sendMessage); imClient.sendPrivateMessage(sendMessage);
// 生成通话消息 // 生成通话消息
sendActMessage(webrtcSession, MessageStatus.READED,"通话时长 " + chatTimeText(webrtcSession)); sendActMessage(webrtcSession, MessageStatus.READED, "通话时长 " + chatTimeText(webrtcSession));
} }
@Override @Override
@ -286,7 +296,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService {
return webrtcSession.getAcceptorTerminal(); 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(); PrivateMessage msg = new PrivateMessage();
msg.setSendId(rtcSession.getCallerId()); msg.setSendId(rtcSession.getCallerId());
@ -313,7 +323,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService {
} }
private String chatTimeText(WebrtcPrivateSession rtcSession) { 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 min = Math.abs((int)chatTime / 60);
int sec = Math.abs((int)chatTime % 60); int sec = Math.abs((int)chatTime % 60);
String strTime = min < 10 ? "0" : ""; String strTime = min < 10 ? "0" : "";

Loading…
Cancel
Save