Commit 7763315e by Future

多人音视频同意、拒绝、离开

parent bd635577
......@@ -48,7 +48,6 @@ public class ImMultiMeetController extends BaseController {
return ApiResult.ok();
}
@PostMapping("/reject")
@ApiOperation(value = "拒接进入会议", notes = "拒接进入会议")
public ApiResult<Boolean> reject(@RequestBody RejectToMultiMeetParam param) {
......
......@@ -30,6 +30,9 @@ public class ImMultiRtcRoomMember extends BaseEntity {
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@ApiModelProperty("房间id")
private String roomId;
@ApiModelProperty("im房间id")
private Long fkRtcRoomId;
......
......@@ -23,7 +23,4 @@ public class AgreeToMultiMeetParam implements Serializable {
@ApiModelProperty(value = "多人会议房间id", required = true)
private String roomId;
@ApiModelProperty(value = "发起会议人clientId", required = true)
private String inviterClientId;
}
......@@ -23,7 +23,4 @@ public class LeaveFromMultiMeetParam implements Serializable {
@ApiModelProperty(value = "多人会议房间id", required = true)
private String roomId;
@ApiModelProperty(value = "发起会议人clientId", required = true)
private String inviterClientId;
}
......@@ -24,7 +24,4 @@ public class RejectToMultiMeetParam implements Serializable {
@ApiModelProperty(value = "多人会议房间id", required = true)
private String roomId;
@ApiModelProperty(value = "发起会议人clientId", required = true)
private String inviterClientId;
}
......@@ -136,56 +136,78 @@ public class MultiMeetServiceImpl implements MultiMeetService {
@Override
public void reject(RejectToMultiMeetParam param) {
ImClient currentClient = imClientService.getCurrentClient();
// ws向接收方发送通知
MultiMeetRejectResponse multiMeetRejectResponse = new MultiMeetRejectResponse();
multiMeetRejectResponse.setConversationId(param.getConversationId());
multiMeetRejectResponse.setRoomId(param.getRoomId());
multiMeetRejectResponse.setClientId(currentClient.getClientId());
multiMeetRejectResponse.setTimestamp(System.currentTimeMillis());
ImClient receiver = imClientService.getCacheImClient(currentClient.getFkAppid(), param.getInviterClientId());
if (receiver == null) {
log.info("查无接收人信息 {}", param.getInviterClientId());
throw new BusinessException("查无发起会议人信息");
List<ImMultiRtcRoomMember> rtcRoomMemberList = imMultiRtcRoomMemberService.list(
new QueryWrapper<ImMultiRtcRoomMember>().lambda()
.eq(ImMultiRtcRoomMember::getRoomId, param.getRoomId())
.ne(ImMultiRtcRoomMember::getClientId, currentClient.getClientId())
);
for (ImMultiRtcRoomMember imMultiRtcRoomMember : rtcRoomMemberList) {
// ws向接收方发送通知
MultiMeetRejectResponse multiMeetRejectResponse = new MultiMeetRejectResponse();
multiMeetRejectResponse.setConversationId(param.getConversationId());
multiMeetRejectResponse.setRoomId(param.getRoomId());
multiMeetRejectResponse.setClientId(currentClient.getClientId());
multiMeetRejectResponse.setTimestamp(System.currentTimeMillis());
ImClient receiver = imClientService.getCacheImClient(currentClient.getFkAppid(), imMultiRtcRoomMember.getClientId());
if (receiver == null) {
log.info("查无接收人信息 {}", imMultiRtcRoomMember.getClientId());
throw new BusinessException("查无发起会议人信息");
}
wsMultiMeetWrite.reject(multiMeetRejectResponse, receiver.getId());
}
wsMultiMeetWrite.reject(multiMeetRejectResponse, receiver.getId());
}
@Override
public void agree(AgreeToMultiMeetParam param) {
ImClient currentClient = imClientService.getCurrentClient();
// ws向接收方发送通知
MultiMeetAgreeResponse multiMeetAgreeResponse = new MultiMeetAgreeResponse();
multiMeetAgreeResponse.setConversationId(param.getConversationId());
multiMeetAgreeResponse.setRoomId(param.getRoomId());
multiMeetAgreeResponse.setClientId(currentClient.getClientId());
multiMeetAgreeResponse.setTimestamp(System.currentTimeMillis());
ImClient receiver = imClientService.getCacheImClient(currentClient.getFkAppid(), param.getInviterClientId());
if (receiver == null) {
log.info("查无接收人信息 {}", param.getInviterClientId());
throw new BusinessException("查无发起会议人信息");
List<ImMultiRtcRoomMember> rtcRoomMemberList = imMultiRtcRoomMemberService.list(
new QueryWrapper<ImMultiRtcRoomMember>().lambda()
.eq(ImMultiRtcRoomMember::getRoomId, param.getRoomId())
.ne(ImMultiRtcRoomMember::getClientId, currentClient.getClientId())
);
for (ImMultiRtcRoomMember imMultiRtcRoomMember : rtcRoomMemberList) {
// ws向接收方发送通知
MultiMeetAgreeResponse multiMeetAgreeResponse = new MultiMeetAgreeResponse();
multiMeetAgreeResponse.setConversationId(param.getConversationId());
multiMeetAgreeResponse.setRoomId(param.getRoomId());
multiMeetAgreeResponse.setClientId(currentClient.getClientId());
multiMeetAgreeResponse.setTimestamp(System.currentTimeMillis());
ImClient receiver = imClientService.getCacheImClient(currentClient.getFkAppid(), imMultiRtcRoomMember.getClientId());
if (receiver == null) {
log.info("查无接收人信息 {}", imMultiRtcRoomMember.getClientId());
throw new BusinessException("查无发起会议人信息");
}
wsMultiMeetWrite.agree(multiMeetAgreeResponse, receiver.getId());
}
wsMultiMeetWrite.agree(multiMeetAgreeResponse, receiver.getId());
}
@Override
public void leave(LeaveFromMultiMeetParam param) {
ImClient currentClient = imClientService.getCurrentClient();
// ws向接收方发送通知
MultiMeetLeaveResponse multiMeetLeaveResponse = new MultiMeetLeaveResponse();
multiMeetLeaveResponse.setConversationId(param.getConversationId());
multiMeetLeaveResponse.setRoomId(param.getRoomId());
multiMeetLeaveResponse.setClientId(currentClient.getClientId());
multiMeetLeaveResponse.setTimestamp(System.currentTimeMillis());
ImClient receiver = imClientService.getCacheImClient(currentClient.getFkAppid(), param.getInviterClientId());
if (receiver == null) {
log.info("查无接收人信息 {}", param.getInviterClientId());
throw new BusinessException("查无发起会议人信息");
List<ImMultiRtcRoomMember> rtcRoomMemberList = imMultiRtcRoomMemberService.list(
new QueryWrapper<ImMultiRtcRoomMember>().lambda()
.eq(ImMultiRtcRoomMember::getRoomId, param.getRoomId())
.ne(ImMultiRtcRoomMember::getClientId, currentClient.getClientId())
);
for (ImMultiRtcRoomMember imMultiRtcRoomMember : rtcRoomMemberList) {
// ws向接收方发送通知
MultiMeetLeaveResponse multiMeetLeaveResponse = new MultiMeetLeaveResponse();
multiMeetLeaveResponse.setConversationId(param.getConversationId());
multiMeetLeaveResponse.setRoomId(param.getRoomId());
multiMeetLeaveResponse.setClientId(currentClient.getClientId());
multiMeetLeaveResponse.setTimestamp(System.currentTimeMillis());
ImClient receiver = imClientService.getCacheImClient(currentClient.getFkAppid(), imMultiRtcRoomMember.getClientId());
if (receiver == null) {
log.info("查无接收人信息 {}", imMultiRtcRoomMember.getClientId());
throw new BusinessException("查无发起会议人信息");
}
wsMultiMeetWrite.leave(multiMeetLeaveResponse, receiver.getId());
}
wsMultiMeetWrite.leave(multiMeetLeaveResponse, receiver.getId());
}
}
-- 在feature-cluster 2021年12月22日之后,需要执行的的sql增量脚本
-- 在feature-cluster 2021年12月22日之后,需要执行的的sql增量脚本
......@@ -136,12 +136,15 @@ CREATE TABLE `im_multi_rtc_room_member`
(
`id` bigint NOT NULL COMMENT '主键id',
`fk_rtc_room_id` bigint NOT NULL COMMENT 'im房间id',
`room_id` varchar(64) DEFAULT NULL COMMENT '房间id',
`fk_client_id` bigint NOT NULL COMMENT 'client主键id',
`client_id` varchar(200) DEFAULT NULL COMMENT '客户方提供的唯一id',
`state` tinyint NOT NULL DEFAULT '1' COMMENT '房间成员状态,1:呼叫中,2:已接听,3:已拒绝,4:未接听,5:已断开',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_fk_rtc_room_id` (`fk_rtc_room_id`) USING BTREE,
KEY `idx_room_id` (`room_id`) USING BTREE,
KEY `idx_client_id` (`client_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='多人音视频房间成员表';
......
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