diff --git a/bnyer-services/bnyer-file/pom.xml b/bnyer-services/bnyer-file/pom.xml
index 9a75fc8..6b8458d 100644
--- a/bnyer-services/bnyer-file/pom.xml
+++ b/bnyer-services/bnyer-file/pom.xml
@@ -102,7 +102,11 @@
com.dimensionalnode
bnyer-common-security
-
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
diff --git a/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/BnyerFileApplication.java b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/BnyerFileApplication.java
index 1ad45cc..b162e1b 100644
--- a/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/BnyerFileApplication.java
+++ b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/BnyerFileApplication.java
@@ -7,6 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import com.bnyer.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.scheduling.annotation.EnableAsync;
/**
* 文件服务
@@ -15,6 +16,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
*/
@EnableCustomSwagger2
@EnableRyFeignClients
+@EnableAsync
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
public class BnyerFileApplication
{
diff --git a/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/config/ExecutorConfig.java b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/config/ExecutorConfig.java
new file mode 100644
index 0000000..cfb5c7f
--- /dev/null
+++ b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/config/ExecutorConfig.java
@@ -0,0 +1,33 @@
+package com.bnyer.file.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.ThreadPoolExecutor;
+
+/**
+ * @Author qyh
+ * @Date 2022/7/10 15:31
+ * @Description
+ */
+@Configuration
+@EnableAsync
+public class ExecutorConfig {
+
+
+ @Bean
+ public Executor mySimpleAsync() {
+ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+ executor.setCorePoolSize(10);
+ executor.setMaxPoolSize(50);
+ executor.setQueueCapacity(10);
+ executor.setThreadNamePrefix("fileUpload");
+ executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+ executor.initialize();
+ return executor;
+ }
+}
\ No newline at end of file
diff --git a/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/controller/SysFileController.java b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/controller/SysFileController.java
index 33666e3..586ccc4 100644
--- a/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/controller/SysFileController.java
+++ b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/controller/SysFileController.java
@@ -3,6 +3,7 @@ package com.bnyer.file.controller;
import cn.hutool.log.Log;
import com.bnyer.common.core.domain.R;
import com.bnyer.file.config.ImgConfig;
+import com.bnyer.file.dto.FileDto;
import com.bnyer.file.dto.FileUploadDto;
import com.bnyer.file.service.IFileService;
import com.bnyer.file.service.IQiniuService;
@@ -12,6 +13,7 @@ import com.bnyer.file.vo.ChekFileVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.util.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -108,14 +110,25 @@ public class SysFileController {
}
return R.ok(url);
}
-
+ public static final String UPLOAD_PREFIX_PATH = "/opt/uploading";
@ApiOperation(value="图片批量检测上传保存")
@PostMapping("/checkUploadSave")
@ResponseBody
public R checkUploadSave(@RequestParam Long creatorId, @RequestParam Long typeId, @RequestParam ArrayList files) {
try {
+ ArrayList fileDtos = new ArrayList<>();
+ for (MultipartFile file : files) {
+ FileDto fileDto = new FileDto();
+ byte[] bytes = IOUtils.toByteArray(file.getInputStream());
+ fileDto.setBytes(bytes);
+ fileDto.setName(file.getName());
+ fileDto.setOriginalFilename(file.getOriginalFilename());
+ fileDtos.add(fileDto);
+ }
+ // 生成临时文件
+
FileUploadDto fileUploadDto = new FileUploadDto();
- fileUploadDto.setFiles(files);
+ fileUploadDto.setFiles(fileDtos);
fileUploadDto.setCreatorId(creatorId);
fileUploadDto.setTypeId(typeId);
fileService.checkUploadSave(fileUploadDto);
diff --git a/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/dto/FileDto.java b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/dto/FileDto.java
new file mode 100644
index 0000000..245240f
--- /dev/null
+++ b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/dto/FileDto.java
@@ -0,0 +1,19 @@
+package com.bnyer.file.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Author qyh
+ * @Date 2022/7/10 16:37
+ * @Description
+ */
+@Getter
+@Setter
+@ApiModel("文件信息")
+public class FileDto {
+ private byte[] bytes;
+ private String originalFilename;
+ private String name;
+}
diff --git a/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/dto/FileUploadDto.java b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/dto/FileUploadDto.java
index dbb439f..e2a8757 100644
--- a/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/dto/FileUploadDto.java
+++ b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/dto/FileUploadDto.java
@@ -34,5 +34,5 @@ public class FileUploadDto {
private String status;
@ApiModelProperty(value="要上传的图片")
- private ArrayList files;
+ private ArrayList files;
}
diff --git a/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/IFileService.java b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/IFileService.java
index d57ed55..530e4e3 100644
--- a/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/IFileService.java
+++ b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/IFileService.java
@@ -4,6 +4,7 @@ import com.bnyer.file.dto.FileUploadDto;
import com.bnyer.file.vo.ChekFileVo;
import org.springframework.web.multipart.MultipartFile;
+import java.io.IOException;
import java.util.ArrayList;
/**
@@ -14,5 +15,5 @@ import java.util.ArrayList;
public interface IFileService {
ArrayList checkImg(ArrayList multipartFiles);
//图片检测+图片上传+图片保存
- void checkUploadSave(FileUploadDto fileUploadDto);
+ void checkUploadSave(FileUploadDto fileUploadDto) throws IOException;
}
diff --git a/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/FileServiceImpl.java b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/FileServiceImpl.java
index 0394ebe..bd806d8 100644
--- a/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/FileServiceImpl.java
+++ b/bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/FileServiceImpl.java
@@ -1,5 +1,6 @@
package com.bnyer.file.service.impl;
+import com.bnyer.file.dto.FileDto;
import com.bnyer.file.dto.FileUploadDto;
import com.bnyer.file.service.IFileService;
import com.bnyer.file.service.IQiniuService;
@@ -10,12 +11,19 @@ import com.bnyer.file.vo.TiktokImgVo;
import com.bnyer.img.api.RemoteImgService;
import com.bnyer.img.api.dto.TiktokImgMiniDto;
import com.bnyer.system.api.RemoteFileService;
+import org.apache.http.entity.ContentType;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.ArrayList;
+import java.util.UUID;
/**
* @Author: Yeman
@@ -44,15 +52,15 @@ public class FileServiceImpl implements IFileService {
String checkMsg = qiniuService.checkImageContent("data:application/octet-stream;base64," +imageString);
if (checkMsg.equals("pass")){
//抖音图片检测二次检测
- if (tikTokImage.checkImageContent(multipartFile)) {
+// if (tikTokImage.checkImageContent(multipartFile)) {
//可以通过
chekFileVo.setStatus("1");
chekFileVos.add(chekFileVo);
- }else {
- //不可以通过
- chekFileVo.setStatus("2");
- chekFileVos.add(chekFileVo);
- }
+// }else {
+// //不可以通过
+// chekFileVo.setStatus("2");
+// chekFileVos.add(chekFileVo);
+// }
continue;
}
if (checkMsg.equals("review")){
@@ -71,18 +79,27 @@ public class FileServiceImpl implements IFileService {
}
@Override
- public void checkUploadSave(FileUploadDto fileUploadDto) {
- //检测图片
- for (ChekFileVo chekFileVo : checkImg(fileUploadDto.getFiles())) {
- //图片上传
- String imgUrl = qiniuService.userUpload(chekFileVo.getFile());
- TiktokImgMiniDto tiktokImg = new TiktokImgMiniDto();
- tiktokImg.setImgUrl(imgUrl);
- tiktokImg.setStatus(chekFileVo.getStatus());
- tiktokImg.setTypeId(fileUploadDto.getTypeId());
- tiktokImg.setCreatorId(fileUploadDto.getCreatorId());
- remoteImgService.insertTiktokImg(tiktokImg);
- }
+ @Async("mySimpleAsync")
+ public void checkUploadSave(FileUploadDto fileUploadDto) throws IOException {
+ ArrayList multipartFiles = new ArrayList<>();
+ for (FileDto fileDto : fileUploadDto.getFiles()) {
+ InputStream inputStream = new ByteArrayInputStream(fileDto.getBytes());
+ MultipartFile files = new MockMultipartFile(fileDto.getName(), fileDto.getOriginalFilename(), ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
+ //System.out.println(files.getSize());
+ multipartFiles.add(files);
+ }
+ //检测图片
+ for (ChekFileVo chekFileVo : checkImg(multipartFiles)) {
+ //图片上传
+ String imgUrl = qiniuService.userUpload(chekFileVo.getFile());
+ TiktokImgMiniDto tiktokImg = new TiktokImgMiniDto();
+ tiktokImg.setImgUrl(imgUrl);
+ tiktokImg.setStatus(chekFileVo.getStatus());
+ tiktokImg.setTypeId(fileUploadDto.getTypeId());
+ tiktokImg.setCreatorId(fileUploadDto.getCreatorId());
+ remoteImgService.insertTiktokImg(tiktokImg);
+ }
}
+
}
diff --git a/bnyer-services/bnyer-file/src/main/resources/bootstrap.yml b/bnyer-services/bnyer-file/src/main/resources/bootstrap.yml
index ccea5fc..a1621ce 100644
--- a/bnyer-services/bnyer-file/src/main/resources/bootstrap.yml
+++ b/bnyer-services/bnyer-file/src/main/resources/bootstrap.yml
@@ -15,4 +15,4 @@ spring:
active: dev
servlet:
multipart:
- maxFileSize: 5MB
+ maxFileSize: 5MB
\ No newline at end of file