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

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 org.springframework.beans.factory.annotation.Autowired;
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.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
@@ -32,4 +34,14 @@ public class WebConfig implements WebMvcConfigurer {
"/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;
/**
* 聊天会话详情
* @author KilLze
*/
@Data
public class ChatSessionDetailVO {

View File

@@ -4,6 +4,10 @@ import lombok.Data;
import java.time.LocalDateTime;
/**
* 会话信息
* @author KilLze
*/
@Data
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.UserLoginDTO;
import com.bao.dating.pojo.dto.UserNicknameDTO;
import com.bao.dating.pojo.vo.UserInfoVO;
import com.bao.dating.pojo.vo.UserLoginVO;
import org.springframework.web.multipart.MultipartFile;
@@ -52,4 +53,11 @@ public interface UserService {
* @return 更新后的用户信息
*/
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.ChatSessionsMapper;
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.ChatSessions;
import com.bao.dating.pojo.vo.ChatRecordsVO;
import com.bao.dating.service.ChatService;
import com.bao.dating.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -31,6 +33,9 @@ public class ChatServiceImpl implements ChatService {
@Autowired
private ChatSessionsMapper chatSessionsMapper;
@Autowired
private UserService userService;
/**
* 消息入库,如果会话不存在则创建会话
* @param senderUserId 发送者用户ID
@@ -56,7 +61,19 @@ public class ChatServiceImpl implements ChatService {
ChatSessions sessions = new ChatSessions();
sessions.setUserId(senderUserId);
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.setLastMessageContent(record.getMessageContent());
sessions.setLastMessageTime(record.getSendTime());
@@ -67,7 +84,18 @@ public class ChatServiceImpl implements ChatService {
// 创建接收方会话
sessions.setUserId(dto.getReceiverUserId());
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.updateSessionForReceiver(sessions);

View File

@@ -10,6 +10,7 @@ import com.bao.dating.context.UserContext;
import com.bao.dating.mapper.UserMapper;
import com.bao.dating.pojo.dto.UserInfoUpdateDTO;
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.vo.UserInfoVO;
import com.bao.dating.pojo.vo.UserLoginVO;
@@ -311,4 +312,23 @@ public class UserServiceImpl implements UserService {
BeanUtils.copyProperties(updatedUser, 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;
}
}