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 lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -25,6 +26,17 @@ public class ChatController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ChatService chatService;
|
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
|
* @param targetUserId 目标用户ID
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ public class PostController {
|
|||||||
* @param files 媒体文件数组
|
* @param files 媒体文件数组
|
||||||
* @return 上传后的文件URL列表
|
* @return 上传后的文件URL列表
|
||||||
*/
|
*/
|
||||||
@Log
|
|
||||||
@PostMapping(value = "/upload", consumes = "multipart/form-data")
|
@PostMapping(value = "/upload", consumes = "multipart/form-data")
|
||||||
public Result<List<String>> uploadMedia(@RequestParam("files") MultipartFile[] files) {
|
public Result<List<String>> uploadMedia(@RequestParam("files") MultipartFile[] files) {
|
||||||
List<String> fileUrls = postService.uploadMedia(files);
|
List<String> fileUrls = postService.uploadMedia(files);
|
||||||
@@ -43,7 +42,6 @@ public class PostController {
|
|||||||
* @param postDTO 动态信息
|
* @param postDTO 动态信息
|
||||||
* @return 发布的动态对象
|
* @return 发布的动态对象
|
||||||
*/
|
*/
|
||||||
@Log
|
|
||||||
@PostMapping( "/createPost")
|
@PostMapping( "/createPost")
|
||||||
public Result<Post> createPostJson(@RequestBody PostRequestDTO postDTO) {
|
public Result<Post> createPostJson(@RequestBody PostRequestDTO postDTO) {
|
||||||
// 调用 Service 层处理发布动态业务逻辑
|
// 调用 Service 层处理发布动态业务逻辑
|
||||||
@@ -57,7 +55,6 @@ public class PostController {
|
|||||||
* @param postIds 动态ID
|
* @param postIds 动态ID
|
||||||
* @return 删除结果
|
* @return 删除结果
|
||||||
*/
|
*/
|
||||||
@Log
|
|
||||||
@PostMapping("/deletePost")
|
@PostMapping("/deletePost")
|
||||||
public Result<String> deleteById(@RequestBody List<Long> postIds){
|
public Result<String> deleteById(@RequestBody List<Long> postIds){
|
||||||
int deletedCount = postService.deletePostById(postIds);
|
int deletedCount = postService.deletePostById(postIds);
|
||||||
@@ -81,7 +78,6 @@ public class PostController {
|
|||||||
* @param postRequestDTO 动态信息
|
* @param postRequestDTO 动态信息
|
||||||
* @return 更新后的动态对象
|
* @return 更新后的动态对象
|
||||||
*/
|
*/
|
||||||
@Log
|
|
||||||
@PostMapping("/{postId}/updatePost")
|
@PostMapping("/{postId}/updatePost")
|
||||||
public Result<PostEditVO> updatePost(@PathVariable Long postId, @RequestBody PostRequestDTO postRequestDTO) {
|
public Result<PostEditVO> updatePost(@PathVariable Long postId, @RequestBody PostRequestDTO postRequestDTO) {
|
||||||
PostEditVO result = postService.updatePost(postId, postRequestDTO);
|
PostEditVO result = postService.updatePost(postId, postRequestDTO);
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ public class UserController {
|
|||||||
* @param file 头像文件
|
* @param file 头像文件
|
||||||
* @return 上传后的文件URL列表
|
* @return 上传后的文件URL列表
|
||||||
*/
|
*/
|
||||||
@Log
|
|
||||||
@PostMapping(value = "/info/uploadAvatar", consumes = "multipart/form-data")
|
@PostMapping(value = "/info/uploadAvatar", consumes = "multipart/form-data")
|
||||||
public Result<String> uploadAvatar(@RequestParam("file") MultipartFile file) {
|
public Result<String> uploadAvatar(@RequestParam("file") MultipartFile file) {
|
||||||
String fileUrl = userService.uploadAvatar(file);
|
String fileUrl = userService.uploadAvatar(file);
|
||||||
@@ -76,7 +75,6 @@ public class UserController {
|
|||||||
* @param file 背景文件
|
* @param file 背景文件
|
||||||
* @return 上传后的文件URL列表
|
* @return 上传后的文件URL列表
|
||||||
*/
|
*/
|
||||||
@Log
|
|
||||||
@PostMapping(value = "/info/uploadBackground", consumes = "multipart/form-data")
|
@PostMapping(value = "/info/uploadBackground", consumes = "multipart/form-data")
|
||||||
public Result<String> uploadBackground(@RequestParam("file") MultipartFile file) {
|
public Result<String> uploadBackground(@RequestParam("file") MultipartFile file) {
|
||||||
String fileUrl = userService.uploadBackground(file);
|
String fileUrl = userService.uploadBackground(file);
|
||||||
@@ -88,7 +86,6 @@ public class UserController {
|
|||||||
* @param userInfoUpdateDTO 用户信息更新参数
|
* @param userInfoUpdateDTO 用户信息更新参数
|
||||||
* @return 更新后的用户信息
|
* @return 更新后的用户信息
|
||||||
*/
|
*/
|
||||||
@Log
|
|
||||||
@PostMapping("/info/update")
|
@PostMapping("/info/update")
|
||||||
public Result<UserInfoVO> userInfoUpdate(@RequestBody UserInfoDTO userInfoUpdateDTO) {
|
public Result<UserInfoVO> userInfoUpdate(@RequestBody UserInfoDTO userInfoUpdateDTO) {
|
||||||
Long userId = UserContext.getUserId();
|
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.dto.*;
|
||||||
import com.bao.dating.pojo.vo.ChatRecordsVO;
|
import com.bao.dating.pojo.vo.ChatRecordsVO;
|
||||||
import com.bao.dating.pojo.vo.ChatSessionsVO;
|
import com.bao.dating.pojo.vo.ChatSessionsVO;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -21,6 +22,13 @@ public interface ChatService {
|
|||||||
*/
|
*/
|
||||||
ChatRecordsVO createSession(Long senderUserId, ChatRecordSendDTO dto);
|
ChatRecordsVO createSession(Long senderUserId, ChatRecordSendDTO dto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上传媒体文件
|
||||||
|
* @param file 文件
|
||||||
|
* @return 文件URL列表
|
||||||
|
*/
|
||||||
|
String uploadChat(MultipartFile file);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取聊天记录
|
* 获取聊天记录
|
||||||
* @param dto 查询参数
|
* @param dto 查询参数
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
package com.bao.dating.service.impl;
|
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.ChatRecordsMapper;
|
||||||
import com.bao.dating.mapper.ChatSessionsMapper;
|
import com.bao.dating.mapper.ChatSessionsMapper;
|
||||||
import com.bao.dating.pojo.dto.*;
|
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.pojo.vo.ChatSessionsVO;
|
||||||
import com.bao.dating.service.ChatService;
|
import com.bao.dating.service.ChatService;
|
||||||
import com.bao.dating.service.UserService;
|
import com.bao.dating.service.UserService;
|
||||||
|
import com.bao.dating.util.FileUtil;
|
||||||
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;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
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.LocalDateTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
@@ -34,6 +44,9 @@ public class ChatServiceImpl implements ChatService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ChatSessionsMapper chatSessionsMapper;
|
private ChatSessionsMapper chatSessionsMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private AliOssUtil ossUtil;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserService userService;
|
private UserService userService;
|
||||||
|
|
||||||
@@ -112,6 +125,49 @@ public class ChatServiceImpl implements ChatService {
|
|||||||
return vo;
|
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 聊天记录列表
|
* @return 聊天记录列表
|
||||||
|
|||||||
Reference in New Issue
Block a user