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
7f6f9a9f
Commit
7f6f9a9f
authored
May 13, 2022
by
罗长华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
抽象出Couriers和MessageBuilder类,重构会话发送消息方法
parent
819498c8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
172 additions
and
21 deletions
+172
-21
core/src/main/java/com/wecloud/im/param/GroupChatSettingParam.java
+13
-2
core/src/main/java/com/wecloud/im/post/Couriers.java
+63
-0
core/src/main/java/com/wecloud/im/post/MessageBuilder.java
+80
-0
core/src/main/java/com/wecloud/im/service/ImConversationService.java
+10
-3
core/src/main/java/com/wecloud/im/service/impl/ImConversationServiceImpl.java
+0
-0
core/src/main/java/com/wecloud/im/service/impl/ImGroupServiceImpl.java
+6
-16
No files found.
core/src/main/java/com/wecloud/im/param/GroupChatSettingParam.java
View file @
7f6f9a9f
...
...
@@ -16,8 +16,11 @@ import com.wecloud.im.sdk.enums.GroupChatSettingTypeEnum;
@Data
public
class
GroupChatSettingParam
{
@ApiModelProperty
(
"设置类型FORBID_ADD_FRIEND 禁止群成员互加好友 FORBID_SEND_RED_PACKETS 禁止群成员发红包 FORBID_SEND_PIC 禁止群成员发图片 "
+
"FORBID_SEND_LINK 禁止群成员发链接"
)
@ApiModelProperty
(
"操作人客户端Id server sdk调用传入"
)
private
String
operatorClientId
;
@ApiModelProperty
(
"设置类型FORBID_ADD_FRIEND 禁止群成员互加好友 FORBID_SEND_PIC 禁止群成员发图片 FORBID_SEND_LINK 禁止群成员发链接"
+
"MUTED 群禁言 NAME修改群名 HEAD_PORTRAIT 修改群头像"
)
private
GroupChatSettingTypeEnum
type
;
@NotNull
...
...
@@ -26,4 +29,12 @@ public class GroupChatSettingParam {
@ApiModelProperty
(
"开启 true是 false否"
)
private
Boolean
on
;
@ApiModelProperty
(
"群名称 修改群名称时传值"
)
private
String
name
;
@ApiModelProperty
(
"头像 修改群头像时传值"
)
private
String
headPortrait
;
}
core/src/main/java/com/wecloud/im/post/Couriers.java
0 → 100644
View file @
7f6f9a9f
package
com
.
wecloud
.
im
.
post
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
lombok.AllArgsConstructor
;
import
java.util.Date
;
import
org.springframework.stereotype.Service
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.entity.ImMessageOnlineSend
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.sender.ChannelSender
;
/**
* 投递员 负责投送消息
* @Author luozh
* @Date 2022年05月13日 14:19
* @Version 1.0
*/
@AllArgsConstructor
@Service
public
class
Couriers
{
private
final
ChannelSender
channelSender
;
/**
* 投递消息
* @Author luozh
* @Date 2022年05月13日 02:34:29
* @param message 消息实体
* @param sender 发件人
* @param receiver 收件人
* @param cmd ws命令类型
* @Return
*/
public
void
deliver
(
ImMessage
message
,
ImClient
sender
,
ImClient
receiver
,
WsResponseCmdEnum
cmd
)
{
// 封装响应的实体
ImMessageOnlineSend
imMessageOnlineSend
=
new
ImMessageOnlineSend
();
imMessageOnlineSend
.
setMsgId
(
message
.
getId
());
imMessageOnlineSend
.
setCreateTime
(
new
Date
());
imMessageOnlineSend
.
setType
(
message
.
getMsgType
());
imMessageOnlineSend
.
setSender
(
sender
.
getClientId
());
imMessageOnlineSend
.
setContent
(
message
.
getContent
());
imMessageOnlineSend
.
setConversationId
(
message
.
getFkConversationId
());
imMessageOnlineSend
.
setWithdraw
(
message
.
getWithdraw
());
imMessageOnlineSend
.
setEvent
(
message
.
getEvent
());
// 向接收方推送
WsResponse
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
cmd
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
responseModel
.
setMsg
(
result
.
getMessage
());
responseModel
.
setData
(
imMessageOnlineSend
);
responseModel
.
setReqId
(
null
);
channelSender
.
sendMsg
(
responseModel
,
receiver
.
getId
());
}
}
core/src/main/java/com/wecloud/im/post/MessageBuilder.java
0 → 100644
View file @
7f6f9a9f
package
com
.
wecloud
.
im
.
post
;
import
java.util.Date
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImConversation
;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.ws.enums.MsgTypeEnum
;
import
com.wecloud.utils.SnowflakeUtil
;
/**
* 消息构造者
* @Author luozh
* @Date 2022年05月13日 14:20
* @Version 1.0
*/
public
class
MessageBuilder
{
/**
* 构建普通消息
* @Author luozh
* @Date 2022年05月13日 02:30:27
* @param type
* @param application
* @param sender
* @param receiver
* @Return
*/
public
static
ImMessage
buildNormalMessage
(
MsgTypeEnum
type
,
ImApplication
application
,
ImClient
sender
,
ImConversation
conversation
)
{
long
messageId
=
SnowflakeUtil
.
getId
();
ImMessage
imMessage
=
new
ImMessage
();
// 保存消息至消息表
imMessage
.
setId
(
messageId
);
imMessage
.
setMsgType
(
type
.
getUriCode
());
imMessage
.
setFkAppid
(
application
.
getId
());
imMessage
.
setSender
(
sender
.
getId
());
imMessage
.
setWithdraw
(
false
);
imMessage
.
setEvent
(
false
);
imMessage
.
setSystemFlag
(
false
);
imMessage
.
setSendStatus
(
2
);
imMessage
.
setFkConversationId
(
conversation
.
getId
());
imMessage
.
setCreateTime
(
new
Date
());
return
imMessage
;
}
/**
* 构建事件消息
* @Author luozh
* @Date 2022年05月13日 02:30:27
* @param type
* @param application
* @param sender
* @param receiver
* @Return
*/
public
static
ImMessage
buildEventMessage
(
MsgTypeEnum
type
,
ImApplication
application
,
ImClient
sender
,
ImConversation
conversation
,
String
content
)
{
long
messageId
=
SnowflakeUtil
.
getId
();
ImMessage
imMessage
=
new
ImMessage
();
// 保存消息至消息表
imMessage
.
setId
(
messageId
);
imMessage
.
setMsgType
(
type
.
getUriCode
());
imMessage
.
setFkAppid
(
application
.
getId
());
imMessage
.
setSender
(
sender
.
getId
());
imMessage
.
setContent
(
content
);
imMessage
.
setWithdraw
(
false
);
imMessage
.
setEvent
(
true
);
imMessage
.
setSystemFlag
(
false
);
imMessage
.
setSendStatus
(
2
);
imMessage
.
setFkConversationId
(
conversation
.
getId
());
imMessage
.
setCreateTime
(
new
Date
());
return
imMessage
;
}
}
core/src/main/java/com/wecloud/im/service/ImConversationService.java
View file @
7f6f9a9f
...
...
@@ -6,9 +6,9 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Map
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImConversation
;
import
com.wecloud.im.entity.ImConversationMembers
;
import
com.wecloud.im.entity.ImMessage
;
...
...
@@ -233,6 +233,13 @@ public interface ImConversationService extends BaseService<ImConversation> {
Boolean
groupChatSetting
(
GroupChatSettingParam
param
);
/**
* 群聊设置
* @param param
* @return
*/
Boolean
groupChatSettingForSdk
(
GroupChatSettingParam
param
);
/**
* 群头像设置
* @param param
* @return
...
...
@@ -288,8 +295,8 @@ public interface ImConversationService extends BaseService<ImConversation> {
* @param message
* @Return
*/
void
sendMsgToMembers
(
Long
conversationId
,
List
<
ImConversationMembers
>
membersList
,
Long
appId
,
String
sender
,
Map
content
,
ImMessage
message
);
void
sendMsgToMembers
(
ImConversation
conversation
,
List
<
ImConversationMembers
>
membersList
,
ImClient
sender
,
ImMessage
message
);
}
core/src/main/java/com/wecloud/im/service/impl/ImConversationServiceImpl.java
View file @
7f6f9a9f
This diff is collapsed.
Click to expand it.
core/src/main/java/com/wecloud/im/service/impl/ImGroupServiceImpl.java
View file @
7f6f9a9f
...
...
@@ -22,6 +22,7 @@ import com.wecloud.im.entity.ImConversationMembers;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.mapper.ImConversationMapper
;
import
com.wecloud.im.param.add.ServerImConversationCreate
;
import
com.wecloud.im.post.MessageBuilder
;
import
com.wecloud.im.sdk.enums.ChatTypeEnum
;
import
com.wecloud.im.sdk.enums.GroupRoleEnum
;
import
com.wecloud.im.sdk.enums.MutedEnum
;
...
...
@@ -141,26 +142,15 @@ public class ImGroupServiceImpl implements ImGroupService {
conversationMembersService
.
deleteByConversationId
(
conversation
.
getId
());
// 保存事件消息
ImMessage
imMessage
=
new
ImMessage
();
Map
<
String
,
Object
>
content
=
new
HashMap
<>();
content
.
put
(
"operator"
,
operator
.
getClientId
());
imMessage
.
setContent
(
JsonUtils
.
encodeJson
(
content
));
ImMessage
imMessage
=
MessageBuilder
.
buildEventMessage
(
MsgTypeEnum
.
CONVERSATION_DISBAND
,
application
,
operator
,
conversation
,
JsonUtils
.
encodeJson
(
content
));
// 保存消息至消息表
imMessage
.
setId
(
SnowflakeUtil
.
getId
());
imMessage
.
setMsgType
(
MsgTypeEnum
.
CONVERSATION_DISBAND
.
getUriCode
());
imMessage
.
setCreateTime
(
new
Date
());
imMessage
.
setFkAppid
(
operator
.
getFkAppid
());
imMessage
.
setSender
(
operator
.
getId
());
imMessage
.
setWithdraw
(
false
);
imMessage
.
setEvent
(
true
);
imMessage
.
setSystemFlag
(
false
);
imMessage
.
setSendStatus
(
2
);
imMessage
.
setFkConversationId
(
conversation
.
getId
());
imMessageService
.
save
(
imMessage
);
conversationService
.
sendMsgToMembers
(
conversation
.
getId
(),
membersList
,
appId
,
operator
.
getClientId
(),
content
,
imMessage
);
conversationService
.
sendMsgToMembers
(
conversation
,
membersList
,
operator
,
imMessage
);
return
true
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment