Files
dating/src/main/java/com/bao/dating/service/impl/PostServiceImpl.java

106 lines
3.4 KiB
Java

package com.bao.dating.service.impl;
import com.bao.dating.mapper.PostMapper;
import com.bao.dating.pojo.dto.PostRequestDTO;
import com.bao.dating.pojo.entity.Post;
import com.bao.dating.service.PostService;
import com.bao.dating.util.AliOssUtil;
import com.bao.dating.util.FileUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
* 动态服务实现类
*
* @author KilLze
*/
@Service
public class PostServiceImpl implements PostService {
@Autowired
private AliOssUtil ossUtil;
@Autowired
private PostMapper postMapper;
/**
* 上传媒体文件
* @param files 媒体文件数组
* @return 上传后的文件URL列表
*/
@Override
public List<String> uploadMedia(MultipartFile[] files) {
List<String> mediaUrls = new ArrayList<>();
if (files != null && files.length > 0) {
for (MultipartFile file : files) {
if (!file.isEmpty()) {
try {
// 根据文件扩展名判断文件类型
String fileType = FileUtil.getFileType(file.getOriginalFilename());
// 生成唯一文件名
String fileName = UUID.randomUUID().toString() + "." + FileUtil.getFileExtension(file.getOriginalFilename());
// 获取文件字节数据
byte[] fileBytes = file.getBytes();
// 根据文件类型处理
String ossUrl = "";
if ("image".equals(fileType) || "video".equals(fileType)) {
// 上传图片或视频
ossUrl = ossUtil.upload(fileBytes, fileName);
}
// 添加上传后的 URL
mediaUrls.add(ossUrl);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
return mediaUrls;
}
/**
* 创建动态
*
* @param postRequestDTO 动态请求数据传输对象
* @return 创建的动态对象
*/
@Override
public Post createPost(PostRequestDTO postRequestDTO) {
Post post = new Post();
post.setUserId(Long.valueOf(postRequestDTO.getUserId()));
post.setContent(postRequestDTO.getContent());
post.setTags(postRequestDTO.getTags());
post.setMediaOssKeys(new ArrayList<>());
// 如果有传入的媒体链接,则使用它们
if (postRequestDTO.getMediaUrls() != null && !postRequestDTO.getMediaUrls().isEmpty()) {
post.setMediaOssKeys(postRequestDTO.getMediaUrls());
}
post.setIsPublic(0);
post.setUpdatedAt(LocalDateTime.now());
post.setCreatedAt(LocalDateTime.now());
// 保存动态到数据库
postMapper.insert(post);
return post;
}
/**
* 删除动态
*
* @param postId 动态ID
* @return 删除的动态对象
*/
@Override
public void deletePostById(Integer postId) {
postMapper.deletePostById(postId);
}
}