Commit 784d12dc by 罗长华

Merge remote-tracking branch 'origin/xiaohudou_20220427' into xiaohudou_20220427

parents acd0e0e2 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));
}
}
...@@ -42,6 +42,9 @@ public class ImRtcRecord extends BaseEntity { ...@@ -42,6 +42,9 @@ public class ImRtcRecord extends BaseEntity {
@ApiModelProperty("接收方clientId") @ApiModelProperty("接收方clientId")
private String toClientId; private String toClientId;
@ApiModelProperty(value = "音视频类型: 1-video或2-voice")
private Integer callType;
/** /**
* 单人音视频状态枚举 * 单人音视频状态枚举
* @see com.wecloud.im.sdk.enums.RtcStateEnum * @see com.wecloud.im.sdk.enums.RtcStateEnum
......
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; package com.wecloud.im.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.entity.ImRtcRecord; import com.wecloud.im.entity.ImRtcRecord;
import com.wecloud.im.param.rtc.CreateRtcChannelParam; import com.wecloud.im.param.rtc.CreateRtcChannelParam;
import com.wecloud.im.param.rtc.RtcRecordParam;
import io.geekidea.springbootplus.framework.common.service.BaseService; import io.geekidea.springbootplus.framework.common.service.BaseService;
/** /**
...@@ -25,4 +27,9 @@ public interface ImRtcRecordService extends BaseService<ImRtcRecord> { ...@@ -25,4 +27,9 @@ public interface ImRtcRecordService extends BaseService<ImRtcRecord> {
*/ */
void updateRtcRecord(Long channelId, Integer type); void updateRtcRecord(Long channelId, Integer type);
/**
* 获取通话记录
*/
Page<ImRtcRecord> getPageImRtcRecords(RtcRecordParam rtcRecordParam);
} }
package com.wecloud.im.service.impl; package com.wecloud.im.service.impl;
import com.alibaba.fastjson.JSON; 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.ImClient;
import com.wecloud.im.entity.ImRtcRecord; import com.wecloud.im.entity.ImRtcRecord;
import com.wecloud.im.mapper.ImRtcRecordMapper; import com.wecloud.im.mapper.ImRtcRecordMapper;
import com.wecloud.im.param.rtc.CreateRtcChannelParam; 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.sdk.enums.RtcStateEnum;
import com.wecloud.im.service.ImClientService; import com.wecloud.im.service.ImClientService;
import com.wecloud.im.service.ImRtcRecordService; import com.wecloud.im.service.ImRtcRecordService;
...@@ -40,6 +43,7 @@ public class ImRtcRecordServiceImpl extends BaseServiceImpl<ImRtcRecordMapper, I ...@@ -40,6 +43,7 @@ public class ImRtcRecordServiceImpl extends BaseServiceImpl<ImRtcRecordMapper, I
rtcRecord.setChannelId(channelId); rtcRecord.setChannelId(channelId);
rtcRecord.setFromClientId(currentClient.getClientId()); rtcRecord.setFromClientId(currentClient.getClientId());
rtcRecord.setToClientId(param.getToClient()); rtcRecord.setToClientId(param.getToClient());
rtcRecord.setCallType(param.getCallType());
rtcRecord.setState(RtcStateEnum.CREATED.getCode()); rtcRecord.setState(RtcStateEnum.CREATED.getCode());
rtcRecord.setCreateTime(new Date()); rtcRecord.setCreateTime(new Date());
this.save(rtcRecord); this.save(rtcRecord);
...@@ -79,5 +83,17 @@ public class ImRtcRecordServiceImpl extends BaseServiceImpl<ImRtcRecordMapper, I ...@@ -79,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;
}
} }
-- 在feature-cluster 2021年12月22日之后,需要执行的的sql增量脚本 -- 在feature-cluster 2021年12月22日之后,需要执行的的sql增量脚本
...@@ -170,6 +170,7 @@ CREATE TABLE `im_rtc_record` ...@@ -170,6 +170,7 @@ CREATE TABLE `im_rtc_record`
`from_client_id` varchar(200) DEFAULT NULL COMMENT '发起方clientId', `from_client_id` varchar(200) DEFAULT NULL COMMENT '发起方clientId',
`to_client_id` varchar(200) DEFAULT NULL COMMENT '接收方clientId', `to_client_id` varchar(200) DEFAULT NULL COMMENT '接收方clientId',
`state` tinyint NOT NULL DEFAULT '1' COMMENT '频道状态,1:音视频发起,2:音视频中,3:音视频结束', `state` tinyint NOT NULL DEFAULT '1' COMMENT '频道状态,1:音视频发起,2:音视频中,3:音视频结束',
`call_type` tinyint NOT NULL DEFAULT '1' COMMENT '音视频类型: 1-video或2-voice',
`start_time` timestamp NULL DEFAULT NULL COMMENT '音视频开始时间', `start_time` timestamp NULL DEFAULT NULL COMMENT '音视频开始时间',
`end_time` timestamp NULL DEFAULT NULL COMMENT '音视频结束时间', `end_time` timestamp NULL DEFAULT NULL COMMENT '音视频结束时间',
......
...@@ -166,4 +166,9 @@ public class ResourcePathConstants { ...@@ -166,4 +166,9 @@ public class ResourcePathConstants {
*/ */
public static final String REMOVE_GROUP_ADMIN_REQUEST = "/api/group/removeGroupAdmin"; 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; package com.wecloud.im.sdk;
import java.util.List; import com.wecloud.im.sdk.model.*;
import com.wecloud.im.sdk.model.Blacklist; import java.util.List;
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;
/** /**
* *
...@@ -346,4 +332,11 @@ public interface WecloudIm { ...@@ -346,4 +332,11 @@ public interface WecloudIm {
* @Return * @Return
*/ */
Boolean remarkFriend(String userId, String friendUserId, String remark); 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; package com.wecloud.im.sdk;
import java.net.URL;
import java.util.List;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Assert; 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 java.net.URL;
import com.wecloud.im.sdk.internal.WecloudImConversationOperation; import java.util.List;
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;
/** /**
* *
...@@ -94,6 +42,8 @@ public class WecloudImClient implements WecloudIm { ...@@ -94,6 +42,8 @@ public class WecloudImClient implements WecloudIm {
private WecloudImContactsOperation imContactsOperation; private WecloudImContactsOperation imContactsOperation;
private WecloudImRtcRecordOperation imRtcRecordOperation;
public WecloudImClient(URL apiDomain, String appKey, String appSecret) { public WecloudImClient(URL apiDomain, String appKey, String appSecret) {
this.apiDomain = apiDomain; this.apiDomain = apiDomain;
this.appKey = appKey; this.appKey = appKey;
...@@ -350,11 +300,17 @@ public class WecloudImClient implements WecloudIm { ...@@ -350,11 +300,17 @@ public class WecloudImClient implements WecloudIm {
return imContactsOperation.remarkFriend(remarkFriendRequest); return imContactsOperation.remarkFriend(remarkFriendRequest);
} }
@Override
public PageResult<ImRtcRecord> getPageImRtcRecords(RtcRecordRequest rtcRecordRequest) {
return imRtcRecordOperation.listRtcRecords(rtcRecordRequest);
}
private void initOperations() { private void initOperations() {
this.imUserOperation = new WecloudImUserOperation(apiDomain, appKey, appSecret); this.imUserOperation = new WecloudImUserOperation(apiDomain, appKey, appSecret);
this.imConversationOperation = new WecloudImConversationOperation(apiDomain, appKey, appSecret); this.imConversationOperation = new WecloudImConversationOperation(apiDomain, appKey, appSecret);
this.imMessageOperation = new WecloudImMessageOperation(apiDomain, appKey, appSecret); this.imMessageOperation = new WecloudImMessageOperation(apiDomain, appKey, appSecret);
this.imGroupOperation = new WecloudImGroupOperation(apiDomain, appKey, appSecret); this.imGroupOperation = new WecloudImGroupOperation(apiDomain, appKey, appSecret);
this.imContactsOperation = new WecloudImContactsOperation(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