springcloud_k8s_panzhihuazhihuishequ/community_backstage/pom.xml
@@ -62,6 +62,11 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--minio文件存储--> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> </dependency> </dependencies> <build> springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityConvenientApi.java
@@ -1,23 +1,21 @@ package com.panzhihua.community_backstage.api; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.alibaba.fastjson.JSONArray; import com.jcraft.jsch.SftpException; import com.panzhihua.common.constants.FtpConstants; import com.panzhihua.common.controller.BaseController; import com.panzhihua.common.model.dtos.community.*; import com.panzhihua.common.model.dtos.user.EexcelUserDTO; import com.panzhihua.common.listen.ComCvtServeExcelListen; import com.panzhihua.common.model.dtos.community.ComCvtBusinessDTO; import com.panzhihua.common.model.dtos.community.ComCvtServeDTO; import com.panzhihua.common.model.dtos.community.PageComCvtBusinessDTO; import com.panzhihua.common.model.dtos.community.PageComCvtServeDTO; import com.panzhihua.common.model.vos.LoginUserInfoVO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.*; import com.panzhihua.common.service.community.CommunityService; import com.panzhihua.common.listen.ComCvtServeExcelListen; import com.panzhihua.common.utlis.SFTPUtil; import com.panzhihua.common.validated.AddGroup; import com.panzhihua.community_backstage.excel.CustomSheetWriteHandler; import com.panzhihua.community_backstage.config.MinioUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -30,11 +28,8 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.UUID; /** @@ -52,7 +47,7 @@ private CommunityService communityService; @Value("${excel.convenientUrl}") private String excelConvenientUrl="http://panzhihua.nhys.cdnhxx.com/web/bianminfuwudaoru.xlsx"; private String excelConvenientUrl = "http://panzhihua.nhys.cdnhxx.com/web/bianminfuwudaoru.xlsx"; @Value("${excel.userurl}") private String excelUrl; @@ -72,7 +67,10 @@ @Value("${ftp.url}") private String url; @ApiOperation(value = "分页查询便民服务商家",response = ComCvtBusinessVO.class) @Resource private MinioUtil minioUtil; @ApiOperation(value = "分页查询便民服务商家", response = ComCvtBusinessVO.class) @PostMapping("/business/page") public R pageComCvtBusiness(@RequestBody PageComCvtBusinessDTO pageComCvtBusinessDTO) { Long communityId = this.getCommunityId(); @@ -91,9 +89,9 @@ return communityService.addComCvtBusiness(comCvtBusinessDTO); } @ApiOperation(value = "社区下拉列表" ,response = ComActVO.class) @ApiOperation(value = "社区下拉列表", response = ComActVO.class) @GetMapping("/community") public R listCommunity(){ public R listCommunity() { return communityService.listCommunityAll(); } @@ -116,13 +114,13 @@ return communityService.deleteComCvtBusiness(id); } @ApiOperation(value = "分页查询便民服务",response = ComCvtServeVO.class) @ApiOperation(value = "分页查询便民服务", response = ComCvtServeVO.class) @PostMapping("/serve/page") public R pageComCvtServe(@RequestBody PageComCvtServeDTO pageComCvtServeDTO) { return communityService.pageComCvtServe(pageComCvtServeDTO); } @ApiOperation(value = "查询便民服务所有分类,下拉框",response = ComCvtCategoryVO.class) @ApiOperation(value = "查询便民服务所有分类,下拉框", response = ComCvtCategoryVO.class) @PostMapping("/category/all") public R allComCvtCategory() { return communityService.allComCvtCategory(); @@ -143,7 +141,7 @@ return communityService.putComCvtServe(comCvtServeDTO); } @ApiOperation(value = "查询便民服务详情",response = ComCvtServeVO.class) @ApiOperation(value = "查询便民服务详情", response = ComCvtServeVO.class) @GetMapping("/serve/get") public R getComCvtServe(@RequestParam("id") Long id) { return communityService.getComCvtServe(id); @@ -165,9 +163,9 @@ @PostMapping(value = "/upload/file", consumes = "multipart/*", headers = "content-type=multipart/form-date") public R uploadImage(@RequestParam MultipartFile file, HttpServletRequest request) { String extension = FilenameUtils.getExtension(file.getOriginalFilename()); String name= UUID.randomUUID().toString().replaceAll("-","")+"."+extension; String name = UUID.randomUUID().toString().replaceAll("-", "") + "." + extension; try { SFTPUtil sftp = new SFTPUtil(userName,password,host,port); SFTPUtil sftp = new SFTPUtil(userName, password, host, port); sftp.login(); InputStream is = file.getInputStream(); sftp.uploadMore(FtpConstants.FTPFILEPATH_IDCARD, name, is); @@ -179,15 +177,29 @@ } } @ApiOperation(value = "minio上传文件测试") @PostMapping(value = "/minio/upload/file", consumes = "multipart/*", headers = "content-type=multipart/form-date") public R minipuploadImage(@RequestParam MultipartFile file, HttpServletRequest request) { try { String extension = FilenameUtils.getExtension(file.getOriginalFilename()); String name = UUID.randomUUID().toString().replaceAll("-", "") + "." + extension; String imageUrl = minioUtil.upload(file, name); return R.ok(imageUrl); } catch (Exception e) { log.error("上传照片失败【{}】", e.getMessage()); return R.fail(); } } @ApiOperation(value = "excel导入便民服务") @PostMapping(value = "/serve/import", consumes = "multipart/*", headers = "content-type=multipart/form-date") public R downloadTemplate(@RequestParam MultipartFile file, HttpServletRequest request) { String fileName = file.getOriginalFilename(); //获取文件名 log.info("传入文件名字【{}】",fileName); log.info("传入文件名字【{}】", fileName); InputStream inputStream = null; try { inputStream = file.getInputStream(); EasyExcel.read(inputStream, ComCvtServeExcelVO.class, new ComCvtServeExcelListen(communityService,this.getCommunityId())).sheet().doRead(); EasyExcel.read(inputStream, ComCvtServeExcelVO.class, new ComCvtServeExcelListen(communityService, this.getCommunityId())).sheet().doRead(); } catch (IOException e) { e.printStackTrace(); log.error("导入模板失败【{}】", e.getMessage()); springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/config/MinioConfig.java
New file @@ -0,0 +1,30 @@ package com.panzhihua.community_backstage.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; /** * program 攀枝花智慧社区项目 * description minio存储信息配置 * * @author manailin * Date 2021-08-19 15:30 **/ @Data @ConfigurationProperties(prefix = "minio") public class MinioConfig { private String host; private String accessKey; private String secretKey; private String url; private String bucket; private String aliasName; private String aliasPCName; } springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/config/MinioUtil.java
New file @@ -0,0 +1,131 @@ package com.panzhihua.community_backstage.config; import io.minio.MinioClient; import io.minio.ObjectStat; import org.apache.commons.io.IOUtils; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; import java.util.UUID; /** * program 攀枝花智慧社区项目 * description minio工具类 * * @author manailin * Date 2021-08-19 15:30 **/ @Component @EnableConfigurationProperties(MinioConfig.class) public class MinioUtil { @Resource private MinioConfig minioProperties; /** * 文件上传 * * @param file 要上传的文件 * @return */ public String upload(MultipartFile file, String name) { if (null != file) { try { UUID uuid = UUID.randomUUID(); StringBuilder s = new StringBuilder(); s.append(uuid.toString().replace("-", "")).append("/"); MinioClient minioClient = new MinioClient(minioProperties.getHost(), minioProperties.getAccessKey(), minioProperties.getSecretKey()); // bucket 不存在,创建 if (!minioClient.bucketExists(minioProperties.getBucket())) { minioClient.makeBucket(minioProperties.getBucket()); } //得到文件流 InputStream input = file.getInputStream(); //文件名 //String fileName = uuid + "/images." + FilenameUtils.getExtension(file.getOriginalFilename()); String fileName = s.append(name).toString(); String contentType = file.getContentType(); minioClient.putObject(minioProperties.getBucket(), fileName, input, contentType); StringBuilder fileUrl = new StringBuilder(minioProperties.getUrl()); String url = fileUrl.append(fileName).toString(); return url; } catch (Exception e) { e.printStackTrace(); } } return null; } /** * 文件下载 * * @param response * @param url */ public void download(HttpServletResponse response, String url) { // 从链接中得到文件名 String replace = url.replace(minioProperties.getBucket() + "/", "#"); String fileName = replace.split("#")[1]; InputStream inputStream; try { MinioClient minioClient = new MinioClient(minioProperties.getHost(), minioProperties.getAccessKey(), minioProperties.getSecretKey()); ObjectStat stat = minioClient.statObject(minioProperties.getBucket(), fileName); inputStream = minioClient.getObject(minioProperties.getBucket(), fileName); response.setContentType(stat.contentType()); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); IOUtils.copy(inputStream, response.getOutputStream()); inputStream.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 文件下载 * * @param response * @param url */ public byte[] getBytes(HttpServletResponse response, String url) { // 从链接中得到文件名 String replace = url.replace(minioProperties.getBucket() + "/", "#"); String fileName = replace.split("#")[1]; InputStream inputStream; byte[] bytes = new byte[0]; try { MinioClient minioClient = new MinioClient(minioProperties.getHost(), minioProperties.getAccessKey(), minioProperties.getSecretKey()); inputStream = minioClient.getObject(minioProperties.getBucket(), fileName); bytes = toByteArray(inputStream); } catch (Exception e) { e.printStackTrace(); } return bytes; } public static byte[] toByteArray(InputStream input) throws IOException { ByteArrayOutputStream output = new ByteArrayOutputStream(); byte[] buffer = new byte[4096]; int n = 0; while (-1 != (n = input.read(buffer))) { output.write(buffer, 0, n); } return output.toByteArray(); } } springcloud_k8s_panzhihuazhihuishequ/pom.xml
@@ -42,6 +42,7 @@ <spring-cloud-starter-netflix-hystrix.version>2.2.6.RELEASE</spring-cloud-starter-netflix-hystrix.version> <spring-boot-starter-data-redis.version>2.4.0</spring-boot-starter-data-redis.version> <springfox-boot-starter.version>3.0.0</springfox-boot-starter.version> <minio.version>6.0.8</minio.version> </properties> <!-- 依赖声明 --> @@ -196,7 +197,12 @@ <artifactId>spring-boot-starter-actuator</artifactId> <version>2.3.4.RELEASE</version> </dependency> <!--minio文件存储--> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.0.3</version> </dependency> </dependencies> </dependencyManagement>