完成创建会话添加对方昵称

This commit is contained in:
KilLze
2026-01-05 22:48:53 +08:00
parent 951cd7249d
commit fb2b7823b8
7 changed files with 92 additions and 3 deletions

View File

@@ -4,7 +4,9 @@ package com.bao.dating.config;
import com.bao.dating.interceptor.TokenInterceptor; import com.bao.dating.interceptor.TokenInterceptor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/** /**
@@ -32,4 +34,14 @@ public class WebConfig implements WebMvcConfigurer {
"/user/login" "/user/login"
); );
} }
}
/**
* 配置静态资源映射
* @param registry 静态资源注册器
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/");
}
}

View File

@@ -0,0 +1,13 @@
package com.bao.dating.pojo.dto;
import lombok.Data;
/**
* 用户昵称数据传输对象
* @author KilLze
*/
@Data
public class UserNicknameDTO {
private Long userId;
private String nickname;
}

View File

@@ -4,6 +4,10 @@ import lombok.Data;
import java.util.List; import java.util.List;
/**
* 聊天会话详情
* @author KilLze
*/
@Data @Data
public class ChatSessionDetailVO { public class ChatSessionDetailVO {

View File

@@ -4,6 +4,10 @@ import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/**
* 会话信息
* @author KilLze
*/
@Data @Data
public class ChatSessionsVO { public class ChatSessionsVO {

View File

@@ -2,6 +2,7 @@ package com.bao.dating.service;
import com.bao.dating.pojo.dto.UserInfoUpdateDTO; import com.bao.dating.pojo.dto.UserInfoUpdateDTO;
import com.bao.dating.pojo.dto.UserLoginDTO; import com.bao.dating.pojo.dto.UserLoginDTO;
import com.bao.dating.pojo.dto.UserNicknameDTO;
import com.bao.dating.pojo.vo.UserInfoVO; import com.bao.dating.pojo.vo.UserInfoVO;
import com.bao.dating.pojo.vo.UserLoginVO; import com.bao.dating.pojo.vo.UserLoginVO;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@@ -52,4 +53,11 @@ public interface UserService {
* @return 更新后的用户信息 * @return 更新后的用户信息
*/ */
UserInfoVO updateUserInfo(UserInfoUpdateDTO userInfoUpdateDTO); UserInfoVO updateUserInfo(UserInfoUpdateDTO userInfoUpdateDTO);
/**
* 根据用户ID查询用户昵称
* @param userId 用户ID
* @return 用户
*/
UserNicknameDTO getUserNicknameById(Long userId);
} }

View File

@@ -3,10 +3,12 @@ package com.bao.dating.service.impl;
import com.bao.dating.mapper.ChatRecordsMapper; import com.bao.dating.mapper.ChatRecordsMapper;
import com.bao.dating.mapper.ChatSessionsMapper; import com.bao.dating.mapper.ChatSessionsMapper;
import com.bao.dating.pojo.dto.ChatRecordSendDTO; import com.bao.dating.pojo.dto.ChatRecordSendDTO;
import com.bao.dating.pojo.dto.UserNicknameDTO;
import com.bao.dating.pojo.entity.ChatRecords; import com.bao.dating.pojo.entity.ChatRecords;
import com.bao.dating.pojo.entity.ChatSessions; import com.bao.dating.pojo.entity.ChatSessions;
import com.bao.dating.pojo.vo.ChatRecordsVO; import com.bao.dating.pojo.vo.ChatRecordsVO;
import com.bao.dating.service.ChatService; import com.bao.dating.service.ChatService;
import com.bao.dating.service.UserService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -31,6 +33,9 @@ public class ChatServiceImpl implements ChatService {
@Autowired @Autowired
private ChatSessionsMapper chatSessionsMapper; private ChatSessionsMapper chatSessionsMapper;
@Autowired
private UserService userService;
/** /**
* 消息入库,如果会话不存在则创建会话 * 消息入库,如果会话不存在则创建会话
* @param senderUserId 发送者用户ID * @param senderUserId 发送者用户ID
@@ -56,7 +61,19 @@ public class ChatServiceImpl implements ChatService {
ChatSessions sessions = new ChatSessions(); ChatSessions sessions = new ChatSessions();
sessions.setUserId(senderUserId); sessions.setUserId(senderUserId);
sessions.setTargetUserId(dto.getReceiverUserId()); sessions.setTargetUserId(dto.getReceiverUserId());
sessions.setSessionName(""); // 获取接收方昵称作为发送方会话名称
try {
UserNicknameDTO receiverNicknameInfo = userService.getUserNicknameById(dto.getReceiverUserId());
if (receiverNicknameInfo != null && receiverNicknameInfo.getNickname() != null) {
sessions.setSessionName(receiverNicknameInfo.getNickname());
} else {
log.warn("接收用户ID获取用户信息时出现错误: {} , 使用默认id", dto.getReceiverUserId());
sessions.setSessionName("用户" + dto.getReceiverUserId());
}
} catch (Exception e) {
log.error("接收用户ID获取用户信息时出现错误: {} , 使用默认id", dto.getReceiverUserId(), e);
sessions.setSessionName("用户" + dto.getReceiverUserId());
}
sessions.setLastMessageId(record.getChatId()); sessions.setLastMessageId(record.getChatId());
sessions.setLastMessageContent(record.getMessageContent()); sessions.setLastMessageContent(record.getMessageContent());
sessions.setLastMessageTime(record.getSendTime()); sessions.setLastMessageTime(record.getSendTime());
@@ -67,7 +84,18 @@ public class ChatServiceImpl implements ChatService {
// 创建接收方会话 // 创建接收方会话
sessions.setUserId(dto.getReceiverUserId()); sessions.setUserId(dto.getReceiverUserId());
sessions.setTargetUserId(senderUserId); sessions.setTargetUserId(senderUserId);
sessions.setSessionName(""); try {
UserNicknameDTO senderNicknameInfo = userService.getUserNicknameById(senderUserId);
if (senderNicknameInfo != null && senderNicknameInfo.getNickname() != null) {
sessions.setSessionName(senderNicknameInfo.getNickname());
} else {
log.warn("接收用户ID获取用户信息时出现错误: {} , 使用默认id", senderUserId);
sessions.setSessionName("用户" + senderUserId);
}
} catch (Exception e) {
log.error("接收用户ID获取用户信息时出现错误: {} , 使用默认id", senderUserId, e);
sessions.setSessionName("用户" + senderUserId);
}
chatSessionsMapper.insertIfNotExistsForReceiver(sessions); chatSessionsMapper.insertIfNotExistsForReceiver(sessions);
chatSessionsMapper.updateSessionForReceiver(sessions); chatSessionsMapper.updateSessionForReceiver(sessions);

View File

@@ -10,6 +10,7 @@ import com.bao.dating.context.UserContext;
import com.bao.dating.mapper.UserMapper; import com.bao.dating.mapper.UserMapper;
import com.bao.dating.pojo.dto.UserInfoUpdateDTO; import com.bao.dating.pojo.dto.UserInfoUpdateDTO;
import com.bao.dating.pojo.dto.UserLoginDTO; import com.bao.dating.pojo.dto.UserLoginDTO;
import com.bao.dating.pojo.dto.UserNicknameDTO;
import com.bao.dating.pojo.entity.User; import com.bao.dating.pojo.entity.User;
import com.bao.dating.pojo.vo.UserInfoVO; import com.bao.dating.pojo.vo.UserInfoVO;
import com.bao.dating.pojo.vo.UserLoginVO; import com.bao.dating.pojo.vo.UserLoginVO;
@@ -311,4 +312,23 @@ public class UserServiceImpl implements UserService {
BeanUtils.copyProperties(updatedUser, userInfoVO); BeanUtils.copyProperties(updatedUser, userInfoVO);
return userInfoVO; return userInfoVO;
} }
/**
* 根据用户ID获取用户昵称
*
* @param userId 用户ID
* @return 用户昵称
*/
@Override
public UserNicknameDTO getUserNicknameById(Long userId) {
// 查询数据库获取昵称
User user = userMapper.selectByUserId(userId);
if (user == null) {
throw new RuntimeException("没有此用户");
}
UserNicknameDTO dto = new UserNicknameDTO();
dto.setUserId(user.getUserId());
dto.setNickname(user.getNickname());
return dto;
}
} }