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
0916a14e
Commit
0916a14e
authored
Jan 14, 2022
by
lixiaozhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加好友申请和好友验证结果的通知功能
parent
b0c5bc8e
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
280 additions
and
61 deletions
+280
-61
core/src/main/java/com/wecloud/im/enums/EventResponseSubCmdEnum.java
+33
-0
core/src/main/java/com/wecloud/im/friend/controller/ImFriendController.java
+2
-2
core/src/main/java/com/wecloud/im/friend/param/FriendApplyEventDto.java
+17
-0
core/src/main/java/com/wecloud/im/friend/param/FriendApproveEventDto.java
+20
-0
core/src/main/java/com/wecloud/im/friend/param/FriendBaseEventDto.java
+25
-0
core/src/main/java/com/wecloud/im/friend/service/FriendEventSender.java
+97
-0
core/src/main/java/com/wecloud/im/friend/service/ImFriendService.java
+24
-18
core/src/main/java/com/wecloud/im/service/impl/ImConversationServiceImpl.java
+6
-6
core/src/main/java/com/wecloud/im/service/impl/ImInboxServiceImpl.java
+2
-2
core/src/main/java/com/wecloud/im/service/impl/ImMessageServiceImpl.java
+3
-4
core/src/main/java/com/wecloud/im/thousandchat/service/ThousandChatService.java
+2
-3
core/src/main/java/com/wecloud/im/ws/model/WsResponse.java
+3
-3
core/src/main/java/com/wecloud/im/ws/model/WsResponseEventData.java
+24
-0
core/src/main/java/com/wecloud/im/ws/sender/ChannelSender.java
+5
-6
core/src/main/java/com/wecloud/im/ws/strategy/concrete/NormalChatStrategy.java
+5
-5
core/src/main/java/com/wecloud/im/ws/strategy/concrete/ThousandChatStrategy.java
+5
-5
core/src/main/java/com/wecloud/rtc/service/impl/WsRtcWriteImpl.java
+7
-7
No files found.
core/src/main/java/com/wecloud/im/enums/EventResponseSubCmdEnum.java
0 → 100644
View file @
0916a14e
package
com
.
wecloud
.
im
.
enums
;
import
io.geekidea.springbootplus.framework.common.enums.BaseEnum
;
/**
* @Description 服务器下发事件的枚举
* @Author lixiaozhong
* @Date 2022/1/14 12:02 下午
*/
public
enum
EventResponseSubCmdEnum
implements
BaseEnum
{
FRIEND_APPLY
(
1
,
"好友申请"
),
FRIEND_APPROVE
(
2
,
"好友认证:同意/拒绝"
);
private
final
Integer
code
;
private
final
String
desc
;
EventResponseSubCmdEnum
(
Integer
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
@Override
public
Integer
getCode
()
{
return
this
.
code
;
}
@Override
public
String
getDesc
()
{
return
this
.
desc
;
}
}
core/src/main/java/com/wecloud/im/friend/controller/ImFriendController.java
View file @
0916a14e
...
...
@@ -125,8 +125,8 @@ public class ImFriendController extends BaseController {
return
ApiResult
.
fail
(
ApiCode
.
CLIENT_NOT_FOUNT
,
null
);
}
imFriendService
.
approveFriend
(
currentClient
.
getId
(),
friendClient
.
getId
()
,
param
.
getAgree
(),
param
.
getRejectRemark
());
return
ApiResult
.
ok
();
boolean
ok
=
imFriendService
.
approveFriend
(
currentClient
.
getId
(),
friendClient
,
param
.
getAgree
(),
param
.
getRejectRemark
());
return
ApiResult
.
ok
(
ok
);
}
...
...
core/src/main/java/com/wecloud/im/friend/param/FriendApplyEventDto.java
0 → 100644
View file @
0916a14e
package
com
.
wecloud
.
im
.
friend
.
param
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @Description TODO
* @Author lixiaozhong
* @Date 2022/1/14 11:56 上午
*/
@Data
public
class
FriendApplyEventDto
extends
FriendBaseEventDto
{
@ApiModelProperty
(
"好友请求说明"
)
private
String
requestRemark
;
}
core/src/main/java/com/wecloud/im/friend/param/FriendApproveEventDto.java
0 → 100644
View file @
0916a14e
package
com
.
wecloud
.
im
.
friend
.
param
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @Description TODO
* @Author lixiaozhong
* @Date 2022/1/14 11:56 上午
*/
@Data
public
class
FriendApproveEventDto
extends
FriendBaseEventDto
{
@ApiModelProperty
(
"是否同意接受好友,true同意,false拒绝"
)
private
Boolean
agree
;
@ApiModelProperty
(
"好友拒绝原因"
)
private
String
rejectRemark
;
}
core/src/main/java/com/wecloud/im/friend/param/FriendBaseEventDto.java
0 → 100644
View file @
0916a14e
package
com
.
wecloud
.
im
.
friend
.
param
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @Description TODO
* @Author lixiaozhong
* @Date 2022/1/14 11:56 上午
*/
@Data
public
class
FriendBaseEventDto
implements
Serializable
{
/**
* 参考 {@link com.wecloud.im.enums.EventResponseSubCmdEnum EventResponseSubCmdEnum}
*/
@ApiModelProperty
(
"响应命令"
)
private
Integer
subCmd
;
@ApiModelProperty
(
"好友的client-id"
)
private
String
friendClientId
;
}
core/src/main/java/com/wecloud/im/friend/service/FriendEventSender.java
0 → 100644
View file @
0916a14e
package
com
.
wecloud
.
im
.
friend
.
service
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.enums.EventResponseSubCmdEnum
;
import
com.wecloud.im.friend.param.FriendApplyEventDto
;
import
com.wecloud.im.friend.param.FriendApproveEventDto
;
import
com.wecloud.im.friend.param.ImFriendApplyDto
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.enums.WsRtcResponseSubCmdEnum
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.model.WsResponseEventData
;
import
com.wecloud.im.ws.model.request.PushVO
;
import
com.wecloud.im.ws.sender.AsyncPush
;
import
com.wecloud.im.ws.sender.ChannelSender
;
import
com.wecloud.rtc.entity.response.RtcResponseBase
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* @Description TODO
* @Author lixiaozhong
* @Date 2022/1/13 5:35 下午
*/
@Component
public
class
FriendEventSender
{
@Autowired
private
ChannelSender
channelSender
;
@Autowired
private
AsyncPush
systemPush
;
@Autowired
private
ImApplicationService
imApplicationService
;
private
final
static
String
FRIEND_APPLY_TITLE
=
"好友申请"
;
private
final
static
String
FRIEND_APPLY_TITLE_SUB
=
"您有好友申请待验证"
;
private
final
static
String
FRIEND_APPROVE_TITLE
=
"好友验证结果"
;
private
final
static
String
FRIEND_APPROVE_TITLE_AGREE
=
"您的好友拒绝了您的好友申请"
;
private
final
static
String
FRIEND_APPROVE_TITLE_REJECT
=
"您的好友同意了您的好友申请"
;
public
void
sendFriendApplyEventMsg
(
ImClient
receiveClient
,
String
requestRemark
)
{
FriendApplyEventDto
applyDto
=
new
FriendApplyEventDto
();
applyDto
.
setSubCmd
(
EventResponseSubCmdEnum
.
FRIEND_APPLY
.
getCode
());
applyDto
.
setRequestRemark
(
requestRemark
);
applyDto
.
setFriendClientId
(
receiveClient
.
getClientId
());
// 向接收方推送
WsResponse
<
FriendApplyEventDto
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
CONVERSATION_EVENT_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
responseModel
.
setMsg
(
result
.
getMessage
());
responseModel
.
setData
(
applyDto
);
responseModel
.
setReqId
(
null
);
channelSender
.
sendMsg
(
responseModel
,
receiveClient
.
getId
());
ImApplication
app
=
imApplicationService
.
getById
(
receiveClient
.
getFkAppid
());
PushVO
pushVO
=
new
PushVO
();
pushVO
.
setTitle
(
FRIEND_APPLY_TITLE
);
pushVO
.
setSubTitle
(
FRIEND_APPLY_TITLE_SUB
);
systemPush
.
push
(
pushVO
,
receiveClient
,
app
);
}
public
void
sendFriendApproveEventMsg
(
ImClient
receiveClient
,
boolean
isAgree
,
String
rejectRemark
)
{
FriendApproveEventDto
approveDto
=
new
FriendApproveEventDto
();
approveDto
.
setSubCmd
(
EventResponseSubCmdEnum
.
FRIEND_APPROVE
.
getCode
());
approveDto
.
setAgree
(
isAgree
);
approveDto
.
setRejectRemark
(
rejectRemark
);
approveDto
.
setFriendClientId
(
receiveClient
.
getClientId
());
// 向接收方推送
WsResponse
<
FriendApproveEventDto
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
CONVERSATION_EVENT_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
responseModel
.
setMsg
(
result
.
getMessage
());
responseModel
.
setData
(
approveDto
);
responseModel
.
setReqId
(
null
);
channelSender
.
sendMsg
(
responseModel
,
receiveClient
.
getId
());
ImApplication
app
=
imApplicationService
.
getById
(
receiveClient
.
getFkAppid
());
PushVO
pushVO
=
new
PushVO
();
pushVO
.
setTitle
(
FRIEND_APPROVE_TITLE
);
pushVO
.
setSubTitle
(
isAgree
?
FRIEND_APPROVE_TITLE_AGREE
:
FRIEND_APPROVE_TITLE_REJECT
);
systemPush
.
push
(
pushVO
,
receiveClient
,
app
);
}
}
core/src/main/java/com/wecloud/im/friend/service/ImFriendService.java
View file @
0916a14e
package
com
.
wecloud
.
im
.
friend
.
service
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.Date
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
...
...
@@ -31,10 +28,11 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
* @Description 好友关系处理逻辑
...
...
@@ -53,6 +51,9 @@ public class ImFriendService extends BaseServiceImpl<ImFriendMapper, ImFriend> {
@Autowired
private
ImFriendRecommendMapper
imFriendRecommendMapper
;
@Autowired
private
FriendEventSender
friendEventSender
;
/**
* 查看朋友详情
* @param curentClientId
...
...
@@ -131,10 +132,11 @@ public class ImFriendService extends BaseServiceImpl<ImFriendMapper, ImFriend> {
//既然申请好友了,就删除好友推荐
this
.
batchDeleteRecommend
(
currentClient
,
Collections
.
singletonList
(
friendClient
.
getClientId
()));
this
.
batchDeleteRecommend
(
friendClient
,
Collections
.
singletonList
(
currentClient
.
getClientId
()));
friendEventSender
.
sendFriendApplyEventMsg
(
friendClient
,
requestRemark
);
return
true
;
}
/**
* 根据 自己id和好友id查询好友信息
* @param clientId
...
...
@@ -151,11 +153,11 @@ public class ImFriendService extends BaseServiceImpl<ImFriendMapper, ImFriend> {
* 根据 自己id和好友id,以及申请者id,更新好友信息
* @param imFriend
*/
public
void
updateByKeyAndClaimer
(
ImFriend
imFriend
)
{
public
boolean
updateByKeyAndClaimer
(
ImFriend
imFriend
)
{
// 不更新id
imFriend
.
setId
(
null
);
imFriend
.
setCreateTime
(
null
);
this
.
update
(
imFriend
,
new
QueryWrapper
<
ImFriend
>().
lambda
()
return
this
.
update
(
imFriend
,
new
QueryWrapper
<
ImFriend
>().
lambda
()
.
eq
(
ImFriend:
:
getFkClientId
,
imFriend
.
getFkClientId
())
.
eq
(
ImFriend:
:
getFkClientIdFriend
,
imFriend
.
getFkClientIdFriend
())
.
eq
(
ImFriend:
:
getFkClientIdClaimer
,
imFriend
.
getFkClientIdClaimer
()));
...
...
@@ -164,36 +166,40 @@ public class ImFriendService extends BaseServiceImpl<ImFriendMapper, ImFriend> {
/**
* 好友通过/拒绝
* @param currentClientId
* @param friendClient
Id
* @param friendClient
* @param agree
* @param rejectRemark
*/
@Transactional
public
void
approveFriend
(
Long
currentClientId
,
Long
friendClientId
,
B
oolean
agree
,
String
rejectRemark
)
{
if
(
BooleanUtils
.
isTrue
(
agree
)
)
{
public
boolean
approveFriend
(
Long
currentClientId
,
ImClient
friendClient
,
b
oolean
agree
,
String
rejectRemark
)
{
if
(
agree
)
{
rejectRemark
=
null
;
}
//好友关系有维护两条,我和他,他和我
//好友的先更新
ImFriend
friend
=
new
ImFriend
();
friend
.
setFkClientId
(
friendClient
Id
);
friend
.
setFkClientId
(
friendClient
.
getId
()
);
friend
.
setFkClientIdFriend
(
currentClientId
);
friend
.
setFkClientIdClaimer
(
friendClient
Id
);
friend
.
setState
(
BooleanUtils
.
isTrue
(
agree
)
?
FriendStateEnum
.
CONFORM
.
getCode
()
:
FriendStateEnum
.
REJECT
.
getCode
());
friend
.
setFkClientIdClaimer
(
friendClient
.
getId
()
);
friend
.
setState
(
agree
?
FriendStateEnum
.
CONFORM
.
getCode
()
:
FriendStateEnum
.
REJECT
.
getCode
());
if
(
StringUtils
.
isNotEmpty
(
rejectRemark
))
{
friend
.
setRejectRemark
(
rejectRemark
);
}
this
.
updateByKeyAndClaimer
(
friend
);
boolean
ok1
=
this
.
updateByKeyAndClaimer
(
friend
);
// 同时更新我的
ImFriend
my
=
new
ImFriend
();
my
.
setFkClientId
(
currentClientId
);
my
.
setFkClientIdFriend
(
friendClient
Id
);
my
.
setFkClientIdClaimer
(
friendClient
Id
);
my
.
setState
(
BooleanUtils
.
isTrue
(
agree
)
?
FriendStateEnum
.
CONFORM
.
getCode
()
:
FriendStateEnum
.
REJECT
.
getCode
());
my
.
setFkClientIdFriend
(
friendClient
.
getId
()
);
my
.
setFkClientIdClaimer
(
friendClient
.
getId
()
);
my
.
setState
(
agree
?
FriendStateEnum
.
CONFORM
.
getCode
()
:
FriendStateEnum
.
REJECT
.
getCode
());
if
(
StringUtils
.
isNotEmpty
(
rejectRemark
))
{
my
.
setRejectRemark
(
rejectRemark
);
}
this
.
updateByKeyAndClaimer
(
my
);
boolean
ok2
=
this
.
updateByKeyAndClaimer
(
my
);
friendEventSender
.
sendFriendApproveEventMsg
(
friendClient
,
agree
,
rejectRemark
);
return
ok1
||
ok2
;
}
public
void
batchDeleteFriend
(
ImClient
currentClient
,
List
<
String
>
friendClientIds
)
{
...
...
core/src/main/java/com/wecloud/im/service/impl/ImConversationServiceImpl.java
View file @
0916a14e
...
...
@@ -31,7 +31,7 @@ import com.wecloud.im.vo.MyConversationListVo;
import
com.wecloud.im.vo.OfflineMsgDto
;
import
com.wecloud.im.ws.enums.MsgTypeEnum
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.model.WsResponse
Model
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.sender.ChannelSender
;
import
com.wecloud.utils.JsonUtils
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
...
...
@@ -331,7 +331,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imMessageOnlineSend
.
setEvent
(
Boolean
.
TRUE
);
// 向接收方推送
WsResponse
Model
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
CONVERSATION_EVENT_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -454,7 +454,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imMessageOnlineSend
.
setEvent
(
Boolean
.
TRUE
);
// 向接收方推送
WsResponse
Model
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
CONVERSATION_EVENT_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -568,7 +568,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imMessageOnlineSend
.
setEvent
(
Boolean
.
TRUE
);
// 向接收方推送
WsResponse
Model
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
CONVERSATION_EVENT_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -655,7 +655,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imMessageOnlineSend
.
setEvent
(
Boolean
.
TRUE
);
// 向接收方推送
WsResponse
Model
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
CONVERSATION_EVENT_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -736,7 +736,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imMessageOnlineSend
.
setEvent
(
Boolean
.
TRUE
);
// 向接收方推送
WsResponse
Model
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
CONVERSATION_EVENT_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
core/src/main/java/com/wecloud/im/service/impl/ImInboxServiceImpl.java
View file @
0916a14e
...
...
@@ -17,7 +17,7 @@ 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.WsResponseCmdEnum
;
import
com.wecloud.im.ws.model.WsResponse
Model
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.sender.ChannelSender
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
...
...
@@ -206,7 +206,7 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
continue
;
}
// 向接收方推送
WsResponse
Model
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
ONLINE_EVENT_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
core/src/main/java/com/wecloud/im/service/impl/ImMessageServiceImpl.java
View file @
0916a14e
...
...
@@ -26,7 +26,7 @@ import com.wecloud.im.thousandchat.service.ThousandChatService;
import
com.wecloud.im.vo.ImMessageOfflineListVo
;
import
com.wecloud.im.vo.OfflineMsgDto
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.model.WsResponse
Model
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.model.request.PushVO
;
import
com.wecloud.im.ws.model.request.ReceiveDataVO
;
import
com.wecloud.im.ws.sender.AsyncPush
;
...
...
@@ -39,7 +39,6 @@ import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.BooleanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -121,7 +120,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
continue
;
}
WsResponse
Model
<
ImApiMessageOnlineSend
>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
ImApiMessageOnlineSend
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
REST_API_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -234,7 +233,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
imMessageOnlineSend
.
setEvent
(
Boolean
.
TRUE
);
// 向接收方推送
WsResponse
Model
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
ONLINE_EVENT_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
core/src/main/java/com/wecloud/im/thousandchat/service/ThousandChatService.java
View file @
0916a14e
...
...
@@ -16,9 +16,8 @@ import com.wecloud.im.vo.ImMessageOfflineListVo;
import
com.wecloud.im.vo.OfflineMsgDto
;
import
com.wecloud.im.ws.enums.MsgTypeEnum
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.model.WsResponse
Model
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.sender.ChannelSender
;
import
com.wecloud.utils.JsonUtils
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
...
...
@@ -203,7 +202,7 @@ public class ThousandChatService extends BaseServiceImpl<ImMsgReadLastestMapper,
imMessageOnlineSend
.
setSystemFlag
(
false
);
// 向接收方推送
WsResponse
Model
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
ONLINE_EVENT_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
core/src/main/java/com/wecloud/im/ws/model/WsResponse
Model
.java
→
core/src/main/java/com/wecloud/im/ws/model/WsResponse.java
View file @
0916a14e
...
...
@@ -6,16 +6,16 @@ import lombok.experimental.Accessors;
import
java.io.Serializable
;
/**
* @Description
null
* @Description
websocket服务端响应消息和下方消息的封装对象
* @Author hewei hwei1233@163.com
* @Date 2019-12-05
*/
@Data
@Accessors
(
chain
=
true
)
public
class
WsResponse
Model
<
T
>
implements
Serializable
{
public
class
WsResponse
<
T
>
implements
Serializable
{
/**
* 枚举类
WsResponseCmdEnum
请求uri的编码
* 枚举类
{@link com.wecloud.im.ws.enums.WsResponseCmdEnum WsResponseCmdEnum}
请求uri的编码
* 由于webSocket使用同一个通道发送数据,需要区分不同类型请求
*/
private
Integer
cmd
;
...
...
core/src/main/java/com/wecloud/im/ws/model/WsResponseEventData.java
0 → 100644
View file @
0916a14e
package
com
.
wecloud
.
im
.
ws
.
model
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* webRtc websocket下发数据封装类
*
* @param <T>
*/
@Data
public
class
WsResponseEventData
<
T
>
implements
Serializable
{
/**
* 子指令
*/
private
Integer
subCmd
;
/**
* 根据不同子指令 不同的实体
*/
private
T
subData
;
}
core/src/main/java/com/wecloud/im/ws/sender/ChannelSender.java
View file @
0916a14e
...
...
@@ -4,12 +4,11 @@ import com.wecloud.im.executor.SendMsgThreadPool;
import
com.wecloud.im.router.RouterSendService
;
import
com.wecloud.im.ws.cache.UserStateCacheManager
;
import
com.wecloud.im.ws.model.ClientInfo
;
import
com.wecloud.im.ws.model.WsResponse
Model
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.model.redis.ClientChannelInfo
;
import
com.wecloud.im.ws.model.request.ReceiveVO
;
import
com.wecloud.im.ws.manager.ChannelManager
;
import
com.wecloud.im.ws.utils.InitIp
;
import
com.wecloud.im.ws.utils.RedisUtils
;
import
com.wecloud.utils.JsonUtils
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
...
...
@@ -83,7 +82,7 @@ public class ChannelSender {
*/
public
void
sendMsg
(
ReceiveVO
receiveVO
,
ApiCode
apiCode
,
Object
data
,
Long
toClientId
)
{
ApiResult
<
Boolean
>
apiResult
=
ApiResult
.
result
(
apiCode
);
WsResponse
Model
responseModel
=
new
WsResponseModel
();
WsResponse
responseModel
=
new
WsResponse
();
responseModel
.
setMsg
(
apiResult
.
getMessage
());
responseModel
.
setCmd
(
receiveVO
.
getCmd
());
responseModel
.
setReqId
(
receiveVO
.
getReqId
());
...
...
@@ -98,7 +97,7 @@ public class ChannelSender {
* @param toIp
* @param toClientIdAndPlatforms
*/
public
void
batchSendMsg
(
WsResponse
Model
responseModel
,
String
toIp
,
List
<
String
>
toClientIdAndPlatforms
)
{
public
void
batchSendMsg
(
WsResponse
responseModel
,
String
toIp
,
List
<
String
>
toClientIdAndPlatforms
)
{
// 是否为当前机器的ip
if
(
InitIp
.
lAN_IP
.
equals
(
toIp
))
{
String
msgJson
=
JsonUtils
.
encodeJson
(
responseModel
);
...
...
@@ -117,7 +116,7 @@ public class ChannelSender {
* @param responseModel
* @param toClientId
*/
public
void
sendMsg
(
WsResponse
Model
responseModel
,
Long
toClientId
)
{
public
void
sendMsg
(
WsResponse
responseModel
,
Long
toClientId
)
{
String
msgJson
=
JsonUtils
.
encodeJson
(
responseModel
);
...
...
@@ -154,7 +153,7 @@ public class ChannelSender {
* @param nioSocketChannel
* @param responseModel
*/
public
void
sendMsgLocal
(
NioSocketChannel
nioSocketChannel
,
WsResponse
Model
responseModel
)
{
public
void
sendMsgLocal
(
NioSocketChannel
nioSocketChannel
,
WsResponse
responseModel
)
{
String
msgJson
=
JsonUtils
.
encodeJson
(
responseModel
);
...
...
core/src/main/java/com/wecloud/im/ws/strategy/concrete/NormalChatStrategy.java
View file @
0916a14e
...
...
@@ -15,7 +15,7 @@ import com.wecloud.im.service.ImMessageService;
import
com.wecloud.im.ws.annotation.ImCmdType
;
import
com.wecloud.im.ws.enums.WsRequestCmdEnum
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.model.WsResponse
Model
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.model.request.ReceiveVO
;
import
com.wecloud.im.ws.sender.AsyncPush
;
import
com.wecloud.im.ws.sender.ChannelSender
;
...
...
@@ -124,7 +124,7 @@ public class NormalChatStrategy extends AbstractImCmdStrategy {
}
// 向接收方推送
WsResponse
Model
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
ONLINE_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -171,7 +171,7 @@ public class NormalChatStrategy extends AbstractImCmdStrategy {
* @param messageId
*/
private
void
response
(
ReceiveVO
receiveVO
,
long
messageId
,
NioSocketChannel
channel
)
{
WsResponse
Model
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponse
<>();
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCmd
(
WsResponseCmdEnum
.
RES
.
getCmdCode
());
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -200,7 +200,7 @@ public class NormalChatStrategy extends AbstractImCmdStrategy {
log
.
info
(
"被对方拉黑了"
);
// 响应发送方
WsResponse
Model
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponse
<>();
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
IS_BE_BLACK
);
responseModel
.
setCmd
(
WsResponseCmdEnum
.
RES
.
getCmdCode
());
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -218,7 +218,7 @@ public class NormalChatStrategy extends AbstractImCmdStrategy {
if
(
black
)
{
log
.
info
(
"你把对方拉黑了"
);
// 响应发送方
WsResponse
Model
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponse
<>();
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
IS_TO_BLACK
);
responseModel
.
setCmd
(
WsResponseCmdEnum
.
RES
.
getCmdCode
());
responseModel
.
setCode
(
result
.
getCode
());
...
...
core/src/main/java/com/wecloud/im/ws/strategy/concrete/ThousandChatStrategy.java
View file @
0916a14e
...
...
@@ -16,7 +16,7 @@ import com.wecloud.im.thousandchat.cache.ThousandChatCacheManager;
import
com.wecloud.im.ws.annotation.ImCmdType
;
import
com.wecloud.im.ws.enums.WsRequestCmdEnum
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.model.WsResponse
Model
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.model.request.ReceiveVO
;
import
com.wecloud.im.ws.sender.AsyncPush
;
import
com.wecloud.im.ws.sender.ChannelSender
;
...
...
@@ -104,7 +104,7 @@ public class ThousandChatStrategy extends AbstractImCmdStrategy {
Map
<
String
/** ip **/
,
List
<
String
/** client的主键ID:platform **/
>>
onlineIpClientMap
=
thousandChatCacheManager
.
findOnlineHostsByThousandGroupId
(
toConversationId
);
// 封装要推给接收方的消息
WsResponse
Model
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
ONLINE_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -168,7 +168,7 @@ public class ThousandChatStrategy extends AbstractImCmdStrategy {
* @param messageId
*/
private
void
response
(
ReceiveVO
receiveVO
,
long
messageId
,
NioSocketChannel
channel
)
{
WsResponse
Model
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponse
<>();
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCmd
(
WsResponseCmdEnum
.
RES
.
getCmdCode
());
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -197,7 +197,7 @@ public class ThousandChatStrategy extends AbstractImCmdStrategy {
log
.
info
(
"被对方拉黑了"
);
// 响应发送方
WsResponse
Model
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponse
<>();
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
IS_BE_BLACK
);
responseModel
.
setCmd
(
WsResponseCmdEnum
.
RES
.
getCmdCode
());
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -215,7 +215,7 @@ public class ThousandChatStrategy extends AbstractImCmdStrategy {
if
(
black
)
{
log
.
info
(
"你把对方拉黑了"
);
// 响应发送方
WsResponse
Model
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
HashMap
<
String
,
Long
>>
responseModel
=
new
WsResponse
<>();
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
IS_TO_BLACK
);
responseModel
.
setCmd
(
WsResponseCmdEnum
.
RES
.
getCmdCode
());
responseModel
.
setCode
(
result
.
getCode
());
...
...
core/src/main/java/com/wecloud/rtc/service/impl/WsRtcWriteImpl.java
View file @
0916a14e
...
...
@@ -2,7 +2,7 @@ package com.wecloud.rtc.service.impl;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.enums.WsRtcResponseSubCmdEnum
;
import
com.wecloud.im.ws.model.WsResponse
Model
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.sender.ChannelSender
;
import
com.wecloud.rtc.entity.response.RtcCallResponse
;
import
com.wecloud.rtc.entity.response.RtcCandidateForwardResponse
;
...
...
@@ -32,7 +32,7 @@ public class WsRtcWriteImpl implements WsRtcWrite {
// rtcResponseBase.setAttrs(rtcCallResponse.get);
// 向接收方推送
WsResponse
Model
<
RtcResponseBase
<
RtcCallResponse
>>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
RtcResponseBase
<
RtcCallResponse
>>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
SINGLE_RTC_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -52,7 +52,7 @@ public class WsRtcWriteImpl implements WsRtcWrite {
// rtcResponseBase.setAttrs(rtcCallResponse.get);
// 向接收方推送
WsResponse
Model
<
RtcResponseBase
<
RtcClientJoinResponse
>>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
RtcResponseBase
<
RtcClientJoinResponse
>>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
SINGLE_RTC_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -74,7 +74,7 @@ public class WsRtcWriteImpl implements WsRtcWrite {
// rtcResponseBase.setAttrs(rtcCallResponse.get);
// 向接收方推送
WsResponse
Model
<
RtcResponseBase
<
RtcClientLeaveResponse
>>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
RtcResponseBase
<
RtcClientLeaveResponse
>>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
SINGLE_RTC_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -94,7 +94,7 @@ public class WsRtcWriteImpl implements WsRtcWrite {
// rtcResponseBase.setAttrs(rtcCallResponse.get);
// 向接收方推送
WsResponse
Model
<
RtcResponseBase
<
RtcClientRejectResponse
>>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
RtcResponseBase
<
RtcClientRejectResponse
>>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
SINGLE_RTC_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -113,7 +113,7 @@ public class WsRtcWriteImpl implements WsRtcWrite {
// rtcResponseBase.setAttrs(rtcCallResponse.get);
// 向接收方推送
WsResponse
Model
<
RtcResponseBase
<
RtcSdpForwardResponse
>>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
RtcResponseBase
<
RtcSdpForwardResponse
>>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
SINGLE_RTC_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
@@ -132,7 +132,7 @@ public class WsRtcWriteImpl implements WsRtcWrite {
// rtcResponseBase.setAttrs(rtcCallResponse.get);
// 向接收方推送
WsResponse
Model
<
RtcResponseBase
<
RtcCandidateForwardResponse
>>
responseModel
=
new
WsResponseModel
<>();
WsResponse
<
RtcResponseBase
<
RtcCandidateForwardResponse
>>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
SINGLE_RTC_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
...
...
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