feat:聊天记录
This commit is contained in:
1 parent
861bea219b
commit
3236c4aaf7
2 files changed
+69
-5
No files matched your search
+10
@@ -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<Date> sendTimeList;
|
||||
|
||||
@Schema(description = "请求参数")
|
||||
private Map<String, Object> params = new HashMap<>();
|
||||
|
||||
|
||||
+59
-5
@@ -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<PrivateMessageMapper, PrivateMessage> implements ThirdPrivateMsgService {
|
||||
|
||||
private final UserMapper userMapper;
|
||||
|
||||
/**
|
||||
* 查询私聊消息列表
|
||||
*/
|
||||
@Override
|
||||
public ThirdTableVO<ThirdPrivateMessageVO> page(ThirdPrivateMessageDTO dto) {
|
||||
ThirdTableVO<ThirdPrivateMessageVO> result = new ThirdTableVO<ThirdPrivateMessageVO>();
|
||||
|
||||
Page<PrivateMessage> 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<PrivateMessage> pageList = page.getRecords();
|
||||
List<ThirdPrivateMessageVO> resultPageList = BeanUtil.copyToList(pageList, ThirdPrivateMessageVO.class);
|
||||
// 查询用户
|
||||
List<Long> sendList = pageList.stream().map(PrivateMessage::getSendId).distinct().filter(ObjectUtil::isNotEmpty).toList();
|
||||
List<Long> recvList = pageList.stream().map(PrivateMessage::getRecvId).distinct().filter(ObjectUtil::isNotEmpty).toList();
|
||||
|
||||
HashSet<Long> userSet = new HashSet<>();
|
||||
userSet.addAll(sendList);
|
||||
userSet.addAll(recvList);
|
||||
List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>()
|
||||
.in(User::getId, userSet.stream().toList())
|
||||
);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(users)) {
|
||||
Map<Long, User> 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<PrivateMessageMapper
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<PrivateMessage> buildQueryWrapper(ThirdPrivateMessageDTO bo) {
|
||||
List<Long> sendIds = new ArrayList<>();
|
||||
List<Long> recvIds = new ArrayList<>();
|
||||
if (ObjectUtil.isNotEmpty(bo.getSendUserName())) {
|
||||
List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().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<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().like(User::getNickName, bo.getRecvUserName()));
|
||||
if (ObjectUtil.isNotEmpty(users)) {
|
||||
recvIds = users.stream().map(User::getId).distinct().filter(ObjectUtil::isNotEmpty).toList();
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<PrivateMessage> wrapper = Wrappers.lambdaQuery();
|
||||
if (!Objects.isNull(bo.getSendId()) && !Objects.isNull(bo.getRecvId())) {
|
||||
@@ -93,6 +137,16 @@ public class ThirdPrivateMsgServiceImpl extends ServiceImpl<PrivateMessageMapper
|
||||
wrapper.like(ObjUtil.isNotEmpty(bo.getContent()), PrivateMessage::getContent, bo.getContent());
|
||||
wrapper.eq(!Objects.isNull(bo.getType()), PrivateMessage::getType, bo.getType());
|
||||
wrapper.eq(!Objects.isNull(bo.getStatus()), PrivateMessage::getStatus, bo.getStatus());
|
||||
if (ObjectUtil.isNotEmpty(bo.getSendTimeList())) {
|
||||
wrapper.between(PrivateMessage::getSendTime, bo.getSendTimeList().get(0), bo.getSendTimeList().get(1));
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(sendIds)) {
|
||||
wrapper.in(PrivateMessage::getSendId, sendIds);
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(recvIds)) {
|
||||
wrapper.in(PrivateMessage::getRecvId, recvIds);
|
||||
}
|
||||
|
||||
wrapper.between(params.get("beginTime") != null && params.get("endTime") != null, PrivateMessage::getSendTime,
|
||||
params.get("beginTime"), params.get("endTime"));
|
||||
wrapper.orderByDesc(PrivateMessage::getId);
|
||||
|
||||
Reference in new issue
Block a user