Commit 3f116f1c by Future

多人音视频占线下发

parent 7763315e
......@@ -25,7 +25,12 @@ public enum WsMultiMeetResponseSubCmdEnum {
/**
* 主动离开
*/
LEAVE(4);
LEAVE(4),
/**
* 占线
*/
BUSY(5);
private final int cmdCode;
......
......@@ -26,8 +26,4 @@ public class MultiMeetAgreeResponse extends MultiMeetDataBase implements Seriali
*/
private String roomId;
/**
* 发起会议人clientId
*/
private String inviterClientId;
}
package com.wecloud.multimeet.entity.response;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* @Author wenzhida
* @Date 2022/3/16 13:52
* @Description 占线响应
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class MultiMeetBusyResponse extends MultiMeetDataBase implements Serializable {
private static final long serialVersionUID = -5692994062040333774L;
/**
* 会话id
*/
private Long conversationId;
/**
* 房间id
*/
private String roomId;
/**
* 占线人clientId
*/
private String busyClientId;
}
......@@ -26,8 +26,4 @@ public class MultiMeetLeaveResponse extends MultiMeetDataBase implements Seriali
*/
private String roomId;
/**
* 发起会议人clientId
*/
private String inviterClientId;
}
......@@ -24,8 +24,4 @@ public class MultiMeetRejectResponse extends MultiMeetDataBase implements Serial
*/
private String roomId;
/**
* 发起会议人clientId
*/
private String inviterClientId;
}
package com.wecloud.multimeet.service;
import com.wecloud.multimeet.entity.response.MultiMeetAgreeResponse;
import com.wecloud.multimeet.entity.response.MultiMeetBusyResponse;
import com.wecloud.multimeet.entity.response.MultiMeetInviteResponse;
import com.wecloud.multimeet.entity.response.MultiMeetLeaveResponse;
import com.wecloud.multimeet.entity.response.MultiMeetRejectResponse;
......@@ -40,4 +41,11 @@ public interface WsMultiMeetWrite {
*/
void leave(MultiMeetLeaveResponse multiMeetLeaveResponse, Long toFkClientId);
/**
* 被邀请方占线
* @param multiMeetBusyResponse
* @param toFkClientId
*/
void busy(MultiMeetBusyResponse multiMeetBusyResponse, Long toFkClientId);
}
......@@ -22,6 +22,7 @@ import com.wecloud.im.service.ImMultiRtcRoomService;
import com.wecloud.im.ws.cache.UserStateCacheManager;
import com.wecloud.multimeet.entity.dto.RoomMemberDto;
import com.wecloud.multimeet.entity.response.MultiMeetAgreeResponse;
import com.wecloud.multimeet.entity.response.MultiMeetBusyResponse;
import com.wecloud.multimeet.entity.response.MultiMeetInviteResponse;
import com.wecloud.multimeet.entity.response.MultiMeetLeaveResponse;
import com.wecloud.multimeet.entity.response.MultiMeetRejectResponse;
......@@ -102,6 +103,21 @@ public class MultiMeetServiceImpl implements MultiMeetService {
log.info("查无接收人信息 {}", toClientId);
continue;
}
// 占线 通知邀请方
ImMultiRtcRoomMember rtcRoomMember = imMultiRtcRoomMemberService.getOne(new QueryWrapper<ImMultiRtcRoomMember>().lambda()
.eq(ImMultiRtcRoomMember::getClientId, toClientId)
.eq(ImMultiRtcRoomMember::getRoomId, param.getRoomId()));
if (rtcRoomMember != null && MultiRtcMemberStateEnum.ANSWERED.getCode().equals(rtcRoomMember.getState())) {
MultiMeetBusyResponse multiMeetBusyResponse = new MultiMeetBusyResponse();
multiMeetBusyResponse.setConversationId(param.getConversationId());
multiMeetBusyResponse.setRoomId(param.getRoomId());
multiMeetBusyResponse.setClientId(currentClient.getClientId());
multiMeetBusyResponse.setBusyClientId(rtcRoomMember.getClientId());
multiMeetBusyResponse.setTimestamp(System.currentTimeMillis());
wsMultiMeetWrite.busy(multiMeetBusyResponse, rtcRoomMember.getFkClientId());
continue;
}
ImMultiRtcRoomMember roomMember = new ImMultiRtcRoomMember();
roomMember.setId(SnowflakeUtil.getId());
roomMember.setFkRtcRoomId(rtcRoom.getId());
......
......@@ -5,6 +5,7 @@ import com.wecloud.im.ws.enums.WsResponseCmdEnum;
import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.im.ws.sender.ChannelSender;
import com.wecloud.multimeet.entity.response.MultiMeetAgreeResponse;
import com.wecloud.multimeet.entity.response.MultiMeetBusyResponse;
import com.wecloud.multimeet.entity.response.MultiMeetInviteResponse;
import com.wecloud.multimeet.entity.response.MultiMeetLeaveResponse;
import com.wecloud.multimeet.entity.response.MultiMeetRejectResponse;
......@@ -87,5 +88,20 @@ public class WsMultiMeetWriteImpl implements WsMultiMeetWrite {
}
@Override
public void busy(MultiMeetBusyResponse multiMeetBusyResponse, Long toFkClientId) {
multiMeetBusyResponse.setSubCmd(WsMultiMeetResponseSubCmdEnum.BUSY.getCmdCode());
// 向接收方推送
WsResponse<MultiMeetBusyResponse> responseModel = new WsResponse<>();
responseModel.setCmd(WsResponseCmdEnum.MULTI_MEET_MSG.getCmdCode());
ApiResult<Boolean> result = ApiResult.result(ApiCode.SUCCESS);
responseModel.setCode(result.getCode());
responseModel.setMsg(result.getMessage());
responseModel.setData(multiMeetBusyResponse);
responseModel.setReqId(null);
channelSender.sendMsg(responseModel, toFkClientId);
}
}
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