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
c52a49c7
Commit
c52a49c7
authored
May 20, 2022
by
罗长华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
如果双方还不是好友,此时创建的会话,会话类型为临时会话,且对方会话不可见
当临时会话创建者发送一条消息后,对方会话可见 当为朋友时,会话升级为单聊类型,双方可见
parent
fb6ec7bc
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
57 additions
and
10 deletions
+57
-10
core/src/main/java/com/wecloud/im/action/NormalChatAction.java
+14
-4
core/src/main/java/com/wecloud/im/friend/service/ImFriendService.java
+19
-1
core/src/main/java/com/wecloud/im/sdk/enums/ChatTypeEnum.java
+17
-1
core/src/main/java/com/wecloud/im/service/impl/ImConversationServiceImpl.java
+0
-0
core/src/main/resources/mapper/ImConversationMapper.xml
+6
-3
im-sdk/src/main/java/com/wecloud/im/sdk/model/Conversation.java
+1
-1
No files found.
core/src/main/java/com/wecloud/im/action/NormalChatAction.java
View file @
c52a49c7
...
...
@@ -41,6 +41,7 @@ import com.wecloud.im.param.ChatContentVo;
import
com.wecloud.im.param.ImClientSimpleDto
;
import
com.wecloud.im.param.ImConversationQueryVo
;
import
com.wecloud.im.param.MsgVo
;
import
com.wecloud.im.sdk.enums.ChatTypeEnum
;
import
com.wecloud.im.sdk.enums.FriendStateEnum
;
import
com.wecloud.im.sdk.enums.GroupRoleEnum
;
import
com.wecloud.im.sdk.enums.MutedEnum
;
...
...
@@ -177,9 +178,17 @@ public class NormalChatAction {
continue
;
}
// 入库 保存收件箱
saveImInbox
(
imApplication
,
data
.
getToConversation
()
,
imMessageOnlineSend
.
getMsgId
(),
saveImInbox
(
imApplication
,
conversation
,
imMessageOnlineSend
.
getMsgId
(),
conversationMembers
,
SnowflakeUtil
.
getId
());
// 入库成功后 判断是否是临时会话 如果是,检查接受方的会话display状态是否是1(显示),如果不是,需要修改为是
if
(
ChatTypeEnum
.
TEMP
.
getCode
().
equals
(
conversation
.
getChatType
()))
{
if
(
conversationMembers
.
getDisplayStatus
().
equals
(
0L
))
{
conversationMembers
.
setDisplayStatus
(
1L
);
imConversationMembersService
.
updateById
(
conversationMembers
);
}
}
// 在线用户直接发消息
sendMsgForOnline
(
imClientReceiver
.
getId
(),
imMessageOnlineSend
);
...
...
@@ -268,12 +277,13 @@ public class NormalChatAction {
* 入库 保存收件箱
*
* @param imApplication
* @param
toConversationId
* @param
conversation
* @param messageId
* @param conversationMembers
* @param imInboxId
*/
private
void
saveImInbox
(
ImApplication
imApplication
,
Long
toConversationId
,
long
messageId
,
ImConversationMembers
conversationMembers
,
long
imInboxId
)
{
private
void
saveImInbox
(
ImApplication
imApplication
,
ImConversationQueryVo
conversation
,
long
messageId
,
ImConversationMembers
conversationMembers
,
long
imInboxId
)
{
ImInbox
imInbox
=
new
ImInbox
();
imInbox
.
setId
(
imInboxId
);
imInbox
.
setCreateTime
(
new
Date
());
...
...
@@ -282,7 +292,7 @@ public class NormalChatAction {
imInbox
.
setFkMsgId
(
messageId
);
imInbox
.
setReadMsgStatus
(
0
);
imInbox
.
setReceiverMsgStatus
(
0
);
imInbox
.
setFkConversationId
(
toConversationId
);
imInbox
.
setFkConversationId
(
conversation
.
getId
()
);
imInboxService
.
save
(
imInbox
);
}
...
...
core/src/main/java/com/wecloud/im/friend/service/ImFriendService.java
View file @
c52a49c7
...
...
@@ -21,11 +21,14 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.OrderItem
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImConversation
;
import
com.wecloud.im.entity.ImConversationMembers
;
import
com.wecloud.im.friend.entity.ImFriend
;
import
com.wecloud.im.friend.entity.ImFriendRecommend
;
import
com.wecloud.im.friend.mapper.ImFriendMapper
;
...
...
@@ -36,9 +39,12 @@ import com.wecloud.im.friend.param.ImFriendBaseDto;
import
com.wecloud.im.friend.param.ImFriendPageParam
;
import
com.wecloud.im.friend.param.ImFriendRecommendDto
;
import
com.wecloud.im.friend.param.UnfriendParam
;
import
com.wecloud.im.mapper.ImConversationMapper
;
import
com.wecloud.im.param.ImClientSimpleDto
;
import
com.wecloud.im.sdk.enums.ChatTypeEnum
;
import
com.wecloud.im.sdk.enums.FriendStateEnum
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.service.ImConversationMembersService
;
import
com.wecloud.utils.SnowflakeUtil
;
/**
...
...
@@ -61,6 +67,11 @@ public class ImFriendService extends BaseServiceImpl<ImFriendMapper, ImFriend> {
@Autowired
private
FriendEventSender
friendEventSender
;
@Autowired
private
ImConversationMapper
imConversationMapper
;
private
ImConversationMembersService
imConversationMembersService
;
/**
* 查看朋友详情
* @param currentClientId
...
...
@@ -161,7 +172,14 @@ public class ImFriendService extends BaseServiceImpl<ImFriendMapper, ImFriend> {
friend
.
setState
(
FriendStateEnum
.
UNSURE
.
getCode
());
this
.
updateByKey
(
friend
);
}
// 检查是否存在会话,如果存在 将会话类型修改为1 单聊 双方都显示
ImConversation
existConversation
=
imConversationMapper
.
getRepetitionConversationSingle
(
currentClient
.
getId
(),
friendClient
.
getId
());
if
(
existConversation
!=
null
&&
ChatTypeEnum
.
TEMP
.
getCode
().
equals
(
existConversation
.
getChatType
()))
{
existConversation
.
setChatType
(
ChatTypeEnum
.
SINGLE
.
getCode
());
imConversationMapper
.
updateById
(
existConversation
);
imConversationMembersService
.
update
(
new
UpdateWrapper
<
ImConversationMembers
>().
set
(
"display_status"
,
1
).
eq
(
"fk_conversation_id"
,
existConversation
.
getId
()).
eq
(
"fk_appid"
,
existConversation
.
getFkAppid
()));
}
//既然申请好友了,就删除好友推荐
this
.
batchDeleteRecommend
(
currentClient
,
Collections
.
singletonList
(
friendClient
.
getClientId
()));
this
.
batchDeleteRecommend
(
friendClient
,
Collections
.
singletonList
(
currentClient
.
getClientId
()));
...
...
core/src/main/java/com/wecloud/im/sdk/enums/ChatTypeEnum.java
View file @
c52a49c7
...
...
@@ -9,10 +9,26 @@ import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
*/
public
enum
ChatTypeEnum
implements
BaseEnum
{
/**
* 单聊
*/
SINGLE
(
1
,
"单聊"
),
/**
* 普通群
*/
NORMAL_GROUP
(
2
,
"普通群"
),
/**
* 万人群
*/
THOUSAND_GROUP
(
3
,
"万人群"
),
CHAT_ROOM
(
4
,
"聊天室"
);
/**
* 聊天室
*/
CHAT_ROOM
(
4
,
"聊天室"
),
/**
* 临时会话
*/
TEMP
(
5
,
"临时会话"
);
private
final
Integer
code
;
private
final
String
desc
;
...
...
core/src/main/java/com/wecloud/im/service/impl/ImConversationServiceImpl.java
View file @
c52a49c7
This diff is collapsed.
Click to expand it.
core/src/main/resources/mapper/ImConversationMapper.xml
View file @
c52a49c7
...
...
@@ -24,8 +24,9 @@
</select>
<select
id=
"getMyImConversationListAndMsgCount"
resultType=
"com.wecloud.im.vo.ConversationVo"
>
SELECT imConversation.id as id,
select * from (
SELECT imConversation.id as id,
imConversation.create_time,
imConversation.update_time,
imConversation.`name`,
imConversation.chat_type,
imConversation.member_count,
...
...
@@ -59,13 +60,15 @@
FROM im_conversation_members AS imConversationMembers
INNER JOIN im_conversation AS imConversation
ON imConversation.id = imConversationMembers.fk_conversation_id
INNER JOIN im_client
AS im_client
ON im_client.id = imConversation.creator
INNER JOIN im_client ON im_client.id = imConversation.creator
WHERE imConversationMembers.fk_client_id = #{currentClientId}
AND imConversationMembers.display_status = 1
<if
test=
"conversationId != null"
>
AND imConversation.id = #{conversationId}
</if>
GROUP BY imConversation.id
GROUP BY imConversation.id) t
order by t.update_time desc
</select>
<select
id=
"getMyImConversationList"
resultType=
"com.wecloud.im.entity.ImConversation"
>
...
...
im-sdk/src/main/java/com/wecloud/im/sdk/model/Conversation.java
View file @
c52a49c7
...
...
@@ -67,7 +67,7 @@ public class Conversation implements Serializable {
private
String
members
;
/**
* "会话属性,1:单聊,2:普通群,3:万人群,4:聊天室"
* "会话属性,1:单聊,2:普通群,3:万人群,4:聊天室
5: 临时会话
"
*/
private
Integer
chatType
;
...
...
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