mirror of
https://github.com/zongzibinbin/MallChat.git
synced 2026-03-16 15:53:43 +08:00
feat:消息标记重构
This commit is contained in:
@@ -10,11 +10,13 @@ import com.abin.mallchat.common.common.domain.enums.IdempotentEnum;
|
||||
import com.abin.mallchat.common.common.event.MessageMarkEvent;
|
||||
import com.abin.mallchat.common.user.domain.enums.ItemEnum;
|
||||
import com.abin.mallchat.common.user.service.IUserBackpackService;
|
||||
import com.abin.mallchat.custom.user.service.WebSocketService;
|
||||
import com.abin.mallchat.custom.user.service.adapter.WSAdapter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.event.TransactionalEventListener;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -32,9 +34,11 @@ public class MessageMarkListener {
|
||||
private MessageDao messageDao;
|
||||
@Autowired
|
||||
private IUserBackpackService iUserBackpackService;
|
||||
@Autowired
|
||||
private WebSocketService webSocketService;
|
||||
|
||||
@Async
|
||||
@EventListener(classes = MessageMarkEvent.class)
|
||||
@TransactionalEventListener(classes = MessageMarkEvent.class, fallbackExecution = true)
|
||||
public void changeMsgType(MessageMarkEvent event) {
|
||||
ChatMessageMarkDTO dto = event.getDto();
|
||||
Message msg = messageDao.getById(dto.getMsgId());
|
||||
@@ -53,4 +57,12 @@ public class MessageMarkListener {
|
||||
}
|
||||
}
|
||||
|
||||
@Async
|
||||
@TransactionalEventListener(classes = MessageMarkEvent.class, fallbackExecution = true)
|
||||
public void notifyAll(MessageMarkEvent event) {//后续可做合并查询,目前异步影响不大
|
||||
ChatMessageMarkDTO dto = event.getDto();
|
||||
Integer markCount = messageMarkDao.getMarkCount(dto.getMsgId(), dto.getMarkType());
|
||||
webSocketService.sendToAllOnline(WSAdapter.buildMsgMarkSend(dto, markCount), dto.getUid());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -9,9 +9,9 @@ import com.abin.mallchat.custom.user.service.WebSocketService;
|
||||
import com.abin.mallchat.custom.user.service.adapter.WSAdapter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.event.TransactionalEventListener;
|
||||
|
||||
/**
|
||||
* 消息发送监听器
|
||||
@@ -29,7 +29,7 @@ public class MessageSendListener {
|
||||
private MessageDao messageDao;
|
||||
|
||||
@Async
|
||||
@EventListener(classes = MessageSendEvent.class)
|
||||
@TransactionalEventListener(classes = MessageSendEvent.class, fallbackExecution = true)
|
||||
public void notifyAllOnline(MessageSendEvent event) {
|
||||
Message message = messageDao.getById(event.getMsgId());
|
||||
ChatMessageResp msgResp = chatService.getMsgResp(message, null);
|
||||
|
||||
@@ -38,7 +38,7 @@ public class UserOnlineListener {
|
||||
User user = event.getUser();
|
||||
userCache.online(user.getId(), user.getLastOptTime());
|
||||
//推送给所有在线用户,该用户登录成功
|
||||
webSocketService.sendToAllOnline(wsAdapter.buildOnlineNotifyResp(event.getUser()), null);
|
||||
webSocketService.sendToAllOnline(wsAdapter.buildOnlineNotifyResp(event.getUser()));
|
||||
}
|
||||
|
||||
@Async
|
||||
|
||||
@@ -33,16 +33,16 @@ public class UserRegisterListener {
|
||||
iUserBackpackService.acquireItem(user.getId(), ItemEnum.MODIFY_NAME_CARD.getId(), IdempotentEnum.UID, user.getId().toString());
|
||||
}
|
||||
|
||||
@Async
|
||||
@EventListener(classes = UserRegisterEvent.class)
|
||||
public void sendBadge(UserRegisterEvent event) {
|
||||
User user = event.getUser();
|
||||
int count = userDao.count();//todo 性能瓶颈,等注册用户多了直接删掉
|
||||
if (count <= 10) {
|
||||
iUserBackpackService.acquireItem(user.getId(), ItemEnum.REG_TOP10_BADGE.getId(), IdempotentEnum.UID, user.getId().toString());
|
||||
} else if (count <= 100) {
|
||||
iUserBackpackService.acquireItem(user.getId(), ItemEnum.REG_TOP100_BADGE.getId(), IdempotentEnum.UID, user.getId().toString());
|
||||
}
|
||||
}
|
||||
// @Async
|
||||
// @EventListener(classes = UserRegisterEvent.class)
|
||||
// public void sendBadge(UserRegisterEvent event) {
|
||||
// User user = event.getUser();
|
||||
// int count = userDao.count();// 性能瓶颈,等注册用户多了直接删掉
|
||||
// if (count <= 10) {
|
||||
// iUserBackpackService.acquireItem(user.getId(), ItemEnum.REG_TOP10_BADGE.getId(), IdempotentEnum.UID, user.getId().toString());
|
||||
// } else if (count <= 100) {
|
||||
// iUserBackpackService.acquireItem(user.getId(), ItemEnum.REG_TOP100_BADGE.getId(), IdempotentEnum.UID, user.getId().toString());
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user