From 0d30c93d000413c6eb34f489ef17688ad4175201 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 29 Apr 2024 18:18:21 +0800 Subject: [PATCH] 55测试环境 --- src/main/java/com/xcong/excoin/rabbit/consumer/ChatConsumer.java | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 104 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/xcong/excoin/rabbit/consumer/ChatConsumer.java b/src/main/java/com/xcong/excoin/rabbit/consumer/ChatConsumer.java index fccfd6e..770af5c 100644 --- a/src/main/java/com/xcong/excoin/rabbit/consumer/ChatConsumer.java +++ b/src/main/java/com/xcong/excoin/rabbit/consumer/ChatConsumer.java @@ -1,7 +1,106 @@ -package com.xcong.excoin.rabbit.consumer;/** -* -* @author wzy -* @date 2021-05-27 -**/ +package com.xcong.excoin.rabbit.consumer; + + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.xcong.excoin.common.contants.AppContants; +import com.xcong.excoin.configurations.RabbitMqConfig; +import com.xcong.excoin.modules.member.dao.MemberSettingDao; +import com.xcong.excoin.modules.otc.dao.OtcMsgHistoryDao; +import com.xcong.excoin.modules.otc.dao.OtcMsgUserListDao; +import com.xcong.excoin.modules.otc.entity.OtcMsgHistoryEntity; +import com.xcong.excoin.modules.otc.entity.OtcMsgUserListEntity; +import com.xcong.excoin.netty.bean.ChatRequest; +import com.xcong.excoin.utils.RedisUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +@Slf4j +@Component +@ConditionalOnProperty(prefix = "app", name = "websocket-job", havingValue = "true") public class ChatConsumer { + + @Autowired + private OtcMsgUserListDao otcMsgUserListDao; + + @Autowired + private OtcMsgHistoryDao otcMsgHistoryDao; + + @Autowired + private RedisUtils redisUtils; + + @Autowired + private MemberSettingDao memberSettingDao; + + @RabbitListener(queues = RabbitMqConfig.QUEUE_MSG_HISTORY) + @Transactional(rollbackFor = Exception.class) + public void msgHistoryConsumer(String content) { + log.info("收到历史消息处理:{}", content); + ChatRequest chat = JSONObject.parseObject(content, ChatRequest.class); + + Long toId = chat.getTargetId(); + Long fromId = chat.getFromMemberId(); + + // 发送人是否存在聊天框 + OtcMsgUserListEntity fromList = otcMsgUserListDao.selectChatListByToAndFrom(toId, fromId); + if (fromList == null) { + OtcMsgUserListEntity from = new OtcMsgUserListEntity(); + from.setMemberId(fromId); + from.setTargetId(toId); + from.setIsRead(OtcMsgUserListEntity.ISREAD_TWO); + from.setLastMsgTime(new Date()); + otcMsgUserListDao.insert(from); + } else { + fromList.setLastMsgTime(new Date()); + otcMsgUserListDao.updateById(fromList); + } + + // 收件人是否存在聊天框 + OtcMsgUserListEntity toList = otcMsgUserListDao.selectChatListByToAndFrom(fromId, toId); + if (toList == null) { + OtcMsgUserListEntity from = new OtcMsgUserListEntity(); + from.setMemberId(toId); + from.setTargetId(fromId); + from.setIsRead(OtcMsgUserListEntity.ISREAD_ONE); + from.setLastMsgTime(new Date()); + otcMsgUserListDao.insert(from); + } else { + // 收件人正在聊的用户 + String value = redisUtils.getString(AppContants.MSG_CHATTING + toId); + if (StrUtil.isNotBlank(value) && value.equals(fromId.toString())) { + toList.setLastMsgTime(new Date()); + otcMsgUserListDao.updateById(toList); + } else { + toList.setIsRead(OtcMsgUserListEntity.ISREAD_ONE); + toList.setLastMsgTime(new Date()); + otcMsgUserListDao.updateById(toList); + } + } + + + OtcMsgHistoryEntity toHistory = new OtcMsgHistoryEntity(); + toHistory.setMemberId(toId); + toHistory.setFromMemberId(fromId); + toHistory.setTargetId(toId); + toHistory.setIsSelf(OtcMsgHistoryEntity.ISSELF_TWO); + toHistory.setMsgType(chat.getMsgType()); + toHistory.setMsg(chat.getMsg()); + + OtcMsgHistoryEntity fromHistory = new OtcMsgHistoryEntity(); + BeanUtil.copyProperties(toHistory, fromHistory); + fromHistory.setIsSelf(OtcMsgHistoryEntity.ISSELF_ONE); + fromHistory.setMemberId(fromId); + + memberSettingDao.updateMessageReminderByMemberId(toId); + + otcMsgHistoryDao.insert(fromHistory); + otcMsgHistoryDao.insert(toHistory); + } } -- Gitblit v1.9.1