Compare commits
2 Commits
a4e66b39d1
...
0a17eb8deb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0a17eb8deb | ||
|
|
448ce1d3d6 |
@@ -11,6 +11,7 @@ import com.bao.dating.service.ChatService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -25,6 +26,17 @@ public class ChatController {
|
||||
@Autowired
|
||||
private ChatService chatService;
|
||||
|
||||
/**
|
||||
* 上传文件
|
||||
* @param file 文件
|
||||
* @return 文件URL
|
||||
*/
|
||||
@PostMapping("/upload")
|
||||
public Result<String> uploadVideo(@RequestParam MultipartFile file) {
|
||||
String url = chatService.uploadChat(file);
|
||||
return Result.success(ResultCode.SUCCESS, "文件上传成功", url);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取聊天记录
|
||||
* @param targetUserId 目标用户ID
|
||||
|
||||
@@ -31,7 +31,6 @@ public class PostController {
|
||||
* @param files 媒体文件数组
|
||||
* @return 上传后的文件URL列表
|
||||
*/
|
||||
@Log
|
||||
@PostMapping(value = "/upload", consumes = "multipart/form-data")
|
||||
public Result<List<String>> uploadMedia(@RequestParam("files") MultipartFile[] files) {
|
||||
List<String> fileUrls = postService.uploadMedia(files);
|
||||
@@ -43,7 +42,6 @@ public class PostController {
|
||||
* @param postDTO 动态信息
|
||||
* @return 发布的动态对象
|
||||
*/
|
||||
@Log
|
||||
@PostMapping( "/createPost")
|
||||
public Result<Post> createPostJson(@RequestBody PostRequestDTO postDTO) {
|
||||
// 调用 Service 层处理发布动态业务逻辑
|
||||
@@ -57,7 +55,6 @@ public class PostController {
|
||||
* @param postIds 动态ID
|
||||
* @return 删除结果
|
||||
*/
|
||||
@Log
|
||||
@PostMapping("/deletePost")
|
||||
public Result<String> deleteById(@RequestBody List<Long> postIds){
|
||||
int deletedCount = postService.deletePostById(postIds);
|
||||
@@ -81,7 +78,6 @@ public class PostController {
|
||||
* @param postRequestDTO 动态信息
|
||||
* @return 更新后的动态对象
|
||||
*/
|
||||
@Log
|
||||
@PostMapping("/{postId}/updatePost")
|
||||
public Result<PostEditVO> updatePost(@PathVariable Long postId, @RequestBody PostRequestDTO postRequestDTO) {
|
||||
PostEditVO result = postService.updatePost(postId, postRequestDTO);
|
||||
|
||||
@@ -64,7 +64,6 @@ public class UserController {
|
||||
* @param file 头像文件
|
||||
* @return 上传后的文件URL列表
|
||||
*/
|
||||
@Log
|
||||
@PostMapping(value = "/info/uploadAvatar", consumes = "multipart/form-data")
|
||||
public Result<String> uploadAvatar(@RequestParam("file") MultipartFile file) {
|
||||
String fileUrl = userService.uploadAvatar(file);
|
||||
@@ -76,7 +75,6 @@ public class UserController {
|
||||
* @param file 背景文件
|
||||
* @return 上传后的文件URL列表
|
||||
*/
|
||||
@Log
|
||||
@PostMapping(value = "/info/uploadBackground", consumes = "multipart/form-data")
|
||||
public Result<String> uploadBackground(@RequestParam("file") MultipartFile file) {
|
||||
String fileUrl = userService.uploadBackground(file);
|
||||
@@ -88,7 +86,6 @@ public class UserController {
|
||||
* @param userInfoUpdateDTO 用户信息更新参数
|
||||
* @return 更新后的用户信息
|
||||
*/
|
||||
@Log
|
||||
@PostMapping("/info/update")
|
||||
public Result<UserInfoVO> userInfoUpdate(@RequestBody UserInfoDTO userInfoUpdateDTO) {
|
||||
Long userId = UserContext.getUserId();
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.bao.dating.common.result.PageResult;
|
||||
import com.bao.dating.pojo.dto.*;
|
||||
import com.bao.dating.pojo.vo.ChatRecordsVO;
|
||||
import com.bao.dating.pojo.vo.ChatSessionsVO;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
@@ -21,6 +22,13 @@ public interface ChatService {
|
||||
*/
|
||||
ChatRecordsVO createSession(Long senderUserId, ChatRecordSendDTO dto);
|
||||
|
||||
/**
|
||||
* 上传媒体文件
|
||||
* @param file 文件
|
||||
* @return 文件URL列表
|
||||
*/
|
||||
String uploadChat(MultipartFile file);
|
||||
|
||||
/**
|
||||
* 获取聊天记录
|
||||
* @param dto 查询参数
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.bao.dating.service.impl;
|
||||
|
||||
import com.bao.dating.common.aliyun.AliOssUtil;
|
||||
import com.bao.dating.common.result.AliOssResult;
|
||||
import com.bao.dating.context.UserContext;
|
||||
import com.bao.dating.mapper.ChatRecordsMapper;
|
||||
import com.bao.dating.mapper.ChatSessionsMapper;
|
||||
import com.bao.dating.pojo.dto.*;
|
||||
@@ -9,15 +12,22 @@ import com.bao.dating.pojo.vo.ChatRecordsVO;
|
||||
import com.bao.dating.pojo.vo.ChatSessionsVO;
|
||||
import com.bao.dating.service.ChatService;
|
||||
import com.bao.dating.service.UserService;
|
||||
import com.bao.dating.util.FileUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
@@ -34,6 +44,9 @@ public class ChatServiceImpl implements ChatService {
|
||||
@Autowired
|
||||
private ChatSessionsMapper chatSessionsMapper;
|
||||
|
||||
@Autowired
|
||||
private AliOssUtil ossUtil;
|
||||
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
|
||||
@@ -112,6 +125,49 @@ public class ChatServiceImpl implements ChatService {
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传媒体文件
|
||||
* @return 上传后的文件URL
|
||||
*/
|
||||
@Override
|
||||
public String uploadChat(MultipartFile file) {
|
||||
// 参数校验
|
||||
if (file == null || file.isEmpty()) {
|
||||
throw new RuntimeException("文件不存在");
|
||||
}
|
||||
|
||||
String originalFilename = file.getOriginalFilename();
|
||||
if (originalFilename == null) {
|
||||
throw new RuntimeException("文件名非法");
|
||||
}
|
||||
|
||||
String fileType = FileUtil.getFileType(originalFilename);
|
||||
// 仅支持图片和视频文件上传
|
||||
if (!AliOssResult.IMAGE.equals(fileType) && !AliOssResult.VIDEO.equals(fileType)) {
|
||||
throw new RuntimeException("仅支持图片和视频文件上传");
|
||||
}
|
||||
|
||||
//生成 OSS 路径
|
||||
String extension = FileUtil.getFileExtension(originalFilename);
|
||||
String fileName = UUID.randomUUID().toString().replace("-", "") + "." + extension;
|
||||
Long userId = UserContext.getUserId();
|
||||
String objectKey = "chat/" + userId + "/" + fileName;
|
||||
|
||||
try {
|
||||
byte[] fileBytes = file.getBytes();
|
||||
String ossUrl = ossUtil.upload(fileBytes, objectKey);
|
||||
|
||||
if (ossUrl == null || ossUrl.isEmpty()) {
|
||||
throw new RuntimeException("图片上传失败");
|
||||
}
|
||||
|
||||
return ossUrl;
|
||||
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("上传图片失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取聊天记录
|
||||
* @return 聊天记录列表
|
||||
|
||||
Reference in New Issue
Block a user