diff --git a/src/main/java/com/bao/dating/common/result/ChatSendResult.java b/src/main/java/com/bao/dating/common/result/ChatSendResult.java new file mode 100644 index 0000000..cb694bd --- /dev/null +++ b/src/main/java/com/bao/dating/common/result/ChatSendResult.java @@ -0,0 +1,15 @@ +package com.bao.dating.common.result; + +import com.bao.dating.pojo.vo.ChatRecordsVO; +import lombok.Data; + +/** + * 聊天发送结果 + * @author KilLze + */ +@Data +public class ChatSendResult { + private boolean success; + private String message; + private ChatRecordsVO record; +} diff --git a/src/main/java/com/bao/dating/mapper/ChatSessionsMapper.java b/src/main/java/com/bao/dating/mapper/ChatSessionsMapper.java index 2351070..ed53feb 100644 --- a/src/main/java/com/bao/dating/mapper/ChatSessionsMapper.java +++ b/src/main/java/com/bao/dating/mapper/ChatSessionsMapper.java @@ -5,6 +5,7 @@ import com.bao.dating.pojo.entity.ChatRecords; import com.bao.dating.pojo.entity.ChatSessions; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -18,6 +19,15 @@ public interface ChatSessionsMapper { */ int upsertSessionForSender(ChatSessions chatSessions); + /** + * 获取会话 + * @param userId 用户ID + * @param targetUserId 目标用户ID + * @return 会话 + */ + @Select("SELECT * FROM chat_sessions WHERE user_id = #{userId} AND target_user_id = #{targetUserId} LIMIT 1") + ChatSessions getSession(@Param("userId") Long userId, @Param("targetUserId") Long targetUserId); + /** * 如果接收方存在会话则更新,不存在则创建 * @param chatSessions 会话 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 32d4fec..2347d18 100644 --- a/src/main/java/com/bao/dating/service/impl/ChatServiceImpl.java +++ b/src/main/java/com/bao/dating/service/impl/ChatServiceImpl.java @@ -30,7 +30,7 @@ import java.util.stream.Collectors; */ @Slf4j @Service -public class ChatServiceImpl implements ChatService { +public class ChatServiceImpl implements ChatService { @Autowired private ChatRecordsMapper chatRecordsMapper; @@ -49,6 +49,12 @@ public class ChatServiceImpl implements ChatService { @Override @Transactional(rollbackFor = Exception.class) public ChatRecordsVO createSession(Long senderUserId, ChatRecordSendDTO dto) { + + ChatSessions session = chatSessionsMapper.getSession(senderUserId, dto.getReceiverUserId()); + if (session != null && session.getSessionStatus() == 3) { + throw new RuntimeException("会话已删除,无法发送消息"); + } + ChatRecords record = new ChatRecords(); record.setSenderUserId(senderUserId); record.setReceiverUserId(dto.getReceiverUserId()); @@ -102,9 +108,6 @@ public class ChatServiceImpl implements ChatService { chatSessionsMapper.upsertSessionForReceiver(sessions); - - - // 3. 返回 VO ChatRecordsVO vo = new ChatRecordsVO(); BeanUtils.copyProperties(record, vo); diff --git a/src/main/resources/com/bao/dating/mapper/ChatSessionsMapper.xml b/src/main/resources/com/bao/dating/mapper/ChatSessionsMapper.xml index 015bf04..2e73961 100644 --- a/src/main/resources/com/bao/dating/mapper/ChatSessionsMapper.xml +++ b/src/main/resources/com/bao/dating/mapper/ChatSessionsMapper.xml @@ -58,6 +58,7 @@ FROM chat_sessions WHERE user_id = #{userId} AND session_status = 1 + AND session_status in (1,2) ORDER BY top_status DESC, last_message_time DESC \ No newline at end of file