Commit 98f585a9 by 陈前凌

新增消息同步接口

parent a33d6566
package com.wecloud.im.controller; 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.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController; import io.geekidea.springbootplus.framework.common.controller.BaseController;
...@@ -144,6 +147,10 @@ public class ImMessageController extends BaseController { ...@@ -144,6 +147,10 @@ public class ImMessageController extends BaseController {
public ApiResult<Boolean> singleUserNotification(@RequestBody @Validated SingleUserNotificationParam param) { public ApiResult<Boolean> singleUserNotification(@RequestBody @Validated SingleUserNotificationParam param) {
return ApiResult.ok(imMessageService.singleUserNotification(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));
}
} }
...@@ -14,6 +14,7 @@ import org.apache.ibatis.annotations.Param; ...@@ -14,6 +14,7 @@ import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -88,4 +89,5 @@ public interface ImMessageMapper extends BaseMapper<ImMessage> { ...@@ -88,4 +89,5 @@ public interface ImMessageMapper extends BaseMapper<ImMessage> {
*/ */
List<ReaderVo> getReaders(@Param("currentClientId") Long currentClientId, @Param("param") GetReadersParam param); List<ReaderVo> getReaders(@Param("currentClientId") Long currentClientId, @Param("param") GetReadersParam param);
List<ImMessage> syncListMessage(@Param("beginMessageDate")Date beginMessageDate,@Param("appId") Long appId);
} }
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;
}
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;
}
package com.wecloud.im.service; 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.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.BaseService; import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
...@@ -176,6 +178,8 @@ public interface ImMessageService extends BaseService<ImMessage> { ...@@ -176,6 +178,8 @@ public interface ImMessageService extends BaseService<ImMessage> {
*/ */
Boolean singleUserNotification(SingleUserNotificationParam param); Boolean singleUserNotification(SingleUserNotificationParam param);
List<WeCloudMessageVo> syncListMessage(SyncListMessageParam param);
/** /**
* 保存消息到数据库 * 保存消息到数据库
* @param imMessage * @param imMessage
......
package com.wecloud.im.service.impl; 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.alibaba.fastjson.JSONObject;
import com.baomidou.lock.annotation.Lock4j; import com.baomidou.lock.annotation.Lock4j;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
...@@ -383,6 +419,60 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -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 ...@@ -434,6 +524,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
return new Paging<>(iPage); return new Paging<>(iPage);
} }
@Override @Override
public Paging<OfflineMsgDto> getHistoryMsgConversationIdNew(ImHistoryMessagePageParam param) { public Paging<OfflineMsgDto> getHistoryMsgConversationIdNew(ImHistoryMessagePageParam param) {
Page<ImMessage> page = new PageInfo<>(param, OrderItem.desc(getLambdaColumn(ImMessage::getCreateTime))); Page<ImMessage> page = new PageInfo<>(param, OrderItem.desc(getLambdaColumn(ImMessage::getCreateTime)));
...@@ -901,14 +992,13 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -901,14 +992,13 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
} }
/** /**
*
* @Author luozh
* @Date 2022年05月25日 10:48:58
* @param application * @param application
* @param sender * @param sender
* @param toUserIdList * @param toUserIdList
* @param conversationMapGroupById * @param conversationMapGroupById
* @param conMembersMapGroupByConId * @param conMembersMapGroupByConId
* @Author luozh
* @Date 2022年05月25日 10:48:58
* @Return * @Return
*/ */
private void beforePublishPrivateMessage(ImApplication application, private void beforePublishPrivateMessage(ImApplication application,
...@@ -921,14 +1011,15 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -921,14 +1011,15 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
/** /**
* 私聊消息发送前 * 私聊消息发送前
* @Author luozh *
* @Date 2022年05月07日 11:28:59
* @param application 应用 * @param application 应用
* @param sender 发送者 * @param sender 发送者
* @param toUserIdList 接收人用户id * @param toUserIdList 接收人用户id
* @param conversationExt 会话拓展信息,该参数非必填,如果传入,则会话名称和 * @param conversationExt 会话拓展信息,该参数非必填,如果传入,则会话名称和
* @param conversationMapGroupById * @param conversationMapGroupById
* @param conMembersMapGroupByConId * @param conMembersMapGroupByConId
* @Author luozh
* @Date 2022年05月07日 11:28:59
* @Return * @Return
*/ */
private void beforePublishPrivateMessage(ImApplication application, private void beforePublishPrivateMessage(ImApplication application,
...@@ -1031,6 +1122,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -1031,6 +1122,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
/** /**
* 拼装发送消息体 * 拼装发送消息体
*
* @param message * @param message
* @param imClientSender * @param imClientSender
* @param appId * @param appId
...@@ -1058,13 +1150,14 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -1058,13 +1150,14 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
/** /**
* 组装imMessage * 组装imMessage
* @Author luozh *
* @Date 2022年05月05日 06:17:00
* @param appId 发送群聊消息入参 * @param appId 发送群聊消息入参
* @param sender 发送群聊消息入参 * @param sender 发送群聊消息入参
* @param toConversationId 发送群聊消息入参 * @param toConversationId 发送群聊消息入参
* @param messageType 发送群聊消息入参 * @param messageType 发送群聊消息入参
* @param content 发送群聊消息入参 * @param content 发送群聊消息入参
* @Author luozh
* @Date 2022年05月05日 06:17:00
* @Return ImMessage * @Return ImMessage
*/ */
private ImMessage assembleImMessage(Long appId, ImClient sender, Long toConversationId, String messageType, private ImMessage assembleImMessage(Long appId, ImClient sender, Long toConversationId, String messageType,
...@@ -1107,6 +1200,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -1107,6 +1200,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
/** /**
* 发送消息给在线客户 * 发送消息给在线客户
*
* @param receiverClientId * @param receiverClientId
* @param imMessageOnlineSend * @param imMessageOnlineSend
*/ */
...@@ -1124,12 +1218,13 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -1124,12 +1218,13 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
/** /**
* 推送消息至离线成员 * 推送消息至离线成员
* @Author luozh *
* @Date 2022年05月06日 05:23:58
* @param application * @param application
* @param members * @param members
* @param pushContent * @param pushContent
* @param pushExt * @param pushExt
* @Author luozh
* @Date 2022年05月06日 05:23:58
* @Return * @Return
*/ */
private void pushMsgToOfflineMembers(ImApplication application, ImConversationMembers members, private void pushMsgToOfflineMembers(ImApplication application, ImConversationMembers members,
......
...@@ -95,7 +95,10 @@ public class ResourcePathConstants { ...@@ -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 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 { ...@@ -192,4 +195,6 @@ public class ResourcePathConstants {
* 后台状态下未接到音视频判断 * 后台状态下未接到音视频判断
*/ */
public static final String GET_MISSED_RTCRECORD="/api/rtcRecord/missedConversation"; public static final String GET_MISSED_RTCRECORD="/api/rtcRecord/missedConversation";
} }
...@@ -3,6 +3,7 @@ package com.wecloud.im.sdk; ...@@ -3,6 +3,7 @@ package com.wecloud.im.sdk;
import com.wecloud.im.sdk.model.*; import com.wecloud.im.sdk.model.*;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -404,4 +405,12 @@ public interface WecloudIm { ...@@ -404,4 +405,12 @@ public interface WecloudIm {
* @Return * @Return
*/ */
MissedRtcRecord getMissedRtcRecord(String UserId); MissedRtcRecord getMissedRtcRecord(String UserId);
/**
* 分页获取消息列表
* @Author nanqianhao
* @Date 2022年05月25日 09:36:47
* @param
* @Return
*/
List<WeCloudMessage> getPageImMessages(String beginId);
} }
...@@ -6,6 +6,7 @@ import com.wecloud.im.sdk.internal.*; ...@@ -6,6 +6,7 @@ import com.wecloud.im.sdk.internal.*;
import com.wecloud.im.sdk.model.*; import com.wecloud.im.sdk.model.*;
import java.net.URL; import java.net.URL;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -350,7 +351,12 @@ public class WecloudImClient implements WecloudIm { ...@@ -350,7 +351,12 @@ public class WecloudImClient implements WecloudIm {
RtcRecordRequest rtcRecordRequest = BeanUtil.toBean(record, RtcRecordRequest.class); RtcRecordRequest rtcRecordRequest = BeanUtil.toBean(record, RtcRecordRequest.class);
return imRtcRecordOperation.listRtcRecords(rtcRecordRequest); return imRtcRecordOperation.listRtcRecords(rtcRecordRequest);
} }
@Override
public List<WeCloudMessage> getPageImMessages(String beginId) {
MessageRequest messageRequest =
MessageRequest.builder().beginId(beginId).build();
return imMessageOperation.listMessage(messageRequest);
}
@Override @Override
public Boolean singleUserNotification(SingleUserNotification singleUserNotification) { public Boolean singleUserNotification(SingleUserNotification singleUserNotification) {
SingleUserNotificationRequest singleUserNotificationRequest = BeanUtil.toBean(singleUserNotification, SingleUserNotificationRequest singleUserNotificationRequest = BeanUtil.toBean(singleUserNotification,
...@@ -366,6 +372,7 @@ public class WecloudImClient implements WecloudIm { ...@@ -366,6 +372,7 @@ public class WecloudImClient implements WecloudIm {
} }
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);
......
/*
* 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();
}
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;
}
}
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;
}
}
package com.wecloud.im.sdk.internal; package com.wecloud.im.sdk.internal;
import java.net.URL; import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
...@@ -8,16 +10,22 @@ import com.alibaba.fastjson.JSONObject; ...@@ -8,16 +10,22 @@ import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.wecloud.im.sdk.common.HttpMethod; import com.wecloud.im.sdk.common.HttpMethod;
import com.wecloud.im.sdk.common.RequestMessage; 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.PublishGroupChatMessageRequest;
import com.wecloud.im.sdk.model.PublishGroupChatStatusMessageRequest; import com.wecloud.im.sdk.model.PublishGroupChatStatusMessageRequest;
import com.wecloud.im.sdk.model.PublishPrivateChatMessageRequest; import com.wecloud.im.sdk.model.PublishPrivateChatMessageRequest;
import com.wecloud.im.sdk.model.PublishPrivateChatStatusMessageRequest; import com.wecloud.im.sdk.model.PublishPrivateChatStatusMessageRequest;
import com.wecloud.im.sdk.model.WeCloudMessage;
import com.wecloud.im.sdk.model.message.WecloudImMessage; 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_MESSAGE_REQUEST;
import static com.wecloud.im.sdk.ResourcePathConstants.PUBLISH_GROUP_CHAT_STATUS_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_MESSAGE_REQUEST;
import static com.wecloud.im.sdk.ResourcePathConstants.PUBLISH_PRIVATE_CHAT_STATUS_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; import static com.wecloud.im.sdk.utils.CodingUtils.assertParameterNotNull;
/** /**
...@@ -135,4 +143,18 @@ public class WecloudImMessageOperation extends WecloudImOperation { ...@@ -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;
}
} }
...@@ -6,10 +6,13 @@ import com.wecloud.im.sdk.common.HttpMethod; ...@@ -6,10 +6,13 @@ import com.wecloud.im.sdk.common.HttpMethod;
import com.wecloud.im.sdk.common.RequestMessage; import com.wecloud.im.sdk.common.RequestMessage;
import com.wecloud.im.sdk.common.auth.Credentials; import com.wecloud.im.sdk.common.auth.Credentials;
import com.wecloud.im.sdk.exception.WecloudImException; 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 okhttp3.Response;
import java.net.URL; import java.net.URL;
import java.util.Date; 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.internal.ImHeaders.X_IM_FROM;
import static com.wecloud.im.sdk.utils.HttpHeaders.CONTENT_TYPE; import static com.wecloud.im.sdk.utils.HttpHeaders.CONTENT_TYPE;
......
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;
}
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;
}
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