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
9f0193f9
Commit
9f0193f9
authored
Apr 03, 2022
by
罗长华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、增加了ActionRequestHolder用于传递ActionRequest
2、调整对应的Action、Service代码
parent
0ce048a0
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
468 additions
and
195 deletions
+468
-195
core/src/main/java/com/wecloud/dispatch/ActionDispatcher.java
+11
-3
core/src/main/java/com/wecloud/dispatch/util/ActionRequestHolder.java
+37
-0
core/src/main/java/com/wecloud/im/action/BlacklistAction.java
+7
-8
core/src/main/java/com/wecloud/im/action/ClientAction.java
+18
-22
core/src/main/java/com/wecloud/im/action/ConversationAction.java
+210
-0
core/src/main/java/com/wecloud/im/controller/ImClientBlacklistController.java
+3
-3
core/src/main/java/com/wecloud/im/controller/ImClientController.java
+7
-7
core/src/main/java/com/wecloud/im/controller/ImConversationController.java
+25
-23
core/src/main/java/com/wecloud/im/externalaccess/service/UserService.java
+2
-2
core/src/main/java/com/wecloud/im/service/ContextService.java
+1
-1
core/src/main/java/com/wecloud/im/service/ImClientBlacklistService.java
+3
-3
core/src/main/java/com/wecloud/im/service/ImClientService.java
+9
-9
core/src/main/java/com/wecloud/im/service/ImConversationService.java
+15
-15
core/src/main/java/com/wecloud/im/service/impl/ContextServiceImpl.java
+4
-2
core/src/main/java/com/wecloud/im/service/impl/ImClientBlacklistServiceImpl.java
+6
-7
core/src/main/java/com/wecloud/im/service/impl/ImClientServiceImpl.java
+31
-24
core/src/main/java/com/wecloud/im/service/impl/ImConversationServiceImpl.java
+79
-66
No files found.
core/src/main/java/com/wecloud/dispatch/ActionDispatcher.java
View file @
9f0193f9
...
...
@@ -18,8 +18,11 @@ import com.wecloud.dispatch.registry.ActionBoxRegistry;
import
com.wecloud.dispatch.registry.ActionInterceptorRegistry
;
import
com.wecloud.dispatch.registry.ActionRegistry
;
import
com.wecloud.dispatch.registry.MethodArgumentResolverRegistry
;
import
com.wecloud.dispatch.util.ActionRequestHolder
;
import
io.netty.channel.Channel
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.core.MethodParameter
;
import
java.lang.reflect.InvocationTargetException
;
...
...
@@ -49,9 +52,14 @@ public class ActionDispatcher {
}
public
Object
action
(
ActionMessage
am
)
{
ActionRequest
request
=
getActionRequest
(
am
);
return
action
(
request
,
getArgumentBox
());
// modify by luozh 2022/04/03 获取到ActionRequest后保存到ThreadLocal,便于后面业务获取
try
{
ActionRequest
request
=
getActionRequest
(
am
);
ActionRequestHolder
.
setActionRequest
(
request
);
return
action
(
request
,
getArgumentBox
());
}
finally
{
ActionRequestHolder
.
remove
();
}
}
public
Object
action
(
ActionMessage
am
,
ArgumentBox
argumentBox
)
{
...
...
core/src/main/java/com/wecloud/dispatch/util/ActionRequestHolder.java
0 → 100644
View file @
9f0193f9
package
com
.
wecloud
.
dispatch
.
util
;
import
com.wecloud.dispatch.extend.ActionRequest
;
/**
* 记录websocket请求详情信息到当前线程中
* @Author luozh
* @Date 2022年04月03日 23:14
* @Version 1.0
*/
public
class
ActionRequestHolder
{
private
static
final
ThreadLocal
<
ActionRequest
>
THREAD_LOCAL
=
new
ThreadLocal
<>();
/**
* 从当前线程中获取请求信息
*/
public
static
ActionRequest
getActionRequest
()
{
return
THREAD_LOCAL
.
get
();
}
/**
* 设置请求信息到当前线程中
*
* @param actionRequest
*/
public
static
void
setActionRequest
(
ActionRequest
actionRequest
)
{
THREAD_LOCAL
.
set
(
actionRequest
);
}
/**
* 销毁
*/
public
static
void
remove
()
{
THREAD_LOCAL
.
remove
();
}
}
core/src/main/java/com/wecloud/im/action/BlacklistAction.java
View file @
9f0193f9
...
...
@@ -11,7 +11,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Component
;
import
com.wecloud.dispatch.annotation.ActionMapping
;
import
com.wecloud.dispatch.extend.ActionRequest
;
import
com.wecloud.im.param.ImClientBlacklistPageParam
;
import
com.wecloud.im.param.ImClientBlacklistQueryVo
;
import
com.wecloud.im.param.add.ImClientBlacklistUpdate
;
...
...
@@ -26,7 +25,7 @@ import com.wecloud.im.ws.model.WsResponse;
*/
@Slf4j
@Component
@ActionMapping
(
value
=
"/blacklist"
)
@ActionMapping
(
value
=
"/
im/
blacklist"
)
@Api
(
value
=
"ws-黑名单API"
,
tags
=
{
"黑名单"
})
public
class
BlacklistAction
{
...
...
@@ -38,8 +37,8 @@ public class BlacklistAction {
*/
@ActionMapping
(
"/add"
)
@ApiOperation
(
value
=
"拉入黑名单"
)
public
WsResponse
<
Boolean
>
addImClientBlacklist
(
ActionRequest
request
,
ImClientBlacklistUpdate
data
)
{
imClientBlacklistService
.
addImClientBlacklist
(
request
,
data
);
public
WsResponse
<
Boolean
>
addImClientBlacklist
(
ImClientBlacklistUpdate
data
)
{
imClientBlacklistService
.
addImClientBlacklist
(
data
);
return
WsResponse
.
ok
();
}
...
...
@@ -49,8 +48,8 @@ public class BlacklistAction {
*/
@ActionMapping
(
"/delete"
)
@ApiOperation
(
value
=
"移出黑名单"
)
public
WsResponse
<
Boolean
>
deleteImClientBlacklist
(
ActionRequest
request
,
ImClientBlacklistUpdate
data
)
{
imClientBlacklistService
.
removeImClientBlacklist
(
request
,
data
);
public
WsResponse
<
Boolean
>
deleteImClientBlacklist
(
ImClientBlacklistUpdate
data
)
{
imClientBlacklistService
.
removeImClientBlacklist
(
data
);
return
WsResponse
.
ok
();
}
...
...
@@ -60,9 +59,9 @@ public class BlacklistAction {
@ActionMapping
(
"/getPageList"
)
@OperationLog
(
name
=
"黑名单分页列表"
,
type
=
OperationLogType
.
PAGE
)
@ApiOperation
(
value
=
"黑名单分页列表"
)
public
WsResponse
<
Paging
<
ImClientBlacklistQueryVo
>>
getImClientBlacklistPageList
(
ActionRequest
request
,
ImClientBlacklistPageParam
data
)
{
public
WsResponse
<
Paging
<
ImClientBlacklistQueryVo
>>
getImClientBlacklistPageList
(
ImClientBlacklistPageParam
data
)
{
Paging
<
ImClientBlacklistQueryVo
>
blacklist
=
imClientBlacklistService
.
getImClientBlacklistPageList
(
request
,
data
);
imClientBlacklistService
.
getImClientBlacklistPageList
(
data
);
return
WsResponse
.
ok
(
blacklist
);
}
}
core/src/main/java/com/wecloud/im/action/ClientAction.java
View file @
9f0193f9
package
com
.
wecloud
.
im
.
action
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -15,7 +12,6 @@ import org.springframework.stereotype.Component;
import
com.alibaba.fastjson.JSON
;
import
com.wecloud.dispatch.annotation.ActionMapping
;
import
com.wecloud.dispatch.extend.ActionRequest
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.param.ClientInfoParam
;
...
...
@@ -43,7 +39,7 @@ import com.wecloud.im.ws.model.WsResponse;
*/
@Slf4j
@Component
@ActionMapping
(
"/client"
)
@ActionMapping
(
"/
im/
client"
)
@Api
(
value
=
"ws-终端"
,
tags
=
{
"终端"
})
public
class
ClientAction
{
...
...
@@ -64,16 +60,16 @@ public class ClientAction {
*/
@ActionMapping
(
"/myInfo"
)
@ApiOperation
(
value
=
"查询我的信息"
)
public
WsResponse
<
MyInfoVo
>
myInfo
(
ActionRequest
request
)
{
MyInfoVo
myInfo
=
imClientService
.
getMyInfo
(
request
);
public
WsResponse
<
MyInfoVo
>
myInfo
()
{
MyInfoVo
myInfo
=
imClientService
.
getMyInfo
();
return
WsResponse
.
ok
(
myInfo
);
}
@ActionMapping
(
"/infoList"
)
@ApiOperation
(
value
=
"根据id获取Client的头像昵称"
)
public
WsResponse
<
List
<
GetInfoListVo
>>
getInfoList
(
ActionRequest
request
,
GetClientInfoParam
data
)
throws
Exception
{
return
WsResponse
.
ok
(
imClientService
.
getInfoList
(
request
,
data
));
public
WsResponse
<
List
<
GetInfoListVo
>>
getInfoList
(
GetClientInfoParam
data
)
throws
Exception
{
return
WsResponse
.
ok
(
imClientService
.
getInfoList
(
data
));
}
/**
...
...
@@ -81,34 +77,34 @@ public class ClientAction {
*/
@ActionMapping
(
"/clientInfo"
)
@ApiOperation
(
value
=
"查询用户信息 用户可能是好友、陌生人、被拉黑名单的人"
)
public
WsResponse
<
ClientInfoVo
>
getClientInfo
(
ActionRequest
request
,
ClientInfoParam
data
)
{
ClientInfoVo
clientInfoVo
=
imClientService
.
getClientInfo
(
request
,
data
);
public
WsResponse
<
ClientInfoVo
>
getClientInfo
(
ClientInfoParam
data
)
{
ClientInfoVo
clientInfoVo
=
imClientService
.
getClientInfo
(
data
);
return
WsResponse
.
ok
(
clientInfoVo
);
}
@ActionMapping
(
"/updateHeadAndNickname"
)
@ApiOperation
(
value
=
"添加或修改头像和昵称"
)
public
WsResponse
<
Boolean
>
updateHeadAndNickname
(
ActionRequest
request
,
ImClientHeadPortraitAndNicknameUpdate
data
)
throws
Exception
{
public
WsResponse
<
Boolean
>
updateHeadAndNickname
(
ImClientHeadPortraitAndNicknameUpdate
data
)
throws
Exception
{
log
.
info
(
"添加或修改头像和昵称入参 {}"
,
JSON
.
toJSONString
(
data
));
boolean
flag
=
imClientService
.
updateHeadAndNickname
(
request
,
data
);
boolean
flag
=
imClientService
.
updateHeadAndNickname
(
data
);
return
WsResponse
.
ok
(
flag
);
}
@ActionMapping
(
"/updateHeadPortrait"
)
@ApiOperation
(
value
=
"添加或修改头像"
)
public
WsResponse
<
Boolean
>
updateHeadPortrait
(
ActionRequest
request
,
ImClientHeadPortraitAdd
data
)
throws
Exception
{
public
WsResponse
<
Boolean
>
updateHeadPortrait
(
ImClientHeadPortraitAdd
data
)
throws
Exception
{
log
.
info
(
"添加或修改头像入参 {}"
,
JSON
.
toJSONString
(
data
));
boolean
flag
=
imClientService
.
updateHeadPortrait
(
request
,
data
);
boolean
flag
=
imClientService
.
updateHeadPortrait
(
data
);
return
WsResponse
.
ok
(
flag
);
}
@ActionMapping
(
"/updateNickname"
)
@ApiOperation
(
value
=
"添加或修改主昵称"
)
public
WsResponse
<
Boolean
>
updateNickname
(
ActionRequest
request
,
ImClientNicknameAdd
data
)
throws
Exception
{
public
WsResponse
<
Boolean
>
updateNickname
(
ImClientNicknameAdd
data
)
throws
Exception
{
log
.
info
(
"添加或修改主昵称入参 {}"
,
JSON
.
toJSONString
(
data
));
boolean
flag
=
imClientService
.
updateNickname
(
request
,
data
);
boolean
flag
=
imClientService
.
updateNickname
(
data
);
return
WsResponse
.
ok
(
flag
);
}
...
...
@@ -121,9 +117,9 @@ public class ClientAction {
*/
@ActionMapping
(
"/logout"
)
@ApiOperation
(
value
=
"退出登陆 清除推送token等"
)
public
WsResponse
<
Boolean
>
logout
(
ActionRequest
request
,
LogoutParam
param
)
{
public
WsResponse
<
Boolean
>
logout
(
LogoutParam
param
)
{
log
.
info
(
"退出登陆入参 {}"
,
JSON
.
toJSONString
(
param
));
boolean
flag
=
imClientService
.
logout
(
request
,
param
);
boolean
flag
=
imClientService
.
logout
(
param
);
return
WsResponse
.
ok
(
flag
);
}
...
...
@@ -134,10 +130,10 @@ public class ClientAction {
*/
@ActionMapping
(
"/onlineStatus"
)
@ApiOperation
(
value
=
"获取用户在线状态(批量)"
)
public
WsResponse
<
List
<
ImOnlineStatusVo
>>
getOnlineStatus
(
ActionRequest
request
,
GetOnlineStatusParam
getOnlineStatusParam
)
{
public
WsResponse
<
List
<
ImOnlineStatusVo
>>
getOnlineStatus
(
GetOnlineStatusParam
getOnlineStatusParam
)
{
// shiro线程中获取当前token
ImClient
imClient
=
contextService
.
getImClientIfNotNullOrThrow
(
request
);
ImClient
imClient
=
contextService
.
getImClientIfNotNullOrThrow
();
ImApplication
imApplication
=
contextService
.
getImApplicationIfNotNullOrThrow
(
imClient
.
getFkAppid
());
ArrayList
<
ImOnlineStatusVo
>
imOnlineStatusVos
=
new
ArrayList
<>();
...
...
core/src/main/java/com/wecloud/im/action/ConversationAction.java
0 → 100644
View file @
9f0193f9
package
com
.
wecloud
.
im
.
action
;
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.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.List
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.validation.annotation.Validated
;
import
com.alibaba.fastjson.JSON
;
import
com.wecloud.dispatch.annotation.ActionMapping
;
import
com.wecloud.im.param.DisbandConversationParam
;
import
com.wecloud.im.param.ImConversationQueryParam
;
import
com.wecloud.im.param.MutedGroupMemberParam
;
import
com.wecloud.im.param.MutedGroupParam
;
import
com.wecloud.im.param.SetAdminsParam
;
import
com.wecloud.im.param.TransferOwnerParam
;
import
com.wecloud.im.param.add.ImClientLeaveConversation
;
import
com.wecloud.im.param.add.ImClientToConversation
;
import
com.wecloud.im.param.add.ImConversationAttrUpdate
;
import
com.wecloud.im.param.add.ImConversationCreate
;
import
com.wecloud.im.param.add.ImConversationDisplayUpdate
;
import
com.wecloud.im.param.add.ImConversationNameUpdate
;
import
com.wecloud.im.service.ImConversationService
;
import
com.wecloud.im.vo.ConversationVo
;
import
com.wecloud.im.vo.ImConversationCreateVo
;
import
com.wecloud.im.ws.model.WsResponse
;
/**
*
* @Author luozh
* @Date 2022年04月02日 16:39
* @Version 1.0
*/
@Slf4j
@Component
@ActionMapping
(
value
=
"/im/conversation"
)
@Api
(
value
=
"ws-会话表API"
,
tags
=
{
"会话表"
})
public
class
ConversationAction
{
@Autowired
private
ImConversationService
imConversationService
;
/**
* 添加或修改会话名称
*/
@ActionMapping
(
"/saveOrUpdateName"
)
@ApiOperation
(
value
=
"添加或修改会话名称"
,
notes
=
"权限:目前只有创建者有权限操作"
)
public
WsResponse
<
Boolean
>
saveOrUpdateName
(
ImConversationNameUpdate
data
)
{
log
.
info
(
"添加或修改会话名称入参 {}"
,
JSON
.
toJSONString
(
data
));
imConversationService
.
saveOrUpdateName
(
data
);
return
WsResponse
.
ok
();
}
/**
* 添加或修改会话拓展字段
*/
@ActionMapping
(
"/saveOrUpdateAttr"
)
@ApiOperation
(
value
=
"添加或修改会话拓展字段"
,
notes
=
"权限:所有client都权限操作"
)
public
WsResponse
<
Boolean
>
saveOrUpdateAttr
(
ImConversationAttrUpdate
imConversationAttrUpdate
)
{
imConversationService
.
saveOrUpdateAttr
(
imConversationAttrUpdate
);
return
WsResponse
.
ok
();
}
/**
* client退出会话
*/
@ActionMapping
(
"/leave"
)
@ApiOperation
(
value
=
"client退出会话"
,
notes
=
"若是创建者退出,[创建者]权限将会转移给按加入会话时间排序的下一个client"
)
public
WsResponse
<
Boolean
>
leaveConversation
(
ImClientLeaveConversation
imClientToConversation
)
{
log
.
info
(
"client退出会话入参 {}"
,
JSON
.
toJSONString
(
imClientToConversation
));
imConversationService
.
leaveConversation
(
imClientToConversation
);
return
WsResponse
.
ok
();
}
/**
* 将client从会话移除
*/
@ActionMapping
(
"/delClient"
)
@ApiOperation
(
value
=
"将client从会话移除"
,
notes
=
"权限:目前只有群主有权限操作"
)
public
WsResponse
<
Boolean
>
delClientToConversation
(
ImClientToConversation
imClientToConversation
)
throws
Exception
{
log
.
info
(
"将client从会话移除入参 {}"
,
JSON
.
toJSONString
(
imClientToConversation
));
return
WsResponse
.
ok
(
imConversationService
.
delClientToConversation
(
imClientToConversation
));
}
/**
* 解散群聊
*/
@ActionMapping
(
"/disband"
)
@ApiOperation
(
value
=
"解散群聊"
,
notes
=
"权限:目前只有群主有权限操作"
)
public
WsResponse
<
Boolean
>
disband
(
DisbandConversationParam
param
)
throws
Exception
{
log
.
info
(
"解散群聊入参 {}"
,
JSON
.
toJSONString
(
param
));
imConversationService
.
disband
(
param
);
return
WsResponse
.
ok
();
}
/**
* 将用户添加进会话
*/
@ActionMapping
(
"/addClient"
)
@ApiOperation
(
value
=
"将用户添加进会话"
,
notes
=
"权限:会话中所有client都有权限操作"
)
public
WsResponse
<
Boolean
>
addClientToConversation
(
ImClientToConversation
imClientToConversation
)
throws
Exception
{
log
.
info
(
"将用户添加进会话入参 {}"
,
JSON
.
toJSONString
(
imClientToConversation
));
imConversationService
.
addClientToConversation
(
imClientToConversation
);
return
WsResponse
.
ok
();
}
/**
* 创建会话
*/
@ActionMapping
(
"/create"
)
@ApiOperation
(
value
=
"创建会话"
,
notes
=
"后台可配置:两个客户端如果已经创建过会话,是否重复创建会话"
)
public
WsResponse
<
ImConversationCreateVo
>
createImConversation
(
ImConversationCreate
imConversationCreate
)
throws
Exception
{
log
.
info
(
"创建会话入参 {}"
,
JSON
.
toJSONString
(
imConversationCreate
));
ImConversationCreateVo
vo
=
imConversationService
.
createImConversation
(
imConversationCreate
);
return
WsResponse
.
ok
(
vo
);
}
/**
* 群主转让
*/
@ActionMapping
(
"/transferOwner"
)
@ApiOperation
(
value
=
"群主转让"
,
notes
=
"权限:目前只有群主有权限操作"
)
public
WsResponse
<
Boolean
>
transferOwner
(
TransferOwnerParam
param
)
{
log
.
info
(
"群主转让入参 {}"
,
JSON
.
toJSONString
(
param
));
Boolean
result
=
imConversationService
.
transferOwner
(
param
);
return
WsResponse
.
ok
(
result
);
}
/**
* 设置群管理员
*/
@ActionMapping
(
"/setAdmins"
)
@ApiOperation
(
value
=
"设置群管理员"
,
notes
=
"权限:目前只有群主有权限操作"
)
public
WsResponse
<
Boolean
>
setAdmins
(
@Validated
SetAdminsParam
param
)
{
log
.
info
(
"设置群管理员入参 {}"
,
JSON
.
toJSONString
(
param
));
if
(
CollectionUtils
.
isEmpty
(
param
.
getClientIds
()))
{
return
WsResponse
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
}
Boolean
result
=
imConversationService
.
setAdmins
(
param
);
return
WsResponse
.
ok
(
result
);
}
/**
* 群禁言、取消群禁言
*/
@ActionMapping
(
"/mutedGroup"
)
@ApiOperation
(
value
=
"群禁言、取消群禁言"
,
notes
=
"权限:群主和管理员有权限操作"
)
public
WsResponse
<
Boolean
>
mutedGroup
(
@Validated
MutedGroupParam
param
)
{
log
.
info
(
"群禁言、取消群禁言入参 {}"
,
JSON
.
toJSONString
(
param
));
Boolean
result
=
imConversationService
.
mutedGroup
(
param
);
return
WsResponse
.
ok
(
result
);
}
/**
* 选择禁言
*/
@ActionMapping
(
"/mutedGroupMember"
)
@ApiOperation
(
value
=
"选择禁言"
,
notes
=
"权限:群主和管理员有权限操作"
)
public
WsResponse
<
Boolean
>
mutedGroupMember
(
@Validated
MutedGroupMemberParam
param
)
{
log
.
info
(
"选择禁言入参 {}"
,
JSON
.
toJSONString
(
param
));
if
(
CollectionUtils
.
isEmpty
(
param
.
getClientIds
()))
{
return
WsResponse
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
}
Boolean
result
=
imConversationService
.
mutedGroupMember
(
param
);
return
WsResponse
.
ok
(
result
);
}
/**
* 查询用户加入的所有会话 与每个会话的未读条数 成员
*/
@ActionMapping
(
"/getList"
)
@ApiOperation
(
value
=
"查询加入的会话列表"
,
notes
=
"查询用户加入的非隐藏状态的会话列表 与每个会话的未读条数 成员"
)
public
WsResponse
<
List
<
ConversationVo
>>
getMyImConversationListAndMsgCount
()
{
List
<
ConversationVo
>
conversationList
=
imConversationService
.
getMyImConversationListAndMsgCount
();
return
WsResponse
.
ok
(
conversationList
);
}
/**
* 根据会话id查询指定会话信息
*/
@ActionMapping
(
"/info"
)
@ApiOperation
(
value
=
"根据会话id查询指定会话信息"
,
notes
=
"根据会话id查询指定会话信息 与每个会话的未读条数"
)
public
WsResponse
<
ConversationVo
>
info
(
@Validated
ImConversationQueryParam
param
)
throws
Exception
{
ConversationVo
conversationVo
=
imConversationService
.
infoImConversationAndMsgCount
(
param
);
return
WsResponse
.
ok
(
conversationVo
);
}
/**
* 批量修改单向隐藏或显示会话
*/
@ActionMapping
(
"/displayUpdate"
)
@ApiOperation
(
value
=
"批量修改单向隐藏或显示会话"
,
notes
=
"拉取会话列表不展示已隐藏状态的会话,云端聊天记录不删除;假设有A和B两个用户,A删会话,B还能发; 如果B发了消息,A这边要重新把会话显示出来,并能显示之前的聊天记录"
)
public
ApiResult
<
Boolean
>
updateDisplayConversation
(
ImConversationDisplayUpdate
imConversationDisplayUpdate
)
throws
Exception
{
imConversationService
.
updateDisplayConversation
(
imConversationDisplayUpdate
);
return
ApiResult
.
result
(
true
);
}
}
core/src/main/java/com/wecloud/im/controller/ImClientBlacklistController.java
View file @
9f0193f9
...
...
@@ -43,7 +43,7 @@ public class ImClientBlacklistController extends BaseController {
@PostMapping
(
"/add"
)
@ApiOperation
(
value
=
"拉入黑名单"
)
public
ApiResult
<
Boolean
>
addImClientBlacklist
(
@Validated
(
Add
.
class
)
@RequestBody
ImClientBlacklistUpdate
imClientBlacklistUpdate
)
throws
Exception
{
imClientBlacklistService
.
addImClientBlacklist
(
null
,
imClientBlacklistUpdate
);
imClientBlacklistService
.
addImClientBlacklist
(
imClientBlacklistUpdate
);
return
ApiResult
.
ok
();
}
...
...
@@ -54,7 +54,7 @@ public class ImClientBlacklistController extends BaseController {
@PostMapping
(
"/delete"
)
@ApiOperation
(
value
=
"移出黑名单"
)
public
ApiResult
<
Boolean
>
deleteImClientBlacklist
(
@RequestBody
ImClientBlacklistUpdate
imClientBlacklistUpdate
)
throws
Exception
{
imClientBlacklistService
.
removeImClientBlacklist
(
null
,
imClientBlacklistUpdate
);
imClientBlacklistService
.
removeImClientBlacklist
(
imClientBlacklistUpdate
);
return
ApiResult
.
ok
();
}
...
...
@@ -66,7 +66,7 @@ public class ImClientBlacklistController extends BaseController {
@ApiOperation
(
value
=
"黑名单分页列表"
)
public
ApiResult
<
Paging
<
ImClientBlacklistQueryVo
>>
getImClientBlacklistPageList
(
@RequestBody
ImClientBlacklistPageParam
imClientBlacklistPageParam
)
throws
Exception
{
Paging
<
ImClientBlacklistQueryVo
>
blacklist
=
imClientBlacklistService
.
getImClientBlacklistPageList
(
null
,
imClientBlacklistPageParam
);
imClientBlacklistService
.
getImClientBlacklistPageList
(
imClientBlacklistPageParam
);
return
ApiResult
.
ok
(
blacklist
);
}
...
...
core/src/main/java/com/wecloud/im/controller/ImClientController.java
View file @
9f0193f9
...
...
@@ -66,7 +66,7 @@ public class ImClientController extends BaseController {
@PostMapping
(
"/myInfo"
)
@ApiOperation
(
value
=
"查询我的信息"
)
public
ApiResult
<
MyInfoVo
>
myInfo
()
{
MyInfoVo
myInfo
=
imClientService
.
getMyInfo
(
null
);
MyInfoVo
myInfo
=
imClientService
.
getMyInfo
();
return
ApiResult
.
ok
(
myInfo
);
}
...
...
@@ -74,7 +74,7 @@ public class ImClientController extends BaseController {
@PostMapping
(
"/infoList"
)
@ApiOperation
(
value
=
"根据id获取Client的头像昵称"
)
public
ApiResult
<
List
<
GetInfoListVo
>>
getInfoList
(
@Validated
(
Add
.
class
)
@RequestBody
GetClientInfoParam
getClientInfoParam
)
throws
Exception
{
return
ApiResult
.
ok
(
imClientService
.
getInfoList
(
null
,
getClientInfoParam
));
return
ApiResult
.
ok
(
imClientService
.
getInfoList
(
getClientInfoParam
));
}
/**
...
...
@@ -86,7 +86,7 @@ public class ImClientController extends BaseController {
if
(
param
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
}
ClientInfoVo
clientInfoVo
=
imClientService
.
getClientInfo
(
null
,
param
);
ClientInfoVo
clientInfoVo
=
imClientService
.
getClientInfo
(
param
);
return
ApiResult
.
ok
(
clientInfoVo
);
}
...
...
@@ -107,7 +107,7 @@ public class ImClientController extends BaseController {
@ApiOperation
(
value
=
"添加或修改头像和昵称"
)
public
ApiResult
<
Boolean
>
updateHeadAndNickname
(
@Validated
(
Add
.
class
)
@RequestBody
ImClientHeadPortraitAndNicknameUpdate
imClientHeadPortraitAndNicknameUpdate
)
throws
Exception
{
log
.
info
(
"添加或修改头像和昵称入参 {}"
,
JSON
.
toJSONString
(
imClientHeadPortraitAndNicknameUpdate
));
boolean
flag
=
imClientService
.
updateHeadAndNickname
(
null
,
imClientHeadPortraitAndNicknameUpdate
);
boolean
flag
=
imClientService
.
updateHeadAndNickname
(
imClientHeadPortraitAndNicknameUpdate
);
return
ApiResult
.
result
(
flag
);
}
...
...
@@ -116,7 +116,7 @@ public class ImClientController extends BaseController {
@ApiOperation
(
value
=
"添加或修改头像"
)
public
ApiResult
<
Boolean
>
updateHeadPortrait
(
@Validated
(
Add
.
class
)
@RequestBody
ImClientHeadPortraitAdd
imClientHeadPortraitAdd
)
throws
Exception
{
log
.
info
(
"添加或修改头像入参 {}"
,
JSON
.
toJSONString
(
imClientHeadPortraitAdd
));
boolean
flag
=
imClientService
.
updateHeadPortrait
(
null
,
imClientHeadPortraitAdd
);
boolean
flag
=
imClientService
.
updateHeadPortrait
(
imClientHeadPortraitAdd
);
return
ApiResult
.
result
(
flag
);
}
...
...
@@ -124,7 +124,7 @@ public class ImClientController extends BaseController {
@ApiOperation
(
value
=
"添加或修改主昵称"
)
public
ApiResult
<
Boolean
>
updateNickname
(
@Validated
(
Add
.
class
)
@RequestBody
ImClientNicknameAdd
imClientNicknameAdd
)
throws
Exception
{
log
.
info
(
"添加或修改主昵称入参 {}"
,
JSON
.
toJSONString
(
imClientNicknameAdd
));
boolean
flag
=
imClientService
.
updateNickname
(
null
,
imClientNicknameAdd
);
boolean
flag
=
imClientService
.
updateNickname
(
imClientNicknameAdd
);
return
ApiResult
.
result
(
flag
);
}
...
...
@@ -139,7 +139,7 @@ public class ImClientController extends BaseController {
@ApiOperation
(
value
=
"退出登陆 清除推送token等"
)
public
ApiResult
<
Boolean
>
logout
(
@RequestBody
@Validated
LogoutParam
param
)
{
log
.
info
(
"退出登陆入参 {}"
,
JSON
.
toJSONString
(
param
));
boolean
flag
=
imClientService
.
logout
(
null
,
param
);
boolean
flag
=
imClientService
.
logout
(
param
);
return
ApiResult
.
result
(
flag
);
}
...
...
core/src/main/java/com/wecloud/im/controller/ImConversationController.java
View file @
9f0193f9
package
com
.
wecloud
.
im
.
controller
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.List
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
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.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.alibaba.fastjson.JSON
;
import
com.wecloud.im.param.DisbandConversationParam
;
import
com.wecloud.im.param.ImConversationQueryParam
;
...
...
@@ -16,21 +33,6 @@ import com.wecloud.im.param.add.ImConversationNameUpdate;
import
com.wecloud.im.service.ImConversationService
;
import
com.wecloud.im.vo.ConversationVo
;
import
com.wecloud.im.vo.ImConversationCreateVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
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.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
/**
* 会话表 控制器
...
...
@@ -78,7 +80,7 @@ public class ImConversationController extends BaseController {
@ApiOperation
(
value
=
"client退出会话"
,
notes
=
"若是创建者退出,[创建者]权限将会转移给按加入会话时间排序的下一个client"
)
public
ApiResult
<
Boolean
>
leaveConversation
(
@RequestBody
ImClientLeaveConversation
imClientToConversation
)
{
log
.
info
(
"client退出会话入参 {}"
,
JSON
.
toJSONString
(
imClientToConversation
));
return
imConversationService
.
leaveConversation
(
imClientToConversation
);
return
ApiResult
.
ok
(
imConversationService
.
leaveConversation
(
imClientToConversation
)
);
}
...
...
@@ -89,7 +91,7 @@ public class ImConversationController extends BaseController {
@ApiOperation
(
value
=
"将client从会话移除"
,
notes
=
"权限:目前只有群主有权限操作"
)
public
ApiResult
<
Boolean
>
delClientToConversation
(
@RequestBody
ImClientToConversation
imClientToConversation
)
throws
Exception
{
log
.
info
(
"将client从会话移除入参 {}"
,
JSON
.
toJSONString
(
imClientToConversation
));
return
imConversationService
.
delClientToConversation
(
imClientToConversation
);
return
ApiResult
.
ok
(
imConversationService
.
delClientToConversation
(
imClientToConversation
)
);
}
/**
...
...
@@ -111,7 +113,7 @@ public class ImConversationController extends BaseController {
@ApiOperation
(
value
=
"将用户添加进会话"
,
notes
=
"权限:会话中所有client都有权限操作"
)
public
ApiResult
<
Boolean
>
addClientToConversation
(
@RequestBody
ImClientToConversation
imClientToConversation
)
throws
Exception
{
log
.
info
(
"将用户添加进会话入参 {}"
,
JSON
.
toJSONString
(
imClientToConversation
));
return
imConversationService
.
addClientToConversation
(
imClientToConversation
);
return
ApiResult
.
ok
(
imConversationService
.
addClientToConversation
(
imClientToConversation
)
);
}
/**
...
...
@@ -121,7 +123,7 @@ public class ImConversationController extends BaseController {
@ApiOperation
(
value
=
"创建会话"
,
notes
=
"后台可配置:两个客户端如果已经创建过会话,是否重复创建会话"
)
public
ApiResult
<
ImConversationCreateVo
>
createImConversation
(
@RequestBody
ImConversationCreate
imConversationCreate
)
throws
Exception
{
log
.
info
(
"创建会话入参 {}"
,
JSON
.
toJSONString
(
imConversationCreate
));
return
imConversationService
.
createImConversation
(
imConversationCreate
);
return
ApiResult
.
ok
(
imConversationService
.
createImConversation
(
imConversationCreate
)
);
}
/**
...
...
@@ -129,7 +131,7 @@ public class ImConversationController extends BaseController {
*/
@PostMapping
(
"/transferOwner"
)
@ApiOperation
(
value
=
"群主转让"
,
notes
=
"权限:目前只有群主有权限操作"
)
public
ApiResult
<
Boolean
>
transferOwner
(
@RequestBody
TransferOwnerParam
param
)
{
public
ApiResult
<
Boolean
>
transferOwner
(
@RequestBody
TransferOwnerParam
param
)
{
log
.
info
(
"群主转让入参 {}"
,
JSON
.
toJSONString
(
param
));
Boolean
result
=
imConversationService
.
transferOwner
(
param
);
return
ApiResult
.
ok
(
result
);
...
...
@@ -140,7 +142,7 @@ public class ImConversationController extends BaseController {
*/
@PostMapping
(
"/setAdmins"
)
@ApiOperation
(
value
=
"设置群管理员"
,
notes
=
"权限:目前只有群主有权限操作"
)
public
ApiResult
<
Boolean
>
setAdmins
(
@RequestBody
@Validated
SetAdminsParam
param
)
{
public
ApiResult
<
Boolean
>
setAdmins
(
@RequestBody
@Validated
SetAdminsParam
param
)
{
log
.
info
(
"设置群管理员入参 {}"
,
JSON
.
toJSONString
(
param
));
if
(
CollectionUtils
.
isEmpty
(
param
.
getClientIds
()))
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
...
...
@@ -154,7 +156,7 @@ public class ImConversationController extends BaseController {
*/
@PostMapping
(
"/mutedGroup"
)
@ApiOperation
(
value
=
"群禁言、取消群禁言"
,
notes
=
"权限:群主和管理员有权限操作"
)
public
ApiResult
<
Boolean
>
mutedGroup
(
@RequestBody
@Validated
MutedGroupParam
param
)
{
public
ApiResult
<
Boolean
>
mutedGroup
(
@RequestBody
@Validated
MutedGroupParam
param
)
{
log
.
info
(
"群禁言、取消群禁言入参 {}"
,
JSON
.
toJSONString
(
param
));
Boolean
result
=
imConversationService
.
mutedGroup
(
param
);
return
ApiResult
.
ok
(
result
);
...
...
@@ -165,7 +167,7 @@ public class ImConversationController extends BaseController {
*/
@PostMapping
(
"/mutedGroupMember"
)
@ApiOperation
(
value
=
"选择禁言"
,
notes
=
"权限:群主和管理员有权限操作"
)
public
ApiResult
<
Boolean
>
mutedGroupMember
(
@RequestBody
@Validated
MutedGroupMemberParam
param
)
{
public
ApiResult
<
Boolean
>
mutedGroupMember
(
@RequestBody
@Validated
MutedGroupMemberParam
param
)
{
log
.
info
(
"选择禁言入参 {}"
,
JSON
.
toJSONString
(
param
));
if
(
CollectionUtils
.
isEmpty
(
param
.
getClientIds
()))
{
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
...
...
core/src/main/java/com/wecloud/im/externalaccess/service/UserService.java
View file @
9f0193f9
...
...
@@ -298,7 +298,7 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
this
.
updateById
(
user
);
ImClientHeadPortraitAdd
imClientHeadPortraitAdd
=
new
ImClientHeadPortraitAdd
();
imClientHeadPortraitAdd
.
setHeadPortrait
(
param
.
getHeadPortrait
());
imClientService
.
updateHeadPortrait
(
null
,
imClientHeadPortraitAdd
);
imClientService
.
updateHeadPortrait
(
imClientHeadPortraitAdd
);
}
/**
...
...
@@ -319,7 +319,7 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
this
.
updateById
(
user
);
ImClientNicknameUpdate
imClientNicknameUpdate
=
new
ImClientNicknameUpdate
();
imClientNicknameUpdate
.
setNickname
(
param
.
getNickname
());
imClientService
.
updateNickname
(
null
,
imClientNicknameUpdate
);
imClientService
.
updateNickname
(
imClientNicknameUpdate
);
}
/**
...
...
core/src/main/java/com/wecloud/im/service/ContextService.java
View file @
9f0193f9
...
...
@@ -19,7 +19,7 @@ public interface ContextService {
* @param request Ws请求
* @Return
*/
ImClient
getImClientIfNotNullOrThrow
(
ActionRequest
request
);
ImClient
getImClientIfNotNullOrThrow
();
/**
* 获取当前或指定appId的ImApplication 存在返回 不存在则抛出异常
...
...
core/src/main/java/com/wecloud/im/service/ImClientBlacklistService.java
View file @
9f0193f9
...
...
@@ -34,7 +34,7 @@ public interface ImClientBlacklistService extends BaseService<ImClientBlacklist>
* @return
* @throws Exception
*/
Boolean
addImClientBlacklist
(
ActionRequest
request
,
ImClientBlacklistUpdate
imClientBlacklistUpdate
);
Boolean
addImClientBlacklist
(
ImClientBlacklistUpdate
imClientBlacklistUpdate
);
/**
* 移出黑名单
...
...
@@ -43,7 +43,7 @@ public interface ImClientBlacklistService extends BaseService<ImClientBlacklist>
* @return
* @throws Exception
*/
Boolean
removeImClientBlacklist
(
ActionRequest
request
,
ImClientBlacklistUpdate
imClientBlacklistUpdate
);
Boolean
removeImClientBlacklist
(
ImClientBlacklistUpdate
imClientBlacklistUpdate
);
/**
* 获取分页对象
...
...
@@ -51,6 +51,6 @@ public interface ImClientBlacklistService extends BaseService<ImClientBlacklist>
* @return
* @throws Exception
*/
Paging
<
ImClientBlacklistQueryVo
>
getImClientBlacklistPageList
(
ActionRequest
request
,
ImClientBlacklistPageParam
imClientBlacklistPageParam
);
Paging
<
ImClientBlacklistQueryVo
>
getImClientBlacklistPageList
(
ImClientBlacklistPageParam
imClientBlacklistPageParam
);
}
core/src/main/java/com/wecloud/im/service/ImClientService.java
View file @
9f0193f9
...
...
@@ -35,23 +35,23 @@ public interface ImClientService extends BaseService<ImClient> {
* 查询我的信息
* @return
*/
MyInfoVo
getMyInfo
(
ActionRequest
request
);
MyInfoVo
getMyInfo
();
/**
* 更新头像
* @param imClientHeadPortraitAdd
* @return
*/
boolean
updateHeadPortrait
(
ActionRequest
request
,
ImClientHeadPortraitAdd
imClientHeadPortraitAdd
);
boolean
updateHeadPortrait
(
ImClientHeadPortraitAdd
imClientHeadPortraitAdd
);
/**
* 修改昵称
* @param imClientNicknameUpdate
* @return
*/
boolean
updateNickname
(
ActionRequest
request
,
ImClientNicknameUpdate
imClientNicknameUpdate
);
boolean
updateNickname
(
ImClientNicknameUpdate
imClientNicknameUpdate
);
boolean
updateHeadAndNickname
(
ActionRequest
request
,
ImClientHeadPortraitAndNicknameUpdate
imClientHeadPortraitAndNicknameUpdate
);
boolean
updateHeadAndNickname
(
ImClientHeadPortraitAndNicknameUpdate
imClientHeadPortraitAndNicknameUpdate
);
/**
...
...
@@ -61,17 +61,17 @@ public interface ImClientService extends BaseService<ImClient> {
* @return
* @throws Exception
*/
List
<
GetInfoListVo
>
getInfoList
(
ActionRequest
request
,
GetClientInfoParam
getClientInfoParam
)
throws
Exception
;
List
<
GetInfoListVo
>
getInfoList
(
GetClientInfoParam
getClientInfoParam
)
throws
Exception
;
/**
* 获取群里成员信息
* @param param
* @return
*/
ClientInfoVo
getClientInfo
(
ActionRequest
request
,
ClientInfoParam
param
);
ClientInfoVo
getClientInfo
(
ClientInfoParam
param
);
boolean
updateNickname
(
ActionRequest
request
,
ImClientNicknameAdd
imClientNicknameAdd
)
throws
Exception
;
boolean
updateNickname
(
ImClientNicknameAdd
imClientNicknameAdd
)
throws
Exception
;
/**
* 保存
...
...
@@ -95,7 +95,7 @@ public interface ImClientService extends BaseService<ImClient> {
* @param param
* @return
*/
boolean
logout
(
ActionRequest
request
,
LogoutParam
param
);
boolean
logout
(
LogoutParam
param
);
/**
...
...
@@ -123,7 +123,7 @@ public interface ImClientService extends BaseService<ImClient> {
* @return
* @throws Exception
*/
Paging
<
ImClientQueryVo
>
getImClientPageList
(
ActionRequest
request
,
ImClientPageParam
imClientPageParam
)
throws
Exception
;
Paging
<
ImClientQueryVo
>
getImClientPageList
(
ImClientPageParam
imClientPageParam
)
throws
Exception
;
/**
...
...
core/src/main/java/com/wecloud/im/service/ImConversationService.java
View file @
9f0193f9
package
com
.
wecloud
.
im
.
service
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
java.util.List
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.wecloud.im.entity.ImConversation
;
import
com.wecloud.im.param.DisbandConversationParam
;
...
...
@@ -16,14 +22,8 @@ import com.wecloud.im.param.add.ImConversationAttrUpdate;
import
com.wecloud.im.param.add.ImConversationCreate
;
import
com.wecloud.im.param.add.ImConversationDisplayUpdate
;
import
com.wecloud.im.param.add.ImConversationNameUpdate
;
import
com.wecloud.im.vo.ImConversationCreateVo
;
import
com.wecloud.im.vo.ConversationVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
java.util.List
;
import
com.wecloud.im.vo.ImConversationCreateVo
;
/**
* 会话表 服务类
...
...
@@ -49,7 +49,7 @@ public interface ImConversationService extends BaseService<ImConversation> {
* @param imConversationCreate
* @return
*/
ApiResult
<
ImConversationCreateVo
>
createImConversation
(
ImConversationCreate
imConversationCreate
);
ImConversationCreateVo
createImConversation
(
ImConversationCreate
imConversationCreate
);
/**
...
...
@@ -59,7 +59,7 @@ public interface ImConversationService extends BaseService<ImConversation> {
* @return
* @throws JsonProcessingException
*/
ApiResult
<
Boolean
>
addClientToConversation
(
ImClientToConversation
imClientToConversation
);
Boolean
addClientToConversation
(
ImClientToConversation
imClientToConversation
);
/**
* 将client从会话移除
...
...
@@ -67,7 +67,7 @@ public interface ImConversationService extends BaseService<ImConversation> {
* @param imClientToConversation
* @return
*/
ApiResult
<
Boolean
>
delClientToConversation
(
ImClientToConversation
imClientToConversation
)
throws
Exception
;
Boolean
delClientToConversation
(
ImClientToConversation
imClientToConversation
)
throws
Exception
;
/**
* 解散群聊
...
...
@@ -79,35 +79,35 @@ public interface ImConversationService extends BaseService<ImConversation> {
/**
* client退出会话
*/
ApiResult
<
Boolean
>
leaveConversation
(
ImClientLeaveConversation
imClientToConversation
);
Boolean
leaveConversation
(
ImClientLeaveConversation
imClientToConversation
);
/**
* 群主转让
* @param param
* @return
*/
Boolean
transferOwner
(
@RequestBody
TransferOwnerParam
param
);
Boolean
transferOwner
(
TransferOwnerParam
param
);
/**
* 设置管理员
* @param param
* @return
*/
Boolean
setAdmins
(
@RequestBody
SetAdminsParam
param
);
Boolean
setAdmins
(
SetAdminsParam
param
);
/**
* 群禁言
* @param param
* @return
*/
Boolean
mutedGroup
(
@RequestBody
MutedGroupParam
param
);
Boolean
mutedGroup
(
MutedGroupParam
param
);
/**
* 选择禁言
* @param param
* @return
*/
Boolean
mutedGroupMember
(
@RequestBody
MutedGroupMemberParam
param
);
Boolean
mutedGroupMember
(
MutedGroupMemberParam
param
);
/**
* 判断当前操作人是否为指定角色成员
...
...
core/src/main/java/com/wecloud/im/service/impl/ContextServiceImpl.java
View file @
9f0193f9
...
...
@@ -7,6 +7,7 @@ import org.springframework.context.annotation.Lazy;
import
org.springframework.stereotype.Service
;
import
com.wecloud.dispatch.extend.ActionRequest
;
import
com.wecloud.dispatch.util.ActionRequestHolder
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.service.ContextService
;
...
...
@@ -31,11 +32,12 @@ public class ContextServiceImpl implements ContextService {
private
ImApplicationService
imApplicationService
;
@Override
public
ImClient
getImClientIfNotNullOrThrow
(
ActionRequest
request
)
{
public
ImClient
getImClientIfNotNullOrThrow
()
{
ImClient
currentClient
;
if
(
request
!=
null
)
{
if
(
ActionRequestHolder
.
getActionRequest
()
!=
null
)
{
ActionRequest
request
=
ActionRequestHolder
.
getActionRequest
();
currentClient
=
imClientService
.
getCacheImClient
(
request
.
getSenderClientId
());
}
else
{
currentClient
=
imClientService
.
getCurrentClient
();
...
...
core/src/main/java/com/wecloud/im/service/impl/ImClientBlacklistServiceImpl.java
View file @
9f0193f9
...
...
@@ -15,7 +15,6 @@ import org.springframework.transaction.annotation.Transactional;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.wecloud.dispatch.extend.ActionRequest
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImClientBlacklist
;
import
com.wecloud.im.mapper.ImClientBlacklistMapper
;
...
...
@@ -57,8 +56,8 @@ public class ImClientBlacklistServiceImpl extends BaseServiceImpl<ImClientBlackl
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
addImClientBlacklist
(
ActionRequest
request
,
ImClientBlacklistUpdate
imClientBlacklistUpdate
)
{
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
(
request
);
public
Boolean
addImClientBlacklist
(
ImClientBlacklistUpdate
imClientBlacklistUpdate
)
{
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
ImClient
beBlacker
=
imClientService
.
getOne
(
new
QueryWrapper
<
ImClient
>().
lambda
()
.
eq
(
ImClient:
:
getFkAppid
,
currentClient
.
getFkAppid
())
.
eq
(
ImClient:
:
getClientId
,
imClientBlacklistUpdate
.
getClientIdBePrevent
()));
...
...
@@ -78,9 +77,9 @@ public class ImClientBlacklistServiceImpl extends BaseServiceImpl<ImClientBlackl
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
removeImClientBlacklist
(
ActionRequest
request
,
ImClientBlacklistUpdate
imClientBlacklistUpdate
)
{
public
Boolean
removeImClientBlacklist
(
ImClientBlacklistUpdate
imClientBlacklistUpdate
)
{
// 操作者
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
(
request
);
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
// 被拉黑者
ImClient
beBlacker
=
imClientService
.
getOne
(
new
QueryWrapper
<
ImClient
>().
lambda
()
.
eq
(
ImClient:
:
getFkAppid
,
currentClient
.
getFkAppid
())
...
...
@@ -96,9 +95,9 @@ public class ImClientBlacklistServiceImpl extends BaseServiceImpl<ImClientBlackl
}
@Override
public
Paging
<
ImClientBlacklistQueryVo
>
getImClientBlacklistPageList
(
ActionRequest
request
,
ImClientBlacklistPageParam
imClientBlacklistPageParam
)
{
public
Paging
<
ImClientBlacklistQueryVo
>
getImClientBlacklistPageList
(
ImClientBlacklistPageParam
imClientBlacklistPageParam
)
{
Page
<
ImClientBlacklistQueryVo
>
page
=
new
PageInfo
<>(
imClientBlacklistPageParam
);
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
(
request
);
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
IPage
<
ImClientBlacklistQueryVo
>
imClientBlacklistPageList
=
imClientBlacklistMapper
.
getImClientBlacklistPageList
(
page
,
currentClient
.
getClientId
());
Paging
<
ImClientBlacklistQueryVo
>
imClientBlacklistQueryVoPaging
=
new
Paging
<>(
imClientBlacklistPageList
);
return
imClientBlacklistQueryVoPaging
;
...
...
core/src/main/java/com/wecloud/im/service/impl/ImClientServiceImpl.java
View file @
9f0193f9
package
com
.
wecloud
.
im
.
service
.
impl
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.exception.BusinessException
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.core.pagination.PageInfo
;
...
...
@@ -28,6 +27,7 @@ import com.baomidou.mybatisplus.core.metadata.OrderItem;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.google.common.collect.Lists
;
import
com.wecloud.dispatch.extend.ActionRequest
;
import
com.wecloud.dispatch.util.ActionRequestHolder
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImClientDevice
;
...
...
@@ -87,8 +87,8 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
private
ContextService
contextService
;
@Override
public
MyInfoVo
getMyInfo
(
ActionRequest
request
)
{
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
(
request
);
public
MyInfoVo
getMyInfo
()
{
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
MyInfoVo
myInfoVo
=
new
MyInfoVo
();
BeanUtils
.
copyProperties
(
currentClient
,
myInfoVo
);
return
myInfoVo
;
...
...
@@ -96,8 +96,8 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
boolean
updateHeadPortrait
(
ActionRequest
request
,
ImClientHeadPortraitAdd
imClientHeadPortraitAdd
)
{
ImClient
curentClient
=
contextService
.
getImClientIfNotNullOrThrow
(
request
);
public
boolean
updateHeadPortrait
(
ImClientHeadPortraitAdd
imClientHeadPortraitAdd
)
{
ImClient
curentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
curentClient
.
setHeadPortrait
(
imClientHeadPortraitAdd
.
getHeadPortrait
());
imClientMapper
.
updateById
(
curentClient
);
...
...
@@ -108,8 +108,8 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
}
@Override
public
boolean
updateNickname
(
ActionRequest
request
,
ImClientNicknameUpdate
imClientNicknameUpdate
)
{
ImClient
curentClient
=
contextService
.
getImClientIfNotNullOrThrow
(
request
);
public
boolean
updateNickname
(
ImClientNicknameUpdate
imClientNicknameUpdate
)
{
ImClient
curentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
curentClient
.
setNickname
(
imClientNicknameUpdate
.
getNickname
());
imClientMapper
.
updateById
(
curentClient
);
...
...
@@ -120,8 +120,8 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
}
@Override
public
boolean
updateHeadAndNickname
(
ActionRequest
request
,
ImClientHeadPortraitAndNicknameUpdate
imClientHeadPortraitAndNicknameUpdate
)
{
ImClient
curentClient
=
contextService
.
getImClientIfNotNullOrThrow
(
request
);
public
boolean
updateHeadAndNickname
(
ImClientHeadPortraitAndNicknameUpdate
imClientHeadPortraitAndNicknameUpdate
)
{
ImClient
curentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
curentClient
.
setHeadPortrait
(
imClientHeadPortraitAndNicknameUpdate
.
getHeadPortrait
());
curentClient
.
setNickname
(
imClientHeadPortraitAndNicknameUpdate
.
getNickname
());
imClientMapper
.
updateById
(
curentClient
);
...
...
@@ -133,8 +133,8 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
}
@Override
public
List
<
GetInfoListVo
>
getInfoList
(
ActionRequest
request
,
GetClientInfoParam
getClientInfoParam
)
throws
Exception
{
ImClient
curentClient
=
contextService
.
getImClientIfNotNullOrThrow
(
request
);
public
List
<
GetInfoListVo
>
getInfoList
(
GetClientInfoParam
getClientInfoParam
)
throws
Exception
{
ImClient
curentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
if
(
getClientInfoParam
.
getClientIds
()
==
null
||
getClientInfoParam
.
getClientIds
().
isEmpty
())
{
throw
new
BusinessException
(
"getClientInfoParam.getClientIds() == null"
);
...
...
@@ -162,8 +162,8 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
}
@Override
public
ClientInfoVo
getClientInfo
(
ActionRequest
request
,
ClientInfoParam
param
)
{
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
(
request
);
public
ClientInfoVo
getClientInfo
(
ClientInfoParam
param
)
{
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
if
(
currentClient
==
null
)
{
throw
new
BusinessException
(
"当前用户登录信息失效"
);
}
...
...
@@ -194,8 +194,8 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
boolean
updateNickname
(
ActionRequest
request
,
ImClientNicknameAdd
imClientNicknameAdd
)
throws
Exception
{
ImClient
curentClient
=
contextService
.
getImClientIfNotNullOrThrow
(
request
);
public
boolean
updateNickname
(
ImClientNicknameAdd
imClientNicknameAdd
)
throws
Exception
{
ImClient
curentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
curentClient
.
setNickname
(
imClientNicknameAdd
.
getNickname
());
imClientMapper
.
updateById
(
curentClient
);
...
...
@@ -248,8 +248,8 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
}
@Override
public
boolean
logout
(
ActionRequest
request
,
LogoutParam
param
)
{
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
(
request
);
public
boolean
logout
(
LogoutParam
param
)
{
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
// 清除设备token
return
imClientDeviceService
.
update
(
new
UpdateWrapper
<
ImClientDevice
>().
lambda
()
.
eq
(
ImClientDevice:
:
getFkAppid
,
currentClient
.
getFkAppid
())
...
...
@@ -270,7 +270,7 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
}
@Override
public
Paging
<
ImClientQueryVo
>
getImClientPageList
(
ActionRequest
request
,
ImClientPageParam
imClientPageParam
)
throws
Exception
{
public
Paging
<
ImClientQueryVo
>
getImClientPageList
(
ImClientPageParam
imClientPageParam
)
throws
Exception
{
Page
<
ImClientQueryVo
>
page
=
new
PageInfo
<>(
imClientPageParam
,
OrderItem
.
desc
(
getLambdaColumn
(
ImClient:
:
getCreateTime
)));
IPage
<
ImClientQueryVo
>
iPage
=
imClientMapper
.
getImClientPageList
(
page
,
imClientPageParam
);
return
new
Paging
<>(
iPage
);
...
...
@@ -278,12 +278,19 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
@Override
public
ImClient
getCurrentClient
()
{
// shiro线程中获取当前token
JwtToken
curentJwtToken
=
JwtUtil
.
getCurrentJwtToken
();
// 根据appKey查询appid
ImApplication
imApplication
=
imApplicationService
.
getCacheAppByAppKey
(
curentJwtToken
.
getAppKey
());
return
getCacheImClient
(
imApplication
.
getId
(),
curentJwtToken
.
getClientId
());
ImClient
imClient
=
null
;
// modify by luozh 2022/04/03 增加是否存在ActionRequest的判断,如果是则说明请求来源于ws 否则是HTTP请求
if
(
ActionRequestHolder
.
getActionRequest
()
!=
null
)
{
ActionRequest
request
=
ActionRequestHolder
.
getActionRequest
();
imClient
=
getCacheImClient
(
request
.
getSenderClientId
());
}
else
{
// shiro线程中获取当前token
JwtToken
curentJwtToken
=
JwtUtil
.
getCurrentJwtToken
();
// 根据appKey查询appid
ImApplication
imApplication
=
imApplicationService
.
getCacheAppByAppKey
(
curentJwtToken
.
getAppKey
());
imClient
=
getCacheImClient
(
imApplication
.
getId
(),
curentJwtToken
.
getClientId
());
}
return
imClient
;
}
@Override
...
...
core/src/main/java/com/wecloud/im/service/impl/ImConversationServiceImpl.java
View file @
9f0193f9
package
com
.
wecloud
.
im
.
service
.
impl
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.enums.BaseEnum
;
import
io.geekidea.springbootplus.framework.common.exception.BusinessException
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.core.pagination.PageInfo
;
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
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
...
...
@@ -34,6 +59,7 @@ import com.wecloud.im.param.add.ImConversationAttrUpdate;
import
com.wecloud.im.param.add.ImConversationCreate
;
import
com.wecloud.im.param.add.ImConversationDisplayUpdate
;
import
com.wecloud.im.param.add.ImConversationNameUpdate
;
import
com.wecloud.im.service.ContextService
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.service.ImConversationMembersService
;
...
...
@@ -49,29 +75,6 @@ import com.wecloud.im.ws.model.WsResponse;
import
com.wecloud.im.ws.sender.ChannelSender
;
import
com.wecloud.utils.JsonUtils
;
import
com.wecloud.utils.SnowflakeUtil
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.enums.BaseEnum
;
import
io.geekidea.springbootplus.framework.common.exception.BusinessException
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.core.pagination.PageInfo
;
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
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* 会话表 服务实现类
...
...
@@ -105,6 +108,9 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
@Autowired
private
ImMessageService
imMessageService
;
@Autowired
private
ContextService
contextService
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
saveImConversation
(
ImConversation
imConversation
)
{
...
...
@@ -113,15 +119,15 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ApiResult
<
ImConversationCreateVo
>
createImConversation
(
ImConversationCreate
imConversationCreate
)
{
ImClient
createClient
=
imClientService
.
getCurrentClient
();
public
ImConversationCreateVo
createImConversation
(
ImConversationCreate
imConversationCreate
)
{
ImClient
createClient
=
contextService
.
getImClientIfNotNullOrThrow
();
if
(
CollectionUtils
.
isEmpty
(
imConversationCreate
.
getClientIds
()))
{
log
.
info
(
"未找到群成员信息"
);
return
ApiResult
.
fail
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
throw
new
BusinessException
(
ApiCode
.
PARAMETER_EXCEPTION
);
}
if
(
BaseEnum
.
valueOf
(
ChatTypeEnum
.
class
,
imConversationCreate
.
getChatType
())
==
null
)
{
log
.
info
(
"会话类型不存在"
);
return
ApiResult
.
result
(
ApiCode
.
PARAMETER_EXCEPTION
,
null
);
throw
new
BusinessException
(
ApiCode
.
PARAMETER_EXCEPTION
);
}
// 成员不存在,不能创建会话
for
(
String
clientId
:
imConversationCreate
.
getClientIds
())
{
...
...
@@ -131,14 +137,12 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
.
eq
(
ImClient:
:
getClientId
,
clientId
));
if
(
imClient
==
null
)
{
log
.
info
(
"成员不存在,不能创建会话 clientId:{}"
,
clientId
);
return
ApiResult
.
result
(
ApiCode
.
CLIENT_NOT_FOUNT
,
null
);
throw
new
BusinessException
(
ApiCode
.
CLIENT_NOT_FOUNT
);
}
}
// shiro线程中获取当前token
JwtToken
curentJwtToken
=
JwtUtil
.
getCurrentJwtToken
();
// 根据appKey查询application
ImApplication
imApplication
=
imApplicationService
.
getCacheAppByAppKey
(
curentJwtToken
.
getAppKey
());
ImApplication
imApplication
=
contextService
.
getImApplicationIfNotNullOrThrow
(
createClient
.
getFkAppid
());
// 该应用 是否允许创建重复单聊类型会话 0不允许 1允许
if
(
imApplication
.
getRepeatSessionStatus
()
!=
null
&&
imApplication
.
getRepeatSessionStatus
()
==
0
)
{
...
...
@@ -156,7 +160,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
// 返回已存在的单聊类型会话id
ImConversationCreateVo
imConversationCreateVo
=
new
ImConversationCreateVo
();
imConversationCreateVo
.
setId
(
repetitionConversationInfo
.
getId
());
return
ApiResult
.
ok
(
imConversationCreateVo
)
;
return
imConversationCreateVo
;
}
}
}
else
{
...
...
@@ -179,7 +183,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
ImConversationCreateVo
imConversationCreateVo
=
new
ImConversationCreateVo
();
imConversationCreateVo
.
setId
(
repetitionConversation
);
// 为重复
return
ApiResult
.
ok
(
imConversationCreateVo
)
;
return
imConversationCreateVo
;
}
}
}
...
...
@@ -261,17 +265,17 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
ImConversationCreateVo
imConversationCreateVo
=
new
ImConversationCreateVo
();
imConversationCreateVo
.
setId
(
imConversationId
);
return
ApiResult
.
ok
(
imConversationCreateVo
)
;
return
imConversationCreateVo
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ApiResult
<
Boolean
>
addClientToConversation
(
ImClientToConversation
imClientToConversation
)
{
public
Boolean
addClientToConversation
(
ImClientToConversation
imClientToConversation
)
{
//
shiro线程中获取当前token
JwtToken
curentJwtToken
=
JwtUtil
.
getCurrentJwtToken
();
// 根据app
Key
查询application
ImApplication
imApplication
=
imApplicationService
.
getCacheAppByAppKey
(
curentJwtToken
.
getAppKey
());
//
获取当前client
ImClient
createClient
=
contextService
.
getImClientIfNotNullOrThrow
();
// 根据app
Id
查询application
ImApplication
imApplication
=
contextService
.
getImApplicationIfNotNullOrThrow
(
createClient
.
getFkAppid
());
ImClient
imClientSender
=
imClientService
.
getCurrentClient
();
...
...
@@ -285,7 +289,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
);
if
(
membersList
.
isEmpty
())
{
log
.
info
(
"membersList为空,toConversationId:"
+
imClientToConversation
.
getConversationId
());
return
ApiResult
.
fail
(
);
throw
new
BusinessException
(
"没有成员"
);
}
int
needAddCount
=
0
;
...
...
@@ -296,7 +300,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
.
eq
(
ImClient:
:
getFkAppid
,
imApplication
.
getId
())
.
eq
(
ImClient:
:
getClientId
,
id
));
if
(
clientToConversation
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
CLIENT_NOT_FOUNT
,
null
);
throw
new
BusinessException
(
ApiCode
.
CLIENT_NOT_FOUNT
);
}
// 判断用户是否已经在该会话
ImConversationMembers
members
=
imConversationMembersService
.
getOne
(
new
QueryWrapper
<
ImConversationMembers
>().
lambda
()
...
...
@@ -366,7 +370,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imConversationMapper
.
upgradeToThousandChat
(
imApplication
.
getId
(),
imClientToConversation
.
getConversationId
());
}
return
ApiResult
.
ok
()
;
return
true
;
}
...
...
@@ -404,11 +408,11 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ApiResult
<
Boolean
>
delClientToConversation
(
ImClientToConversation
imClientToConversation
)
throws
Exception
{
//
shiro线程中获取当前token
JwtToken
curentJwtToken
=
JwtUtil
.
getCurrentJwtToken
();
// 根据app
Key
查询application
ImApplication
imApplication
=
imApplicationService
.
getCacheAppByAppKey
(
curentJwtToken
.
getAppKey
());
public
Boolean
delClientToConversation
(
ImClientToConversation
imClientToConversation
)
throws
Exception
{
//
获取当前client
ImClient
createClient
=
contextService
.
getImClientIfNotNullOrThrow
();
// 根据app
Id
查询application
ImApplication
imApplication
=
contextService
.
getImApplicationIfNotNullOrThrow
(
createClient
.
getFkAppid
());
ImClient
imClientSender
=
imClientService
.
getCurrentClient
();
// 判断是否为群主
ImConversationMembers
conversationMember
=
imConversationMembersService
.
getOne
(
...
...
@@ -417,7 +421,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
.
eq
(
ImConversationMembers:
:
getFkClientId
,
imClientSender
.
getId
())
);
if
(
conversationMember
==
null
||
!
GroupRoleEnum
.
OWNER
.
getCode
().
equals
(
conversationMember
.
getRole
()))
{
return
ApiResult
.
result
(
false
)
;
return
false
;
}
// 查询该会话所有成员
List
<
ImConversationMembers
>
membersList
=
imConversationMembersService
.
list
(
...
...
@@ -428,7 +432,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
);
if
(
membersList
.
isEmpty
())
{
log
.
info
(
"membersList为空,toConversationId:"
+
imClientToConversation
.
getConversationId
());
return
ApiResult
.
fail
(
);
throw
new
BusinessException
(
"没有成员"
);
}
int
needAddCount
=
0
;
...
...
@@ -508,12 +512,13 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
// 将群成员数量减
imConversationMapper
.
addMemberCount
(
imApplication
.
getId
(),
imClientToConversation
.
getConversationId
(),
needAddCount
);
return
ApiResult
.
ok
()
;
return
true
;
}
@Override
public
void
disband
(
DisbandConversationParam
param
)
{
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
// 获取当前client
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
// 判断是否为群主
ImConversationMembers
conversationMember
=
imConversationMembersService
.
getOne
(
new
QueryWrapper
<
ImConversationMembers
>().
lambda
()
...
...
@@ -591,8 +596,9 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ApiResult
<
Boolean
>
leaveConversation
(
ImClientLeaveConversation
imClientToConversation
)
{
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
public
Boolean
leaveConversation
(
ImClientLeaveConversation
imClientToConversation
)
{
// 获取当前client
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
ImConversation
imConversation
=
imConversationService
.
getById
(
imClientToConversation
.
getConversationId
());
if
(
imConversation
==
null
)
{
...
...
@@ -691,7 +697,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
// 群主转移给下一个人
imConversationMembersService
.
updateById
(
conversationMember
);
}
return
ApiResult
.
ok
()
;
return
true
;
}
...
...
@@ -704,10 +710,10 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
transferOwner
(
TransferOwnerParam
param
)
{
//
shiro线程中获取当前token
JwtToken
curentJwtToken
=
JwtUtil
.
getCurrentJwtToken
();
// 根据app
Key
查询application
ImApplication
imApplication
=
imApplicationService
.
getCacheAppByAppKey
(
curentJwtToken
.
getAppKey
());
//
获取当前client
ImClient
createClient
=
contextService
.
getImClientIfNotNullOrThrow
();
// 根据app
Id
查询application
ImApplication
imApplication
=
contextService
.
getImApplicationIfNotNullOrThrow
(
createClient
.
getFkAppid
());
ImClient
imClientSender
=
imClientService
.
getCurrentClient
();
// 判断操作人是否为群主
...
...
@@ -742,7 +748,8 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
*/
@Override
public
Boolean
setAdmins
(
SetAdminsParam
param
)
{
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
// 获取当前client
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
// 判断操作人是否为群主
ImConversationMembers
currentMember
=
imConversationMembersService
.
getOne
(
new
QueryWrapper
<
ImConversationMembers
>().
lambda
()
...
...
@@ -758,7 +765,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
}
List
<
Long
>
fkClientIds
=
simpleClients
.
stream
()
.
filter
(
s
->
!
currentMember
.
getId
().
equals
(
s
.
getId
()))
.
map
(
s
->
s
.
getId
()
).
collect
(
Collectors
.
toList
());
.
map
(
ImClientSimpleDto:
:
getId
).
collect
(
Collectors
.
toList
());
imConversationMembersService
.
setAdminsForConversation
(
param
,
fkClientIds
);
return
true
;
}
...
...
@@ -771,7 +778,8 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
*/
@Override
public
Boolean
mutedGroup
(
MutedGroupParam
param
)
{
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
// 获取当前client
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
if
(!
imConversationService
.
isBelongToRole
(
currentClient
.
getClientId
(),
param
.
getConversationId
(),
Lists
.
newArrayList
(
GroupRoleEnum
.
OWNER
.
getCode
(),
GroupRoleEnum
.
ADMIN
.
getCode
())))
{
// 当前操作人不属于群主或管理人员
...
...
@@ -855,7 +863,8 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
@Override
public
Boolean
mutedGroupMember
(
MutedGroupMemberParam
param
)
{
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
// 获取当前client
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
if
(!
imConversationService
.
isBelongToRole
(
currentClient
.
getClientId
(),
param
.
getConversationId
(),
Lists
.
newArrayList
(
GroupRoleEnum
.
OWNER
.
getCode
(),
GroupRoleEnum
.
ADMIN
.
getCode
())))
{
// 当前操作人不属于群主或管理人员
...
...
@@ -906,7 +915,8 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ApiResult
<
Boolean
>
saveOrUpdateName
(
ImConversationNameUpdate
param
)
{
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
// 获取当前client
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
ImConversation
imConversationById
=
imConversationService
.
getById
(
param
.
getConversationId
());
if
(!
this
.
isBelongToRole
(
currentClient
.
getClientId
(),
param
.
getConversationId
(),
Lists
.
newArrayList
(
GroupRoleEnum
.
OWNER
.
getCode
(),
GroupRoleEnum
.
ADMIN
.
getCode
())))
{
...
...
@@ -1059,7 +1069,8 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
updateDisplayConversation
(
ImConversationDisplayUpdate
imConversationDisplayUpdate
)
{
ImClient
curentClient
=
imClientService
.
getCurrentClient
();
// 获取当前client
ImClient
curentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
for
(
Long
id
:
imConversationDisplayUpdate
.
getConversationIds
())
{
// 修改为删除隐藏状态
boolean
update
=
imConversationMembersService
.
update
(
new
UpdateWrapper
<
ImConversationMembers
>()
...
...
@@ -1093,7 +1104,8 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
@Override
public
List
<
ConversationVo
>
getMyImConversationListAndMsgCount
()
{
try
{
ImClient
currentClient
=
imClientService
.
getCurrentClient
();
// 获取当前client
ImClient
currentClient
=
contextService
.
getImClientIfNotNullOrThrow
();
// 查询用户加入的所有会话 与每个会话的未读条数 成员
List
<
ConversationVo
>
myImConversationListAndMsgCount
=
imConversationMapper
.
getMyImConversationListAndMsgCount
(
currentClient
.
getId
(),
currentClient
.
getClientId
(),
null
);
...
...
@@ -1126,7 +1138,8 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
@Override
public
ConversationVo
infoImConversationAndMsgCount
(
ImConversationQueryParam
param
)
{
try
{
ImClient
client
=
imClientService
.
getCurrentClient
();
// 获取当前client
ImClient
client
=
contextService
.
getImClientIfNotNullOrThrow
();
// 查询用户加入的所有会话 与每个会话的未读条数 成员
List
<
ConversationVo
>
conversationList
=
imConversationMapper
.
getMyImConversationListAndMsgCount
(
client
.
getId
(),
client
.
getClientId
(),
param
.
getId
());
if
(
CollectionUtils
.
isEmpty
(
conversationList
))
{
...
...
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