| | |
| | | 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.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 = "rabbit-consumer", havingValue = "true") |
| | | public class ChatConsumer { |
| | | |
| | | @Autowired |
| | | private OtcMsgUserListDao otcMsgUserListDao; |
| | | |
| | | @Autowired |
| | | private OtcMsgHistoryDao otcMsgHistoryDao; |
| | | |
| | | @Autowired |
| | | private RedisUtils redisUtils; |
| | | |
| | | @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 = Long.parseLong(chat.getTo()); |
| | | Long fromId = Long.parseLong(chat.getFrom()); |
| | | |
| | | // 发送人是否存在聊天框 |
| | | OtcMsgUserListEntity fromList = otcMsgUserListDao.selectChatListByToAndFrom(Long.parseLong(chat.getTo()), Long.parseLong(chat.getFrom())); |
| | | if (fromList == null) { |
| | | OtcMsgUserListEntity from = new OtcMsgUserListEntity(); |
| | | from.setMemberId(Long.parseLong(chat.getFrom())); |
| | | from.setTargetId(Long.parseLong(chat.getTo())); |
| | | from.setIsRead(OtcMsgUserListEntity.ISREAD_TWO); |
| | | from.setLastMsgTime(new Date()); |
| | | otcMsgUserListDao.insert(from); |
| | | } |
| | | |
| | | // 收件人是否存在聊天框 |
| | | OtcMsgUserListEntity toList = otcMsgUserListDao.selectChatListByToAndFrom(Long.parseLong(chat.getFrom()), Long.parseLong(chat.getTo())); |
| | | if (toList == null) { |
| | | OtcMsgUserListEntity from = new OtcMsgUserListEntity(); |
| | | from.setMemberId(Long.parseLong(chat.getTo())); |
| | | from.setTargetId(Long.parseLong(chat.getFrom())); |
| | | from.setIsRead(OtcMsgUserListEntity.ISREAD_ONE); |
| | | from.setLastMsgTime(new Date()); |
| | | otcMsgUserListDao.insert(from); |
| | | } else { |
| | | // 收件人正在聊的用户 |
| | | String value = redisUtils.getString(AppContants.MSG_CHATTING + chat.getTo()); |
| | | if (StrUtil.isNotBlank(value) && value.equals(chat.getFrom())) { |
| | | toList.setLastMsgTime(new Date()); |
| | | otcMsgUserListDao.updateById(toList); |
| | | } else { |
| | | toList.setIsRead(OtcMsgUserListEntity.ISREAD_TWO); |
| | | 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.getContent()); |
| | | |
| | | OtcMsgHistoryEntity fromHistory = new OtcMsgHistoryEntity(); |
| | | BeanUtil.copyProperties(toHistory, fromHistory); |
| | | fromHistory.setIsSelf(OtcMsgHistoryEntity.ISSELF_ONE); |
| | | fromHistory.setMemberId(fromId); |
| | | |
| | | otcMsgHistoryDao.insert(fromHistory); |
| | | otcMsgHistoryDao.insert(toHistory); |
| | | } |
| | | } |