xiongzhu %!s(int64=4) %!d(string=hai) anos
pai
achega
dcb63f70ca

+ 37 - 0
src/main/java/com/izouma/awesomeAdmin/service/ExpertService.java

@@ -1,20 +1,57 @@
 package com.izouma.awesomeAdmin.service;
 
+import com.alibaba.excel.EasyExcel;
 import com.izouma.awesomeAdmin.domain.Expert;
 import com.izouma.awesomeAdmin.dto.PageQuery;
 import com.izouma.awesomeAdmin.repo.ExpertRepo;
+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 ExpertService {
 
     private ExpertRepo expertRepo;
+    private StorageService storageService;
 
     public Page<Expert> all(PageQuery pageQuery) {
         return expertRepo.findAll(JpaUtils.toSpecification(pageQuery, Expert.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<Expert> listener = new UploadDataListener<>();
+        EasyExcel.read(new FileInputStream(xlsxFile), Expert.class, listener).sheet().doReadSync();
+        for (Expert 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);
+                }
+            }
+        }
+        expertRepo.saveAll(listener.getData());
+    }
 }

+ 1 - 1
src/main/java/com/izouma/awesomeAdmin/service/OrgInfoService.java

@@ -48,7 +48,7 @@ public class OrgInfoService {
             if (data.getLogo() != null) {
                 File uploadFile = new File(destDir, data.getLogo());
                 if (uploadFile.exists()) {
-                    String path = "images/" + new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date())
+                    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);

+ 40 - 2
src/main/java/com/izouma/awesomeAdmin/service/ProjectService.java

@@ -1,20 +1,58 @@
 package com.izouma.awesomeAdmin.service;
 
+import com.alibaba.excel.EasyExcel;
 import com.izouma.awesomeAdmin.domain.Project;
 import com.izouma.awesomeAdmin.dto.PageQuery;
 import com.izouma.awesomeAdmin.repo.ProjectRepo;
+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 ProjectService {
 
-    private ProjectRepo projectRepo;
+    private ProjectRepo    projectRepo;
+    private StorageService storageService;
 
     public Page<Project> all(PageQuery pageQuery) {
-        return projectRepo.findAll(JpaUtils.toSpecification(pageQuery, Project.class), JpaUtils.toPageRequest(pageQuery));
+        return projectRepo
+                .findAll(JpaUtils.toSpecification(pageQuery, Project.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<Project> listener = new UploadDataListener<>();
+        EasyExcel.read(new FileInputStream(xlsxFile), Project.class, listener).sheet().doReadSync();
+        for (Project 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);
+                }
+            }
+        }
+        projectRepo.saveAll(listener.getData());
     }
 }

+ 40 - 2
src/main/java/com/izouma/awesomeAdmin/service/ResourceService.java

@@ -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());
     }
 }

+ 38 - 1
src/main/java/com/izouma/awesomeAdmin/service/TechService.java

@@ -1,20 +1,57 @@
 package com.izouma.awesomeAdmin.service;
 
+import com.alibaba.excel.EasyExcel;
 import com.izouma.awesomeAdmin.domain.Tech;
 import com.izouma.awesomeAdmin.dto.PageQuery;
 import com.izouma.awesomeAdmin.repo.TechRepo;
+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 TechService {
 
-    private TechRepo techRepo;
+    private TechRepo       techRepo;
+    private StorageService storageService;
 
     public Page<Tech> all(PageQuery pageQuery) {
         return techRepo.findAll(JpaUtils.toSpecification(pageQuery, Tech.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<Tech> listener = new UploadDataListener<>();
+        EasyExcel.read(new FileInputStream(xlsxFile), Tech.class, listener).sheet().doReadSync();
+        for (Tech 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);
+                }
+            }
+        }
+        techRepo.saveAll(listener.getData());
+    }
 }

+ 6 - 0
src/main/java/com/izouma/awesomeAdmin/web/ExpertController.java

@@ -11,6 +11,7 @@ import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -57,5 +58,10 @@ public class ExpertController extends BaseController {
         List<Expert> data = all(pageQuery).getContent();
         ExcelUtils.export(response, data, "专家", Expert.class);
     }
+
+    @PostMapping("/upload")
+    public void upload(MultipartFile file) throws IOException {
+        expertService.upload(file);
+    }
 }
 

+ 6 - 0
src/main/java/com/izouma/awesomeAdmin/web/ProjectController.java

@@ -11,6 +11,7 @@ import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -57,5 +58,10 @@ public class ProjectController extends BaseController {
         List<Project> data = all(pageQuery).getContent();
         ExcelUtils.export(response, data, "项目", Project.class);
     }
+
+    @PostMapping("/upload")
+    public void upload(MultipartFile file) throws IOException {
+        projectService.upload(file);
+    }
 }
 

+ 6 - 0
src/main/java/com/izouma/awesomeAdmin/web/ResourceController.java

@@ -11,6 +11,7 @@ import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -57,5 +58,10 @@ public class ResourceController extends BaseController {
         List<Resource> data = all(pageQuery).getContent();
         ExcelUtils.export(response, data, "资源", Resource.class);
     }
+
+    @PostMapping("/upload")
+    public void upload(MultipartFile file) throws IOException {
+        resourceService.upload(file);
+    }
 }
 

+ 6 - 0
src/main/java/com/izouma/awesomeAdmin/web/TechController.java

@@ -11,6 +11,7 @@ import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -57,5 +58,10 @@ public class TechController extends BaseController {
         List<Tech> data = all(pageQuery).getContent();
         ExcelUtils.export(response, data, "技术", Tech.class);
     }
+
+    @PostMapping("/upload")
+    public void upload(MultipartFile file) throws IOException {
+        techService.upload(file);
+    }
 }