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
98f585a9
Commit
98f585a9
authored
Oct 19, 2022
by
陈前凌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增消息同步接口
parent
a33d6566
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
597 additions
and
19 deletions
+597
-19
core/src/main/java/com/wecloud/im/controller/ImMessageController.java
+8
-1
core/src/main/java/com/wecloud/im/mapper/ImMessageMapper.java
+2
-0
core/src/main/java/com/wecloud/im/param/SyncListMessageParam.java
+21
-0
core/src/main/java/com/wecloud/im/param/WeCloudMessageVo.java
+68
-0
core/src/main/java/com/wecloud/im/service/ImMessageService.java
+4
-0
core/src/main/java/com/wecloud/im/service/impl/ImMessageServiceImpl.java
+111
-16
im-sdk/src/main/java/com/wecloud/im/sdk/ResourcePathConstants.java
+6
-1
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudIm.java
+9
-0
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudImClient.java
+8
-1
im-sdk/src/main/java/com/wecloud/im/sdk/enums/BaseEnum.java
+67
-0
im-sdk/src/main/java/com/wecloud/im/sdk/enums/ChatTypeEnum.java
+56
-0
im-sdk/src/main/java/com/wecloud/im/sdk/enums/MsgTypeEnum.java
+115
-0
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImMessageOperation.java
+22
-0
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImOperation.java
+3
-0
im-sdk/src/main/java/com/wecloud/im/sdk/model/MessageRequest.java
+29
-0
im-sdk/src/main/java/com/wecloud/im/sdk/model/WeCloudMessage.java
+68
-0
No files found.
core/src/main/java/com/wecloud/im/controller/ImMessageController.java
View file @
98f585a9
package
com
.
wecloud
.
im
.
controller
;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.param.SyncListMessageParam
;
import
com.wecloud.im.param.WeCloudMessageVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
...
...
@@ -144,6 +147,10 @@ public class ImMessageController extends BaseController {
public
ApiResult
<
Boolean
>
singleUserNotification
(
@RequestBody
@Validated
SingleUserNotificationParam
param
)
{
return
ApiResult
.
ok
(
imMessageService
.
singleUserNotification
(
param
));
}
@ApiOperation
(
"获取同步历史消息"
)
@PostMapping
(
"/listMessage"
)
public
ApiResult
<
List
<
WeCloudMessageVo
>>
syncListMessage
(
@RequestBody
@Validated
SyncListMessageParam
param
)
{
return
ApiResult
.
ok
(
imMessageService
.
syncListMessage
(
param
));
}
}
core/src/main/java/com/wecloud/im/mapper/ImMessageMapper.java
View file @
98f585a9
...
...
@@ -14,6 +14,7 @@ import org.apache.ibatis.annotations.Param;
import
org.springframework.stereotype.Repository
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
@@ -88,4 +89,5 @@ public interface ImMessageMapper extends BaseMapper<ImMessage> {
*/
List
<
ReaderVo
>
getReaders
(
@Param
(
"currentClientId"
)
Long
currentClientId
,
@Param
(
"param"
)
GetReadersParam
param
);
List
<
ImMessage
>
syncListMessage
(
@Param
(
"beginMessageDate"
)
Date
beginMessageDate
,
@Param
(
"appId"
)
Long
appId
);
}
core/src/main/java/com/wecloud/im/param/SyncListMessageParam.java
0 → 100644
View file @
98f585a9
package
com
.
wecloud
.
im
.
param
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.util.Date
;
/**
* 单个用户通知
* @Author luozh
* @Date 2022年05月05日 11:49
* @Version 1.0
*/
@Data
public
class
SyncListMessageParam
{
/**
* 起始id
*/
private
Long
beginId
;
}
core/src/main/java/com/wecloud/im/param/WeCloudMessageVo.java
0 → 100644
View file @
98f585a9
package
com
.
wecloud
.
im
.
param
;
import
com.wecloud.im.sdk.enums.ChatTypeEnum
;
import
com.wecloud.im.ws.enums.MsgTypeEnum
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @program: wecloud_im_server
* @description: 消息
* @author: cql
* @create: 2022-10-19 14:25
**/
@Data
@Accessors
(
chain
=
true
)
public
class
WeCloudMessageVo
implements
Serializable
{
private
Long
id
;
/**
* 发送者用户id
*/
private
Long
fromUserId
;
/**
* 目标id 为群组时是wecloud群组id,为饲料时是目标用户id
*/
private
Long
targetId
;
/**
* 消息内容
*/
private
String
content
;
/**
* 消息类型 TEXT 文本 PIC图片 VIDEO 视频
*/
private
MsgTypeEnum
msgType
;
/**
* 会话类型SINGLE 单聊 NORMAL_GROUP 群聊
*/
private
ChatTypeEnum
chatType
;
/**
* 消息发送时间
*/
private
Date
msgSendTime
;
/**
* 消息撤回时间
*/
private
Date
withdrawTime
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 修改时间
*/
private
Date
updateTime
;
}
core/src/main/java/com/wecloud/im/service/ImMessageService.java
View file @
98f585a9
package
com
.
wecloud
.
im
.
service
;
import
com.wecloud.im.param.SyncListMessageParam
;
import
com.wecloud.im.param.WeCloudMessageVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
...
...
@@ -176,6 +178,8 @@ public interface ImMessageService extends BaseService<ImMessage> {
*/
Boolean
singleUserNotification
(
SingleUserNotificationParam
param
);
List
<
WeCloudMessageVo
>
syncListMessage
(
SyncListMessageParam
param
);
/**
* 保存消息到数据库
* @param imMessage
...
...
core/src/main/java/com/wecloud/im/service/impl/ImMessageServiceImpl.java
View file @
98f585a9
package
com
.
wecloud
.
im
.
service
.
impl
;
import
com.wecloud.im.entity.ImClientBlacklist
;
import
com.wecloud.im.param.ImConversationQueryVo
;
import
com.wecloud.im.param.SyncListMessageParam
;
import
com.wecloud.im.param.WeCloudMessageVo
;
import
com.wecloud.im.post.MessageBuilder
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
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
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.shiro.util.SecurityUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.Set
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.ApplicationEventPublisher
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.lock.annotation.Lock4j
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
...
...
@@ -383,6 +419,60 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
}
}
@Override
public
List
<
WeCloudMessageVo
>
syncListMessage
(
SyncListMessageParam
param
)
{
List
<
ImMessage
>
imMessages
=
imMessageMapper
.
selectList
(
new
QueryWrapper
<
ImMessage
>().
lambda
()
.
gt
(
ImMessage:
:
getId
,
param
.
getBeginId
())
.
orderByAsc
(
ImMessage:
:
getId
)
.
last
(
"limit 100"
));
//ClientId集合
Set
<
Long
>
clientIds
=
new
HashSet
<>();
HashMap
<
Long
,
ImClient
>
imClientMap
=
new
HashMap
<>();
HashMap
<
Long
,
ImConversation
>
ImConversationMap
=
new
HashMap
<>();
imMessages
.
forEach
(
imMessage
->
{
String
receivers
=
imMessage
.
getReceivers
();
clientIds
.
add
(
imMessage
.
getSender
());
if
(
StringUtils
.
isNotBlank
(
receivers
))
{
String
[]
split
=
receivers
.
split
(
","
);
for
(
int
i
=
0
;
i
<
split
.
length
;
i
++)
{
clientIds
.
add
(
Long
.
valueOf
(
split
[
i
]));
}
}
ImConversation
conversation
=
imConversationService
.
getById
(
imMessage
.
getFkConversationId
());
ImConversationMap
.
put
(
conversation
.
getId
(),
conversation
);
});
clientIds
.
forEach
(
id
->{
ImClient
imClient
=
imClientService
.
getById
(
id
);
imClientMap
.
put
(
id
,
imClient
);
});
List
<
WeCloudMessageVo
>
result
=
imMessages
.
stream
().
map
(
message
->
{
WeCloudMessageVo
weCloudMessageVo
=
new
WeCloudMessageVo
();
weCloudMessageVo
.
setId
(
message
.
getId
());
weCloudMessageVo
.
setFromUserId
(
Long
.
valueOf
(
imClientMap
.
get
(
message
.
getSender
()).
getClientId
()));
if
(
Objects
.
equals
(
ChatTypeEnum
.
SINGLE
.
getCode
(),
ImConversationMap
.
get
(
message
.
getFkConversationId
()).
getChatType
()))
{
if
(
StringUtils
.
isNotBlank
(
message
.
getReceivers
()))
{
String
[]
split
=
message
.
getReceivers
().
split
(
","
);
for
(
int
i
=
0
;
i
<
split
.
length
;
i
++)
{
if
(!
split
[
i
].
equals
(
message
.
getSender
()))
{
weCloudMessageVo
.
setTargetId
(
Long
.
valueOf
(
imClientMap
.
get
(
split
[
i
]).
getClientId
()));
}
}
}
weCloudMessageVo
.
setChatType
(
ChatTypeEnum
.
SINGLE
);
}
else
{
weCloudMessageVo
.
setChatType
(
ChatTypeEnum
.
NORMAL_GROUP
);
weCloudMessageVo
.
setTargetId
(
ImConversationMap
.
get
(
message
.
getFkConversationId
()).
getId
());
}
weCloudMessageVo
.
setMsgType
(
MsgTypeEnum
.
getByCode
(
message
.
getMsgType
()));
weCloudMessageVo
.
setContent
(
message
.
getContent
());
weCloudMessageVo
.
setMsgSendTime
(
message
.
getCreateTime
());
weCloudMessageVo
.
setWithdrawTime
(
message
.
getWithdrawTime
());
weCloudMessageVo
.
setCreateTime
(
message
.
getCreateTime
());
return
weCloudMessageVo
;
}).
collect
(
Collectors
.
toList
());
return
result
;
}
/**
* 获取读取人员
*
...
...
@@ -434,6 +524,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
return
new
Paging
<>(
iPage
);
}
@Override
public
Paging
<
OfflineMsgDto
>
getHistoryMsgConversationIdNew
(
ImHistoryMessagePageParam
param
)
{
Page
<
ImMessage
>
page
=
new
PageInfo
<>(
param
,
OrderItem
.
desc
(
getLambdaColumn
(
ImMessage:
:
getCreateTime
)));
...
...
@@ -901,14 +992,13 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
}
/**
*
* @Author luozh
* @Date 2022年05月25日 10:48:58
* @param application
* @param sender
* @param toUserIdList
* @param conversationMapGroupById
* @param conMembersMapGroupByConId
* @Author luozh
* @Date 2022年05月25日 10:48:58
* @Return
*/
private
void
beforePublishPrivateMessage
(
ImApplication
application
,
...
...
@@ -921,14 +1011,15 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
/**
* 私聊消息发送前
* @Author luozh
* @Date 2022年05月07日 11:28:59
* @param application 应用
* @param sender 发送者
* @param toUserIdList 接收人用户id
* @param conversationExt 会话拓展信息,该参数非必填,如果传入,则会话名称和
*
* @param application 应用
* @param sender 发送者
* @param toUserIdList 接收人用户id
* @param conversationExt 会话拓展信息,该参数非必填,如果传入,则会话名称和
* @param conversationMapGroupById
* @param conMembersMapGroupByConId
* @Author luozh
* @Date 2022年05月07日 11:28:59
* @Return
*/
private
void
beforePublishPrivateMessage
(
ImApplication
application
,
...
...
@@ -1031,6 +1122,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
/**
* 拼装发送消息体
*
* @param message
* @param imClientSender
* @param appId
...
...
@@ -1058,13 +1150,14 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
/**
* 组装imMessage
*
* @param appId 发送群聊消息入参
* @param sender 发送群聊消息入参
* @param toConversationId 发送群聊消息入参
* @param messageType 发送群聊消息入参
* @param content 发送群聊消息入参
* @Author luozh
* @Date 2022年05月05日 06:17:00
* @param appId 发送群聊消息入参
* @param sender 发送群聊消息入参
* @param toConversationId 发送群聊消息入参
* @param messageType 发送群聊消息入参
* @param content 发送群聊消息入参
* @Return ImMessage
*/
private
ImMessage
assembleImMessage
(
Long
appId
,
ImClient
sender
,
Long
toConversationId
,
String
messageType
,
...
...
@@ -1107,6 +1200,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
/**
* 发送消息给在线客户
*
* @param receiverClientId
* @param imMessageOnlineSend
*/
...
...
@@ -1124,12 +1218,13 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
/**
* 推送消息至离线成员
* @Author luozh
* @Date 2022年05月06日 05:23:58
*
* @param application
* @param members
* @param pushContent
* @param pushExt
* @Author luozh
* @Date 2022年05月06日 05:23:58
* @Return
*/
private
void
pushMsgToOfflineMembers
(
ImApplication
application
,
ImConversationMembers
members
,
...
...
im-sdk/src/main/java/com/wecloud/im/sdk/ResourcePathConstants.java
View file @
98f585a9
...
...
@@ -95,7 +95,10 @@ public class ResourcePathConstants {
* 发布群状态消息
*/
public
static
final
String
PUBLISH_PRIVATE_CHAT_STATUS_MESSAGE_REQUEST
=
"/api/imMessage/private/status/publish"
;
/**
* 获取获取同步历史消息
*/
public
static
final
String
LIST_MESSAGE_MESSAGE_REQUEST
=
"/api/imMessage/listMessage"
;
/**
* 创建群
*/
...
...
@@ -192,4 +195,6 @@ public class ResourcePathConstants {
* 后台状态下未接到音视频判断
*/
public
static
final
String
GET_MISSED_RTCRECORD
=
"/api/rtcRecord/missedConversation"
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudIm.java
View file @
98f585a9
...
...
@@ -3,6 +3,7 @@ package com.wecloud.im.sdk;
import
com.wecloud.im.sdk.model.*
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -404,4 +405,12 @@ public interface WecloudIm {
* @Return
*/
MissedRtcRecord
getMissedRtcRecord
(
String
UserId
);
/**
* 分页获取消息列表
* @Author nanqianhao
* @Date 2022年05月25日 09:36:47
* @param
* @Return
*/
List
<
WeCloudMessage
>
getPageImMessages
(
String
beginId
);
}
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudImClient.java
View file @
98f585a9
...
...
@@ -6,6 +6,7 @@ import com.wecloud.im.sdk.internal.*;
import
com.wecloud.im.sdk.model.*
;
import
java.net.URL
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -350,7 +351,12 @@ public class WecloudImClient implements WecloudIm {
RtcRecordRequest
rtcRecordRequest
=
BeanUtil
.
toBean
(
record
,
RtcRecordRequest
.
class
);
return
imRtcRecordOperation
.
listRtcRecords
(
rtcRecordRequest
);
}
@Override
public
List
<
WeCloudMessage
>
getPageImMessages
(
String
beginId
)
{
MessageRequest
messageRequest
=
MessageRequest
.
builder
().
beginId
(
beginId
).
build
();
return
imMessageOperation
.
listMessage
(
messageRequest
);
}
@Override
public
Boolean
singleUserNotification
(
SingleUserNotification
singleUserNotification
)
{
SingleUserNotificationRequest
singleUserNotificationRequest
=
BeanUtil
.
toBean
(
singleUserNotification
,
...
...
@@ -366,6 +372,7 @@ public class WecloudImClient implements WecloudIm {
}
private
void
initOperations
()
{
this
.
imUserOperation
=
new
WecloudImUserOperation
(
apiDomain
,
appKey
,
appSecret
);
this
.
imConversationOperation
=
new
WecloudImConversationOperation
(
apiDomain
,
appKey
,
appSecret
);
...
...
im-sdk/src/main/java/com/wecloud/im/sdk/enums/BaseEnum.java
0 → 100644
View file @
98f585a9
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
wecloud
.
im
.
sdk
.
enums
;
/**
* 枚举类型父接口
*
* @author geekidea
* @date 2018-11-08
*/
public
interface
BaseEnum
{
/**
* 通过枚举类型和code值获取对应的枚举类型
*
* @param enumType
* @param code
* @param <T>
* @return
*/
static
<
T
extends
BaseEnum
>
T
valueOf
(
Class
<?
extends
BaseEnum
>
enumType
,
Integer
code
)
{
if
(
enumType
==
null
||
code
==
null
)
{
return
null
;
}
T
[]
enumConstants
=
(
T
[])
enumType
.
getEnumConstants
();
if
(
enumConstants
==
null
)
{
return
null
;
}
for
(
T
enumConstant
:
enumConstants
)
{
int
enumCode
=
enumConstant
.
getCode
();
if
(
code
.
equals
(
enumCode
))
{
return
enumConstant
;
}
}
return
null
;
}
/**
* 获取枚举标识
*
* @return
*/
Integer
getCode
();
/**
* 获取枚举描述
*
* @return
*/
String
getDesc
();
}
im-sdk/src/main/java/com/wecloud/im/sdk/enums/ChatTypeEnum.java
0 → 100644
View file @
98f585a9
package
com
.
wecloud
.
im
.
sdk
.
enums
;
/**
* @Description 会话类型
* @Author lixiaozhong
* @Date 2022/1/11 4:58 下午
*/
public
enum
ChatTypeEnum
implements
BaseEnum
{
/**
* 单聊
*/
SINGLE
(
1
,
"单聊"
),
/**
* 普通群
*/
NORMAL_GROUP
(
2
,
"普通群"
),
/**
* 万人群
*/
THOUSAND_GROUP
(
3
,
"万人群"
),
/**
* 聊天室
*/
CHAT_ROOM
(
4
,
"聊天室"
),
/**
* 临时会话
*/
TEMP
(
5
,
"临时会话"
),
/**
* 系统会话
*/
SYSTEM
(
6
,
"系统会话"
),
;
private
final
Integer
code
;
private
final
String
desc
;
ChatTypeEnum
(
Integer
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
@Override
public
Integer
getCode
()
{
return
this
.
code
;
}
@Override
public
String
getDesc
()
{
return
this
.
desc
;
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/enums/MsgTypeEnum.java
0 → 100644
View file @
98f585a9
package
com
.
wecloud
.
im
.
sdk
.
enums
;
/**
* @Description ws响应类型
* @Author xxxname xxxemail.com
* @Date 2019-12-05
*/
public
enum
MsgTypeEnum
{
// 位置
MEDIA_TYPE_NONE
(
0
),
// 文本消息
MEDIA_TYPE_TEXT
(-
1
),
// 图像消息
MEDIA_TYPE_IMAGE
(-
2
),
// 音频消息
MEDIA_TYPE_AUDIO
(-
3
),
// 视频消息
MEDIA_TYPE_VIDEO
(-
4
),
// 文件消息
MEDIA_TYPE_FILE
(-
5
),
// xx邀请xx加入会话 -1007
INVITE_CLIENT_JOIN_CONVERSATION
(-
1007
),
// xx被xx移出会话 -1008
REMOVE_CLIENT_CONVERSATION
(-
1008
),
// xx已接收某消息 -1009
CLIENT_RECEIVED_MSG
(-
1009
),
// xx已读某条消息 -1010
CLIENT_READ_MSG
(-
1010
),
// 你被xx拉入新会话 -1011
CLIENT_JOIN_NEW_CONVERSATION
(-
1011
),
// 主动退出会话 -1012
LEAVE_CONVERSATION
(-
1012
),
// 成为新群主 -1013
CONVERSATION_NEW_CREATOR
(-
1013
),
// 群拓展字段变动事件 -1014
CONVERSATION_EXPAND_FIELD_CHANGE
(-
1014
),
// 会话名称字段变动事件 -1015
CONVERSATION_NAME_CHANGE
(-
1015
),
// 消息撤回 -1016
MSG_WITHDRAW
(-
1016
),
// 消息删除 -1017
MSG_DELETE
(-
1017
),
// 解散群聊 -1018
CONVERSATION_DISBAND
(-
1018
),
// 群聊禁言 -1019
CONVERSATION_MUTED
(-
1019
),
// 群聊取消禁言 -1020
CONVERSATION_MUTED_CANCEL
(-
1020
),
// 群成员备注修改 -1021
CONVERSATION_MEMBER_NAME_MODIFY
(-
1021
),
// 禁止群成员互加好友
CONVERSATION_FORBID_ADD_FRIEND
(-
1022
),
// 取消禁止群成员互加好友
CONVERSATION_FORBID_ADD_FRIEND_CANCEL
(-
1023
),
// 禁止群成员发图片
CONVERSATION_FORBID_SEND_PIC
(-
1026
),
// 取消禁止群成员发图片
CONVERSATION_FORBID_SEND_PIC_CANCEL
(-
1027
),
// 禁止群成员发链接
CONVERSATION_FORBID_SEND_LINK
(-
1028
),
// 取消禁止群成员发链接
CONVERSATION_FORBID_SEND_LINK_CANCEL
(-
1029
),
// 修改群头像
CONVERSATION_SET_GROUP_PORTRAIT
(-
1031
),
;
private
final
int
uriCode
;
MsgTypeEnum
(
int
uriCode
)
{
this
.
uriCode
=
uriCode
;
}
/**
* 根据uriCode获取
*
* @param uriCode
* @return
*/
public
static
MsgTypeEnum
getByCode
(
int
uriCode
)
{
for
(
MsgTypeEnum
wsResponsePathEnum
:
values
())
{
if
(
wsResponsePathEnum
.
getUriCode
()
==
uriCode
)
{
return
wsResponsePathEnum
;
}
}
return
null
;
}
public
int
getUriCode
()
{
return
uriCode
;
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImMessageOperation.java
View file @
98f585a9
package
com
.
wecloud
.
im
.
sdk
.
internal
;
import
java.net.URL
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
com.alibaba.fastjson.JSON
;
...
...
@@ -8,16 +10,22 @@ import com.alibaba.fastjson.JSONObject;
import
com.alibaba.fastjson.TypeReference
;
import
com.wecloud.im.sdk.common.HttpMethod
;
import
com.wecloud.im.sdk.common.RequestMessage
;
import
com.wecloud.im.sdk.model.ImRtcRecord
;
import
com.wecloud.im.sdk.model.MessageRequest
;
import
com.wecloud.im.sdk.model.PageResult
;
import
com.wecloud.im.sdk.model.PublishGroupChatMessageRequest
;
import
com.wecloud.im.sdk.model.PublishGroupChatStatusMessageRequest
;
import
com.wecloud.im.sdk.model.PublishPrivateChatMessageRequest
;
import
com.wecloud.im.sdk.model.PublishPrivateChatStatusMessageRequest
;
import
com.wecloud.im.sdk.model.WeCloudMessage
;
import
com.wecloud.im.sdk.model.message.WecloudImMessage
;
import
static
com
.
wecloud
.
im
.
sdk
.
ResourcePathConstants
.
LIST_RTC_RECORDS_REQUEST
;
import
static
com
.
wecloud
.
im
.
sdk
.
ResourcePathConstants
.
PUBLISH_GROUP_CHAT_MESSAGE_REQUEST
;
import
static
com
.
wecloud
.
im
.
sdk
.
ResourcePathConstants
.
PUBLISH_GROUP_CHAT_STATUS_MESSAGE_REQUEST
;
import
static
com
.
wecloud
.
im
.
sdk
.
ResourcePathConstants
.
PUBLISH_PRIVATE_CHAT_MESSAGE_REQUEST
;
import
static
com
.
wecloud
.
im
.
sdk
.
ResourcePathConstants
.
PUBLISH_PRIVATE_CHAT_STATUS_MESSAGE_REQUEST
;
import
static
com
.
wecloud
.
im
.
sdk
.
ResourcePathConstants
.
LIST_MESSAGE_MESSAGE_REQUEST
;
import
static
com
.
wecloud
.
im
.
sdk
.
utils
.
CodingUtils
.
assertParameterNotNull
;
/**
...
...
@@ -135,4 +143,18 @@ public class WecloudImMessageOperation extends WecloudImOperation {
}
public
List
<
WeCloudMessage
>
listMessage
(
MessageRequest
messageRequest
)
{
// 校验通过 构建参数
Map
<
String
,
Object
>
param
=
new
HashMap
<>();
param
.
put
(
"beginId"
,
messageRequest
.
getBeginId
());
// 发送请求
RequestMessage
request
=
new
WecloudRequestMessageBuilder
().
setEndpoint
(
LIST_MESSAGE_MESSAGE_REQUEST
)
.
setMethod
(
HttpMethod
.
POST
).
setParameters
(
param
)
.
setOriginalRequest
(
messageRequest
).
build
();
Object
result
=
doOperation
(
request
);
TypeReference
<
List
<
WeCloudMessage
>>
typeReference
=
new
TypeReference
<
List
<
WeCloudMessage
>>()
{
};
List
<
WeCloudMessage
>
rtcRecords
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
result
),
typeReference
);
return
rtcRecords
;
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImOperation.java
View file @
98f585a9
...
...
@@ -6,10 +6,13 @@ import com.wecloud.im.sdk.common.HttpMethod;
import
com.wecloud.im.sdk.common.RequestMessage
;
import
com.wecloud.im.sdk.common.auth.Credentials
;
import
com.wecloud.im.sdk.exception.WecloudImException
;
import
com.wecloud.im.sdk.model.MessageRequest
;
import
com.wecloud.im.sdk.model.WeCloudMessage
;
import
okhttp3.Response
;
import
java.net.URL
;
import
java.util.Date
;
import
java.util.List
;
import
static
com
.
wecloud
.
im
.
sdk
.
internal
.
ImHeaders
.
X_IM_FROM
;
import
static
com
.
wecloud
.
im
.
sdk
.
utils
.
HttpHeaders
.
CONTENT_TYPE
;
...
...
im-sdk/src/main/java/com/wecloud/im/sdk/model/MessageRequest.java
0 → 100644
View file @
98f585a9
package
com
.
wecloud
.
im
.
sdk
.
model
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.util.Date
;
/**
*
* @Author luozh
* @Date 2022年05月16日 11:14
* @Version 1.0
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
@Builder
public
class
MessageRequest
extends
WebServiceRequest
{
/**
* 开始时间
*/
private
Date
beginMessageDate
;
/**
* 开始id
*/
private
String
beginId
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/WeCloudMessage.java
0 → 100644
View file @
98f585a9
package
com
.
wecloud
.
im
.
sdk
.
model
;
import
com.wecloud.im.sdk.enums.ChatTypeEnum
;
import
com.wecloud.im.sdk.enums.MsgTypeEnum
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @program: wecloud_im_server
* @description: 消息
* @author: cql
* @create: 2022-10-19 14:25
**/
@Data
@Accessors
(
chain
=
true
)
public
class
WeCloudMessage
implements
Serializable
{
private
Long
id
;
/**
* 发送者用户id
*/
private
Long
fromUserId
;
/**
* 目标id 为群组时是wecloud群组id,为饲料时是目标用户id
*/
private
Long
targetId
;
/**
* 消息内容
*/
private
String
content
;
/**
* 消息类型 TEXT 文本 PIC图片 VIDEO 视频
*/
private
MsgTypeEnum
msgType
;
/**
* 会话类型SINGLE 单聊 NORMAL_GROUP 群聊
*/
private
ChatTypeEnum
chatType
;
/**
* 消息发送时间
*/
private
Date
msgSendTime
;
/**
* 消息撤回时间
*/
private
Date
withdrawTime
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 修改时间
*/
private
Date
updateTime
;
}
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