update 聊天室根据用户邮箱查找聊天室接口修改

This commit is contained in:
yyb 2025-04-15 17:10:40 +08:00
parent c47c321b76
commit 476cb6711e
6 changed files with 15 additions and 21 deletions

View File

@ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@RestController @RestController
@RequestMapping("/chat/message") @RequestMapping("/message")
@Api(tags = "聊天消息相关接口") @Api(tags = "聊天消息相关接口")
public class ChatMessageController { public class ChatMessageController {
@ -62,7 +62,7 @@ public class ChatMessageController {
public AjaxResult readMessage( public AjaxResult readMessage(
@ApiParam(value = "聊天室id", required = true, example = "1") @ApiParam(value = "聊天室id", required = true, example = "1")
@RequestParam Long roomId) { @RequestParam Long roomId) {
return null; return chatMessageService.readMessage(roomId);
} }

View File

@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.*;
@Api(tags = "聊天室相关接口") @Api(tags = "聊天室相关接口")
@RestController @RestController
@RequestMapping("/chat/rooms") @RequestMapping("/rooms")
public class ChatRoomController { public class ChatRoomController {
@Autowired @Autowired

View File

@ -2,9 +2,9 @@ package com.m2pool.chat.interceptor;
import com.m2pool.chat.entity.StompPrincipal; import com.m2pool.chat.entity.StompPrincipal;
import org.springframework.lang.Nullable;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.lang.Nullable;
import org.springframework.messaging.Message; import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel; import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.simp.SimpMessageHeaderAccessor; import org.springframework.messaging.simp.SimpMessageHeaderAccessor;
@ -16,8 +16,6 @@ import org.springframework.messaging.support.MessageHeaderAccessor;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Map; import java.util.Map;
import static com.m2pool.chat.constant.Destination.VISITOR_PREFIX;
/** /**
* @ClassName WebsocketChannelInterceptor * @ClassName WebsocketChannelInterceptor
* @Description websocket channel 通道拦截器 适用于前端@stomp/stompjs 实现. * @Description websocket channel 通道拦截器 适用于前端@stomp/stompjs 实现.
@ -38,21 +36,16 @@ public class WebsocketChannelInterceptor implements ChannelInterceptor {
//获取链接建立时的请求头信息 //获取链接建立时的请求头信息
StompHeaderAccessor accessor = StompHeaderAccessor.wrap(message); StompHeaderAccessor accessor = StompHeaderAccessor.wrap(message);
if (accessor.getCommand() == StompCommand.CONNECT) { if (accessor.getCommand() == StompCommand.CONNECT) {
String visitor = (String) accessor.getSessionAttributes().get(VISITOR_PREFIX);
LOGGER.info("------------收到websocket的连接消息"); LOGGER.info("------------收到websocket的连接消息");
//获取channel 中的请求头信息 //获取channel 中的请求头信息
StompHeaderAccessor mha = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); StompHeaderAccessor mha = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
Object raw = message.getHeaders().get(SimpMessageHeaderAccessor.NATIVE_HEADERS); Object raw = message.getHeaders().get(SimpMessageHeaderAccessor.NATIVE_HEADERS);
System.out.println("raw:"+raw); System.out.println("raw:"+raw);
if (raw instanceof Map) { if (raw instanceof Map) {
Object userInfo = ((Map) raw).get("userId"); Object userInfo = ((Map) raw).get("email");
// 游客或登录用户 if(userInfo instanceof ArrayList){
if (userInfo == null){
mha.setUser(new StompPrincipal(visitor));
}else if(userInfo instanceof ArrayList) {
mha.setUser(new StompPrincipal((String) ((ArrayList) userInfo).get(0))); mha.setUser(new StompPrincipal((String) ((ArrayList) userInfo).get(0)));
} }
} }
} }
if (accessor.getCommand() == StompCommand.SEND) { if (accessor.getCommand() == StompCommand.SEND) {

View File

@ -28,7 +28,7 @@ public interface ChatRoomMapper extends BaseMapper<ChatRoom> {
* @param email 客服邮箱 * @param email 客服邮箱
* @return * @return
*/ */
String findRoomByUserEmail(@Param("userEmail") String userEmail,@Param("email") String email); Long findRoomByUserEmail(@Param("userEmail") String userEmail,@Param("email") String email);

View File

@ -10,7 +10,6 @@ import com.m2pool.chat.service.ChatRoomService;
import com.m2pool.chat.vo.CharRoomVo; import com.m2pool.chat.vo.CharRoomVo;
import com.m2pool.common.core.constant.HttpStatus; import com.m2pool.common.core.constant.HttpStatus;
import com.m2pool.common.core.utils.PageUtils; import com.m2pool.common.core.utils.PageUtils;
import com.m2pool.common.core.utils.StringUtils;
import com.m2pool.common.core.web.Result.AjaxResult; import com.m2pool.common.core.web.Result.AjaxResult;
import com.m2pool.common.core.web.page.TableDataInfo; import com.m2pool.common.core.web.page.TableDataInfo;
import com.m2pool.common.security.utils.SecurityUtils; import com.m2pool.common.security.utils.SecurityUtils;
@ -66,14 +65,16 @@ public class ChatRoomServiceImpl extends ServiceImpl<ChatRoomMapper, ChatRoom> i
public AjaxResult findRoomByUserid(String email) { public AjaxResult findRoomByUserid(String email) {
//1.查询当前用户与对应用户是否已存在创建的聊天室 //1.查询当前用户与对应用户是否已存在创建的聊天室
String userEmail = SecurityUtils.getUsername(); String userEmail = SecurityUtils.getUsername();
String roomByUserEmail = chatRoomMapper.findRoomByUserEmail(userEmail, email); Long roomId = chatRoomMapper.findRoomByUserEmail(userEmail, email);
if(StringUtils.isNotEmpty(roomByUserEmail)){ if(roomId != null){
return AjaxResult.success(roomByUserEmail); return AjaxResult.success(roomId);
} }
ChatRoom build = ChatRoom.builder().userOneEmail(userEmail).userTwoEmail(email).build();
//2.不存在创建一个聊天室 //2.不存在创建一个聊天室
int insert = chatRoomMapper.insert(ChatRoom.builder().userOneEmail(userEmail).userTwoEmail(email).build()); int insert = chatRoomMapper.insert(build);
if (insert > 0){ if (insert > 0){
return AjaxResult.success(roomByUserEmail); roomId = build.getId();
return AjaxResult.success(roomId);
} }
return AjaxResult.error("聊天室不存在,并且创建聊天室失败"); return AjaxResult.error("聊天室不存在,并且创建聊天室失败");
} }

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.m2pool.chat.mapper.ChatRoomMapper"> <mapper namespace="com.m2pool.chat.mapper.ChatRoomMapper">
<select id="findRoomByUserEmail" resultType="java.lang.String"> <select id="findRoomByUserEmail" resultType="java.lang.Long">
SELECT SELECT
id id
FROM FROM