From a4e66b39d12d079ba7b3b984a63477afaa21e45f Mon Sep 17 00:00:00 2001 From: KilLze Date: Wed, 7 Jan 2026 23:35:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BC=9A=E8=AF=9D=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=9B=B4=E6=96=B0=E3=80=81=E7=BD=AE=E9=A1=B6=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=9B=B4=E6=96=B0=E3=80=81=E5=85=8D=E6=89=93=E6=89=B0?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bao/dating/controller/ChatController.java | 36 ++++++++++++++- .../bao/dating/mapper/ChatSessionsMapper.java | 33 +++++++++++++ .../dating/pojo/dto/ChatSessionMuteDTO.java | 13 ++++++ .../dating/pojo/dto/ChatSessionStatusDTO.java | 13 ++++++ .../dating/pojo/dto/ChatSessionTopDTO.java | 13 ++++++ .../com/bao/dating/service/ChatService.java | 24 +++++++++- .../dating/service/impl/ChatServiceImpl.java | 46 +++++++++++++++++-- .../bao/dating/mapper/ChatSessionsMapper.xml | 28 +++++++++++ 8 files changed, 198 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/bao/dating/pojo/dto/ChatSessionMuteDTO.java create mode 100644 src/main/java/com/bao/dating/pojo/dto/ChatSessionStatusDTO.java create mode 100644 src/main/java/com/bao/dating/pojo/dto/ChatSessionTopDTO.java diff --git a/src/main/java/com/bao/dating/controller/ChatController.java b/src/main/java/com/bao/dating/controller/ChatController.java index 51d7799..0466ecc 100644 --- a/src/main/java/com/bao/dating/controller/ChatController.java +++ b/src/main/java/com/bao/dating/controller/ChatController.java @@ -4,8 +4,7 @@ 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.ChatCursorPageDTO; -import com.bao.dating.pojo.dto.ChatHistoryQueryDTO; +import com.bao.dating.pojo.dto.*; import com.bao.dating.pojo.vo.ChatRecordsVO; import com.bao.dating.pojo.vo.ChatSessionsVO; import com.bao.dating.service.ChatService; @@ -57,4 +56,37 @@ public class ChatController { List list = chatService.getSessionList(currentUserId); return Result.success(ResultCode.SUCCESS, "获取会话列表成功", list); } + + /** + * 更新会话状态 + * @param dto 会话状态 + * @return 无 + */ + @PostMapping("/session/status") + public Result updateSessionStatus(@RequestBody ChatSessionStatusDTO dto) { + chatService.updateSessionStatus(UserContext.getUserId(), dto); + return Result.success(ResultCode.SUCCESS, null); + } + + /** + * 置顶会话 + * @param dto 置顶状态 + * @return 无 + */ + @PostMapping("/session/top") + public Result updateTopStatus(@RequestBody ChatSessionTopDTO dto) { + chatService.updateTopStatus(UserContext.getUserId(), dto); + return Result.success(ResultCode.SUCCESS, null); + } + + /** + * 静音会话 + * @param dto 静音状态 + * @return 无 + */ + @PostMapping("/session/mute") + public Result updateMuteStatus(@RequestBody ChatSessionMuteDTO dto) { + chatService.updateMuteStatus(UserContext.getUserId(), dto); + return Result.success(ResultCode.SUCCESS, null); + } } diff --git a/src/main/java/com/bao/dating/mapper/ChatSessionsMapper.java b/src/main/java/com/bao/dating/mapper/ChatSessionsMapper.java index ed53feb..5647550 100644 --- a/src/main/java/com/bao/dating/mapper/ChatSessionsMapper.java +++ b/src/main/java/com/bao/dating/mapper/ChatSessionsMapper.java @@ -52,4 +52,37 @@ public interface ChatSessionsMapper { * @return 会话列表 */ List selectSessionsByUserId(@Param("userId") Long userId); + + /** + * 更新会话状态 + * @param userId 用户ID + * @param targetUserId 目标用户ID + * @param sessionStatus 会话状态 + * @return 影响行数 + */ + int updateSessionStatus(@Param("userId") Long userId, + @Param("targetUserId") Long targetUserId, + @Param("sessionStatus") Integer sessionStatus); + + /** + * 更新会话置顶状态 + * @param userId 用户ID + * @param targetUserId 目标用户ID + * @param topStatus 置顶状态 + * @return 影响行数 + */ + int updateTopStatus(@Param("userId") Long userId, + @Param("targetUserId") Long targetUserId, + @Param("topStatus") Integer topStatus); + + /** + * 更新会话免打扰状态 + * @param userId 用户ID + * @param targetUserId 目标用户ID + * @param muteStatus 免打扰状态 + * @return 影响行数 + */ + int updateMuteStatus(@Param("userId") Long userId, + @Param("targetUserId") Long targetUserId, + @Param("muteStatus") Integer muteStatus); } diff --git a/src/main/java/com/bao/dating/pojo/dto/ChatSessionMuteDTO.java b/src/main/java/com/bao/dating/pojo/dto/ChatSessionMuteDTO.java new file mode 100644 index 0000000..b932220 --- /dev/null +++ b/src/main/java/com/bao/dating/pojo/dto/ChatSessionMuteDTO.java @@ -0,0 +1,13 @@ +package com.bao.dating.pojo.dto; + +import lombok.Data; + +/** + * 聊天会话静音参数 + * @author lenovo + */ +@Data +public class ChatSessionMuteDTO { + private Long targetUserId; + private Integer muteStatus; +} diff --git a/src/main/java/com/bao/dating/pojo/dto/ChatSessionStatusDTO.java b/src/main/java/com/bao/dating/pojo/dto/ChatSessionStatusDTO.java new file mode 100644 index 0000000..b637c39 --- /dev/null +++ b/src/main/java/com/bao/dating/pojo/dto/ChatSessionStatusDTO.java @@ -0,0 +1,13 @@ +package com.bao.dating.pojo.dto; + +import lombok.Data; + +/** + * 会话状态参数 + * @author lenovo + */ +@Data +public class ChatSessionStatusDTO { + private Long targetUserId; + private Integer sessionStatus; +} diff --git a/src/main/java/com/bao/dating/pojo/dto/ChatSessionTopDTO.java b/src/main/java/com/bao/dating/pojo/dto/ChatSessionTopDTO.java new file mode 100644 index 0000000..2cbdf18 --- /dev/null +++ b/src/main/java/com/bao/dating/pojo/dto/ChatSessionTopDTO.java @@ -0,0 +1,13 @@ +package com.bao.dating.pojo.dto; + +import lombok.Data; + +/** + * 会话置顶参数 + * @author lenovo + */ +@Data +public class ChatSessionTopDTO { + private Long targetUserId; + private Integer topStatus; +} diff --git a/src/main/java/com/bao/dating/service/ChatService.java b/src/main/java/com/bao/dating/service/ChatService.java index 564000e..9b47425 100644 --- a/src/main/java/com/bao/dating/service/ChatService.java +++ b/src/main/java/com/bao/dating/service/ChatService.java @@ -1,8 +1,7 @@ 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.dto.*; import com.bao.dating.pojo.vo.ChatRecordsVO; import com.bao.dating.pojo.vo.ChatSessionsVO; @@ -43,4 +42,25 @@ public interface ChatService { * @return 会话列表 */ List getSessionList(Long currentUserId); + + /** + * 更新会话状态 + * @param userId 用户ID + * @param dto 更新参数 + */ + void updateSessionStatus(Long userId, ChatSessionStatusDTO dto); + + /** + * 置顶会话 + * @param userId 用户ID + * @param dto 置顶参数 + */ + void updateTopStatus(Long userId, ChatSessionTopDTO dto); + + /** + * 免打扰会话 + * @param userId 用户ID + * @param dto 免打扰参数 + */ + void updateMuteStatus(Long userId, ChatSessionMuteDTO dto); } 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 85be330..93e5f0e 100644 --- a/src/main/java/com/bao/dating/service/impl/ChatServiceImpl.java +++ b/src/main/java/com/bao/dating/service/impl/ChatServiceImpl.java @@ -2,10 +2,7 @@ package com.bao.dating.service.impl; 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.ChatMarkReadDTO; -import com.bao.dating.pojo.dto.ChatRecordSendDTO; -import com.bao.dating.pojo.dto.UserInfoDTO; +import com.bao.dating.pojo.dto.*; import com.bao.dating.pojo.entity.ChatRecords; import com.bao.dating.pojo.entity.ChatSessions; import com.bao.dating.pojo.vo.ChatRecordsVO; @@ -183,4 +180,45 @@ public class ChatServiceImpl implements ChatService { }).collect(Collectors.toList()); } + /** + * 更新会话状态 + * @param userId 用户ID + * @param dto 会话状态 + */ + @Override + public void updateSessionStatus(Long userId, ChatSessionStatusDTO dto) { + chatSessionsMapper.updateSessionStatus( + userId, + dto.getTargetUserId(), + dto.getSessionStatus() + ); + } + + /** + * 置顶会话 + * @param userId 用户ID + * @param dto 置顶状态 + */ + @Override + public void updateTopStatus(Long userId, ChatSessionTopDTO dto) { + chatSessionsMapper.updateTopStatus( + userId, + dto.getTargetUserId(), + dto.getTopStatus() + ); + } + + /** + * 免打扰会话 + * @param userId 用户ID + * @param dto 免打扰状态 + */ + @Override + public void updateMuteStatus(Long userId, ChatSessionMuteDTO dto) { + chatSessionsMapper.updateMuteStatus( + userId, + dto.getTargetUserId(), + dto.getMuteStatus() + ); + } } diff --git a/src/main/resources/com/bao/dating/mapper/ChatSessionsMapper.xml b/src/main/resources/com/bao/dating/mapper/ChatSessionsMapper.xml index 2e73961..79bb6a9 100644 --- a/src/main/resources/com/bao/dating/mapper/ChatSessionsMapper.xml +++ b/src/main/resources/com/bao/dating/mapper/ChatSessionsMapper.xml @@ -61,4 +61,32 @@ AND session_status in (1,2) ORDER BY top_status DESC, last_message_time DESC + + + + UPDATE chat_sessions + SET session_status = #{sessionStatus}, + updated_at = NOW() + WHERE user_id = #{userId} + AND target_user_id = #{targetUserId} + + + + + UPDATE chat_sessions + SET top_status = #{topStatus}, + updated_at = NOW() + WHERE user_id = #{userId} + AND target_user_id = #{targetUserId} + + + + + UPDATE chat_sessions + SET mute_status = #{muteStatus}, + updated_at = NOW() + WHERE user_id = #{userId} + AND target_user_id = #{targetUserId} + + \ No newline at end of file