mirror of
https://github.com/zongzibinbin/MallChat.git
synced 2026-03-23 13:23:44 +08:00
fix:代码优化
This commit is contained in:
@@ -2,6 +2,7 @@ package com.abin.mallchat.common.chat.domain.entity.msg;
|
|||||||
|
|
||||||
import com.abin.mallchat.common.common.utils.discover.domain.UrlInfo;
|
import com.abin.mallchat.common.common.utils.discover.domain.UrlInfo;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -21,6 +22,7 @@ import java.util.Map;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
|
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||||
public class MessageExtra implements Serializable {
|
public class MessageExtra implements Serializable {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
//url跳转链接
|
//url跳转链接
|
||||||
|
|||||||
@@ -104,15 +104,11 @@ public class ChatServiceImpl implements ChatService {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public Long sendMsg(ChatMessageReq request, Long uid) {
|
public Long sendMsg(ChatMessageReq request, Long uid) {
|
||||||
check(request, uid);
|
check(request, uid);
|
||||||
AbstractMsgHandler msgHandler = MsgHandlerFactory.getStrategyNoNull(request.getMsgType());//todo 这里先不扩展,后续再改
|
AbstractMsgHandler<?> msgHandler = MsgHandlerFactory.getStrategyNoNull(request.getMsgType());
|
||||||
msgHandler.checkMsg(request, uid);
|
Long msgId = msgHandler.checkAndSaveMsg(request, uid);
|
||||||
//同步获取消息的跳转链接标题
|
|
||||||
Message insert = MessageAdapter.buildMsgSave(request, uid);
|
|
||||||
messageDao.save(insert);
|
|
||||||
msgHandler.saveMsg(insert, request);
|
|
||||||
//发布消息发送事件
|
//发布消息发送事件
|
||||||
applicationEventPublisher.publishEvent(new MessageSendEvent(this, insert.getId()));
|
applicationEventPublisher.publishEvent(new MessageSendEvent(this, msgId));
|
||||||
return insert.getId();
|
return msgId;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void check(ChatMessageReq request, Long uid) {
|
private void check(ChatMessageReq request, Long uid) {
|
||||||
|
|||||||
@@ -1,20 +1,32 @@
|
|||||||
package com.abin.mallchat.common.chat.service.strategy.msg;
|
package com.abin.mallchat.common.chat.service.strategy.msg;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import com.abin.mallchat.common.chat.dao.MessageDao;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.Message;
|
import com.abin.mallchat.common.chat.domain.entity.Message;
|
||||||
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
||||||
import com.abin.mallchat.common.chat.domain.vo.request.ChatMessageReq;
|
import com.abin.mallchat.common.chat.domain.vo.request.ChatMessageReq;
|
||||||
|
import com.abin.mallchat.common.chat.service.adapter.MessageAdapter;
|
||||||
|
import com.abin.mallchat.common.common.utils.AssertUtil;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
|
import java.lang.reflect.ParameterizedType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description: 消息处理器抽象类
|
* Description: 消息处理器抽象类
|
||||||
* Author: <a href="https://github.com/zongzibinbin">abin</a>
|
* Author: <a href="https://github.com/zongzibinbin">abin</a>
|
||||||
* Date: 2023-06-04
|
* Date: 2023-06-04
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractMsgHandler {
|
public abstract class AbstractMsgHandler<Req> {
|
||||||
|
@Autowired
|
||||||
|
private MessageDao messageDao;
|
||||||
|
private Class<Req> bodyClass;
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
private void init() {
|
private void init() {
|
||||||
|
ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass();
|
||||||
|
this.bodyClass = (Class<Req>) genericSuperclass.getActualTypeArguments()[0];
|
||||||
MsgHandlerFactory.register(getMsgTypeEnum().getType(), this);
|
MsgHandlerFactory.register(getMsgTypeEnum().getType(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -23,15 +35,33 @@ public abstract class AbstractMsgHandler {
|
|||||||
*/
|
*/
|
||||||
abstract MessageTypeEnum getMsgTypeEnum();
|
abstract MessageTypeEnum getMsgTypeEnum();
|
||||||
|
|
||||||
/**
|
protected void checkMsg(Req body, Long roomId, Long uid) {
|
||||||
* 校验消息——保存前校验
|
|
||||||
*/
|
|
||||||
public abstract void checkMsg(ChatMessageReq req, Long uid);
|
|
||||||
|
|
||||||
/**
|
}
|
||||||
* 保存消息
|
|
||||||
*/
|
@Transactional
|
||||||
public abstract void saveMsg(Message msg, ChatMessageReq req);
|
public Long checkAndSaveMsg(ChatMessageReq request, Long uid) {
|
||||||
|
Req body = this.toBean(request.getBody());
|
||||||
|
//统一校验
|
||||||
|
AssertUtil.allCheckValidateThrow(body);
|
||||||
|
//子类扩展校验
|
||||||
|
checkMsg(body, request.getRoomId(), uid);
|
||||||
|
Message insert = MessageAdapter.buildMsgSave(request, uid);
|
||||||
|
//统一保存
|
||||||
|
messageDao.save(insert);
|
||||||
|
//子类扩展保存
|
||||||
|
saveMsg(insert, body);
|
||||||
|
return insert.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Req toBean(Object body) {
|
||||||
|
if (bodyClass.isAssignableFrom(body.getClass())) {
|
||||||
|
return (Req) body;
|
||||||
|
}
|
||||||
|
return BeanUtil.toBean(body, bodyClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void saveMsg(Message message, Req body);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 展示消息
|
* 展示消息
|
||||||
|
|||||||
@@ -1,13 +1,10 @@
|
|||||||
package com.abin.mallchat.common.chat.service.strategy.msg;
|
package com.abin.mallchat.common.chat.service.strategy.msg;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import com.abin.mallchat.common.chat.dao.MessageDao;
|
import com.abin.mallchat.common.chat.dao.MessageDao;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.Message;
|
import com.abin.mallchat.common.chat.domain.entity.Message;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.msg.EmojisMsgDTO;
|
import com.abin.mallchat.common.chat.domain.entity.msg.EmojisMsgDTO;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra;
|
import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra;
|
||||||
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
||||||
import com.abin.mallchat.common.chat.domain.vo.request.ChatMessageReq;
|
|
||||||
import com.abin.mallchat.common.common.utils.AssertUtil;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -19,7 +16,7 @@ import java.util.Optional;
|
|||||||
* Date: 2023-06-04
|
* Date: 2023-06-04
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class EmojisMsgHandler extends AbstractMsgHandler {
|
public class EmojisMsgHandler extends AbstractMsgHandler<EmojisMsgDTO> {
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageDao messageDao;
|
private MessageDao messageDao;
|
||||||
|
|
||||||
@@ -29,14 +26,7 @@ public class EmojisMsgHandler extends AbstractMsgHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkMsg(ChatMessageReq request, Long uid) {
|
public void saveMsg(Message msg, EmojisMsgDTO body) {
|
||||||
EmojisMsgDTO body = BeanUtil.toBean(request.getBody(), EmojisMsgDTO.class);
|
|
||||||
AssertUtil.allCheckValidateThrow(body);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveMsg(Message msg, ChatMessageReq request) {
|
|
||||||
EmojisMsgDTO body = BeanUtil.toBean(request.getBody(), EmojisMsgDTO.class);
|
|
||||||
MessageExtra extra = Optional.ofNullable(msg.getExtra()).orElse(new MessageExtra());
|
MessageExtra extra = Optional.ofNullable(msg.getExtra()).orElse(new MessageExtra());
|
||||||
Message update = new Message();
|
Message update = new Message();
|
||||||
update.setId(msg.getId());
|
update.setId(msg.getId());
|
||||||
|
|||||||
@@ -1,13 +1,10 @@
|
|||||||
package com.abin.mallchat.common.chat.service.strategy.msg;
|
package com.abin.mallchat.common.chat.service.strategy.msg;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import com.abin.mallchat.common.chat.dao.MessageDao;
|
import com.abin.mallchat.common.chat.dao.MessageDao;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.Message;
|
import com.abin.mallchat.common.chat.domain.entity.Message;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.msg.FileMsgDTO;
|
import com.abin.mallchat.common.chat.domain.entity.msg.FileMsgDTO;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra;
|
import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra;
|
||||||
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
||||||
import com.abin.mallchat.common.chat.domain.vo.request.ChatMessageReq;
|
|
||||||
import com.abin.mallchat.common.common.utils.AssertUtil;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -19,7 +16,7 @@ import java.util.Optional;
|
|||||||
* Date: 2023-06-04
|
* Date: 2023-06-04
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class FileMsgHandler extends AbstractMsgHandler {
|
public class FileMsgHandler extends AbstractMsgHandler<FileMsgDTO> {
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageDao messageDao;
|
private MessageDao messageDao;
|
||||||
|
|
||||||
@@ -29,14 +26,7 @@ public class FileMsgHandler extends AbstractMsgHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkMsg(ChatMessageReq request, Long uid) {
|
public void saveMsg(Message msg, FileMsgDTO body) {
|
||||||
FileMsgDTO body = BeanUtil.toBean(request.getBody(), FileMsgDTO.class);
|
|
||||||
AssertUtil.allCheckValidateThrow(body);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveMsg(Message msg, ChatMessageReq request) {
|
|
||||||
FileMsgDTO body = BeanUtil.toBean(request.getBody(), FileMsgDTO.class);
|
|
||||||
MessageExtra extra = Optional.ofNullable(msg.getExtra()).orElse(new MessageExtra());
|
MessageExtra extra = Optional.ofNullable(msg.getExtra()).orElse(new MessageExtra());
|
||||||
Message update = new Message();
|
Message update = new Message();
|
||||||
update.setId(msg.getId());
|
update.setId(msg.getId());
|
||||||
|
|||||||
@@ -1,13 +1,10 @@
|
|||||||
package com.abin.mallchat.common.chat.service.strategy.msg;
|
package com.abin.mallchat.common.chat.service.strategy.msg;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import com.abin.mallchat.common.chat.dao.MessageDao;
|
import com.abin.mallchat.common.chat.dao.MessageDao;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.Message;
|
import com.abin.mallchat.common.chat.domain.entity.Message;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.msg.ImgMsgDTO;
|
import com.abin.mallchat.common.chat.domain.entity.msg.ImgMsgDTO;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra;
|
import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra;
|
||||||
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
||||||
import com.abin.mallchat.common.chat.domain.vo.request.ChatMessageReq;
|
|
||||||
import com.abin.mallchat.common.common.utils.AssertUtil;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -19,7 +16,7 @@ import java.util.Optional;
|
|||||||
* Date: 2023-06-04
|
* Date: 2023-06-04
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class ImgMsgHandler extends AbstractMsgHandler {
|
public class ImgMsgHandler extends AbstractMsgHandler<ImgMsgDTO> {
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageDao messageDao;
|
private MessageDao messageDao;
|
||||||
|
|
||||||
@@ -29,14 +26,7 @@ public class ImgMsgHandler extends AbstractMsgHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkMsg(ChatMessageReq request, Long uid) {
|
public void saveMsg(Message msg, ImgMsgDTO body) {
|
||||||
ImgMsgDTO body = BeanUtil.toBean(request.getBody(), ImgMsgDTO.class);
|
|
||||||
AssertUtil.allCheckValidateThrow(body);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveMsg(Message msg, ChatMessageReq request) {
|
|
||||||
ImgMsgDTO body = BeanUtil.toBean(request.getBody(), ImgMsgDTO.class);
|
|
||||||
MessageExtra extra = Optional.ofNullable(msg.getExtra()).orElse(new MessageExtra());
|
MessageExtra extra = Optional.ofNullable(msg.getExtra()).orElse(new MessageExtra());
|
||||||
Message update = new Message();
|
Message update = new Message();
|
||||||
update.setId(msg.getId());
|
update.setId(msg.getId());
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import com.abin.mallchat.common.chat.domain.entity.Message;
|
|||||||
import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra;
|
import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.msg.MsgRecall;
|
import com.abin.mallchat.common.chat.domain.entity.msg.MsgRecall;
|
||||||
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
||||||
import com.abin.mallchat.common.chat.domain.vo.request.ChatMessageReq;
|
|
||||||
import com.abin.mallchat.common.chat.service.cache.MsgCache;
|
import com.abin.mallchat.common.chat.service.cache.MsgCache;
|
||||||
import com.abin.mallchat.common.common.event.MessageRecallEvent;
|
import com.abin.mallchat.common.common.event.MessageRecallEvent;
|
||||||
import com.abin.mallchat.common.user.domain.entity.User;
|
import com.abin.mallchat.common.user.domain.entity.User;
|
||||||
@@ -24,7 +23,7 @@ import java.util.Objects;
|
|||||||
* Date: 2023-06-04
|
* Date: 2023-06-04
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class RecallMsgHandler extends AbstractMsgHandler {
|
public class RecallMsgHandler extends AbstractMsgHandler<Object> {
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageDao messageDao;
|
private MessageDao messageDao;
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -40,12 +39,7 @@ public class RecallMsgHandler extends AbstractMsgHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkMsg(ChatMessageReq request, Long uid) {
|
public void saveMsg(Message msg, Object body) {
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveMsg(Message msg, ChatMessageReq request) {
|
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,10 @@
|
|||||||
package com.abin.mallchat.common.chat.service.strategy.msg;
|
package com.abin.mallchat.common.chat.service.strategy.msg;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import com.abin.mallchat.common.chat.dao.MessageDao;
|
import com.abin.mallchat.common.chat.dao.MessageDao;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.Message;
|
import com.abin.mallchat.common.chat.domain.entity.Message;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra;
|
import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.msg.SoundMsgDTO;
|
import com.abin.mallchat.common.chat.domain.entity.msg.SoundMsgDTO;
|
||||||
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
||||||
import com.abin.mallchat.common.chat.domain.vo.request.ChatMessageReq;
|
|
||||||
import com.abin.mallchat.common.common.utils.AssertUtil;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -19,7 +16,7 @@ import java.util.Optional;
|
|||||||
* Date: 2023-06-04
|
* Date: 2023-06-04
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class SoundMsgHandler extends AbstractMsgHandler {
|
public class SoundMsgHandler extends AbstractMsgHandler<SoundMsgDTO> {
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageDao messageDao;
|
private MessageDao messageDao;
|
||||||
|
|
||||||
@@ -29,14 +26,7 @@ public class SoundMsgHandler extends AbstractMsgHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkMsg(ChatMessageReq request, Long uid) {
|
public void saveMsg(Message msg, SoundMsgDTO body) {
|
||||||
SoundMsgDTO body = BeanUtil.toBean(request.getBody(), SoundMsgDTO.class);
|
|
||||||
AssertUtil.allCheckValidateThrow(body);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveMsg(Message msg, ChatMessageReq request) {
|
|
||||||
SoundMsgDTO body = BeanUtil.toBean(request.getBody(), SoundMsgDTO.class);
|
|
||||||
MessageExtra extra = Optional.ofNullable(msg.getExtra()).orElse(new MessageExtra());
|
MessageExtra extra = Optional.ofNullable(msg.getExtra()).orElse(new MessageExtra());
|
||||||
Message update = new Message();
|
Message update = new Message();
|
||||||
update.setId(msg.getId());
|
update.setId(msg.getId());
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.abin.mallchat.common.chat.service.strategy.msg;
|
|||||||
import com.abin.mallchat.common.chat.dao.MessageDao;
|
import com.abin.mallchat.common.chat.dao.MessageDao;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.Message;
|
import com.abin.mallchat.common.chat.domain.entity.Message;
|
||||||
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
||||||
import com.abin.mallchat.common.chat.domain.vo.request.ChatMessageReq;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -13,7 +12,7 @@ import org.springframework.stereotype.Component;
|
|||||||
* Date: 2023-06-04
|
* Date: 2023-06-04
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class SystemMsgHandler extends AbstractMsgHandler {
|
public class SystemMsgHandler extends AbstractMsgHandler<String> {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageDao messageDao;
|
private MessageDao messageDao;
|
||||||
@@ -24,14 +23,10 @@ public class SystemMsgHandler extends AbstractMsgHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkMsg(ChatMessageReq request, Long uid) {
|
public void saveMsg(Message msg, String body) {
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveMsg(Message msg, ChatMessageReq request) {
|
|
||||||
Message update = new Message();
|
Message update = new Message();
|
||||||
update.setId(msg.getId());
|
update.setId(msg.getId());
|
||||||
update.setContent((String) request.getBody());
|
update.setContent(body);
|
||||||
messageDao.updateById(update);
|
messageDao.updateById(update);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,11 @@
|
|||||||
package com.abin.mallchat.common.chat.service.strategy.msg;
|
package com.abin.mallchat.common.chat.service.strategy.msg;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.abin.mallchat.common.chat.dao.MessageDao;
|
import com.abin.mallchat.common.chat.dao.MessageDao;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.Message;
|
import com.abin.mallchat.common.chat.domain.entity.Message;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra;
|
import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra;
|
||||||
import com.abin.mallchat.common.chat.domain.enums.MessageStatusEnum;
|
import com.abin.mallchat.common.chat.domain.enums.MessageStatusEnum;
|
||||||
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
||||||
import com.abin.mallchat.common.chat.domain.vo.request.ChatMessageReq;
|
|
||||||
import com.abin.mallchat.common.chat.domain.vo.request.msg.TextMsgReq;
|
import com.abin.mallchat.common.chat.domain.vo.request.msg.TextMsgReq;
|
||||||
import com.abin.mallchat.common.chat.domain.vo.response.msg.TextMsgResp;
|
import com.abin.mallchat.common.chat.domain.vo.response.msg.TextMsgResp;
|
||||||
import com.abin.mallchat.common.chat.service.adapter.MessageAdapter;
|
import com.abin.mallchat.common.chat.service.adapter.MessageAdapter;
|
||||||
@@ -37,7 +35,7 @@ import java.util.stream.Collectors;
|
|||||||
* Date: 2023-06-04
|
* Date: 2023-06-04
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class TextMsgHandler extends AbstractMsgHandler {
|
public class TextMsgHandler extends AbstractMsgHandler<TextMsgReq> {
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageDao messageDao;
|
private MessageDao messageDao;
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -59,14 +57,12 @@ public class TextMsgHandler extends AbstractMsgHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkMsg(ChatMessageReq request, Long uid) {
|
protected void checkMsg(TextMsgReq body, Long roomId, Long uid) {
|
||||||
TextMsgReq body = BeanUtil.toBean(request.getBody(), TextMsgReq.class);
|
|
||||||
AssertUtil.allCheckValidateThrow(body);
|
|
||||||
//校验下回复消息
|
//校验下回复消息
|
||||||
if (Objects.nonNull(body.getReplyMsgId())) {
|
if (Objects.nonNull(body.getReplyMsgId())) {
|
||||||
Message replyMsg = messageDao.getById(body.getReplyMsgId());
|
Message replyMsg = messageDao.getById(body.getReplyMsgId());
|
||||||
AssertUtil.isNotEmpty(replyMsg, "回复消息不存在");
|
AssertUtil.isNotEmpty(replyMsg, "回复消息不存在");
|
||||||
AssertUtil.equal(replyMsg.getRoomId(), request.getRoomId(), "只能回复相同会话内的消息");
|
AssertUtil.equal(replyMsg.getRoomId(), roomId, "只能回复相同会话内的消息");
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(body.getAtUidList())) {
|
if (CollectionUtil.isNotEmpty(body.getAtUidList())) {
|
||||||
//前端传入的@用户列表可能会重复,需要去重
|
//前端传入的@用户列表可能会重复,需要去重
|
||||||
@@ -83,8 +79,7 @@ public class TextMsgHandler extends AbstractMsgHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveMsg(Message msg, ChatMessageReq request) {//插入文本内容
|
public void saveMsg(Message msg, TextMsgReq body) {//插入文本内容
|
||||||
TextMsgReq body = BeanUtil.toBean(request.getBody(), TextMsgReq.class);
|
|
||||||
MessageExtra extra = Optional.ofNullable(msg.getExtra()).orElse(new MessageExtra());
|
MessageExtra extra = Optional.ofNullable(msg.getExtra()).orElse(new MessageExtra());
|
||||||
Message update = new Message();
|
Message update = new Message();
|
||||||
update.setId(msg.getId());
|
update.setId(msg.getId());
|
||||||
@@ -92,7 +87,7 @@ public class TextMsgHandler extends AbstractMsgHandler {
|
|||||||
update.setExtra(extra);
|
update.setExtra(extra);
|
||||||
//如果有回复消息
|
//如果有回复消息
|
||||||
if (Objects.nonNull(body.getReplyMsgId())) {
|
if (Objects.nonNull(body.getReplyMsgId())) {
|
||||||
Integer gapCount = messageDao.getGapCount(request.getRoomId(), body.getReplyMsgId(), msg.getId());
|
Integer gapCount = messageDao.getGapCount(msg.getRoomId(), body.getReplyMsgId(), msg.getId());
|
||||||
update.setGapCount(gapCount);
|
update.setGapCount(gapCount);
|
||||||
update.setReplyMsgId(body.getReplyMsgId());
|
update.setReplyMsgId(body.getReplyMsgId());
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,10 @@
|
|||||||
package com.abin.mallchat.common.chat.service.strategy.msg;
|
package com.abin.mallchat.common.chat.service.strategy.msg;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import com.abin.mallchat.common.chat.dao.MessageDao;
|
import com.abin.mallchat.common.chat.dao.MessageDao;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.Message;
|
import com.abin.mallchat.common.chat.domain.entity.Message;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra;
|
import com.abin.mallchat.common.chat.domain.entity.msg.MessageExtra;
|
||||||
import com.abin.mallchat.common.chat.domain.entity.msg.VideoMsgDTO;
|
import com.abin.mallchat.common.chat.domain.entity.msg.VideoMsgDTO;
|
||||||
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
import com.abin.mallchat.common.chat.domain.enums.MessageTypeEnum;
|
||||||
import com.abin.mallchat.common.chat.domain.vo.request.ChatMessageReq;
|
|
||||||
import com.abin.mallchat.common.common.utils.AssertUtil;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -19,7 +16,7 @@ import java.util.Optional;
|
|||||||
* Date: 2023-06-04
|
* Date: 2023-06-04
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class VideoMsgHandler extends AbstractMsgHandler {
|
public class VideoMsgHandler extends AbstractMsgHandler<VideoMsgDTO> {
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageDao messageDao;
|
private MessageDao messageDao;
|
||||||
|
|
||||||
@@ -29,14 +26,7 @@ public class VideoMsgHandler extends AbstractMsgHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkMsg(ChatMessageReq request, Long uid) {
|
public void saveMsg(Message msg, VideoMsgDTO body) {
|
||||||
VideoMsgDTO body = BeanUtil.toBean(request.getBody(), VideoMsgDTO.class);
|
|
||||||
AssertUtil.allCheckValidateThrow(body);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void saveMsg(Message msg, ChatMessageReq request) {
|
|
||||||
VideoMsgDTO body = BeanUtil.toBean(request.getBody(), VideoMsgDTO.class);
|
|
||||||
MessageExtra extra = Optional.ofNullable(msg.getExtra()).orElse(new MessageExtra());
|
MessageExtra extra = Optional.ofNullable(msg.getExtra()).orElse(new MessageExtra());
|
||||||
Message update = new Message();
|
Message update = new Message();
|
||||||
update.setId(msg.getId());
|
update.setId(msg.getId());
|
||||||
|
|||||||
Reference in New Issue
Block a user