Commit bf105969 by Shadow

增加WecloudImMessage类

发布消息content要求传入WecloudImMessage类型
parent 6d569c09
......@@ -3,7 +3,10 @@ package com.wecloud.im.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Map;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* 发送群聊消息入参
......@@ -30,9 +33,9 @@ public class GroupChatMessageParam {
@ApiModelProperty("消息类型")
private String messageType;
@NotEmpty(message = "消息不能为空")
@NotNull(message = "消息不能为空")
@ApiModelProperty("消息")
private String content;
private Map<String, Object> content;
@ApiModelProperty("指定离线推送通知中的推送内容")
private String pushContent;
......
......@@ -3,7 +3,10 @@ package com.wecloud.im.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Map;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
*
......@@ -44,9 +47,9 @@ public class GroupChatStatusMessageParam {
/**
* 消息
*/
@NotEmpty(message = "消息不能为空")
@NotNull(message = "消息不能为空")
@ApiModelProperty("消息")
private String content;
private Map<String, Object> content;
/**
* 是否过滤黑名单
......
......@@ -3,7 +3,10 @@ package com.wecloud.im.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Map;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* 单聊消息
......@@ -37,9 +40,9 @@ public class PrivateChatMessageParam {
/**
* 消息
*/
@NotEmpty(message = "消息不能为空")
@NotNull(message = "消息不能为空")
@ApiModelProperty("消息")
private String content;
private Map<String, Object> content;
/**
* 指定离线推送通知中的推送内容
......
......@@ -3,7 +3,10 @@ package com.wecloud.im.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Map;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
*
......@@ -38,9 +41,9 @@ public class PrivateChatStatusMessageParam {
/**
* 消息
*/
@NotEmpty(message = "消息不能为空")
@NotNull(message = "消息不能为空")
@ApiModelProperty("消息")
private String content;
private Map<String, Object> content;
/**
* 是否过滤黑名单
......
......@@ -643,7 +643,8 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
}
// 组装消息
ImMessage message = assembleImMessage(appId, sender, conversation.getId(), param.getMessageType(), false, param.getContent());
ImMessage message = assembleImMessage(appId, sender, conversation.getId(), param.getMessageType(), false,
JSONObject.toJSONString(param.getContent()));
// 持久化
this.save(message);
// 拼装发送消息体
......@@ -711,7 +712,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
// 组装消息
ImMessage message = assembleImMessage(appId, sender, conversation.getId(), param.getMessageType(), true,
param.getContent());
JSONObject.toJSONString(param.getContent()));
if (isToUser && CollectionUtils.isNotEmpty(membersList)) {
// 指定群内成员发送 落库接收人 仅限少量接收人场景时落库
List<Long> memberFkClientIds = membersList.stream().map(m -> m.getFkClientId()).collect(Collectors.toList());
......@@ -760,7 +761,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
List<ImConversationMembers> membersList = conMembersMapGroupByConId.getOrDefault(conversationId,
Collections.emptyList());
// 组装消息
ImMessage message = assembleImMessage(appId, sender, conversation.getId(), param.getMessageType(), false, param.getContent());
ImMessage message = assembleImMessage(appId, sender, conversation.getId(), param.getMessageType(), false, JSONObject.toJSONString(param.getContent()));
// 持久化
this.save(message);
// 拼装发送消息体
......@@ -810,7 +811,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
Collections.emptyList());
// 组装消息
ImMessage message = assembleImMessage(appId, sender, conversation.getId(), param.getMessageType(), true,
param.getContent());
JSONObject.toJSONString(param.getContent()));
// 持久化
this.save(message);
// 拼装发送消息体
......
......@@ -33,11 +33,10 @@ public interface WecloudIm {
* 注册客户端
* @Author luozh
* @Date 2022年04月13日 04:25:52
* @param userId
* @param headPortrait
* @param nickname
* @param userId 用户id
* @param headPortrait 头像
* @param nickname 昵称
* @Return
* @return
*/
ImClient registerUser(String userId, String headPortrait, String nickname);
......
......@@ -12,6 +12,7 @@ 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.message.WecloudImMessage;
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;
......@@ -42,7 +43,7 @@ public class WecloudImMessageOperation extends WecloudImOperation {
String fromUserId = publishGroupChatMessageRequest.getFromUserId();
String toGroupIds = publishGroupChatMessageRequest.getToGroupIds();
String messageType = publishGroupChatMessageRequest.getMessageType();
String content = publishGroupChatMessageRequest.getContent();
WecloudImMessage content = publishGroupChatMessageRequest.getContent();
// 必填参数校验
assertParameterNotNull(fromUserId, "fromUserId");
assertParameterNotNull(toGroupIds, "toGroupIds");
......@@ -71,7 +72,7 @@ public class WecloudImMessageOperation extends WecloudImOperation {
String fromUserId = publishGroupChatStatusMessageRequest.getFromUserId();
String toGroupIds = publishGroupChatStatusMessageRequest.getToGroupIds();
String messageType = publishGroupChatStatusMessageRequest.getMessageType();
String content = publishGroupChatStatusMessageRequest.getContent();
WecloudImMessage content = publishGroupChatStatusMessageRequest.getContent();
// 必填参数校验
assertParameterNotNull(fromUserId, "fromUserId");
assertParameterNotNull(toGroupIds, "toGroupIds");
......@@ -93,7 +94,7 @@ public class WecloudImMessageOperation extends WecloudImOperation {
String fromUserId = publishPrivateChatMessageRequest.getFromUserId();
String toUserIds = publishPrivateChatMessageRequest.getToUserIds();
String messageType = publishPrivateChatMessageRequest.getMessageType();
String content = publishPrivateChatMessageRequest.getContent();
WecloudImMessage content = publishPrivateChatMessageRequest.getContent();
// 必填参数校验
assertParameterNotNull(fromUserId, "fromUserId");
assertParameterNotNull(toUserIds, "toUserIds");
......@@ -115,7 +116,7 @@ public class WecloudImMessageOperation extends WecloudImOperation {
String fromUserId = publishPrivateChatStatusMessageRequest.getFromUserId();
String toUserIds = publishPrivateChatStatusMessageRequest.getToUserIds();
String messageType = publishPrivateChatStatusMessageRequest.getMessageType();
String content = publishPrivateChatStatusMessageRequest.getContent();
WecloudImMessage content = publishPrivateChatStatusMessageRequest.getContent();
// 必填参数校验
assertParameterNotNull(fromUserId, "fromUserId");
assertParameterNotNull(toUserIds, "toUserIds");
......
......@@ -2,6 +2,8 @@ package com.wecloud.im.sdk.model;
import lombok.Data;
import com.wecloud.im.sdk.model.message.WecloudImMessage;
/**
*
* @Author luozh
......@@ -34,7 +36,7 @@ public class GroupChatMessage {
/**
* 消息
*/
private String content;
private WecloudImMessage content;
/**
* 指定离线推送通知中的推送内容
......
......@@ -2,6 +2,8 @@ package com.wecloud.im.sdk.model;
import lombok.Data;
import com.wecloud.im.sdk.model.message.WecloudImMessage;
/**
*
* @Author luozh
......@@ -34,7 +36,7 @@ public class GroupChatStatusMessage {
/**
* 消息
*/
private String content;
private WecloudImMessage content;
/**
* 是否过滤黑名单
......
......@@ -2,6 +2,8 @@ package com.wecloud.im.sdk.model;
import lombok.Data;
import com.wecloud.im.sdk.model.message.WecloudImMessage;
/**
* 单聊消息
* @Author luozh
......@@ -28,7 +30,7 @@ public class PrivateChatMessage {
/**
* 消息
*/
private String content;
private WecloudImMessage content;
/**
* 指定离线推送通知中的推送内容
......
......@@ -2,6 +2,8 @@ package com.wecloud.im.sdk.model;
import lombok.Data;
import com.wecloud.im.sdk.model.message.WecloudImMessage;
/**
*
* @Author luozh
......@@ -29,7 +31,7 @@ public class PrivateChatStatusMessage {
/**
* 消息
*/
private String content;
private WecloudImMessage content;
/**
* 是否过滤黑名单
......
......@@ -3,6 +3,8 @@ package com.wecloud.im.sdk.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.wecloud.im.sdk.model.message.WecloudImMessage;
/**
* 发布群聊消息请求
* @Author luozh
......@@ -36,7 +38,7 @@ public class PublishGroupChatMessageRequest extends WebServiceRequest {
/**
* 消息
*/
private String content;
private WecloudImMessage content;
/**
* 指定离线推送通知中的推送内容
......
......@@ -3,6 +3,8 @@ package com.wecloud.im.sdk.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.wecloud.im.sdk.model.message.WecloudImMessage;
/**
* 发布群聊消息请求
* @Author luozh
......@@ -36,7 +38,7 @@ public class PublishGroupChatStatusMessageRequest extends WebServiceRequest {
/**
* 消息
*/
private String content;
private WecloudImMessage content;
/**
* 是否过滤黑名单
......
......@@ -3,6 +3,8 @@ package com.wecloud.im.sdk.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.wecloud.im.sdk.model.message.WecloudImMessage;
/**
* 单聊消息
* @Author luozh
......@@ -30,7 +32,7 @@ public class PublishPrivateChatMessageRequest extends WebServiceRequest {
/**
* 消息
*/
private String content;
private WecloudImMessage content;
/**
* 指定离线推送通知中的推送内容
......
......@@ -3,6 +3,8 @@ package com.wecloud.im.sdk.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.wecloud.im.sdk.model.message.WecloudImMessage;
/**
*
* @Author luozh
......@@ -31,7 +33,7 @@ public class PublishPrivateChatStatusMessageRequest extends WebServiceRequest {
/**
* 消息
*/
private String content;
private WecloudImMessage content;
/**
* 是否过滤黑名单
......
package com.wecloud.im.sdk.model.message;
import lombok.Getter;
import lombok.Setter;
import com.wecloud.im.sdk.enums.MessageTypeEnum;
/**
......@@ -11,12 +8,12 @@ import com.wecloud.im.sdk.enums.MessageTypeEnum;
* @Date 2022年05月07日 13:59
* @Version 1.0
*/
@Getter
@Setter
public class FileMessage extends BaseMessage {
public class FileMessage extends WecloudImBaseMessage {
public FileMessage() {
super(MessageTypeEnum.FILE);
}
private MessageFile file;
public void setFile(MessageFile file) {
this.put("file", file);
}
}
......@@ -13,10 +13,12 @@ import com.wecloud.im.sdk.enums.MessageTypeEnum;
*/
@Getter
@Setter
public class PicMessage extends BaseMessage {
public class PicMessage extends WecloudImBaseMessage {
public PicMessage() {
super(MessageTypeEnum.IMAGE);
}
private MessageImageFile file;
public void setFile(MessageImageFile file) {
this.put("file", file);
}
}
......@@ -11,15 +11,11 @@ import com.wecloud.im.sdk.enums.MessageTypeEnum;
* @Date 2022年05月07日 13:59
* @Version 1.0
*/
@Getter
@Setter
public class PositionMessage extends BaseMessage {
public class PositionMessage extends WecloudImBaseMessage {
public PositionMessage() {
super(MessageTypeEnum.POSITION);
}
private MetaData metaData;
@Setter
@Getter
public static class MetaData {
......@@ -34,4 +30,8 @@ public class PositionMessage extends BaseMessage {
*/
private Double latitude;
}
public void setMetaData(MetaData metaData) {
this.put("metaData", metaData);
}
}
package com.wecloud.im.sdk.model.message;
import lombok.Getter;
import lombok.Setter;
import com.wecloud.im.sdk.enums.MessageTypeEnum;
/**
......@@ -11,14 +8,14 @@ import com.wecloud.im.sdk.enums.MessageTypeEnum;
* @Date 2022年05月07日 13:56
* @Version 1.0
*/
@Getter
@Setter
public class TextMessage extends BaseMessage {
public class TextMessage extends WecloudImBaseMessage {
public TextMessage() {
super(MessageTypeEnum.TEXT);
}
private String text;
public void setText(String text) {
this.put("text", text);
}
}
package com.wecloud.im.sdk.model.message;
import lombok.Getter;
import lombok.Setter;
import com.wecloud.im.sdk.enums.MessageTypeEnum;
/**
......@@ -11,12 +8,12 @@ import com.wecloud.im.sdk.enums.MessageTypeEnum;
* @Date 2022年05月07日 13:59
* @Version 1.0
*/
@Getter
@Setter
public class VideoMessage extends BaseMessage {
public class VideoMessage extends WecloudImBaseMessage {
public VideoMessage() {
super(MessageTypeEnum.VIDEO);
}
private MessageVideoFile file;
public void setFile(MessageVideoFile file) {
this.put("file", file);
}
}
package com.wecloud.im.sdk.model.message;
import lombok.Getter;
import lombok.Setter;
import com.wecloud.im.sdk.enums.MessageTypeEnum;
/**
......@@ -11,12 +8,12 @@ import com.wecloud.im.sdk.enums.MessageTypeEnum;
* @Date 2022年05月07日 13:59
* @Version 1.0
*/
@Getter
@Setter
public class VoiceMessage extends BaseMessage {
public class VoiceMessage extends WecloudImBaseMessage {
public VoiceMessage() {
super(MessageTypeEnum.AUDIO);
}
private MessageVoiceFile file;
public void setFile(MessageVoiceFile file) {
this.put("file", file);
}
}
package com.wecloud.im.sdk.model.message;
import lombok.Getter;
import lombok.Setter;
import com.wecloud.im.sdk.enums.MessageTypeEnum;
/**
*
* @Author luozh
* @Date 2022年05月07日 13:51
* @Date 2022年05月26日 14:09
* @Version 1.0
*/
@Getter
public class BaseMessage {
public class WecloudImBaseMessage extends WecloudImMessage {
/**
* 类型
*/
private Integer type;
/**
* 用来给开发者存储拓展的自定义属性字段
*/
@Setter
private Object attrs;
public BaseMessage(MessageTypeEnum type) {
public WecloudImBaseMessage(MessageTypeEnum type) {
this.setType(type);
}
......@@ -37,6 +22,10 @@ public class BaseMessage {
* @Return
*/
protected void setType(MessageTypeEnum type) {
this.type = type.getCode();
this.put("type", type.getCode());
}
protected void setAttrs(Object attrs) {
this.put("attrs", attrs);
}
}
package com.wecloud.im.sdk.model.message;
import java.util.HashMap;
/**
*
* @Author luozh
* @Date 2022年05月07日 13:51
* @Version 1.0
*/
public class WecloudImMessage extends HashMap<String, Object> {
}
......@@ -3,7 +3,6 @@ package com.wecloud.im.sdk.sample;
import java.util.Date;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
import com.wecloud.im.sdk.WecloudIm;
import com.wecloud.im.sdk.WecloudImClientBuilder;
......@@ -41,11 +40,11 @@ public class PublishGroupChatMessageSample {
groupChatMessage.setSilent(silent);
groupChatMessage.setMessageType("-1");
groupChatMessage.setContent(JSONUtil.toJsonStr(buildTextMessage()));
groupChatMessage.setContent(buildTextMessage());
Boolean textMessageResult = im.publishGroupChatMessage(groupChatMessage);
groupChatMessage.setMessageType("-2");
groupChatMessage.setContent(JSONUtil.toJsonStr(buildPicMessage()));
groupChatMessage.setContent(buildPicMessage());
Boolean picMessageResult = im.publishGroupChatMessage(groupChatMessage);
......
......@@ -3,7 +3,6 @@ package com.wecloud.im.sdk.sample;
import java.util.Date;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
import com.wecloud.im.sdk.WecloudIm;
import com.wecloud.im.sdk.WecloudImClientBuilder;
......@@ -26,8 +25,8 @@ public class PublishPrivateChatMessageSample {
"QizKVHcILRWp6Td2",
"287d04828099fb7de871e9dda845fa8b6b2302faf2ab3737");
String senderId = "1512322637488148480";
String toGroupIds = "1513691265777217536";
String senderId = "1526788710924972032";
String toUserId = "1529434627821957120";
String messageType = "-1";
TextMessage textMessage = new TextMessage();
......@@ -36,9 +35,9 @@ public class PublishPrivateChatMessageSample {
boolean silent = true;
PrivateChatMessage privateChatMessage = new PrivateChatMessage();
privateChatMessage.setFromUserId(senderId);
privateChatMessage.setToUserIds(toGroupIds);
privateChatMessage.setToUserIds(toUserId);
privateChatMessage.setMessageType(messageType);
privateChatMessage.setContent(JSONUtil.toJsonStr(textMessage));
privateChatMessage.setContent(textMessage);
privateChatMessage.setPushContent("");
privateChatMessage.setIncludeSender(false);
privateChatMessage.setPersisted(true);
......
......@@ -2,14 +2,13 @@ package com.wecloud.im.sdk.sample;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
import com.wecloud.im.sdk.WecloudIm;
import com.wecloud.im.sdk.WecloudImClientBuilder;
import com.wecloud.im.sdk.model.PrivateChatStatusMessage;
import com.wecloud.im.sdk.model.message.WecloudImMessage;
/**
* 发布单聊消息
......@@ -31,7 +30,7 @@ public class PublishPrivateChatMessageStatusSample {
String toGroupIds = "1513691265777217536";
String messageType = "-1";
Map<String, Object> content = new HashMap<>();
WecloudImMessage content = new WecloudImMessage();
content.put("toConversation", "1519985463165931520");
content.put("type", -1);
content.put("text", "这是测试消息: " + DateUtil.formatDateTime(new Date()));
......@@ -45,7 +44,7 @@ public class PublishPrivateChatMessageStatusSample {
privateChatMessage.setFromUserId(senderId);
privateChatMessage.setToUserIds(toGroupIds);
privateChatMessage.setMessageType(messageType);
privateChatMessage.setContent(JSONUtil.toJsonStr(content));
privateChatMessage.setContent(content);
privateChatMessage.setIncludeBlacklist(false);
privateChatMessage.setIncludeSender(false);
......
......@@ -24,6 +24,7 @@ public class SignTest {
Map<String, String> headers = new HashMap<>();
headers.put(ImHeaders.DATE, date);
headers.put(ImHeaders.CONTENT_TYPE, "application/json; charset=utf-8");
headers.put(ImHeaders.X_IM_FROM, "server");
// 请求参数
Map<String, Object> param = new HashMap<>();
// 发送请求
......@@ -34,7 +35,7 @@ public class SignTest {
String canonicalString = SignUtils.buildCanonicalString("POST", resourcePath, request);
String signature = new HmacSHA256Signature().computeSignature("287d04ds8099fb7de871e9dda845fa8b6b2302faf2ab3737", canonicalString);
String authorization = SignUtils.composeRequestAuthorization("QizKVHcILRWp6Fd3", signature);
System.out.println("canonicalString: " + canonicalString);
System.out.println("canonicalString: \n" + canonicalString);
System.out.println("signature: " + signature);
System.out.println("Authorization header: " + authorization);
......
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