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