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
1e061a91
Commit
1e061a91
authored
May 23, 2022
by
南千昊
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
后台管理通话记录列表接口
parent
dccc2cbc
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
313 additions
and
72 deletions
+313
-72
core/src/main/java/com/wecloud/im/controller/ImRtcRecordController.java
+40
-0
core/src/main/java/com/wecloud/im/param/rtc/RtcRecordParam.java
+46
-0
core/src/main/java/com/wecloud/im/service/ImRtcRecordService.java
+7
-0
core/src/main/java/com/wecloud/im/service/impl/ImRtcRecordServiceImpl.java
+15
-0
im-sdk/src/main/java/com/wecloud/im/sdk/ResourcePathConstants.java
+5
-0
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudIm.java
+9
-16
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudImClient.java
+12
-56
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImRtcRecordOperation.java
+61
-0
im-sdk/src/main/java/com/wecloud/im/sdk/model/ImRtcRecord.java
+75
-0
im-sdk/src/main/java/com/wecloud/im/sdk/model/RtcRecordRequest.java
+43
-0
No files found.
core/src/main/java/com/wecloud/im/controller/ImRtcRecordController.java
0 → 100644
View file @
1e061a91
package
com
.
wecloud
.
im
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.wecloud.im.entity.ImRtcRecord
;
import
com.wecloud.im.param.rtc.RtcRecordParam
;
import
com.wecloud.im.service.ImRtcRecordService
;
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.springframework.beans.factory.annotation.Autowired
;
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
;
/**
* @author nanqianhao
* @date 2022/5/23
* @apiNote
*/
@Slf4j
@RestController
@RequestMapping
(
"/rtcrecord"
)
@Api
(
value
=
"后台通话记录列表"
)
public
class
ImRtcRecordController
extends
BaseController
{
@Autowired
private
ImRtcRecordService
rtcRecordService
;
@PostMapping
(
"/listRtcRecords"
)
@ApiOperation
(
value
=
"分页获取后台通话记录"
)
public
ApiResult
<
Page
<
ImRtcRecord
>>
listRtcRecords
(
@RequestBody
RtcRecordParam
rtcRecordParam
){
log
.
info
(
"获取后台通话记录入参 {}"
,
JSON
.
toJSONString
(
rtcRecordParam
));
return
ApiResult
.
ok
(
rtcRecordService
.
getPageImRtcRecords
(
rtcRecordParam
));
}
}
core/src/main/java/com/wecloud/im/param/rtc/RtcRecordParam.java
0 → 100644
View file @
1e061a91
package
com
.
wecloud
.
im
.
param
.
rtc
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @author nanqianhao
* @date 2022/5/23
* @apiNote
*/
@Data
public
class
RtcRecordParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 发送者id
*/
private
String
fromClientId
;
/**
* 接受者id
*/
private
String
toClientId
;
/**
* 房间id
*/
private
Long
channelId
;
/**
* 音视频类型
*/
private
Integer
callType
;
/***
* 页码
*/
private
Integer
pageNum
;
/**
* 每页数量
*/
private
Integer
pageSize
;
}
core/src/main/java/com/wecloud/im/service/ImRtcRecordService.java
View file @
1e061a91
package
com
.
wecloud
.
im
.
service
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.wecloud.im.entity.ImRtcRecord
;
import
com.wecloud.im.param.rtc.CreateRtcChannelParam
;
import
com.wecloud.im.param.rtc.RtcRecordParam
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
/**
...
...
@@ -25,4 +27,9 @@ public interface ImRtcRecordService extends BaseService<ImRtcRecord> {
*/
void
updateRtcRecord
(
Long
channelId
,
Integer
type
);
/**
* 获取通话记录
*/
Page
<
ImRtcRecord
>
getPageImRtcRecords
(
RtcRecordParam
rtcRecordParam
);
}
core/src/main/java/com/wecloud/im/service/impl/ImRtcRecordServiceImpl.java
View file @
1e061a91
package
com
.
wecloud
.
im
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImRtcRecord
;
import
com.wecloud.im.mapper.ImRtcRecordMapper
;
import
com.wecloud.im.param.rtc.CreateRtcChannelParam
;
import
com.wecloud.im.param.rtc.RtcRecordParam
;
import
com.wecloud.im.sdk.enums.RtcStateEnum
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.service.ImRtcRecordService
;
...
...
@@ -80,5 +83,17 @@ public class ImRtcRecordServiceImpl extends BaseServiceImpl<ImRtcRecordMapper, I
}
}
@Override
public
Page
<
ImRtcRecord
>
getPageImRtcRecords
(
RtcRecordParam
rtcRecordParam
)
{
LambdaQueryWrapper
<
ImRtcRecord
>
rtcRecordLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
rtcRecordLambdaQueryWrapper
.
like
(
rtcRecordParam
.
getFromClientId
()!=
null
,
ImRtcRecord:
:
getFromClientId
,
rtcRecordParam
.
getFromClientId
());
rtcRecordLambdaQueryWrapper
.
like
(
rtcRecordParam
.
getToClientId
()!=
null
,
ImRtcRecord:
:
getToClientId
,
rtcRecordParam
.
getToClientId
());
rtcRecordLambdaQueryWrapper
.
like
(
rtcRecordParam
.
getChannelId
()!=
null
,
ImRtcRecord:
:
getChannelId
,
rtcRecordParam
.
getChannelId
());
rtcRecordLambdaQueryWrapper
.
eq
(
rtcRecordParam
.
getCallType
()!=
null
,
ImRtcRecord:
:
getCallType
,
rtcRecordParam
.
getCallType
());
Page
<
ImRtcRecord
>
pageParam
=
new
Page
<>(
rtcRecordParam
.
getPageNum
(),
rtcRecordParam
.
getPageSize
());
Page
<
ImRtcRecord
>
page
=
this
.
page
(
pageParam
,
rtcRecordLambdaQueryWrapper
);
return
page
;
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/ResourcePathConstants.java
View file @
1e061a91
...
...
@@ -166,4 +166,9 @@ public class ResourcePathConstants {
*/
public
static
final
String
REMOVE_GROUP_ADMIN_REQUEST
=
"/api/group/removeGroupAdmin"
;
/**
* 获取通话记录请求
*/
public
static
final
String
LIST_RTCRECORDS_REQUEST
=
"/api/rtcrecord/listRtcRecords"
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudIm.java
View file @
1e061a91
package
com
.
wecloud
.
im
.
sdk
;
import
java.util.List
;
import
com.wecloud.im.sdk.model.*
;
import
com.wecloud.im.sdk.model.Blacklist
;
import
com.wecloud.im.sdk.model.ChatRoomMember
;
import
com.wecloud.im.sdk.model.ClientRelation
;
import
com.wecloud.im.sdk.model.Conversation
;
import
com.wecloud.im.sdk.model.Friend
;
import
com.wecloud.im.sdk.model.GroupChatMessage
;
import
com.wecloud.im.sdk.model.GroupChatStatusMessage
;
import
com.wecloud.im.sdk.model.GroupSettingParam
;
import
com.wecloud.im.sdk.model.ImClient
;
import
com.wecloud.im.sdk.model.PageResult
;
import
com.wecloud.im.sdk.model.PrivateChatMessage
;
import
com.wecloud.im.sdk.model.PrivateChatStatusMessage
;
import
com.wecloud.im.sdk.model.Token
;
import
com.wecloud.im.sdk.model.UnsureFriend
;
import
com.wecloud.im.sdk.model.UserAttributes
;
import
java.util.List
;
/**
*
...
...
@@ -346,4 +332,11 @@ public interface WecloudIm {
* @Return
*/
Boolean
remarkFriend
(
String
userId
,
String
friendUserId
,
String
remark
);
/**
* 获取通话记录列表
* @Author nanqianhao
* @Date 2022年05月23日 11:30
*/
PageResult
<
ImRtcRecord
>
getPageImRtcRecords
(
RtcRecordRequest
rtcRecordRequest
);
}
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudImClient.java
View file @
1e061a91
package
com
.
wecloud
.
im
.
sdk
;
import
java.net.URL
;
import
java.util.List
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.lang.Assert
;
import
com.wecloud.im.sdk.internal.*
;
import
com.wecloud.im.sdk.model.*
;
import
com.wecloud.im.sdk.internal.WecloudImContactsOperation
;
import
com.wecloud.im.sdk.internal.WecloudImConversationOperation
;
import
com.wecloud.im.sdk.internal.WecloudImGroupOperation
;
import
com.wecloud.im.sdk.internal.WecloudImMessageOperation
;
import
com.wecloud.im.sdk.internal.WecloudImUserOperation
;
import
com.wecloud.im.sdk.model.AddGroupAdminRequest
;
import
com.wecloud.im.sdk.model.BannedUserRequest
;
import
com.wecloud.im.sdk.model.Blacklist
;
import
com.wecloud.im.sdk.model.ChatRoomMember
;
import
com.wecloud.im.sdk.model.ClientLoginRequest
;
import
com.wecloud.im.sdk.model.ClientRelation
;
import
com.wecloud.im.sdk.model.Conversation
;
import
com.wecloud.im.sdk.model.CreateGroupRequest
;
import
com.wecloud.im.sdk.model.DismissGroupRequest
;
import
com.wecloud.im.sdk.model.Friend
;
import
com.wecloud.im.sdk.model.FriendRequestRequest
;
import
com.wecloud.im.sdk.model.GetFriendsRequest
;
import
com.wecloud.im.sdk.model.GetUnsureFriendsRequest
;
import
com.wecloud.im.sdk.model.GetUserAttributesRequest
;
import
com.wecloud.im.sdk.model.GroupChatMessage
;
import
com.wecloud.im.sdk.model.GroupChatStatusMessage
;
import
com.wecloud.im.sdk.model.GroupMembersFriendRequestRequest
;
import
com.wecloud.im.sdk.model.GroupOwnerTransferRequest
;
import
com.wecloud.im.sdk.model.GroupSettingParam
;
import
com.wecloud.im.sdk.model.GroupSettingRequest
;
import
com.wecloud.im.sdk.model.ImClient
;
import
com.wecloud.im.sdk.model.JoinGroupRequest
;
import
com.wecloud.im.sdk.model.LeaveGroupRequest
;
import
com.wecloud.im.sdk.model.ListChatRoomMemberRequest
;
import
com.wecloud.im.sdk.model.ListConversationRequest
;
import
com.wecloud.im.sdk.model.ListGroupMembersRequest
;
import
com.wecloud.im.sdk.model.ModifyUserAttributesRequest
;
import
com.wecloud.im.sdk.model.ModifyUserRequest
;
import
com.wecloud.im.sdk.model.MutedGroupMemberRequest
;
import
com.wecloud.im.sdk.model.PageBlacklistRequest
;
import
com.wecloud.im.sdk.model.PageResult
;
import
com.wecloud.im.sdk.model.PrivateChatMessage
;
import
com.wecloud.im.sdk.model.PrivateChatStatusMessage
;
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.RegisterClientRequest
;
import
com.wecloud.im.sdk.model.RemarkFriendRequest
;
import
com.wecloud.im.sdk.model.RemoveGroupAdminRequest
;
import
com.wecloud.im.sdk.model.SetConversationDoNotDisturbRequest
;
import
com.wecloud.im.sdk.model.SetConversationTopRequest
;
import
com.wecloud.im.sdk.model.Token
;
import
com.wecloud.im.sdk.model.UnfriendRequest
;
import
com.wecloud.im.sdk.model.UnsureFriend
;
import
com.wecloud.im.sdk.model.UserAttributes
;
import
com.wecloud.im.sdk.model.UserRelationRequest
;
import
com.wecloud.im.sdk.model.UsersRelationRequest
;
import
java.net.URL
;
import
java.util.List
;
/**
*
...
...
@@ -94,6 +42,8 @@ public class WecloudImClient implements WecloudIm {
private
WecloudImContactsOperation
imContactsOperation
;
private
WecloudImRtcRecordOperation
imRtcRecordOperation
;
public
WecloudImClient
(
URL
apiDomain
,
String
appKey
,
String
appSecret
)
{
this
.
apiDomain
=
apiDomain
;
this
.
appKey
=
appKey
;
...
...
@@ -350,11 +300,17 @@ public class WecloudImClient implements WecloudIm {
return
imContactsOperation
.
remarkFriend
(
remarkFriendRequest
);
}
@Override
public
PageResult
<
ImRtcRecord
>
getPageImRtcRecords
(
RtcRecordRequest
rtcRecordRequest
)
{
return
imRtcRecordOperation
.
listRtcRecords
(
rtcRecordRequest
);
}
private
void
initOperations
()
{
this
.
imUserOperation
=
new
WecloudImUserOperation
(
apiDomain
,
appKey
,
appSecret
);
this
.
imConversationOperation
=
new
WecloudImConversationOperation
(
apiDomain
,
appKey
,
appSecret
);
this
.
imMessageOperation
=
new
WecloudImMessageOperation
(
apiDomain
,
appKey
,
appSecret
);
this
.
imGroupOperation
=
new
WecloudImGroupOperation
(
apiDomain
,
appKey
,
appSecret
);
this
.
imContactsOperation
=
new
WecloudImContactsOperation
(
apiDomain
,
appKey
,
appSecret
);
this
.
imRtcRecordOperation
=
new
WecloudImRtcRecordOperation
(
apiDomain
,
appKey
,
appSecret
);
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImRtcRecordOperation.java
0 → 100644
View file @
1e061a91
package
com
.
wecloud
.
im
.
sdk
.
internal
;
import
com.alibaba.fastjson.JSON
;
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.PageResult
;
import
com.wecloud.im.sdk.model.RtcRecordRequest
;
import
java.net.URL
;
import
java.util.HashMap
;
import
java.util.Map
;
import
static
com
.
wecloud
.
im
.
sdk
.
ResourcePathConstants
.
LIST_RTCRECORDS_REQUEST
;
/**
* @author nanqianhao
* @date 2022/5/23
* @apiNote
*/
public
class
WecloudImRtcRecordOperation
extends
WecloudImOperation
{
public
WecloudImRtcRecordOperation
(
URL
apiDomain
,
String
appKey
,
String
appSecret
)
{
super
(
apiDomain
,
appKey
,
appSecret
);
}
// 查看通话记录列表
public
PageResult
<
ImRtcRecord
>
listRtcRecords
(
RtcRecordRequest
rtcRecordRequest
)
{
// 校验通过 构建参数
Map
<
String
,
String
>
param
=
new
HashMap
<>();
param
.
put
(
"pageNum"
,
rtcRecordRequest
.
getPageNum
()+
""
);
param
.
put
(
"pageSize"
,
rtcRecordRequest
.
getPageSize
()+
""
);
if
(
rtcRecordRequest
.
getFromClientId
()
!=
null
&&
!
""
.
equals
(
rtcRecordRequest
.
getFromClientId
())){
param
.
put
(
"fromClientId"
,
rtcRecordRequest
.
getFromClientId
());
}
if
(
rtcRecordRequest
.
getToClientId
()
!=
null
&&
!
""
.
equals
(
rtcRecordRequest
.
getToClientId
())){
param
.
put
(
"toClientId"
,
rtcRecordRequest
.
getToClientId
());
}
if
(
rtcRecordRequest
.
getChannelId
()
!=
null
){
param
.
put
(
"channelId"
,
rtcRecordRequest
.
getChannelId
()+
""
);
}
if
(
rtcRecordRequest
.
getCallType
()!=
null
){
param
.
put
(
"callType"
,
rtcRecordRequest
.
getCallType
()+
""
);
}
// 发送请求
RequestMessage
request
=
new
WecloudRequestMessageBuilder
().
setEndpoint
(
LIST_RTCRECORDS_REQUEST
)
.
setMethod
(
HttpMethod
.
POST
).
setParameters
(
param
)
.
setOriginalRequest
(
rtcRecordRequest
).
build
();
Object
result
=
doOperation
(
request
);
TypeReference
<
PageResult
<
ImRtcRecord
>>
typeReference
=
new
TypeReference
<
PageResult
<
ImRtcRecord
>>()
{
};
PageResult
<
ImRtcRecord
>
rtcRecords
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
result
),
typeReference
);
return
rtcRecords
;
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/ImRtcRecord.java
0 → 100644
View file @
1e061a91
package
com
.
wecloud
.
im
.
sdk
.
model
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @Author Future
* @Date 2022/5/22 23:40
* @Description 单人音视频记录表
*/
@Data
@Accessors
(
chain
=
true
)
public
class
ImRtcRecord
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
523597842194055670L
;
/**
* 主键id
*/
private
Long
id
;
/**
* 应用appid
*/
private
Long
fkAppid
;
/**
* 频道id
*/
private
Long
channelId
;
/**
* 发起方id
*/
private
String
fromClientId
;
/**
* 接收方id
*/
private
String
toClientId
;
/**
* 频道状态,1:音视频发起,2:音视频中,3:音视频结束
*/
private
Integer
state
;
/**
* 通话类型 1音频 2视频
*/
private
Integer
callType
;
/**
* 音视频开始时间
*/
private
Date
startTime
;
/**
* 音视频结束时间
*/
private
Date
endTime
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 修改时间
*/
private
Date
updateTime
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/RtcRecordRequest.java
0 → 100644
View file @
1e061a91
package
com
.
wecloud
.
im
.
sdk
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* @author nanqianhao
* @date 2022/5/23
* @apiNote
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
RtcRecordRequest
extends
WebServiceRequest
{
/**
* 发送者id
*/
private
String
fromClientId
;
/**
* 接受者id
*/
private
String
toClientId
;
/**
* 房间id
*/
private
Long
channelId
;
/**
* 通话记录类型 1视频 2音频
*/
private
Integer
callType
;
/***
* 页码
*/
private
Integer
pageNum
;
/**
* 每页数量
*/
private
Integer
pageSize
;
}
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