Commit 703ea8a6 by 罗长华

完善sdk群聊消息发送接口

数据库msgType类型使用String
parent 161b1a72
......@@ -226,7 +226,7 @@ public class NormalChatAction {
imMessageOnlineSend.setWithdraw(imMessage.getWithdraw());
imMessageOnlineSend.setEvent(imMessage.getEvent());
imMessageOnlineSend.setSystemFlag(imMessage.getSystemFlag());
imMessageOnlineSend.setType(data.getType());
imMessageOnlineSend.setType(data.getType() + "");
imMessageOnlineSend.setAt(imMessage.getAt());
return imMessageOnlineSend;
}
......
package com.wecloud.im.chatroom.action;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.netty.channel.Channel;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.wecloud.dispatch.annotation.ActionMapping;
import com.wecloud.dispatch.common.BaseRequest;
import com.wecloud.dispatch.extend.ActionRequest;
......@@ -18,19 +33,6 @@ import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.im.ws.sender.ChannelSender;
import com.wecloud.utils.JsonUtils;
import com.wecloud.utils.SnowflakeUtil;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.netty.channel.Channel;
import io.netty.channel.socket.nio.NioSocketChannel;
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.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @Author wenzhida
......@@ -134,7 +136,7 @@ public class ChatRoomAction {
imMessageOnlineSend.setWithdraw(false);
imMessageOnlineSend.setEvent(false);
imMessageOnlineSend.setSystemFlag(false);
imMessageOnlineSend.setType(data.getType());
imMessageOnlineSend.setType(data.getType() + "");
imMessageOnlineSend.setAt(data.getAt());
return imMessageOnlineSend;
}
......
......@@ -117,5 +117,19 @@ public class ImConversationMembersController extends BaseController {
return ApiResult.ok(imConversationMembersService.addUser(param));
}
/**
*
* @Author luozh
* @Date 2022年04月29日 03:59:54
* @param
* @Return
*/
@ApiOperation(value = "消息发布")
@PostMapping("/publish")
public ApiResult<Boolean> publish() {
return null;
}
}
......@@ -21,8 +21,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.wecloud.im.param.GetReadersParam;
import com.wecloud.im.param.GroupChatMessageParam;
import com.wecloud.im.param.GroupChatStatusMessageParam;
import com.wecloud.im.param.ImHistoryMessagePageParam;
import com.wecloud.im.param.MsgDeleteParam;
import com.wecloud.im.param.PrivateChatMessageParam;
import com.wecloud.im.param.PrivateChatStatusMessageParam;
import com.wecloud.im.param.add.ImMsgRecall;
import com.wecloud.im.param.add.ImMsgUpdate;
import com.wecloud.im.service.ImMessageService;
......@@ -60,7 +64,7 @@ public class ImMessageController extends BaseController {
@PostMapping("/delete")
@ApiOperation(value = "删除消息", notes = "单条消息与批量消息删除共用")
public ApiResult<Boolean> deleteMsg(@RequestBody MsgDeleteParam param) {
if(param == null) {
if (param == null) {
return ApiResult.fail(ApiCode.PARAMETER_EXCEPTION, null);
}
if (CollectionUtils.isEmpty(param.getMsgIds())) {
......@@ -109,5 +113,30 @@ public class ImMessageController extends BaseController {
return ApiResult.ok(readerList);
}
@ApiOperation("发布群聊消息")
@PostMapping("/group/publish")
public ApiResult<Boolean> groupMessagePublish(@RequestBody @Validated GroupChatMessageParam param) {
// 参数校验
return ApiResult.ok(imMessageService.groupMessagePublish(param));
}
@ApiOperation("发布群聊状态消息")
@PostMapping("/group/status/publish")
public ApiResult<Boolean> groupStatusMessagePublish(@RequestBody @Validated GroupChatStatusMessageParam param) {
return ApiResult.ok(imMessageService.groupStatusMessagePublish(param));
}
@ApiOperation("发布单聊消息")
@PostMapping("/private/publish")
public ApiResult<Boolean> privateMessagePublish(@RequestBody @Validated PrivateChatMessageParam param) {
return ApiResult.ok(imMessageService.privateMessagePublish(param));
}
@ApiOperation("发布单聊状态消息")
@PostMapping("/private/status/publish")
public ApiResult<Boolean> privateStatusMessagePublish(@RequestBody @Validated PrivateChatStatusMessageParam param) {
return ApiResult.ok(imMessageService.privateStatusMessagePublish(param));
}
}
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -9,9 +7,13 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
/**
* 消息存储表
*
......@@ -74,7 +76,7 @@ public class ImMessage extends BaseEntity {
private Long fkConversationId;
@ApiModelProperty("消息类型")
private Integer msgType;
private String msgType;
@ApiModelProperty("是否删除 1-未删除 2-已删除")
private Integer isDelete;
......
......@@ -7,9 +7,9 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.Map;
import javax.validation.constraints.NotNull;
/**
* 消息在线推送
......@@ -29,7 +29,7 @@ public class ImMessageOnlineSend extends BaseEntity {
* @see com.wecloud.im.ws.enums.MsgTypeEnum
*/
@ApiModelProperty("消息类型")
private Integer type;
private String type;
@NotNull(message = "消息id不能为空")
@ApiModelProperty("消息id")
......@@ -45,7 +45,7 @@ public class ImMessageOnlineSend extends BaseEntity {
private String sender;
@ApiModelProperty("内容")
private Map content;
private Object content;
@ApiModelProperty("0未撤回; 1已撤回")
private Boolean withdraw;
......
package com.wecloud.im.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
/**
* 发送群聊消息入参
* @Author luozh
* @Date 2022年04月29日 16:00
* @Version 1.0
*/
@Data
public class GroupChatMessageParam {
@NotEmpty(message = "发送人id不能为空")
@ApiModelProperty("发送人id")
private String fromUserId;
@NotEmpty(message = "接收群id不能为空")
@ApiModelProperty("接收群id")
private String toGroupIds;
@ApiModelProperty("指定一个或多个用户")
private String toUserIds;
@NotEmpty(message = "消息类型不能为空")
@ApiModelProperty("消息类型")
private String messageType;
@NotEmpty(message = "消息不能为空")
@ApiModelProperty("消息")
private String content;
@ApiModelProperty("指定离线推送通知中的推送内容")
private String pushContent;
@ApiModelProperty("是否包含发送用户")
private Boolean includeSender;
@ApiModelProperty("是否存储此条消息")
private Boolean persisted;
@ApiModelProperty("是否为@消息")
private Boolean mentioned;
@ApiModelProperty("是否为静默消息")
private Boolean silent;
@ApiModelProperty("推送配置")
private PushExtParam pushExt;
}
package com.wecloud.im.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
/**
*
* @Author luozh
* @Date 2022年05月05日 10:08
* @Version 1.0
*/
@Data
public class GroupChatStatusMessageParam {
/**
* 发送人客户端id
*/
@NotEmpty(message = "发送人id不能为空")
@ApiModelProperty("发送人id")
private String fromUserId;
/**
* 接收群id
*/
@NotEmpty(message = "接收群id不能为空")
@ApiModelProperty("接收群id")
private String toGroupIds;
/**
* 消息类型
*/
@NotEmpty(message = "消息类型不能为空")
@ApiModelProperty("消息类型")
private String messageType;
/**
* 消息
*/
@NotEmpty(message = "消息不能为空")
@ApiModelProperty("消息")
private String content;
/**
* 是否过滤黑名单
*/
@ApiModelProperty("是否过滤黑名单")
private Boolean includeBlacklist;
/**
* 发送用户是否接收
*/
@ApiModelProperty("发送用户是否接收")
private Boolean includeSender;
}
package com.wecloud.im.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
/**
* 单聊消息
* @Author luozh
* @Date 2022年05月05日 11:49
* @Version 1.0
*/
@Data
public class PrivateChatMessageParam {
/**
* 发送人id
*/
@NotEmpty(message = "发送人id不能为空")
@ApiModelProperty("发送人id")
private String fromUserId;
/**
* 指定一个或多个用户
*/
@NotEmpty(message = "接收用户id不能为空")
@ApiModelProperty("接收用户id")
private String toUserIds;
/**
* 消息类型
*/
@NotEmpty(message = "消息类型不能为空")
@ApiModelProperty("消息类型")
private String messageType;
/**
* 消息
*/
@NotEmpty(message = "消息不能为空")
@ApiModelProperty("消息")
private String content;
/**
* 指定离线推送通知中的推送内容
*/
@ApiModelProperty("指定离线推送通知中的推送内容")
private String pushContent;
/**
* 是否包含发送用户
*/
@ApiModelProperty("是否包含发送用户")
private Boolean includeSender;
/**
* 是否过滤黑名单
*/
@ApiModelProperty("是否过滤黑名单")
private Boolean includeBlacklist;
/**
* 是否存储此条消息
*/
@ApiModelProperty("是否存储此条消息")
private Boolean persisted;
/**
* 是否为静默消息
*/
@ApiModelProperty("是否为静默消息")
private Boolean silent;
/**
* 推送拓展配置
*/
@ApiModelProperty("推送拓展配置")
private PushExtParam pushExt;
}
package com.wecloud.im.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
/**
*
* @Author luozh
* @Date 2022年05月05日 10:08
* @Version 1.0
*/
@Data
public class PrivateChatStatusMessageParam {
/**
* 发送人客户端id
*/
@NotEmpty(message = "发送人id不能为空")
@ApiModelProperty("发送人id")
private String fromUserId;
/**
* 接收群id
*/
@NotEmpty(message = "接收用户id不能为空")
@ApiModelProperty("接收用户id")
private String toUserIds;
/**
* 消息类型
*/
@NotEmpty(message = "消息类型不能为空")
@ApiModelProperty("消息类型")
private String messageType;
/**
* 消息
*/
@NotEmpty(message = "消息不能为空")
@ApiModelProperty("消息")
private String content;
/**
* 是否过滤黑名单
*/
@ApiModelProperty("是否过滤黑名单")
private Boolean includeBlacklist;
/**
* 发送用户是否接收
*/
@ApiModelProperty("发送用户是否接收")
private Boolean includeSender;
}
package com.wecloud.im.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 推送拓展参数
* @Author luozh
* @Date 2022年04月29日 17:07
* @Version 1.0
*/
@Data
public class PushExtParam {
@ApiModelProperty("通知栏显示主题")
private String title;
@ApiModelProperty("按厂商设置不同推送属性。支持的推送通道值为 `MI`(小米)、`HW`(华为)、`OPPO`、`VIVO`")
private String pushChannel;
@ApiModelProperty("通知渠道的 ID")
private String channelId;
@ApiModelProperty("华为通知栏消息优先级,取值 NORMAL、LOW,默认为 NORMAL 重要消息")
private String hwPriority;
@ApiModelProperty("华为推送自定义的通知栏消息右侧大图标 URL,如果不设置,则不展示通知栏右侧图标")
private String hwImage;
@ApiModelProperty("小米推送自定义的通知栏消息右侧图标 URL")
private String miLargeIconUri;
@ApiModelProperty("vivo 推送通道类型。0 为运营消息、1 为系统消息")
private String vivoChannelType;
@ApiModelProperty("iOS 平台通知栏分组 ID")
private String iosGroupId;
@ApiModelProperty("iOS 平台")
private String iosApnsCollapseId;
}
......@@ -13,9 +13,13 @@ import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImMessage;
import com.wecloud.im.param.ChatContentVo;
import com.wecloud.im.param.GetReadersParam;
import com.wecloud.im.param.GroupChatMessageParam;
import com.wecloud.im.param.GroupChatStatusMessageParam;
import com.wecloud.im.param.ImClientSimpleDto;
import com.wecloud.im.param.ImHistoryMessagePageParam;
import com.wecloud.im.param.MsgDeleteParam;
import com.wecloud.im.param.PrivateChatMessageParam;
import com.wecloud.im.param.PrivateChatStatusMessageParam;
import com.wecloud.im.param.add.ImMsgRecall;
import com.wecloud.im.param.add.ImMsgSendToOnlineClient;
import com.wecloud.im.param.add.ImMsgUpdate;
......@@ -132,4 +136,38 @@ public interface ImMessageService extends BaseService<ImMessage> {
*/
ReaderList getReaders(GetReadersParam param);
/**
* 发送群聊消息
* @param param
* @return
*/
Boolean groupMessagePublish(GroupChatMessageParam param);
/**
* 发送群聊状态消息
* @Author luozh
* @Date 2022年05月05日 02:32:58
* @param param
* @Return
*/
Boolean groupStatusMessagePublish(GroupChatStatusMessageParam param);
/**
* 发送单聊消息
* @Author luozh
* @Date 2022年05月05日 02:33:26
* @param param
* @Return
*/
Boolean privateMessagePublish(PrivateChatMessageParam param);
/**
* 发送单聊状态消息
* @Author luozh
* @Date 2022年05月05日 02:33:56
* @param param
* @Return
*/
Boolean privateStatusMessagePublish(PrivateChatStatusMessageParam param);
}
......@@ -136,7 +136,7 @@ public class ImConversationMembersServiceImpl extends BaseServiceImpl<ImConversa
// 封装响应的实体
ImMessageOnlineSend imMessageOnlineSend = new ImMessageOnlineSend();
imMessageOnlineSend.setCreateTime(new Date());
imMessageOnlineSend.setType(MsgTypeEnum.CONVERSATION_MEMBER_NAME_MODIFY.getUriCode());
imMessageOnlineSend.setType(MsgTypeEnum.CONVERSATION_MEMBER_NAME_MODIFY.getUriCode() + "");
imMessageOnlineSend.setSender(currentClient.getClientId());
Map<String, Object> content = Maps.newHashMap();
content.put("operator", currentClient.getClientId());
......
......@@ -206,7 +206,7 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
// 消息实体
ImMessage imMessage = new ImMessage();
imMessage.setId(msgId);
imMessage.setMsgType(msgTypeEnum.getUriCode());
imMessage.setMsgType(msgTypeEnum.getUriCode() + "");
imMessage.setCreateTime(new Date());
imMessage.setFkAppid(currentClient.getFkAppid());
imMessage.setSender(currentClient.getId());
......@@ -219,7 +219,7 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
// 封装响应的实体
ImMessageOnlineSend imMessageOnlineSend = new ImMessageOnlineSend();
BeanUtils.copyProperties(imMessage, imMessageOnlineSend);
imMessageOnlineSend.setType(msgTypeEnum.getUriCode());
imMessageOnlineSend.setType(msgTypeEnum.getUriCode() + "");
imMessageOnlineSend.setMsgId(imMessage.getId());
imMessageOnlineSend.setCreateTime(new Date());
imMessageOnlineSend.setSender(currentClient.getClientId());
......
package com.wecloud.im.thousandchat.action;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.netty.channel.Channel;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wecloud.dispatch.annotation.ActionMapping;
import com.wecloud.dispatch.common.BaseRequest;
......@@ -29,23 +45,6 @@ import com.wecloud.pushserver.client.model.constant.MqConstant;
import com.wecloud.pushserver.client.model.dto.PushDTO;
import com.wecloud.utils.JsonUtils;
import com.wecloud.utils.SnowflakeUtil;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.netty.channel.Channel;
import io.netty.channel.socket.nio.NioSocketChannel;
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.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
* @Description 处理Cmd请求
......@@ -212,7 +211,7 @@ public class ThousandChatAction {
imMessageOnlineSend.setWithdraw(imMessage.getWithdraw());
imMessageOnlineSend.setEvent(imMessage.getEvent());
imMessageOnlineSend.setSystemFlag(imMessage.getSystemFlag());
imMessageOnlineSend.setType(data.getType());
imMessageOnlineSend.setType(data.getType() + "");
imMessageOnlineSend.setAt(imMessage.getAt());
return imMessageOnlineSend;
}
......
package com.wecloud.im.thousandchat.service;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImConversation;
import com.wecloud.im.entity.ImMessage;
......@@ -18,22 +35,7 @@ import com.wecloud.im.ws.enums.MsgTypeEnum;
import com.wecloud.im.ws.enums.WsResponseCmdEnum;
import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.im.ws.sender.ChannelSender;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import com.wecloud.utils.SnowflakeUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 消息收件箱表 服务实现类
......@@ -191,7 +193,7 @@ public class ThousandChatService extends BaseServiceImpl<ImMsgReadLastestMapper,
// 封装响应的实体
ImMessageOnlineSend imMessageOnlineSend = new ImMessageOnlineSend();
imMessageOnlineSend.setMsgId(lastestMsg.getId());
imMessageOnlineSend.setType(msgTypeEnum.getUriCode());
imMessageOnlineSend.setType(msgTypeEnum.getUriCode() + "");
imMessageOnlineSend.setSender(curentClient.getClientId());
imMessageOnlineSend.setContent(contentMap);
imMessageOnlineSend.setConversationId(lastestMsg.getFkConversationId());
......
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