Commit 0d15086b by Future

多人音视频新增接口

parent 17a61960
...@@ -85,4 +85,11 @@ public class MultiMeetAction { ...@@ -85,4 +85,11 @@ public class MultiMeetAction {
multiMeetService.heartbeat(data); multiMeetService.heartbeat(data);
return WsResponse.ok(); return WsResponse.ok();
} }
@ActionMapping("/isBeCalling")
@ApiOperation(value = "是否正在被呼叫", notes = "是否正在被呼叫")
public WsResponse<Map<String, Boolean>> isBeCalling() {
multiMeetService.isBeCalling();
return WsResponse.ok();
}
} }
...@@ -89,5 +89,12 @@ public class ImMultiMeetController extends BaseController { ...@@ -89,5 +89,12 @@ public class ImMultiMeetController extends BaseController {
return ApiResult.ok(); return ApiResult.ok();
} }
@PostMapping("/isBeCalling")
@ApiOperation(value = "是否正在被呼叫", notes = "是否正在被呼叫")
public ApiResult<Boolean> isBeCalling() {
multiMeetService.isBeCalling();
return ApiResult.ok();
}
} }
...@@ -52,6 +52,11 @@ public interface MultiMeetService { ...@@ -52,6 +52,11 @@ public interface MultiMeetService {
void heartbeat(HeartbeatMultiMeetParam param); void heartbeat(HeartbeatMultiMeetParam param);
/** /**
* 是否正在被呼叫
*/
void isBeCalling();
/**
* 呼叫超时逻辑处理 * 呼叫超时逻辑处理
*/ */
void callingTimeout(); void callingTimeout();
......
...@@ -249,6 +249,13 @@ public class MultiMeetServiceImpl implements MultiMeetService { ...@@ -249,6 +249,13 @@ public class MultiMeetServiceImpl implements MultiMeetService {
.in(ImMultiRtcRoomMember::getState, Lists.newArrayList(MultiRtcMemberStateEnum.ANSWERED.getCode(), MultiRtcMemberStateEnum.CALLING.getCode())) .in(ImMultiRtcRoomMember::getState, Lists.newArrayList(MultiRtcMemberStateEnum.ANSWERED.getCode(), MultiRtcMemberStateEnum.CALLING.getCode()))
.ne(ImMultiRtcRoomMember::getClientId, currentClient.getClientId()) .ne(ImMultiRtcRoomMember::getClientId, currentClient.getClientId())
); );
if (CollectionUtils.isEmpty(rtcRoomMemberList)) {
// 房间中无已接听人员,将呼叫中的成员置为“未接听”
imMultiRtcRoomMemberService.update(new UpdateWrapper<ImMultiRtcRoomMember>().lambda()
.eq(ImMultiRtcRoomMember::getRoomId, param.getRoomId())
.eq(ImMultiRtcRoomMember::getState, MultiRtcMemberStateEnum.CALLING.getCode())
.set(ImMultiRtcRoomMember::getState, MultiRtcMemberStateEnum.NOT_ANSWERED.getCode()));
}
for (ImMultiRtcRoomMember imMultiRtcRoomMember : rtcRoomMemberList) { for (ImMultiRtcRoomMember imMultiRtcRoomMember : rtcRoomMemberList) {
// ws向接收方发送通知 // ws向接收方发送通知
MultiMeetLeaveResponse multiMeetLeaveResponse = new MultiMeetLeaveResponse(); MultiMeetLeaveResponse multiMeetLeaveResponse = new MultiMeetLeaveResponse();
...@@ -282,6 +289,44 @@ public class MultiMeetServiceImpl implements MultiMeetService { ...@@ -282,6 +289,44 @@ public class MultiMeetServiceImpl implements MultiMeetService {
} }
@Override @Override
public void isBeCalling() {
ImClient currentClient = imClientService.getCurrentClient();
// 查询当前用户是否被呼叫
List<ImMultiRtcRoomMember> roomMembers = imMultiRtcRoomMemberService.list(
new QueryWrapper<ImMultiRtcRoomMember>().lambda()
.lt(ImMultiRtcRoomMember::getClientId, currentClient.getClientId())
.eq(ImMultiRtcRoomMember::getState, MultiRtcMemberStateEnum.CALLING.getCode()));
if (CollectionUtils.isNotEmpty(roomMembers)) {
ImMultiRtcRoom room = imMultiRtcRoomService.getCachedMultiRtcRoom(currentClient.getFkAppid(), roomMembers.get(0).getRoomId());
if (room == null) {
return;
}
List<ImMultiRtcRoomMember> answeredMembers = imMultiRtcRoomMemberService.list(
new QueryWrapper<ImMultiRtcRoomMember>().lambda()
.lt(ImMultiRtcRoomMember::getClientId, currentClient.getClientId())
.in(ImMultiRtcRoomMember::getState, Lists.newArrayList(MultiRtcMemberStateEnum.ANSWERED.getCode(), MultiRtcMemberStateEnum.ANSWERED.getCode())));
List<RoomMemberDto> members = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(answeredMembers)) {
for (ImMultiRtcRoomMember answeredMember : answeredMembers) {
RoomMemberDto memberDto = new RoomMemberDto();
memberDto.setFkClientId(answeredMember.getFkClientId());
memberDto.setClientId(answeredMember.getClientId());
memberDto.setState(answeredMember.getState());
members.add(memberDto);
}
}
// ws向接收方发送通知
MultiMeetInviteResponse multiMeetInviteResponse = new MultiMeetInviteResponse();
multiMeetInviteResponse.setRoomId(roomMembers.get(0).getRoomId());
multiMeetInviteResponse.setClientId(currentClient.getClientId());
multiMeetInviteResponse.setTimestamp(System.currentTimeMillis());
multiMeetInviteResponse.setMemberDtoList(members);
wsMultiMeetWrite.invite(multiMeetInviteResponse, roomMembers.get(0).getFkClientId());
}
}
@Override
public void callingTimeout() { public void callingTimeout() {
// 60 秒之前的时间 // 60 秒之前的时间
Date beforeTime = DateUtils.addSeconds(new Date(), -60); Date beforeTime = DateUtils.addSeconds(new Date(), -60);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment