diff --git a/src/main/java/com/bao/dating/config/WebConfig.java b/src/main/java/com/bao/dating/config/WebConfig.java index 98a0683..37e08aa 100644 --- a/src/main/java/com/bao/dating/config/WebConfig.java +++ b/src/main/java/com/bao/dating/config/WebConfig.java @@ -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/"); + } +} \ No newline at end of file diff --git a/src/main/java/com/bao/dating/pojo/dto/UserNicknameDTO.java b/src/main/java/com/bao/dating/pojo/dto/UserNicknameDTO.java new file mode 100644 index 0000000..8b2afd1 --- /dev/null +++ b/src/main/java/com/bao/dating/pojo/dto/UserNicknameDTO.java @@ -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; +} diff --git a/src/main/java/com/bao/dating/pojo/vo/ChatSessionDetailVO.java b/src/main/java/com/bao/dating/pojo/vo/ChatSessionDetailVO.java index 2ede2d8..e619a07 100644 --- a/src/main/java/com/bao/dating/pojo/vo/ChatSessionDetailVO.java +++ b/src/main/java/com/bao/dating/pojo/vo/ChatSessionDetailVO.java @@ -4,6 +4,10 @@ import lombok.Data; import java.util.List; +/** + * 聊天会话详情 + * @author KilLze + */ @Data public class ChatSessionDetailVO { diff --git a/src/main/java/com/bao/dating/pojo/vo/ChatSessionsVO.java b/src/main/java/com/bao/dating/pojo/vo/ChatSessionsVO.java index 22fa0ed..276bfd1 100644 --- a/src/main/java/com/bao/dating/pojo/vo/ChatSessionsVO.java +++ b/src/main/java/com/bao/dating/pojo/vo/ChatSessionsVO.java @@ -4,6 +4,10 @@ import lombok.Data; import java.time.LocalDateTime; +/** + * 会话信息 + * @author KilLze + */ @Data public class ChatSessionsVO { diff --git a/src/main/java/com/bao/dating/service/UserService.java b/src/main/java/com/bao/dating/service/UserService.java index 8dd074c..6b620d2 100644 --- a/src/main/java/com/bao/dating/service/UserService.java +++ b/src/main/java/com/bao/dating/service/UserService.java @@ -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); } 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 153215d..2da21b0 100644 --- a/src/main/java/com/bao/dating/service/impl/ChatServiceImpl.java +++ b/src/main/java/com/bao/dating/service/impl/ChatServiceImpl.java @@ -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); diff --git a/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java b/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java index 189b7e3..7118a08 100644 --- a/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java +++ b/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java @@ -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; + } }