|
|
@@ -1,20 +1,58 @@
|
|
|
package com.izouma.awesomeAdmin.service;
|
|
|
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
import com.izouma.awesomeAdmin.domain.Resource;
|
|
|
import com.izouma.awesomeAdmin.dto.PageQuery;
|
|
|
import com.izouma.awesomeAdmin.repo.ResourceRepo;
|
|
|
+import com.izouma.awesomeAdmin.service.storage.StorageService;
|
|
|
+import com.izouma.awesomeAdmin.utils.FileUtils;
|
|
|
import com.izouma.awesomeAdmin.utils.JpaUtils;
|
|
|
+import com.izouma.awesomeAdmin.utils.excel.UploadDataListener;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import org.apache.commons.io.FilenameUtils;
|
|
|
+import org.apache.commons.lang3.RandomStringUtils;
|
|
|
+import org.apache.poi.util.TempFile;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileInputStream;
|
|
|
+import java.io.IOException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
|
|
|
@Service
|
|
|
@AllArgsConstructor
|
|
|
public class ResourceService {
|
|
|
|
|
|
- private ResourceRepo resourceRepo;
|
|
|
+ private ResourceRepo resourceRepo;
|
|
|
+ private StorageService storageService;
|
|
|
|
|
|
public Page<Resource> all(PageQuery pageQuery) {
|
|
|
- return resourceRepo.findAll(JpaUtils.toSpecification(pageQuery, Resource.class), JpaUtils.toPageRequest(pageQuery));
|
|
|
+ return resourceRepo
|
|
|
+ .findAll(JpaUtils.toSpecification(pageQuery, Resource.class), JpaUtils.toPageRequest(pageQuery));
|
|
|
+ }
|
|
|
+
|
|
|
+ public void upload(MultipartFile file) throws IOException {
|
|
|
+ File destDir = TempFile.createTempDirectory("import");
|
|
|
+ FileUtils.unzip(file.getInputStream(), destDir);
|
|
|
+ File xlsxFile = FileUtils.findExcel(destDir);
|
|
|
+ if (xlsxFile == null) return;
|
|
|
+ UploadDataListener<Resource> listener = new UploadDataListener<>();
|
|
|
+ EasyExcel.read(new FileInputStream(xlsxFile), Resource.class, listener).sheet().doReadSync();
|
|
|
+ for (Resource data : listener.getData()) {
|
|
|
+ if (data.getPic() != null) {
|
|
|
+ File uploadFile = new File(destDir, data.getPic());
|
|
|
+ if (uploadFile.exists()) {
|
|
|
+ String path = "image/" + new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date())
|
|
|
+ + RandomStringUtils.randomAlphabetic(8)
|
|
|
+ + "." + FilenameUtils.getExtension(uploadFile.getName());
|
|
|
+ String url = storageService.uploadFromInputStream(new FileInputStream(uploadFile), path);
|
|
|
+ data.setPic(url);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ resourceRepo.saveAll(listener.getData());
|
|
|
}
|
|
|
}
|