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
e47d5b0f
Commit
e47d5b0f
authored
Apr 05, 2022
by
14759289890
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、回话成员、收件箱、RTC语音、多人音视频ws改造完成
parent
393de387
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
268 additions
and
168 deletions
+268
-168
core/src/main/java/com/wecloud/im/action/ConversationMembersAction.java
+22
-24
core/src/main/java/com/wecloud/im/action/InboxAction.java
+19
-21
core/src/main/java/com/wecloud/im/action/MultiMeetAction.java
+78
-0
core/src/main/java/com/wecloud/im/action/RtcAction.java
+73
-0
core/src/main/java/com/wecloud/im/controller/ImConversationMembersController.java
+6
-1
core/src/main/java/com/wecloud/im/controller/ImInboxController.java
+4
-2
core/src/main/java/com/wecloud/im/controller/ImRtcController.java
+12
-13
core/src/main/java/com/wecloud/im/service/ImConversationMembersService.java
+2
-8
core/src/main/java/com/wecloud/im/service/ImInboxService.java
+3
-4
core/src/main/java/com/wecloud/im/service/impl/ImConversationMembersServiceImpl.java
+13
-30
core/src/main/java/com/wecloud/im/service/impl/ImInboxServiceImpl.java
+6
-15
core/src/main/java/com/wecloud/im/ws/model/WsResponse.java
+7
-7
core/src/main/java/com/wecloud/rtc/service/RtcService.java
+7
-15
core/src/main/java/com/wecloud/rtc/service/impl/RtcServiceImpl.java
+16
-28
No files found.
core/src/main/java/com/wecloud/im/action/ConversationMembersAction.java
View file @
e47d5b0f
package
com
.
wecloud
.
im
.
action
;
package
com
.
wecloud
.
im
.
action
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
com.wecloud.dispatch.annotation.ActionMapping
;
import
com.wecloud.im.param.ImConvMemeClientRemarkNameParam
;
import
com.wecloud.im.param.ListConversationMembersParam
;
import
com.wecloud.im.param.add.ImConversationMemAttrUpdate
;
import
com.wecloud.im.service.ImConversationMembersService
;
import
com.wecloud.im.vo.ConversationMemberVo
;
import
com.wecloud.im.ws.model.WsResponse
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
com.wecloud.dispatch.annotation.ActionMapping
;
import
java.util.List
;
import
com.wecloud.im.param.ImConvMemeClientRemarkNameParam
;
import
com.wecloud.im.param.ListConversationMembersParam
;
import
com.wecloud.im.param.add.ImConversationMemAttrUpdate
;
import
com.wecloud.im.service.ImConversationMembersService
;
import
com.wecloud.im.vo.ConversationMemberVo
;
/**
/**
*
* @Author luozh
* @Author luozh
* @Date 2022年04月02日 16:41
* @Date 2022年04月02日 16:41
* @Version 1.0
* @Version 1.0
...
@@ -37,32 +32,35 @@ public class ConversationMembersAction {
...
@@ -37,32 +32,35 @@ public class ConversationMembersAction {
/**
/**
* 添加或修改会话成员备注
* 添加或修改会话成员备注
*/
*/
@
Post
Mapping
(
"/updateClientRemarkName"
)
@
Action
Mapping
(
"/updateClientRemarkName"
)
@ApiOperation
(
value
=
"添加或修改会话成员备注"
,
notes
=
"权限:目前只有client成员自己有权限操作"
)
@ApiOperation
(
value
=
"添加或修改会话成员备注"
,
notes
=
"权限:目前只有client成员自己有权限操作"
)
public
ApiResult
<
Boolean
>
saveOrUpdateClientRemarkName
(
@RequestBody
ImConvMemeClientRemarkNameParam
imConvMemeClientRemarkNameParam
)
throws
Exception
{
public
WsResponse
<
Boolean
>
saveOrUpdateClientRemarkName
(
ImConvMemeClientRemarkNameParam
imConvMemeClientRemarkNameParam
)
throws
Exception
{
imConversationMembersService
.
saveOrUpdateClientRemarkName
(
imConvMemeClientRemarkNameParam
);
imConversationMembersService
.
saveOrUpdateClientRemarkName
(
imConvMemeClientRemarkNameParam
);
return
ApiResult
.
ok
();
return
WsResponse
.
ok
();
}
}
/**
/**
* 添加或修改会话成员拓展字段
* 添加或修改会话成员拓展字段
*/
*/
@
Post
Mapping
(
"/updateAttr"
)
@
Action
Mapping
(
"/updateAttr"
)
@ApiOperation
(
value
=
"添加或修改会话成员拓展字段"
,
notes
=
"权限:目前只有client成员自己有权限操作"
)
@ApiOperation
(
value
=
"添加或修改会话成员拓展字段"
,
notes
=
"权限:目前只有client成员自己有权限操作"
)
public
ApiResult
<
Boolean
>
saveOrUpdateAttr
(
@RequestBody
ImConversationMemAttrUpdate
imConversationMemAttrUpdate
)
throws
Exception
{
public
WsResponse
<
Boolean
>
saveOrUpdateAttr
(
ImConversationMemAttrUpdate
imConversationMemAttrUpdate
)
throws
Exception
{
return
imConversationMembersService
.
saveOrUpdateAttr
(
imConversationMemAttrUpdate
);
boolean
r
=
imConversationMembersService
.
saveOrUpdateAttr
(
imConversationMemAttrUpdate
);
if
(
r
)
{
return
WsResponse
.
ok
();
}
else
{
return
WsResponse
.
fail
();
}
}
}
/**
/**
* 会话中成员表列表
* 会话中成员表列表
*/
*/
@
Post
Mapping
(
"/getList"
)
@
Action
Mapping
(
"/getList"
)
@ApiOperation
(
value
=
"获取会话中成员表列表"
)
@ApiOperation
(
value
=
"获取会话中成员表列表"
)
public
ApiResult
<
List
<
ConversationMemberVo
>>
getImConversationMembersList
(
@Validated
@RequestBody
ListConversationMembersParam
listConversationMembersParam
)
throws
Exception
{
public
WsResponse
<
List
<
ConversationMemberVo
>>
getImConversationMembersList
(
@Validated
ListConversationMembersParam
listConversationMembersParam
)
throws
Exception
{
// Paging<ImConversationMembersQueryVo> paging = imConversationMembersService.getImConversationMembersPageList(imConversationMembersPageParam);
return
WsResponse
.
ok
(
imConversationMembersService
.
getImConversationMembersList
(
listConversationMembersParam
));
// return ApiResult.ok(paging);
return
ApiResult
.
ok
(
imConversationMembersService
.
getImConversationMembersList
(
listConversationMembersParam
));
}
}
}
}
core/src/main/java/com/wecloud/im/action/InboxAction.java
View file @
e47d5b0f
package
com
.
wecloud
.
im
.
action
;
package
com
.
wecloud
.
im
.
action
;
import
com.wecloud.dispatch.annotation.ActionMapping
;
import
com.wecloud.im.param.ImMsgReceivedStatusUpdate
;
import
com.wecloud.im.param.MsgReadStatusUpdateParam
;
import
com.wecloud.im.param.UpdateMsgReadStatusByConversationParam
;
import
com.wecloud.im.service.ImInboxService
;
import
com.wecloud.im.ws.model.WsResponse
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
com.wecloud.dispatch.annotation.ActionMapping
;
import
com.wecloud.im.param.ImMsgReceivedStatusUpdate
;
import
com.wecloud.im.param.MsgReadStatusUpdateParam
;
import
com.wecloud.im.param.UpdateMsgReadStatusByConversationParam
;
import
com.wecloud.im.service.ImInboxService
;
/**
/**
*
* @Author luozh
* @Author luozh
* @Date 2022年04月02日 16:39
* @Date 2022年04月02日 16:39
* @Version 1.0
* @Version 1.0
...
@@ -37,33 +33,35 @@ public class InboxAction {
...
@@ -37,33 +33,35 @@ public class InboxAction {
/**
/**
* 消息修改为已接收状态
* 消息修改为已接收状态
*/
*/
@
Post
Mapping
(
"/msgReceivedUpdate"
)
@
Action
Mapping
(
"/msgReceivedUpdate"
)
@ApiOperation
(
value
=
"消息修改为已接收状态"
)
@ApiOperation
(
value
=
"消息修改为已接收状态"
)
public
ApiResult
<
Boolean
>
updateImMsgReceived
(
@RequestBody
@Validated
ImMsgReceivedStatusUpdate
imMsgReceivedUpdate
)
throws
Exception
{
public
WsResponse
<
Boolean
>
updateImMsgReceived
(
@RequestBody
@Validated
ImMsgReceivedStatusUpdate
imMsgReceivedUpdate
)
throws
Exception
{
return
imInboxService
.
updateImMsgReceived
(
imMsgReceivedUpdate
);
imInboxService
.
updateImMsgReceived
(
imMsgReceivedUpdate
);
return
WsResponse
.
ok
();
}
}
/**
/**
* 消息修改为已读状态
* 消息修改为已读状态
*/
*/
@
Post
Mapping
(
"/msgReadUpdate"
)
@
Action
Mapping
(
"/msgReadUpdate"
)
@ApiOperation
(
value
=
"消息修改为已读状态"
)
@ApiOperation
(
value
=
"消息修改为已读状态"
)
public
ApiResult
<
Boolean
>
updateInMsgReadUpdate
(
@RequestBody
MsgReadStatusUpdateParam
msgReadStatusUpdateParam
)
throws
Exception
{
public
WsResponse
<
Boolean
>
updateInMsgReadUpdate
(
@RequestBody
MsgReadStatusUpdateParam
msgReadStatusUpdateParam
)
throws
Exception
{
if
(
CollectionUtils
.
isEmpty
(
msgReadStatusUpdateParam
.
getMsgIds
()))
{
if
(
CollectionUtils
.
isEmpty
(
msgReadStatusUpdateParam
.
getMsgIds
()))
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
);
return
WsResponse
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
);
}
}
return
imInboxService
.
updateImMsgRead
(
msgReadStatusUpdateParam
);
imInboxService
.
updateImMsgRead
(
msgReadStatusUpdateParam
);
return
WsResponse
.
ok
();
}
}
/**
/**
* 会话消息修改为已读状态
* 会话消息修改为已读状态
*/
*/
@
Post
Mapping
(
"/updateMsgReadStatusByConversation"
)
@
Action
Mapping
(
"/updateMsgReadStatusByConversation"
)
@ApiOperation
(
value
=
"会话消息修改为已读状态"
)
@ApiOperation
(
value
=
"会话消息修改为已读状态"
)
public
ApiResult
<
Boolean
>
updateMsgReadStatusByConversation
(
@RequestBody
UpdateMsgReadStatusByConversationParam
param
)
throws
Exception
{
public
WsResponse
<
Boolean
>
updateMsgReadStatusByConversation
(
@RequestBody
UpdateMsgReadStatusByConversationParam
param
)
throws
Exception
{
if
(
param
.
getConversationId
()
==
null
)
{
if
(
param
.
getConversationId
()
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
);
return
WsResponse
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
);
}
}
return
ApiResult
.
ok
(
imInboxService
.
updateMsgReadStatusByConversation
(
param
));
return
WsResponse
.
ok
(
imInboxService
.
updateMsgReadStatusByConversation
(
param
));
}
}
}
}
core/src/main/java/com/wecloud/im/action/MultiMeetAction.java
0 → 100644
View file @
e47d5b0f
package
com
.
wecloud
.
im
.
action
;
import
com.alibaba.fastjson.JSON
;
import
com.wecloud.dispatch.annotation.ActionMapping
;
import
com.wecloud.im.param.*
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.multimeet.service.MultiMeetService
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.validation.annotation.Validated
;
@Slf4j
@Component
@ActionMapping
(
value
=
"/im/multiMeet"
)
@Api
(
value
=
"ws-多人音视频通话"
,
tags
=
{
"多人音视频通话"
})
public
class
MultiMeetAction
{
@Autowired
private
MultiMeetService
multiMeetService
;
/**
* 邀请客户端加入
*/
@ActionMapping
(
"/invite"
)
@ApiOperation
(
value
=
"邀请加入多人音视频会议"
,
notes
=
"邀请加入多人音视频会议"
)
public
WsResponse
<
Boolean
>
invite
(
@Validated
InviteToMultiMeetParam
param
)
{
log
.
info
(
"邀请加入多人音视频会议入参 {}"
,
JSON
.
toJSONString
(
param
));
if
(
CollectionUtils
.
isEmpty
(
param
.
getToClients
()))
{
return
WsResponse
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
);
}
multiMeetService
.
invite
(
param
);
return
WsResponse
.
ok
();
}
@ActionMapping
(
"/reject"
)
@ApiOperation
(
value
=
"拒接进入会议"
,
notes
=
"拒接进入会议"
)
public
WsResponse
<
Boolean
>
reject
(
RejectToMultiMeetParam
param
)
{
log
.
info
(
"拒绝加入多人音视频会议入参 {}"
,
JSON
.
toJSONString
(
param
));
multiMeetService
.
reject
(
param
);
return
WsResponse
.
ok
();
}
@ActionMapping
(
"/agree"
)
@ApiOperation
(
value
=
"同意进入会议"
,
notes
=
"同意进入会议"
)
public
WsResponse
<
Boolean
>
agree
(
AgreeToMultiMeetParam
param
)
{
log
.
info
(
"同意进入多人音视频会议入参 {}"
,
JSON
.
toJSONString
(
param
));
multiMeetService
.
agree
(
param
);
return
WsResponse
.
ok
();
}
@ActionMapping
(
"/leave"
)
@ApiOperation
(
value
=
"主动挂断(离开会议)"
,
notes
=
"主动挂断(离开会议)"
)
public
WsResponse
<
Boolean
>
leave
(
LeaveFromMultiMeetParam
param
)
{
log
.
info
(
"主动挂断多人音视频会议入参 {}"
,
JSON
.
toJSONString
(
param
));
multiMeetService
.
leave
(
param
);
return
WsResponse
.
ok
();
}
@ActionMapping
(
"/notAnswered"
)
@ApiOperation
(
value
=
"未接听"
,
notes
=
"未接听"
)
public
WsResponse
<
Boolean
>
notAnswered
(
NotAnsweredMultiMeetParam
param
)
{
log
.
info
(
"多人音视频会议未接听入参 {}"
,
JSON
.
toJSONString
(
param
));
multiMeetService
.
notAnswered
(
param
);
return
WsResponse
.
ok
();
}
@ActionMapping
(
"/heartbeat"
)
@ApiOperation
(
value
=
"发送心跳"
,
notes
=
"发送心跳"
)
public
WsResponse
<
Boolean
>
heartbeat
(
HeartbeatMultiMeetParam
param
)
{
multiMeetService
.
heartbeat
(
param
);
return
WsResponse
.
ok
();
}
}
core/src/main/java/com/wecloud/im/action/RtcAction.java
0 → 100644
View file @
e47d5b0f
package
com
.
wecloud
.
im
.
action
;
import
com.wecloud.dispatch.annotation.ActionMapping
;
import
com.wecloud.im.enums.CallTypeEnum
;
import
com.wecloud.im.param.rtc.*
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.rtc.service.RtcService
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.enums.BaseEnum
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.bind.annotation.RequestBody
;
@Slf4j
@Component
@ActionMapping
(
value
=
"/im/rtc"
)
@Api
(
value
=
"ws-音视频通话"
,
tags
=
{
"音视频通话"
})
public
class
RtcAction
{
@Autowired
private
RtcService
rtcService
;
/**
* 创建频道,并邀请客户端加入
*/
@ActionMapping
(
"/createAndCall"
)
@ApiOperation
(
value
=
"创建频道,并邀请客户端加入"
,
notes
=
"创建频道,并邀请客户端加入"
)
public
WsResponse
<
CreateRtcChannelResult
>
createAndCall
(
@RequestBody
CreateRtcChannelParam
createRtcChannelParam
)
{
if
(
BaseEnum
.
valueOf
(
CallTypeEnum
.
class
,
createRtcChannelParam
.
getCallType
())
==
null
)
{
return
WsResponse
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
);
}
return
WsResponse
.
ok
(
rtcService
.
createAndCall
(
createRtcChannelParam
));
}
@ActionMapping
(
"/join"
)
@ApiOperation
(
value
=
"同意进入频道"
,
notes
=
""
)
public
WsResponse
<
Boolean
>
join
(
@RequestBody
JoinRtcChannelParam
joinRtcChannelParam
)
{
rtcService
.
join
(
joinRtcChannelParam
);
return
WsResponse
.
ok
();
}
@ActionMapping
(
"/reject"
)
@ApiOperation
(
value
=
"拒接进入频道"
,
notes
=
""
)
public
WsResponse
<
Boolean
>
reject
(
@RequestBody
RejectRtcChannelParam
rejectRtcChannelParam
)
{
rtcService
.
reject
(
rejectRtcChannelParam
);
return
WsResponse
.
ok
();
}
@ActionMapping
(
"/leave"
)
@ApiOperation
(
value
=
"主动挂断(离开频道)"
,
notes
=
""
)
public
WsResponse
<
Boolean
>
leave
(
@RequestBody
LeaveRtcChannelParam
leaveRtcChannelParam
)
{
rtcService
.
leave
(
leaveRtcChannelParam
);
return
WsResponse
.
ok
();
}
@ActionMapping
(
"/sdpForward"
)
@ApiOperation
(
value
=
"SDP数据转发"
,
notes
=
""
)
public
WsResponse
<
Boolean
>
sdpForward
(
@RequestBody
SdpForwardParam
sdpForwardParam
)
{
rtcService
.
sdpForward
(
sdpForwardParam
);
return
WsResponse
.
ok
();
}
@ActionMapping
(
"/candidateForward"
)
@ApiOperation
(
value
=
"candidate候选者数据转发"
,
notes
=
""
)
public
WsResponse
<
Boolean
>
candidateForward
(
@RequestBody
CandidateForwardParam
candidateForwardParam
)
{
rtcService
.
candidateForward
(
candidateForwardParam
);
return
WsResponse
.
ok
();
}
}
core/src/main/java/com/wecloud/im/controller/ImConversationMembersController.java
View file @
e47d5b0f
...
@@ -51,7 +51,12 @@ public class ImConversationMembersController extends BaseController {
...
@@ -51,7 +51,12 @@ public class ImConversationMembersController extends BaseController {
@PostMapping
(
"/updateAttr"
)
@PostMapping
(
"/updateAttr"
)
@ApiOperation
(
value
=
"添加或修改会话成员拓展字段"
,
notes
=
"权限:目前只有client成员自己有权限操作"
)
@ApiOperation
(
value
=
"添加或修改会话成员拓展字段"
,
notes
=
"权限:目前只有client成员自己有权限操作"
)
public
ApiResult
<
Boolean
>
saveOrUpdateAttr
(
@RequestBody
ImConversationMemAttrUpdate
imConversationMemAttrUpdate
)
throws
Exception
{
public
ApiResult
<
Boolean
>
saveOrUpdateAttr
(
@RequestBody
ImConversationMemAttrUpdate
imConversationMemAttrUpdate
)
throws
Exception
{
return
imConversationMembersService
.
saveOrUpdateAttr
(
imConversationMemAttrUpdate
);
boolean
r
=
imConversationMembersService
.
saveOrUpdateAttr
(
imConversationMemAttrUpdate
);
if
(
r
)
{
return
ApiResult
.
ok
();
}
else
{
return
ApiResult
.
fail
();
}
}
}
...
...
core/src/main/java/com/wecloud/im/controller/ImInboxController.java
View file @
e47d5b0f
...
@@ -39,7 +39,8 @@ public class ImInboxController extends BaseController {
...
@@ -39,7 +39,8 @@ public class ImInboxController extends BaseController {
@PostMapping
(
"/msgReceivedUpdate"
)
@PostMapping
(
"/msgReceivedUpdate"
)
@ApiOperation
(
value
=
"消息修改为已接收状态"
)
@ApiOperation
(
value
=
"消息修改为已接收状态"
)
public
ApiResult
<
Boolean
>
updateImMsgReceived
(
@RequestBody
@Validated
ImMsgReceivedStatusUpdate
imMsgReceivedUpdate
)
throws
Exception
{
public
ApiResult
<
Boolean
>
updateImMsgReceived
(
@RequestBody
@Validated
ImMsgReceivedStatusUpdate
imMsgReceivedUpdate
)
throws
Exception
{
return
imInboxService
.
updateImMsgReceived
(
imMsgReceivedUpdate
);
imInboxService
.
updateImMsgReceived
(
imMsgReceivedUpdate
);
return
ApiResult
.
ok
();
}
}
/**
/**
...
@@ -51,7 +52,8 @@ public class ImInboxController extends BaseController {
...
@@ -51,7 +52,8 @@ public class ImInboxController extends BaseController {
if
(
CollectionUtils
.
isEmpty
(
msgReadStatusUpdateParam
.
getMsgIds
()))
{
if
(
CollectionUtils
.
isEmpty
(
msgReadStatusUpdateParam
.
getMsgIds
()))
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
);
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
);
}
}
return
imInboxService
.
updateImMsgRead
(
msgReadStatusUpdateParam
);
imInboxService
.
updateImMsgRead
(
msgReadStatusUpdateParam
);
return
ApiResult
.
ok
();
}
}
/**
/**
...
...
core/src/main/java/com/wecloud/im/controller/ImRtcController.java
View file @
e47d5b0f
package
com
.
wecloud
.
im
.
controller
;
package
com
.
wecloud
.
im
.
controller
;
import
com.wecloud.im.enums.CallTypeEnum
;
import
com.wecloud.im.enums.CallTypeEnum
;
import
com.wecloud.im.param.rtc.CandidateForwardParam
;
import
com.wecloud.im.param.rtc.*
;
import
com.wecloud.im.param.rtc.CreateRtcChannelParam
;
import
com.wecloud.im.param.rtc.CreateRtcChannelResult
;
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.SdpForwardParam
;
import
com.wecloud.rtc.service.RtcService
;
import
com.wecloud.rtc.service.RtcService
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
...
@@ -46,41 +40,46 @@ public class ImRtcController extends BaseController {
...
@@ -46,41 +40,46 @@ public class ImRtcController extends BaseController {
if
(
BaseEnum
.
valueOf
(
CallTypeEnum
.
class
,
createRtcChannelParam
.
getCallType
())
==
null
)
{
if
(
BaseEnum
.
valueOf
(
CallTypeEnum
.
class
,
createRtcChannelParam
.
getCallType
())
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
}
}
return
rtcService
.
createAndCall
(
createRtcChannelParam
);
return
ApiResult
.
ok
(
rtcService
.
createAndCall
(
createRtcChannelParam
)
);
}
}
@PostMapping
(
"/join"
)
@PostMapping
(
"/join"
)
@ApiOperation
(
value
=
"同意进入频道"
,
notes
=
""
)
@ApiOperation
(
value
=
"同意进入频道"
,
notes
=
""
)
public
ApiResult
<
Boolean
>
join
(
@RequestBody
JoinRtcChannelParam
joinRtcChannelParam
)
{
public
ApiResult
<
Boolean
>
join
(
@RequestBody
JoinRtcChannelParam
joinRtcChannelParam
)
{
return
rtcService
.
join
(
joinRtcChannelParam
);
rtcService
.
join
(
joinRtcChannelParam
);
return
ApiResult
.
ok
();
}
}
@PostMapping
(
"/reject"
)
@PostMapping
(
"/reject"
)
@ApiOperation
(
value
=
"拒接进入频道"
,
notes
=
""
)
@ApiOperation
(
value
=
"拒接进入频道"
,
notes
=
""
)
public
ApiResult
<
Boolean
>
reject
(
@RequestBody
RejectRtcChannelParam
rejectRtcChannelParam
)
{
public
ApiResult
<
Boolean
>
reject
(
@RequestBody
RejectRtcChannelParam
rejectRtcChannelParam
)
{
return
rtcService
.
reject
(
rejectRtcChannelParam
);
rtcService
.
reject
(
rejectRtcChannelParam
);
return
ApiResult
.
ok
();
}
}
@PostMapping
(
"/leave"
)
@PostMapping
(
"/leave"
)
@ApiOperation
(
value
=
"主动挂断(离开频道)"
,
notes
=
""
)
@ApiOperation
(
value
=
"主动挂断(离开频道)"
,
notes
=
""
)
public
ApiResult
<
Boolean
>
leave
(
@RequestBody
LeaveRtcChannelParam
leaveRtcChannelParam
)
{
public
ApiResult
<
Boolean
>
leave
(
@RequestBody
LeaveRtcChannelParam
leaveRtcChannelParam
)
{
return
rtcService
.
leave
(
leaveRtcChannelParam
);
rtcService
.
leave
(
leaveRtcChannelParam
);
return
ApiResult
.
ok
();
}
}
@PostMapping
(
"/sdpForward"
)
@PostMapping
(
"/sdpForward"
)
@ApiOperation
(
value
=
"SDP数据转发"
,
notes
=
""
)
@ApiOperation
(
value
=
"SDP数据转发"
,
notes
=
""
)
public
ApiResult
<
Boolean
>
sdpForward
(
@RequestBody
SdpForwardParam
sdpForwardParam
)
{
public
ApiResult
<
Boolean
>
sdpForward
(
@RequestBody
SdpForwardParam
sdpForwardParam
)
{
return
rtcService
.
sdpForward
(
sdpForwardParam
);
rtcService
.
sdpForward
(
sdpForwardParam
);
return
ApiResult
.
ok
();
}
}
@PostMapping
(
"/candidateForward"
)
@PostMapping
(
"/candidateForward"
)
@ApiOperation
(
value
=
"candidate候选者数据转发"
,
notes
=
""
)
@ApiOperation
(
value
=
"candidate候选者数据转发"
,
notes
=
""
)
public
ApiResult
<
Boolean
>
candidateForward
(
@RequestBody
CandidateForwardParam
candidateForwardParam
)
{
public
ApiResult
<
Boolean
>
candidateForward
(
@RequestBody
CandidateForwardParam
candidateForwardParam
)
{
return
rtcService
.
candidateForward
(
candidateForwardParam
);
rtcService
.
candidateForward
(
candidateForwardParam
);
return
ApiResult
.
ok
();
}
}
...
...
core/src/main/java/com/wecloud/im/service/ImConversationMembersService.java
View file @
e47d5b0f
...
@@ -2,13 +2,7 @@ package com.wecloud.im.service;
...
@@ -2,13 +2,7 @@ package com.wecloud.im.service;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImConversationMembers
;
import
com.wecloud.im.entity.ImConversationMembers
;
import
com.wecloud.im.param.ApiImConversationMembersPageParam
;
import
com.wecloud.im.param.*
;
import
com.wecloud.im.param.ApiImConversationMembersQueryVo
;
import
com.wecloud.im.param.ImConvMemeClientRemarkNameParam
;
import
com.wecloud.im.param.ListConversationMembersParam
;
import
com.wecloud.im.param.ImConversationMembersPageParam
;
import
com.wecloud.im.param.ImConversationMembersQueryVo
;
import
com.wecloud.im.param.SetAdminsParam
;
import
com.wecloud.im.param.add.ImConversationMemAttrUpdate
;
import
com.wecloud.im.param.add.ImConversationMemAttrUpdate
;
import
com.wecloud.im.vo.ConversationMemberVo
;
import
com.wecloud.im.vo.ConversationMemberVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
...
@@ -54,7 +48,7 @@ public interface ImConversationMembersService extends BaseService<ImConversation
...
@@ -54,7 +48,7 @@ public interface ImConversationMembersService extends BaseService<ImConversation
List
<
ConversationMemberVo
>
getImConversationMembersList
(
ListConversationMembersParam
param
);
List
<
ConversationMemberVo
>
getImConversationMembersList
(
ListConversationMembersParam
param
);
ApiResult
<
Boolean
>
saveOrUpdateAttr
(
ImConversationMemAttrUpdate
imConversationMemAttrUpdate
);
Boolean
saveOrUpdateAttr
(
ImConversationMemAttrUpdate
imConversationMemAttrUpdate
);
/**
/**
* 保存
* 保存
...
...
core/src/main/java/com/wecloud/im/service/ImInboxService.java
View file @
e47d5b0f
...
@@ -2,10 +2,9 @@ package com.wecloud.im.service;
...
@@ -2,10 +2,9 @@ package com.wecloud.im.service;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.wecloud.im.entity.ImInbox
;
import
com.wecloud.im.entity.ImInbox
;
import
com.wecloud.im.param.MsgReadStatusUpdateParam
;
import
com.wecloud.im.param.ImMsgReceivedStatusUpdate
;
import
com.wecloud.im.param.ImMsgReceivedStatusUpdate
;
import
com.wecloud.im.param.MsgReadStatusUpdateParam
;
import
com.wecloud.im.param.UpdateMsgReadStatusByConversationParam
;
import
com.wecloud.im.param.UpdateMsgReadStatusByConversationParam
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
/**
/**
...
@@ -68,7 +67,7 @@ public interface ImInboxService extends BaseService<ImInbox> {
...
@@ -68,7 +67,7 @@ public interface ImInboxService extends BaseService<ImInbox> {
* @param imMsgReceivedUpdate
* @param imMsgReceivedUpdate
* @return
* @return
*/
*/
ApiResult
<
Boolean
>
updateImMsgReceived
(
ImMsgReceivedStatusUpdate
imMsgReceivedUpdate
);
Boolean
updateImMsgReceived
(
ImMsgReceivedStatusUpdate
imMsgReceivedUpdate
);
/**
/**
* 统计未读消息数量
* 统计未读消息数量
...
@@ -83,7 +82,7 @@ public interface ImInboxService extends BaseService<ImInbox> {
...
@@ -83,7 +82,7 @@ public interface ImInboxService extends BaseService<ImInbox> {
*
*
* @return
* @return
*/
*/
ApiResult
<
Boolean
>
updateImMsgRead
(
MsgReadStatusUpdateParam
msgReadStatusUpdateParam
)
throws
JsonProcessingException
;
Boolean
updateImMsgRead
(
MsgReadStatusUpdateParam
msgReadStatusUpdateParam
)
throws
JsonProcessingException
;
/**
/**
* 整个会话消息修改为已读状态
* 整个会话消息修改为已读状态
...
...
core/src/main/java/com/wecloud/im/service/impl/ImConversationMembersServiceImpl.java
View file @
e47d5b0f
...
@@ -12,19 +12,9 @@ import com.wecloud.im.entity.ImConversationMembers;
...
@@ -12,19 +12,9 @@ import com.wecloud.im.entity.ImConversationMembers;
import
com.wecloud.im.entity.ImMessageOnlineSend
;
import
com.wecloud.im.entity.ImMessageOnlineSend
;
import
com.wecloud.im.mapper.ImConversationMapper
;
import
com.wecloud.im.mapper.ImConversationMapper
;
import
com.wecloud.im.mapper.ImConversationMembersMapper
;
import
com.wecloud.im.mapper.ImConversationMembersMapper
;
import
com.wecloud.im.param.ApiImConversationMembersPageParam
;
import
com.wecloud.im.param.*
;
import
com.wecloud.im.param.ApiImConversationMembersQueryVo
;
import
com.wecloud.im.param.ImConvMemeClientRemarkNameParam
;
import
com.wecloud.im.param.ListConversationMembersParam
;
import
com.wecloud.im.param.ImConversationMembersPageParam
;
import
com.wecloud.im.param.ImConversationMembersQueryVo
;
import
com.wecloud.im.param.SetAdminsParam
;
import
com.wecloud.im.param.add.ImConversationMemAttrUpdate
;
import
com.wecloud.im.param.add.ImConversationMemAttrUpdate
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.*
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.service.ImConversationMembersService
;
import
com.wecloud.im.service.ImConversationService
;
import
com.wecloud.im.service.ImMessageService
;
import
com.wecloud.im.vo.ConversationMemberVo
;
import
com.wecloud.im.vo.ConversationMemberVo
;
import
com.wecloud.im.ws.enums.MsgTypeEnum
;
import
com.wecloud.im.ws.enums.MsgTypeEnum
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
...
@@ -37,15 +27,12 @@ import io.geekidea.springbootplus.framework.common.exception.BusinessException;
...
@@ -37,15 +27,12 @@ import io.geekidea.springbootplus.framework.common.exception.BusinessException;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.core.pagination.PageInfo
;
import
io.geekidea.springbootplus.framework.core.pagination.PageInfo
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -83,6 +70,9 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
...
@@ -83,6 +70,9 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
@Autowired
@Autowired
private
ImConversationMembersMapper
imConversationMembersMapper
;
private
ImConversationMembersMapper
imConversationMembersMapper
;
@Autowired
private
ContextService
contextService
;
@Override
@Override
public
ApiResult
<
List
<
ApiImConversationMembersQueryVo
>>
getRestApiImConversationMembersList
(
ApiImConversationMembersPageParam
apiImConversationMembersPageParam
,
ImApplication
imApplication
)
{
public
ApiResult
<
List
<
ApiImConversationMembersQueryVo
>>
getRestApiImConversationMembersList
(
ApiImConversationMembersPageParam
apiImConversationMembersPageParam
,
ImApplication
imApplication
)
{
...
@@ -162,12 +152,12 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
...
@@ -162,12 +152,12 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
@Override
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ApiResult
<
Boolean
>
saveOrUpdateAttr
(
ImConversationMemAttrUpdate
imConversationMemAttrUpdate
)
{
public
Boolean
saveOrUpdateAttr
(
ImConversationMemAttrUpdate
imConversationMemAttrUpdate
)
{
//
shiro线程中获取当前token
//
获取当前client
JwtToken
curentJwtToken
=
JwtUtil
.
getCurrentJwtToken
();
ImClient
createClient
=
contextService
.
getImClientIfNotNullOrThrow
();
// 根据app
Key
查询application
// 根据app
Id
查询application
ImApplication
imApplication
=
imApplicationService
.
getCacheAppByAppKey
(
curentJwtToken
.
getAppKey
());
ImApplication
imApplication
=
contextService
.
getImApplicationIfNotNullOrThrow
(
createClient
.
getFkAppid
());
ImClient
imClientSender
=
imClientService
.
getCurrentClient
();
ImClient
imClientSender
=
imClientService
.
getCurrentClient
();
...
@@ -180,7 +170,7 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
...
@@ -180,7 +170,7 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
);
);
if
(
imConversationMember
==
null
)
{
if
(
imConversationMember
==
null
)
{
return
ApiResult
.
fail
()
;
return
false
;
}
}
...
@@ -197,15 +187,8 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
...
@@ -197,15 +187,8 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
boolean
b
=
imConversationMembersService
.
updateById
(
imConversationMember
);
boolean
b
=
imConversationMembersService
.
updateById
(
imConversationMember
);
if
(
b
)
{
//TODO ws下发群成员属性变动事件
return
b
;
//TODO ws下发群成员属性变动事件
return
ApiResult
.
ok
();
}
else
{
return
ApiResult
.
fail
();
}
}
}
...
...
core/src/main/java/com/wecloud/im/service/impl/ImInboxServiceImpl.java
View file @
e47d5b0f
...
@@ -2,22 +2,13 @@ package com.wecloud.im.service.impl;
...
@@ -2,22 +2,13 @@ package com.wecloud.im.service.impl;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.google.common.collect.Maps
;
import
com.google.common.collect.Maps
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.*
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImConversationMembers
;
import
com.wecloud.im.entity.ImInbox
;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.entity.ImMessageOnlineSend
;
import
com.wecloud.im.enums.ReadMsgStatusEnum
;
import
com.wecloud.im.enums.ReadMsgStatusEnum
;
import
com.wecloud.im.mapper.ImInboxMapper
;
import
com.wecloud.im.mapper.ImInboxMapper
;
import
com.wecloud.im.param.ImMsgReceivedStatusUpdate
;
import
com.wecloud.im.param.ImMsgReceivedStatusUpdate
;
import
com.wecloud.im.param.MsgReadStatusUpdateParam
;
import
com.wecloud.im.param.MsgReadStatusUpdateParam
;
import
com.wecloud.im.param.UpdateMsgReadStatusByConversationParam
;
import
com.wecloud.im.param.UpdateMsgReadStatusByConversationParam
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.*
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.service.ImConversationMembersService
;
import
com.wecloud.im.service.ImInboxService
;
import
com.wecloud.im.service.ImMessageService
;
import
com.wecloud.im.ws.enums.MsgTypeEnum
;
import
com.wecloud.im.ws.enums.MsgTypeEnum
;
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
;
...
@@ -96,7 +87,7 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
...
@@ -96,7 +87,7 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
@Override
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ApiResult
<
Boolean
>
updateImMsgReceived
(
ImMsgReceivedStatusUpdate
imMsgReceivedUpdate
)
{
public
Boolean
updateImMsgReceived
(
ImMsgReceivedStatusUpdate
imMsgReceivedUpdate
)
{
ImClient
curentClient
=
imClientService
.
getCurrentClient
();
ImClient
curentClient
=
imClientService
.
getCurrentClient
();
// 修改已接收状态
// 修改已接收状态
...
@@ -119,7 +110,7 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
...
@@ -119,7 +110,7 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
this
.
updateImMsgRead
(
msgReadStatusUpdateParam
);
this
.
updateImMsgRead
(
msgReadStatusUpdateParam
);
}
}
return
ApiResult
.
ok
()
;
return
true
;
}
}
/**
/**
...
@@ -137,7 +128,7 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
...
@@ -137,7 +128,7 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
@Override
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ApiResult
<
Boolean
>
updateImMsgRead
(
MsgReadStatusUpdateParam
msgReadStatusUpdateParam
)
{
public
Boolean
updateImMsgRead
(
MsgReadStatusUpdateParam
msgReadStatusUpdateParam
)
{
ImClient
curentClient
=
imClientService
.
getCurrentClient
();
ImClient
curentClient
=
imClientService
.
getCurrentClient
();
// 修改已读状态
// 修改已读状态
...
@@ -151,7 +142,7 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
...
@@ -151,7 +142,7 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
contentMap
.
put
(
"receiverId"
,
curentClient
.
getClientId
());
contentMap
.
put
(
"receiverId"
,
curentClient
.
getClientId
());
sendMsgStatus
(
curentClient
,
MsgTypeEnum
.
CLIENT_READ_MSG
,
contentMap
,
msgReadStatusUpdateParam
.
getMsgIds
());
sendMsgStatus
(
curentClient
,
MsgTypeEnum
.
CLIENT_READ_MSG
,
contentMap
,
msgReadStatusUpdateParam
.
getMsgIds
());
return
ApiResult
.
ok
()
;
return
true
;
}
}
...
...
core/src/main/java/com/wecloud/im/ws/model/WsResponse.java
View file @
e47d5b0f
package
com
.
wecloud
.
im
.
ws
.
model
;
package
com
.
wecloud
.
im
.
ws
.
model
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.config.il8n.I18nMessageUtil
;
import
io.geekidea.springbootplus.framework.config.il8n.I18nMessageUtil
;
import
io.geekidea.springbootplus.framework.config.il8n.LanguageEnum
;
import
io.geekidea.springbootplus.framework.config.il8n.LanguageEnum
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -10,10 +10,6 @@ import lombok.experimental.Accessors;
...
@@ -10,10 +10,6 @@ import lombok.experimental.Accessors;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
javax.xml.ws.Response
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
/**
/**
* @Description websocket服务端响应消息和下方消息的封装对象
* @Description websocket服务端响应消息和下方消息的封装对象
* @Author hewei hwei1233@163.com
* @Author hewei hwei1233@163.com
...
@@ -91,8 +87,12 @@ public class WsResponse<T> implements Serializable {
...
@@ -91,8 +87,12 @@ public class WsResponse<T> implements Serializable {
return
result
(
ApiCode
.
FAIL
,
message
,
false
);
return
result
(
ApiCode
.
FAIL
,
message
,
false
);
}
}
public
static
WsResponse
<
Boolean
>
fail
(
ApiCode
apiCode
,
String
message
)
{
public
static
<
T
>
WsResponse
<
T
>
fail
(
ApiCode
apiCode
)
{
return
result
(
apiCode
,
message
,
false
);
return
result
(
apiCode
,
""
,
null
);
}
public
static
<
T
>
WsResponse
<
T
>
fail
(
ApiCode
apiCode
,
String
message
)
{
return
result
(
apiCode
,
message
,
null
);
}
}
...
...
core/src/main/java/com/wecloud/rtc/service/RtcService.java
View file @
e47d5b0f
package
com
.
wecloud
.
rtc
.
service
;
package
com
.
wecloud
.
rtc
.
service
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.wecloud.im.param.rtc.*
;
import
com.wecloud.im.param.rtc.CandidateForwardParam
;
import
com.wecloud.im.param.rtc.CreateRtcChannelParam
;
import
com.wecloud.im.param.rtc.CreateRtcChannelResult
;
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.SdpForwardParam
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
/**
/**
* 管理rtc频道
* 管理rtc频道
...
@@ -18,22 +10,22 @@ public interface RtcService {
...
@@ -18,22 +10,22 @@ public interface RtcService {
/**
/**
* 创建一个频道,并向接收方发送系统推送
* 创建一个频道,并向接收方发送系统推送
*/
*/
ApiResult
<
CreateRtcChannelResult
>
createAndCall
(
CreateRtcChannelParam
createRtcChannelParam
);
CreateRtcChannelResult
createAndCall
(
CreateRtcChannelParam
createRtcChannelParam
);
/**
/**
* 加入频道
* 加入频道
*/
*/
ApiResult
<
Boolean
>
join
(
JoinRtcChannelParam
joinRtcChannelParam
);
Boolean
join
(
JoinRtcChannelParam
joinRtcChannelParam
);
/**
/**
* 拒接加入频道
* 拒接加入频道
*/
*/
ApiResult
<
Boolean
>
reject
(
RejectRtcChannelParam
rejectRtcChannelParam
);
Boolean
reject
(
RejectRtcChannelParam
rejectRtcChannelParam
);
/**
/**
* 退出频道
* 退出频道
*/
*/
ApiResult
<
Boolean
>
leave
(
LeaveRtcChannelParam
leaveRtcChannelParam
);
Boolean
leave
(
LeaveRtcChannelParam
leaveRtcChannelParam
);
/**
/**
* SDP数据转发
* SDP数据转发
...
@@ -41,7 +33,7 @@ public interface RtcService {
...
@@ -41,7 +33,7 @@ public interface RtcService {
* @param sdpForwardParam
* @param sdpForwardParam
* @return
* @return
*/
*/
ApiResult
<
Boolean
>
sdpForward
(
SdpForwardParam
sdpForwardParam
);
Boolean
sdpForward
(
SdpForwardParam
sdpForwardParam
);
/**
/**
* candidate候选者数据转发
* candidate候选者数据转发
...
@@ -49,6 +41,6 @@ public interface RtcService {
...
@@ -49,6 +41,6 @@ public interface RtcService {
* @param candidateForwardParam
* @param candidateForwardParam
* @return
* @return
*/
*/
ApiResult
<
Boolean
>
candidateForward
(
CandidateForwardParam
candidateForwardParam
);
Boolean
candidateForward
(
CandidateForwardParam
candidateForwardParam
);
}
}
core/src/main/java/com/wecloud/rtc/service/impl/RtcServiceImpl.java
View file @
e47d5b0f
package
com
.
wecloud
.
rtc
.
service
.
impl
;
package
com
.
wecloud
.
rtc
.
service
.
impl
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.param.rtc.CandidateForwardParam
;
import
com.wecloud.im.param.rtc.*
;
import
com.wecloud.im.param.rtc.CreateRtcChannelParam
;
import
com.wecloud.im.param.rtc.CreateRtcChannelResult
;
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.SdpForwardParam
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImClientBlacklistService
;
import
com.wecloud.im.service.ImClientBlacklistService
;
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.im.ws.cache.UserStateListener
;
import
com.wecloud.im.ws.cache.UserStateListener
;
import
com.wecloud.rtc.entity.response.RtcCallResponse
;
import
com.wecloud.rtc.entity.response.*
;
import
com.wecloud.rtc.entity.response.RtcCandidateForwardResponse
;
import
com.wecloud.rtc.entity.response.RtcClientJoinResponse
;
import
com.wecloud.rtc.entity.response.RtcClientLeaveResponse
;
import
com.wecloud.rtc.entity.response.RtcClientRejectResponse
;
import
com.wecloud.rtc.entity.response.RtcSdpForwardResponse
;
import
com.wecloud.rtc.service.MangerRtcCacheService
;
import
com.wecloud.rtc.service.MangerRtcCacheService
;
import
com.wecloud.rtc.service.RtcService
;
import
com.wecloud.rtc.service.RtcService
;
import
com.wecloud.rtc.service.WsRtcWrite
;
import
com.wecloud.rtc.service.WsRtcWrite
;
...
@@ -82,7 +70,7 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
...
@@ -82,7 +70,7 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
}
}
@Override
@Override
public
ApiResult
<
CreateRtcChannelResult
>
createAndCall
(
CreateRtcChannelParam
createRtcChannelParam
)
{
public
CreateRtcChannelResult
createAndCall
(
CreateRtcChannelParam
createRtcChannelParam
)
{
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
Long
rtcChannelId
=
SnowflakeUtil
.
getId
();
Long
rtcChannelId
=
SnowflakeUtil
.
getId
();
// 判断发起方必须在线
// 判断发起方必须在线
...
@@ -115,13 +103,13 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
...
@@ -115,13 +103,13 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
// TODO 待开发 下发安卓和ios系统推送
// TODO 待开发 下发安卓和ios系统推送
return
ApiResult
.
ok
(
createRtcChannelResult
)
;
return
createRtcChannelResult
;
}
}
@Override
@Override
public
ApiResult
<
Boolean
>
join
(
JoinRtcChannelParam
joinRtcChannelParam
)
{
public
Boolean
join
(
JoinRtcChannelParam
joinRtcChannelParam
)
{
ImClient
client
=
imClientService
.
getCurrentClient
();
ImClient
client
=
imClientService
.
getCurrentClient
();
...
@@ -144,11 +132,11 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
...
@@ -144,11 +132,11 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
wsRtcWrite
.
clientJoin
(
rtcSdpForwardResponse
,
Long
.
valueOf
(
toClientId
));
wsRtcWrite
.
clientJoin
(
rtcSdpForwardResponse
,
Long
.
valueOf
(
toClientId
));
}
}
return
ApiResult
.
ok
(
true
)
;
return
true
;
}
}
@Override
@Override
public
ApiResult
<
Boolean
>
reject
(
RejectRtcChannelParam
rejectRtcChannelParam
)
{
public
Boolean
reject
(
RejectRtcChannelParam
rejectRtcChannelParam
)
{
ImClient
client
=
imClientService
.
getCurrentClient
();
ImClient
client
=
imClientService
.
getCurrentClient
();
// 修改缓存
// 修改缓存
mangerRtcCacheService
.
leave
(
client
.
getId
(),
rejectRtcChannelParam
.
getChannelId
());
mangerRtcCacheService
.
leave
(
client
.
getId
(),
rejectRtcChannelParam
.
getChannelId
());
...
@@ -169,20 +157,20 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
...
@@ -169,20 +157,20 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
if
(
CollectionUtils
.
isEmpty
(
clientListByRtcChannelId
))
{
if
(
CollectionUtils
.
isEmpty
(
clientListByRtcChannelId
))
{
// 移除频道信息
// 移除频道信息
mangerRtcCacheService
.
delChannelInfo
(
rejectRtcChannelParam
.
getChannelId
());
mangerRtcCacheService
.
delChannelInfo
(
rejectRtcChannelParam
.
getChannelId
());
}
else
if
(
clientListByRtcChannelId
.
size
()
==
1
){
}
else
if
(
clientListByRtcChannelId
.
size
()
==
1
)
{
// 频道内只有一个人了 -- 删除频道 并将这个人设为离开
// 频道内只有一个人了 -- 删除频道 并将这个人设为离开
mangerRtcCacheService
.
leave
(
Long
.
valueOf
(
clientListByRtcChannelId
.
get
(
0
)),
rejectRtcChannelParam
.
getChannelId
());
mangerRtcCacheService
.
leave
(
Long
.
valueOf
(
clientListByRtcChannelId
.
get
(
0
)),
rejectRtcChannelParam
.
getChannelId
());
mangerRtcCacheService
.
delChannelInfo
(
rejectRtcChannelParam
.
getChannelId
());
mangerRtcCacheService
.
delChannelInfo
(
rejectRtcChannelParam
.
getChannelId
());
}
}
return
ApiResult
.
ok
(
true
)
;
return
true
;
}
}
@Override
@Override
public
ApiResult
<
Boolean
>
leave
(
LeaveRtcChannelParam
leaveRtcChannelParam
)
{
public
Boolean
leave
(
LeaveRtcChannelParam
leaveRtcChannelParam
)
{
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
this
.
leave
(
leaveRtcChannelParam
,
currentClient
);
this
.
leave
(
leaveRtcChannelParam
,
currentClient
);
return
ApiResult
.
ok
(
true
)
;
return
true
;
}
}
private
void
leave
(
LeaveRtcChannelParam
leaveRtcChannelParam
,
ImClient
currentClient
)
{
private
void
leave
(
LeaveRtcChannelParam
leaveRtcChannelParam
,
ImClient
currentClient
)
{
...
@@ -206,7 +194,7 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
...
@@ -206,7 +194,7 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
if
(
CollectionUtils
.
isEmpty
(
clientListByRtcChannelId
))
{
if
(
CollectionUtils
.
isEmpty
(
clientListByRtcChannelId
))
{
// 移除频道信息
// 移除频道信息
mangerRtcCacheService
.
delChannelInfo
(
leaveRtcChannelParam
.
getChannelId
());
mangerRtcCacheService
.
delChannelInfo
(
leaveRtcChannelParam
.
getChannelId
());
}
else
if
(
clientListByRtcChannelId
.
size
()
==
1
){
}
else
if
(
clientListByRtcChannelId
.
size
()
==
1
)
{
// 频道内只有一个人了 -- 删除频道 并将这个人设为离开
// 频道内只有一个人了 -- 删除频道 并将这个人设为离开
mangerRtcCacheService
.
leave
(
Long
.
valueOf
(
clientListByRtcChannelId
.
get
(
0
)),
leaveRtcChannelParam
.
getChannelId
());
mangerRtcCacheService
.
leave
(
Long
.
valueOf
(
clientListByRtcChannelId
.
get
(
0
)),
leaveRtcChannelParam
.
getChannelId
());
mangerRtcCacheService
.
delChannelInfo
(
leaveRtcChannelParam
.
getChannelId
());
mangerRtcCacheService
.
delChannelInfo
(
leaveRtcChannelParam
.
getChannelId
());
...
@@ -214,7 +202,7 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
...
@@ -214,7 +202,7 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
}
}
@Override
@Override
public
ApiResult
<
Boolean
>
sdpForward
(
SdpForwardParam
sdpForwardParam
)
{
public
Boolean
sdpForward
(
SdpForwardParam
sdpForwardParam
)
{
ImClient
client
=
imClientService
.
getCurrentClient
();
ImClient
client
=
imClientService
.
getCurrentClient
();
Long
rtcChannelId
=
SnowflakeUtil
.
getId
();
Long
rtcChannelId
=
SnowflakeUtil
.
getId
();
...
@@ -251,11 +239,11 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
...
@@ -251,11 +239,11 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
}
}
return
ApiResult
.
ok
(
true
)
;
return
true
;
}
}
@Override
@Override
public
ApiResult
<
Boolean
>
candidateForward
(
CandidateForwardParam
candidateForwardParam
)
{
public
Boolean
candidateForward
(
CandidateForwardParam
candidateForwardParam
)
{
ImClient
client
=
imClientService
.
getCurrentClient
();
ImClient
client
=
imClientService
.
getCurrentClient
();
Long
rtcChannelId
=
SnowflakeUtil
.
getId
();
Long
rtcChannelId
=
SnowflakeUtil
.
getId
();
...
@@ -291,7 +279,7 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
...
@@ -291,7 +279,7 @@ public class RtcServiceImpl extends UserStateListener implements RtcService {
wsRtcWrite
.
candidateForward
(
rtcCandidateForwardResponse
,
Long
.
valueOf
(
toClientId
));
wsRtcWrite
.
candidateForward
(
rtcCandidateForwardResponse
,
Long
.
valueOf
(
toClientId
));
}
}
return
ApiResult
.
ok
(
true
)
;
return
true
;
}
}
...
...
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