Browse Source

chore: File Upload Refactoring

master
wangxiang 2 years ago
parent
commit
82857190cb
No known key found for this signature in database
GPG Key ID: 1BA7946AB6B232E4
  1. 2
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/OssFile.java
  2. 20
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/FileController.java
  3. 4
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/FileMapper.java
  4. 8
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/FileService.java
  5. 24
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/FileServiceImpl.java
  6. 17
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/ImContentServiceImpl.java

2
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/File.java → kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/OssFile.java

@ -19,7 +19,7 @@ import lombok.experimental.Accessors; @@ -19,7 +19,7 @@ import lombok.experimental.Accessors;
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value = "sys_file", excludeProperty = { "remarks" })
public class File extends CommonEntity {
public class OssFile extends CommonEntity {
private static final long serialVersionUID = 1L;

20
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/FileController.java

@ -10,7 +10,7 @@ import com.cloud.kicc.common.core.api.R; @@ -10,7 +10,7 @@ import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants;
import com.cloud.kicc.common.log.annotation.SysLog;
import com.cloud.kicc.common.security.annotation.Inner;
import com.cloud.kicc.system.api.entity.File;
import com.cloud.kicc.system.api.entity.OssFile;
import com.cloud.kicc.system.api.entity.Role;
import com.cloud.kicc.system.service.FileService;
import io.swagger.annotations.Api;
@ -41,23 +41,23 @@ public class FileController { @@ -41,23 +41,23 @@ public class FileController {
private final FileService fileService;
private LambdaQueryWrapper<File> getQueryWrapper(File file) {
return new LambdaQueryWrapper<File>()
.like(StrUtil.isNotBlank(file.getFileName()), File::getFileName, file.getFileName())
.orderByDesc(File::getCreateTime);
private LambdaQueryWrapper<OssFile> getQueryWrapper(OssFile ossFile) {
return new LambdaQueryWrapper<OssFile>()
.like(StrUtil.isNotBlank(ossFile.getFileName()), OssFile::getFileName, ossFile.getFileName())
.orderByDesc(OssFile::getCreateTime);
}
@GetMapping("/list")
@ApiOperation(value = "分页查询", notes = "分页查询")
public R list(Page page, File file) {
IPage<Role> fileIPage = fileService.page(page, getQueryWrapper(file));
public R list(Page page, OssFile ossFile) {
IPage<Role> fileIPage = fileService.page(page, getQueryWrapper(ossFile));
return R.ok(fileIPage.getRecords(), fileIPage.getTotal());
}
@PostMapping("/upload")
public File upload(@RequestPart("file") MultipartFile file,
@RequestParam(value = "ossFile", required=false) String ossFile) {
return fileService.uploadFile(file, Optional.ofNullable(ossFile).map(item -> JSONUtil.parseObj(ossFile).toBean(File.class)).orElse(null));
public OssFile upload(@RequestPart("file") MultipartFile file,
@RequestParam(value = "ossFile", required=false) String ossFile) {
return fileService.uploadFile(file, Optional.ofNullable(ossFile).map(item -> JSONUtil.parseObj(ossFile).toBean(OssFile.class)).orElse(null));
}

4
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/FileMapper.java

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
package com.cloud.kicc.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cloud.kicc.system.api.entity.File;
import com.cloud.kicc.system.api.entity.OssFile;
/**
*<p>
@ -11,6 +11,6 @@ import com.cloud.kicc.system.api.entity.File; @@ -11,6 +11,6 @@ import com.cloud.kicc.system.api.entity.File;
* @Author: wangxiang4
* @Date: 2022/2/24
*/
public interface FileMapper extends BaseMapper<File> {
public interface FileMapper extends BaseMapper<OssFile> {
}

8
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/FileService.java

@ -1,12 +1,10 @@ @@ -1,12 +1,10 @@
package com.cloud.kicc.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cloud.kicc.system.api.entity.File;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.system.api.entity.OssFile;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
*<p>
@ -16,14 +14,14 @@ import java.util.Map; @@ -16,14 +14,14 @@ import java.util.Map;
* @Author: wangxiang4
* @Date: 2022/2/24
*/
public interface FileService extends IService<File> {
public interface FileService extends IService<OssFile> {
/**
* 上传文件
* @param file
* @return
*/
File uploadFile(MultipartFile file, File ossFile);
OssFile uploadFile(MultipartFile file, OssFile ossFile);
/**
* 读取文件

24
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/FileServiceImpl.java

@ -10,10 +10,9 @@ import cn.hutool.core.util.StrUtil; @@ -10,10 +10,9 @@ import cn.hutool.core.util.StrUtil;
import com.amazonaws.services.s3.model.S3Object;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cloud.kicc.common.core.exception.CheckedException;
import com.cloud.kicc.system.api.entity.File;
import com.cloud.kicc.system.api.entity.OssFile;
import com.cloud.kicc.system.mapper.FileMapper;
import com.cloud.kicc.system.service.FileService;
import com.cloud.kicc.common.core.api.R;
import com.pig4cloud.plugin.oss.OssProperties;
import com.pig4cloud.plugin.oss.service.OssTemplate;
import lombok.AllArgsConstructor;
@ -24,8 +23,7 @@ import org.springframework.transaction.annotation.Transactional; @@ -24,8 +23,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
/**
*<p>
* 文件管理
@ -37,30 +35,30 @@ import java.util.Map; @@ -37,30 +35,30 @@ import java.util.Map;
@Slf4j
@Service
@AllArgsConstructor
public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements FileService {
public class FileServiceImpl extends ServiceImpl<FileMapper, OssFile> implements FileService {
private final OssProperties ossProperties;
private final OssTemplate ossTemplate;
@Override
public File uploadFile(MultipartFile file, File ossFile) {
public OssFile uploadFile(MultipartFile file, OssFile ossFile) {
String fileName = IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename());
File defaultOssFile = new File().setFileName(fileName)
OssFile defaultOssOssFile = new OssFile().setFileName(fileName)
.setBucketName(ossProperties.getBucketName())
.setOriginal(file.getOriginalFilename())
.setType(FileUtil.extName(file.getOriginalFilename()))
.setFileSize(file.getSize())
.setAvailablePath(String.format("/system_proxy/system/file/getFile/%s/%s", ossProperties.getBucketName(), fileName))
.setMimeType(file.getContentType());
if(ObjectUtil.isNotEmpty(ossFile)) BeanUtil.copyProperties(ossFile, defaultOssFile, CopyOptions.create().ignoreNullValue().ignoreError());
if(ObjectUtil.isNotEmpty(ossFile)) BeanUtil.copyProperties(ossFile, defaultOssOssFile, CopyOptions.create().ignoreNullValue().ignoreError());
try {
ossTemplate.putObject(ossProperties.getBucketName(), fileName, file.getContentType(), file.getInputStream());
// 文件管理数据记录,收集管理追踪文件
this.save(defaultOssFile);
this.save(defaultOssOssFile);
} catch (Exception e) {
throw new CheckedException("上传失败");
}
return defaultOssFile;
return defaultOssOssFile;
}
@Override
@ -77,9 +75,9 @@ public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements Fi @@ -77,9 +75,9 @@ public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements Fi
@SneakyThrows
@Transactional(rollbackFor = Exception.class)
public void deleteFile(String id) {
File file = this.getById(id);
if (ObjectUtil.isNotEmpty(file)) {
ossTemplate.removeObject(ossProperties.getBucketName(), file.getFileName());
OssFile ossFile = this.getById(id);
if (ObjectUtil.isNotEmpty(ossFile)) {
ossTemplate.removeObject(ossProperties.getBucketName(), ossFile.getFileName());
this.removeById(id);
}
}

17
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/ImContentServiceImpl.java

@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cloud.kicc.common.core.exception.CheckedException;
import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.system.api.entity.ImContent;
import com.cloud.kicc.system.api.entity.OssFile;
import com.cloud.kicc.system.api.enums.ImMessageTypeEnum;
import com.cloud.kicc.system.mapper.ImContentMapper;
import com.cloud.kicc.system.service.FileService;
@ -76,7 +77,7 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent @@ -76,7 +77,7 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent
String receiveFileName = IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(speechName);
// 构建发送文件信息进行OSS存储
com.cloud.kicc.system.api.entity.File sendOssFile = new com.cloud.kicc.system.api.entity.File()
OssFile sendOssOssFile = new OssFile()
.setFileName(sendFileName)
.setBucketName(ossProperties.getBucketName())
.setOriginal(file.getOriginalFilename())
@ -85,9 +86,9 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent @@ -85,9 +86,9 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent
.setMimeType(file.getContentType());
ossTemplate.putObject(ossProperties.getBucketName(), sendFileName, file.getContentType(), file.getInputStream());
String sendVoiceUrl = ossTemplate.getObjectURL(ossProperties.getBucketName(), sendFileName);
sendOssFile.setAvailablePath(sendVoiceUrl);
fileService.save(sendOssFile);
imContent.setFiles(sendOssFile.getId());
sendOssOssFile.setAvailablePath(sendVoiceUrl);
fileService.save(sendOssOssFile);
imContent.setFiles(sendOssOssFile.getId());
// 语音转文字
File voiceFile = File.createTempFile(sendFileName, null);
@ -119,7 +120,7 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent @@ -119,7 +120,7 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent
ResponseBody responseBody = openAiService.createSpeech(createSpeechRequest);
// 构建发送文件信息进行OSS存储
com.cloud.kicc.system.api.entity.File receiveOssFile = new com.cloud.kicc.system.api.entity.File()
OssFile receiveOssOssFile = new OssFile()
.setFileName(receiveFileName)
.setBucketName(ossProperties.getBucketName())
.setOriginal(speechName)
@ -128,11 +129,11 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent @@ -128,11 +129,11 @@ public class ImContentServiceImpl extends ServiceImpl<ImContentMapper, ImContent
.setMimeType(Objects.requireNonNull(responseBody.contentType()).toString());
ossTemplate.putObject(ossProperties.getBucketName(), receiveFileName, Objects.requireNonNull(responseBody.contentType()).toString(), responseBody.byteStream());
String receiveVoiceUrl = ossTemplate.getObjectURL(ossProperties.getBucketName(), receiveFileName);
receiveOssFile.setAvailablePath(receiveVoiceUrl);
fileService.save(receiveOssFile);
receiveOssOssFile.setAvailablePath(receiveVoiceUrl);
fileService.save(receiveOssOssFile);
// 保存AI回复聊天记录
imContent.setFiles(receiveOssFile.getId());
imContent.setFiles(receiveOssOssFile.getId());
super.save(content);
return content;
} else {

Loading…
Cancel
Save