diff --git a/im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageDTO.java index d94e291..a4edcd9 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/third/privatemsg/ThirdPrivateMessageDTO.java @@ -5,6 +5,7 @@ import lombok.Data; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; @Data @@ -23,9 +24,15 @@ public class ThirdPrivateMessageDTO { @Schema(description = "发送用户id") private Long sendId; + @Schema(description = "发送用户名称") + private String sendUserName; + @Schema(description = "接收用户id") private Long recvId; + @Schema(description = "接收用户名称") + private String recvUserName; + @Schema(description = "发送内容") private String content; @@ -38,6 +45,9 @@ public class ThirdPrivateMessageDTO { @Schema(description = "发送时间") private Date sendTime; + @Schema(description = "发送时间列表") + private List sendTimeList; + @Schema(description = "请求参数") private Map params = new HashMap<>(); diff --git a/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdPrivateMsgServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdPrivateMsgServiceImpl.java index e9141bb..e1a1c89 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdPrivateMsgServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/third/impl/ThirdPrivateMsgServiceImpl.java @@ -2,6 +2,7 @@ package com.bx.implatform.service.third.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.IterUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -12,7 +13,9 @@ import com.bx.implatform.dto.third.privatemsg.ThirdPrivateMessageCountDTO; import com.bx.implatform.dto.third.privatemsg.ThirdPrivateMessageDTO; import com.bx.implatform.dto.third.privatemsg.ThirdPrivateMessageInfoDTO; import com.bx.implatform.entity.PrivateMessage; +import com.bx.implatform.entity.User; import com.bx.implatform.mapper.PrivateMessageMapper; +import com.bx.implatform.mapper.UserMapper; import com.bx.implatform.service.third.ThirdPrivateMsgService; import com.bx.implatform.vo.third.ThirdTableVO; import com.bx.implatform.vo.third.privatemsg.ThirdPrivateMessageVO; @@ -20,9 +23,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; /** * 第三方私聊消息 @@ -32,18 +33,46 @@ import java.util.Objects; @RequiredArgsConstructor public class ThirdPrivateMsgServiceImpl extends ServiceImpl implements ThirdPrivateMsgService { + private final UserMapper userMapper; + /** * 查询私聊消息列表 */ @Override public ThirdTableVO page(ThirdPrivateMessageDTO dto) { ThirdTableVO result = new ThirdTableVO(); - Page page = baseMapper.selectPage(new Page(dto.getPageNum(), dto.getPageSize()), buildQueryWrapper(dto)); result.setTotal(page.getTotal()); if (ObjectUtil.isNotEmpty(page.getRecords())) { - result.setRows(BeanUtil.copyToList(page.getRecords(), ThirdPrivateMessageVO.class)); + List pageList = page.getRecords(); + List resultPageList = BeanUtil.copyToList(pageList, ThirdPrivateMessageVO.class); + // 查询用户 + List sendList = pageList.stream().map(PrivateMessage::getSendId).distinct().filter(ObjectUtil::isNotEmpty).toList(); + List recvList = pageList.stream().map(PrivateMessage::getRecvId).distinct().filter(ObjectUtil::isNotEmpty).toList(); + + HashSet userSet = new HashSet<>(); + userSet.addAll(sendList); + userSet.addAll(recvList); + List users = userMapper.selectList(new LambdaQueryWrapper() + .in(User::getId, userSet.stream().toList()) + ); + + if (ObjectUtil.isNotEmpty(users)) { + Map map = IterUtil.toMap(users, User::getId); + for (ThirdPrivateMessageVO user : resultPageList) { + User targetSendUser = map.get(user.getSendId()); + if (ObjectUtil.isNotEmpty(targetSendUser)) { + user.setSendUserName(targetSendUser.getUserName()); + } + User targetRecvUser = map.get(user.getRecvId()); + if (ObjectUtil.isNotEmpty(targetRecvUser)) { + user.setRecvUserName(targetRecvUser.getUserName()); + } + } + } + + result.setRows(resultPageList); } return result; @@ -74,6 +103,21 @@ public class ThirdPrivateMsgServiceImpl extends ServiceImpl buildQueryWrapper(ThirdPrivateMessageDTO bo) { + List sendIds = new ArrayList<>(); + List recvIds = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(bo.getSendUserName())) { + List users = userMapper.selectList(new LambdaQueryWrapper().like(User::getNickName, bo.getSendUserName())); + if (ObjectUtil.isNotEmpty(users)) { + sendIds = users.stream().map(User::getId).distinct().filter(ObjectUtil::isNotEmpty).toList(); + } + } + if (ObjectUtil.isNotEmpty(bo.getRecvUserName())) { + List users = userMapper.selectList(new LambdaQueryWrapper().like(User::getNickName, bo.getRecvUserName())); + if (ObjectUtil.isNotEmpty(users)) { + recvIds = users.stream().map(User::getId).distinct().filter(ObjectUtil::isNotEmpty).toList(); + } + } + Map params = bo.getParams(); LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); if (!Objects.isNull(bo.getSendId()) && !Objects.isNull(bo.getRecvId())) { @@ -93,6 +137,16 @@ public class ThirdPrivateMsgServiceImpl extends ServiceImpl