Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wecloud_im_server
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hewei
wecloud_im_server
Commits
ce1ca6af
Commit
ce1ca6af
authored
Mar 08, 2022
by
Future
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
多人音视频会议增加进入会议与离开会议事件下发
parent
a2a8c2c6
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
260 additions
and
4 deletions
+260
-4
core/src/main/java/com/wecloud/im/controller/ImMultiMeetController.java
+17
-0
core/src/main/java/com/wecloud/im/param/AgreeToMultiMeetParam.java
+29
-0
core/src/main/java/com/wecloud/im/param/InviteToMultiMeetParam.java
+3
-0
core/src/main/java/com/wecloud/im/param/LeaveFromMultiMeetParam.java
+29
-0
core/src/main/java/com/wecloud/im/ws/enums/WsMultiMeetResponseSubCmdEnum.java
+11
-1
core/src/main/java/com/wecloud/multimeet/entity/response/MultiMeetAgreeResponse.java
+33
-0
core/src/main/java/com/wecloud/multimeet/entity/response/MultiMeetLeaveResponse.java
+33
-0
core/src/main/java/com/wecloud/multimeet/service/MultiMeetService.java
+14
-3
core/src/main/java/com/wecloud/multimeet/service/WsMultiMeetWrite.java
+16
-0
core/src/main/java/com/wecloud/multimeet/service/impl/MultiMeetServiceImpl.java
+41
-0
core/src/main/java/com/wecloud/multimeet/service/impl/WsMultiMeetWriteImpl.java
+34
-0
No files found.
core/src/main/java/com/wecloud/im/controller/ImMultiMeetController.java
View file @
ce1ca6af
package
com
.
wecloud
.
im
.
controller
;
package
com
.
wecloud
.
im
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.wecloud.im.param.AgreeToMultiMeetParam
;
import
com.wecloud.im.param.InviteToMultiMeetParam
;
import
com.wecloud.im.param.InviteToMultiMeetParam
;
import
com.wecloud.im.param.LeaveFromMultiMeetParam
;
import
com.wecloud.im.param.RejectToMultiMeetParam
;
import
com.wecloud.im.param.RejectToMultiMeetParam
;
import
com.wecloud.im.param.rtc.JoinRtcChannelParam
;
import
com.wecloud.im.param.rtc.LeaveRtcChannelParam
;
import
com.wecloud.im.param.rtc.RejectRtcChannelParam
;
import
com.wecloud.im.param.rtc.RejectRtcChannelParam
;
import
com.wecloud.multimeet.service.MultiMeetService
;
import
com.wecloud.multimeet.service.MultiMeetService
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
...
@@ -55,6 +59,19 @@ public class ImMultiMeetController extends BaseController {
...
@@ -55,6 +59,19 @@ public class ImMultiMeetController extends BaseController {
return
ApiResult
.
ok
();
return
ApiResult
.
ok
();
}
}
@PostMapping
(
"/agree"
)
@ApiOperation
(
value
=
"同意进入会议"
,
notes
=
"同意进入会议"
)
public
ApiResult
<
Boolean
>
agree
(
@RequestBody
AgreeToMultiMeetParam
param
)
{
multiMeetService
.
agree
(
param
);
return
ApiResult
.
ok
();
}
@PostMapping
(
"/leave"
)
@ApiOperation
(
value
=
"主动挂断(离开会议)"
,
notes
=
"主动挂断(离开会议)"
)
public
ApiResult
<
Boolean
>
leave
(
@RequestBody
LeaveFromMultiMeetParam
param
)
{
multiMeetService
.
leave
(
param
);
return
ApiResult
.
ok
();
}
}
}
core/src/main/java/com/wecloud/im/param/AgreeToMultiMeetParam.java
0 → 100644
View file @
ce1ca6af
package
com
.
wecloud
.
im
.
param
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @Author wenzhida
* @Date 2022/3/7 22:18
* @Description 同意加入会议
*/
@Data
@ApiModel
(
value
=
"同意加入会议"
)
public
class
AgreeToMultiMeetParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
5450997250608231171L
;
@ApiModelProperty
(
value
=
"会话id,可选"
,
required
=
false
)
private
Long
conversationId
;
@ApiModelProperty
(
value
=
"多人会议房间id"
,
required
=
true
)
private
String
roomId
;
@ApiModelProperty
(
value
=
"发起会议人clientId"
,
required
=
true
)
private
String
inviterClientId
;
}
core/src/main/java/com/wecloud/im/param/InviteToMultiMeetParam.java
View file @
ce1ca6af
...
@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
...
@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.List
;
import
java.util.List
;
...
@@ -22,9 +23,11 @@ public class InviteToMultiMeetParam implements Serializable {
...
@@ -22,9 +23,11 @@ public class InviteToMultiMeetParam implements Serializable {
@ApiModelProperty
(
value
=
"绑定的会话id,可选"
,
required
=
false
)
@ApiModelProperty
(
value
=
"绑定的会话id,可选"
,
required
=
false
)
private
Long
conversationId
;
private
Long
conversationId
;
@NotNull
(
message
=
"多人会议房间id不可为空"
)
@ApiModelProperty
(
value
=
"多人会议房间id"
,
required
=
true
)
@ApiModelProperty
(
value
=
"多人会议房间id"
,
required
=
true
)
private
String
roomId
;
private
String
roomId
;
@NotNull
(
message
=
"被邀请的客户端ID列表不可为空"
)
@ApiModelProperty
(
value
=
"被邀请的客户端ID列表"
,
required
=
true
)
@ApiModelProperty
(
value
=
"被邀请的客户端ID列表"
,
required
=
true
)
private
List
<
String
>
toClients
;
private
List
<
String
>
toClients
;
...
...
core/src/main/java/com/wecloud/im/param/LeaveFromMultiMeetParam.java
0 → 100644
View file @
ce1ca6af
package
com
.
wecloud
.
im
.
param
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @Author wenzhida
* @Date 2022/3/7 22:18
* @Description 离开会议
*/
@Data
@ApiModel
(
value
=
"离开会议"
)
public
class
LeaveFromMultiMeetParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
5395668355528734094L
;
@ApiModelProperty
(
value
=
"会话id,可选"
,
required
=
false
)
private
Long
conversationId
;
@ApiModelProperty
(
value
=
"多人会议房间id"
,
required
=
true
)
private
String
roomId
;
@ApiModelProperty
(
value
=
"发起会议人clientId"
,
required
=
true
)
private
String
inviterClientId
;
}
core/src/main/java/com/wecloud/im/ws/enums/WsMultiMeetResponseSubCmdEnum.java
View file @
ce1ca6af
...
@@ -15,7 +15,17 @@ public enum WsMultiMeetResponseSubCmdEnum {
...
@@ -15,7 +15,17 @@ public enum WsMultiMeetResponseSubCmdEnum {
/**
/**
* 拒接邀请
* 拒接邀请
*/
*/
REJECT
(
2
);
REJECT
(
2
),
/**
* 同意进入
*/
AGREE
(
3
),
/**
* 主动离开
*/
LEAVE
(
4
);
private
final
int
cmdCode
;
private
final
int
cmdCode
;
...
...
core/src/main/java/com/wecloud/multimeet/entity/response/MultiMeetAgreeResponse.java
0 → 100644
View file @
ce1ca6af
package
com
.
wecloud
.
multimeet
.
entity
.
response
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serializable
;
/**
* @Author wenzhida
* @Date 2022/3/7 22:21
* @Description 同意进入多人音视频
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
public
class
MultiMeetAgreeResponse
extends
MultiMeetDataBase
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1623214002231302888L
;
/**
* 会话id
*/
private
Long
conversationId
;
/**
* 房间id
*/
private
String
roomId
;
/**
* 发起会议人clientId
*/
private
String
inviterClientId
;
}
core/src/main/java/com/wecloud/multimeet/entity/response/MultiMeetLeaveResponse.java
0 → 100644
View file @
ce1ca6af
package
com
.
wecloud
.
multimeet
.
entity
.
response
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serializable
;
/**
* @Author wenzhida
* @Date 2022/3/7 22:21
* @Description 主动离开多人音视频
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
public
class
MultiMeetLeaveResponse
extends
MultiMeetDataBase
implements
Serializable
{
private
static
final
long
serialVersionUID
=
734428267643207411L
;
/**
* 会话id
*/
private
Long
conversationId
;
/**
* 房间id
*/
private
String
roomId
;
/**
* 发起会议人clientId
*/
private
String
inviterClientId
;
}
core/src/main/java/com/wecloud/multimeet/service/MultiMeetService.java
View file @
ce1ca6af
package
com
.
wecloud
.
multimeet
.
service
;
package
com
.
wecloud
.
multimeet
.
service
;
import
com.wecloud.im.param.AgreeToMultiMeetParam
;
import
com.wecloud.im.param.InviteToMultiMeetParam
;
import
com.wecloud.im.param.InviteToMultiMeetParam
;
import
com.wecloud.im.param.LeaveFromMultiMeetParam
;
import
com.wecloud.im.param.RejectToMultiMeetParam
;
import
com.wecloud.im.param.RejectToMultiMeetParam
;
import
com.wecloud.im.param.rtc.CreateRtcChannelResult
;
import
com.wecloud.im.param.rtc.RejectRtcChannelParam
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
/**
/**
* @Author wenzhida
* @Author wenzhida
...
@@ -26,4 +25,16 @@ public interface MultiMeetService {
...
@@ -26,4 +25,16 @@ public interface MultiMeetService {
*/
*/
void
reject
(
RejectToMultiMeetParam
param
);
void
reject
(
RejectToMultiMeetParam
param
);
/**
* 同意进入会议
* @param param
*/
void
agree
(
AgreeToMultiMeetParam
param
);
/**
* 同意进入会议
* @param param
*/
void
leave
(
LeaveFromMultiMeetParam
param
);
}
}
core/src/main/java/com/wecloud/multimeet/service/WsMultiMeetWrite.java
View file @
ce1ca6af
package
com
.
wecloud
.
multimeet
.
service
;
package
com
.
wecloud
.
multimeet
.
service
;
import
com.wecloud.multimeet.entity.response.MultiMeetAgreeResponse
;
import
com.wecloud.multimeet.entity.response.MultiMeetInviteResponse
;
import
com.wecloud.multimeet.entity.response.MultiMeetInviteResponse
;
import
com.wecloud.multimeet.entity.response.MultiMeetLeaveResponse
;
import
com.wecloud.multimeet.entity.response.MultiMeetRejectResponse
;
import
com.wecloud.multimeet.entity.response.MultiMeetRejectResponse
;
/**
/**
...
@@ -24,4 +26,18 @@ public interface WsMultiMeetWrite {
...
@@ -24,4 +26,18 @@ public interface WsMultiMeetWrite {
*/
*/
void
reject
(
MultiMeetRejectResponse
multiMeetRejectResponse
,
Long
toFkClientId
);
void
reject
(
MultiMeetRejectResponse
multiMeetRejectResponse
,
Long
toFkClientId
);
/**
* 同意进入会议
* @param multiMeetAgreeResponse
* @param toFkClientId
*/
void
agree
(
MultiMeetAgreeResponse
multiMeetAgreeResponse
,
Long
toFkClientId
);
/**
* 主动离开会议
* @param multiMeetLeaveResponse
* @param toFkClientId
*/
void
leave
(
MultiMeetLeaveResponse
multiMeetLeaveResponse
,
Long
toFkClientId
);
}
}
core/src/main/java/com/wecloud/multimeet/service/impl/MultiMeetServiceImpl.java
View file @
ce1ca6af
package
com
.
wecloud
.
multimeet
.
service
.
impl
;
package
com
.
wecloud
.
multimeet
.
service
.
impl
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.param.AgreeToMultiMeetParam
;
import
com.wecloud.im.param.InviteToMultiMeetParam
;
import
com.wecloud.im.param.InviteToMultiMeetParam
;
import
com.wecloud.im.param.LeaveFromMultiMeetParam
;
import
com.wecloud.im.param.RejectToMultiMeetParam
;
import
com.wecloud.im.param.RejectToMultiMeetParam
;
import
com.wecloud.im.param.rtc.CreateRtcChannelResult
;
import
com.wecloud.im.param.rtc.CreateRtcChannelResult
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.ws.cache.UserStateCacheManager
;
import
com.wecloud.im.ws.cache.UserStateCacheManager
;
import
com.wecloud.multimeet.entity.response.MultiMeetAgreeResponse
;
import
com.wecloud.multimeet.entity.response.MultiMeetInviteResponse
;
import
com.wecloud.multimeet.entity.response.MultiMeetInviteResponse
;
import
com.wecloud.multimeet.entity.response.MultiMeetLeaveResponse
;
import
com.wecloud.multimeet.entity.response.MultiMeetRejectResponse
;
import
com.wecloud.multimeet.entity.response.MultiMeetRejectResponse
;
import
com.wecloud.multimeet.service.MultiMeetService
;
import
com.wecloud.multimeet.service.MultiMeetService
;
import
com.wecloud.multimeet.service.WsMultiMeetWrite
;
import
com.wecloud.multimeet.service.WsMultiMeetWrite
;
...
@@ -80,4 +84,41 @@ public class MultiMeetServiceImpl implements MultiMeetService {
...
@@ -80,4 +84,41 @@ public class MultiMeetServiceImpl implements MultiMeetService {
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
(
"查无发起会议人信息"
);
}
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
(
"查无发起会议人信息"
);
}
wsMultiMeetWrite
.
leave
(
multiMeetLeaveResponse
,
receiver
.
getId
());
}
}
}
core/src/main/java/com/wecloud/multimeet/service/impl/WsMultiMeetWriteImpl.java
View file @
ce1ca6af
...
@@ -4,7 +4,9 @@ import com.wecloud.im.ws.enums.WsMultiMeetResponseSubCmdEnum;
...
@@ -4,7 +4,9 @@ import com.wecloud.im.ws.enums.WsMultiMeetResponseSubCmdEnum;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.sender.ChannelSender
;
import
com.wecloud.im.ws.sender.ChannelSender
;
import
com.wecloud.multimeet.entity.response.MultiMeetAgreeResponse
;
import
com.wecloud.multimeet.entity.response.MultiMeetInviteResponse
;
import
com.wecloud.multimeet.entity.response.MultiMeetInviteResponse
;
import
com.wecloud.multimeet.entity.response.MultiMeetLeaveResponse
;
import
com.wecloud.multimeet.entity.response.MultiMeetRejectResponse
;
import
com.wecloud.multimeet.entity.response.MultiMeetRejectResponse
;
import
com.wecloud.multimeet.service.WsMultiMeetWrite
;
import
com.wecloud.multimeet.service.WsMultiMeetWrite
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
...
@@ -53,5 +55,37 @@ public class WsMultiMeetWriteImpl implements WsMultiMeetWrite {
...
@@ -53,5 +55,37 @@ public class WsMultiMeetWriteImpl implements WsMultiMeetWrite {
channelSender
.
sendMsg
(
responseModel
,
toFkClientId
);
channelSender
.
sendMsg
(
responseModel
,
toFkClientId
);
}
}
@Override
public
void
agree
(
MultiMeetAgreeResponse
multiMeetAgreeResponse
,
Long
toFkClientId
)
{
multiMeetAgreeResponse
.
setSubCmd
(
WsMultiMeetResponseSubCmdEnum
.
AGREE
.
getCmdCode
());
// 向接收方推送
WsResponse
<
MultiMeetAgreeResponse
>
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
(
multiMeetAgreeResponse
);
responseModel
.
setReqId
(
null
);
channelSender
.
sendMsg
(
responseModel
,
toFkClientId
);
}
@Override
public
void
leave
(
MultiMeetLeaveResponse
multiMeetLeaveResponse
,
Long
toFkClientId
)
{
multiMeetLeaveResponse
.
setSubCmd
(
WsMultiMeetResponseSubCmdEnum
.
LEAVE
.
getCmdCode
());
// 向接收方推送
WsResponse
<
MultiMeetLeaveResponse
>
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
(
multiMeetLeaveResponse
);
responseModel
.
setReqId
(
null
);
channelSender
.
sendMsg
(
responseModel
,
toFkClientId
);
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment