Commit 1e061a91 by 南千昊

后台管理通话记录列表接口

parent dccc2cbc
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));
}
}
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;
}
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);
}
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;
}
}
......@@ -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";
}
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);
}
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);
}
}
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;
}
}
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;
}
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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment