diff --git a/src/main/java/com/bao/dating/controller/ChatController.java b/src/main/java/com/bao/dating/controller/ChatController.java index 95acbce..b335a60 100644 --- a/src/main/java/com/bao/dating/controller/ChatController.java +++ b/src/main/java/com/bao/dating/controller/ChatController.java @@ -4,15 +4,11 @@ import com.bao.dating.common.Result; import com.bao.dating.common.ResultCode; import com.bao.dating.common.result.PageResult; import com.bao.dating.context.UserContext; -import com.bao.dating.pojo.dto.ChatHistoryQueryDTO; import com.bao.dating.pojo.vo.ChatRecordsVO; import com.bao.dating.service.ChatService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * 聊天控制器 @@ -28,15 +24,18 @@ public class ChatController { /** * 获取聊天记录 * @param targetUserId 目标用户ID - * @param queryDTO 查询参数 - * @return 聊天记录列表 + * @param page 页码 + * @param size 页大小 */ @GetMapping("/history/{targetUserId}") public Result> getChatHistory( @PathVariable Long targetUserId, - ChatHistoryQueryDTO queryDTO){ + @RequestParam(defaultValue = "1") Integer page, + @RequestParam(defaultValue = "50") Integer size){ Long currentUserId = UserContext.getUserId(); - PageResult history = chatService.getChatHistory(currentUserId, targetUserId, queryDTO); + PageResult history = chatService.getChatHistory(currentUserId, targetUserId, page, size); return Result.success(ResultCode.SUCCESS, "获取聊天记录成功", history); } + + } diff --git a/src/main/java/com/bao/dating/mapper/ChatRecordsMapper.java b/src/main/java/com/bao/dating/mapper/ChatRecordsMapper.java index 2e37587..ba4d569 100644 --- a/src/main/java/com/bao/dating/mapper/ChatRecordsMapper.java +++ b/src/main/java/com/bao/dating/mapper/ChatRecordsMapper.java @@ -1,12 +1,10 @@ package com.bao.dating.mapper; -import com.bao.dating.pojo.dto.ChatHistoryQueryDTO; import com.bao.dating.pojo.entity.ChatRecords; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import java.time.LocalDateTime; import java.util.List; @Mapper @@ -19,12 +17,8 @@ public interface ChatRecordsMapper { /** * 根据用户ID和接收方用户ID查询聊天记录 */ - List selectByUsersAndConditions( + List selectChatWindowHistory( @Param("currentUserId") Long currentUserId, - @Param("targetUserId") Long targetUserId, - @Param("messageContent") String messageContent, - @Param("startTime") LocalDateTime startTime, - @Param("endTime") LocalDateTime endTime, - @Param("messageType") Integer messageType + @Param("targetUserId") Long targetUserId ); } diff --git a/src/main/java/com/bao/dating/pojo/dto/ChatHistoryQueryDTO.java b/src/main/java/com/bao/dating/pojo/dto/ChatHistoryQueryDTO.java deleted file mode 100644 index 96816d6..0000000 --- a/src/main/java/com/bao/dating/pojo/dto/ChatHistoryQueryDTO.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.bao.dating.pojo.dto; - -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDate; - -/** - * 聊天记录查询参数 - * @author KilLze - */ -@Data -public class ChatHistoryQueryDTO { - private Integer page; - private Integer size; - private Long targetUserId; - private String messageContent; - @JsonFormat(pattern = "yyyy-MM-dd") - @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) - private LocalDate date; - private Integer messageType; -} \ No newline at end of file diff --git a/src/main/java/com/bao/dating/pojo/dto/ChatRecordsDTO.java b/src/main/java/com/bao/dating/pojo/dto/ChatRecordsDTO.java deleted file mode 100644 index dc2d6b8..0000000 --- a/src/main/java/com/bao/dating/pojo/dto/ChatRecordsDTO.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.bao.dating.pojo.dto; - -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * 聊天记录数据传输对象 - * @author KilLze - */ -@Data -public class ChatRecordsDTO { - - /** 聊天记录ID */ - private Long chatId; - /** 发送者用户ID */ - private Long senderUserId; - /** 接收者用户ID */ - private Long receiverUserId; - /** 消息内容 */ - private String messageContent; - /** 消息类型 (1-文本消息,2-文件消息) */ - private Integer messageType; - /** 阅读状态 (0-未读,1-已读) */ - private Integer readStatus; - /** 阅读时间 */ - private LocalDateTime readTime; - /** 发送时间 */ - private LocalDateTime sendTime; - /** 消息状态 (1-正常,2-已撤回,3-已删除) */ - private Integer messageStatus; -} diff --git a/src/main/java/com/bao/dating/pojo/vo/ChatSessionDetailVO.java b/src/main/java/com/bao/dating/pojo/vo/ChatSessionDetailVO.java deleted file mode 100644 index e619a07..0000000 --- a/src/main/java/com/bao/dating/pojo/vo/ChatSessionDetailVO.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.bao.dating.pojo.vo; - -import lombok.Data; - -import java.util.List; - -/** - * 聊天会话详情 - * @author KilLze - */ -@Data -public class ChatSessionDetailVO { - - /** 会话信息 */ - private ChatSessionsVO session; - - /** 聊天记录列表 */ - private List records; -} diff --git a/src/main/java/com/bao/dating/service/ChatService.java b/src/main/java/com/bao/dating/service/ChatService.java index c9aa62a..8e84e63 100644 --- a/src/main/java/com/bao/dating/service/ChatService.java +++ b/src/main/java/com/bao/dating/service/ChatService.java @@ -1,7 +1,6 @@ package com.bao.dating.service; import com.bao.dating.common.result.PageResult; -import com.bao.dating.pojo.dto.ChatHistoryQueryDTO; import com.bao.dating.pojo.dto.ChatRecordSendDTO; import com.bao.dating.pojo.vo.ChatRecordsVO; @@ -20,10 +19,11 @@ public interface ChatService { /** * 获取聊天记录 - * @param currentUserId 发送方用户ID - * @param targetUserId 接收方用户ID - * @param queryDTO 查询参数 - * @return 聊天记录VO列表 + * @param currentUserId 当前用户ID + * @param targetUserId 目标用户ID + * @param page 页码 + * @param size 页大小 + * @return 聊天记录列表 */ - PageResult getChatHistory(Long currentUserId, Long targetUserId, ChatHistoryQueryDTO queryDTO); + PageResult getChatHistory(Long currentUserId, Long targetUserId, Integer page, Integer size); } diff --git a/src/main/java/com/bao/dating/service/impl/ChatServiceImpl.java b/src/main/java/com/bao/dating/service/impl/ChatServiceImpl.java index a7f668c..3b0d073 100644 --- a/src/main/java/com/bao/dating/service/impl/ChatServiceImpl.java +++ b/src/main/java/com/bao/dating/service/impl/ChatServiceImpl.java @@ -3,7 +3,6 @@ package com.bao.dating.service.impl; import com.bao.dating.common.result.PageResult; import com.bao.dating.mapper.ChatRecordsMapper; import com.bao.dating.mapper.ChatSessionsMapper; -import com.bao.dating.pojo.dto.ChatHistoryQueryDTO; import com.bao.dating.pojo.dto.ChatRecordSendDTO; import com.bao.dating.pojo.dto.UserNicknameDTO; import com.bao.dating.pojo.entity.ChatRecords; @@ -20,7 +19,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; -import java.time.LocalTime; import java.util.List; import java.util.stream.Collectors; @@ -115,41 +113,24 @@ public class ChatServiceImpl implements ChatService { /** * 获取聊天记录 - * @param currentUserId 当前用户ID - * @param targetUserId 目标用户ID - * @param queryDTO 查询参数 * @return 聊天记录列表 */ @Override - public PageResult getChatHistory(Long currentUserId, Long targetUserId, ChatHistoryQueryDTO queryDTO) { - Integer page = queryDTO.getPage(); + public PageResult getChatHistory(Long currentUserId, Long targetUserId, Integer page, Integer size) { + if (page == null || page < 1) { page = 1; } - Integer size = queryDTO.getSize(); if (size == null || size < 1 || size > 100) { size = 50; } - LocalDateTime startTime = null; - LocalDateTime endTime = null; - if (queryDTO.getDate() != null) { - startTime = queryDTO.getDate().atStartOfDay(); - endTime = queryDTO.getDate().atTime(LocalTime.MAX); - } - // 分页 PageHelper.startPage(page, size); // 查询 - List recordsList = chatRecordsMapper.selectByUsersAndConditions( - currentUserId, - targetUserId, - queryDTO.getMessageContent(), - startTime, - endTime, - queryDTO.getMessageType() - ); + List recordsList = + chatRecordsMapper.selectChatWindowHistory(currentUserId, targetUserId); // 使用 PageInfo 封装查询结果 PageInfo pageInfo = new PageInfo<>(recordsList); diff --git a/src/main/resources/com/bao/dating/mapper/ChatRecordsMapper.xml b/src/main/resources/com/bao/dating/mapper/ChatRecordsMapper.xml index 273a47e..b5a5647 100644 --- a/src/main/resources/com/bao/dating/mapper/ChatRecordsMapper.xml +++ b/src/main/resources/com/bao/dating/mapper/ChatRecordsMapper.xml @@ -31,30 +31,19 @@ ) - - SELECT chat_id, sender_user_id, receiver_user_id, message_content, message_type, read_status, read_time, send_time, message_status, created_at, updated_at FROM chat_records - WHERE ( + WHERE + message_status = 1 + AND ( (sender_user_id = #{currentUserId} AND receiver_user_id = #{targetUserId}) - OR (sender_user_id = #{targetUserId} AND receiver_user_id = #{currentUserId}) - ) - AND message_status = 1 - - - AND message_content LIKE CONCAT('%', #{messageContent}, '%') - - - AND send_time >= #{startTime} - - - AND send_time <= #{endTime} - - - AND message_type = #{messageType} - + OR + (sender_user_id = #{targetUserId} AND receiver_user_id = #{currentUserId}) + ) ORDER BY send_time DESC \ No newline at end of file