From 38edd568a31033f533600076ebd8ab65508feda7 Mon Sep 17 00:00:00 2001 From: qkr7828 Date: Tue, 20 Feb 2024 16:01:04 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20file=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=98=AE=EA=B8=B0=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../co/palnet/kac/app/config/FileConfig.java | 32 +++++++ .../src/main/resources/application.properties | 40 +++++++++ .../file/controller/ComFileController.java | 79 +++++++++++++++++ .../common/file/service/ComFileService.java | 87 +++++++++++++++++++ 4 files changed, 238 insertions(+) create mode 100644 app/kac-app/src/main/java/kr/co/palnet/kac/app/config/FileConfig.java create mode 100644 app/kac-app/src/main/resources/application.properties create mode 100644 web/api-common/src/main/java/kr/co/palnet/kac/api/v1/common/file/controller/ComFileController.java create mode 100644 web/api-common/src/main/java/kr/co/palnet/kac/api/v1/common/file/service/ComFileService.java diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/app/config/FileConfig.java b/app/kac-app/src/main/java/kr/co/palnet/kac/app/config/FileConfig.java new file mode 100644 index 0000000..330ac73 --- /dev/null +++ b/app/kac-app/src/main/java/kr/co/palnet/kac/app/config/FileConfig.java @@ -0,0 +1,32 @@ +package kr.co.palnet.kac.app.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.amazonaws.auth.AWSCredentials; +import com.amazonaws.auth.AWSStaticCredentialsProvider; +import com.amazonaws.auth.BasicAWSCredentials; +import com.amazonaws.services.s3.AmazonS3; +import com.amazonaws.services.s3.AmazonS3ClientBuilder; + +@Configuration +public class FileConfig { + + @Value("${cloud.aws.credentials.accessKey}") + private String accessKey; + + @Value("${cloud.aws.credentials.secretKey}") + private String accessSecret; + + @Value("${cloud.aws.region.static}") + private String region; + + @Bean + public AmazonS3 s3Client() { + AWSCredentials credentials = new BasicAWSCredentials(accessKey, accessSecret); + return AmazonS3ClientBuilder.standard() + .withCredentials(new AWSStaticCredentialsProvider(credentials)) + .withRegion(region).build(); + } +} \ No newline at end of file diff --git a/app/kac-app/src/main/resources/application.properties b/app/kac-app/src/main/resources/application.properties new file mode 100644 index 0000000..e286db6 --- /dev/null +++ b/app/kac-app/src/main/resources/application.properties @@ -0,0 +1,40 @@ + + +###### GP 데이터 데이터 저장 설정 ####### +gp.remove.time = 5 +gp.insert.count = 1000 +gp.end.time= 1 + +####### Naver 주소변화 API 값 ############# +naver.api.id=5md90yszqj +naver.api.key=uCJci6Ixm4DN7hUGtSrjKh6NU6z0SOKq9idpkLat +naver.api.url=https://naveropenapi.apigw.ntruss.com/map-reversegeocode/v2/gc + +### 일출/일몰 ### +external.sunriseset.url=http://apis.data.go.kr/B090041/openapi/service/RiseSetInfoService +#external.sunriseset.key=b%2FStm6AMT3EwXc5kOvwnjK%2FPB57Ay1WzkIGVx5WaMt0MyRt3TEPgcJ%2Fur45GrnVOZKs2sfIWKUX3BTl8eYwVFw%3D%3D +#external.sunriseset.key=b/Stm6AMT3EwXc5kOvwnjK/PB57Ay1WzkIGVx5WaMt0MyRt3TEPgcJ/ur45GrnVOZKs2sfIWKUX3BTl8eYwVFw== +external.sunriseset.key=r6RMUsk3Vtama7D6uq7MiWV9dTC9MwfIIr4%2F45y0uVNw6BaYbgpKmL%2BLUDFVTfIYUmEe4K%2FaniEjdV9mg5t82Q%3D%3D +#external.sunriseset.key=r6RMUsk3Vtama7D6uq7MiWV9dTC9MwfIIr4/45y0uVNw6BaYbgpKmL+LUDFVTfIYUmEe4K/aniEjdV9mg5t82Q== +### TS ### +external.ts.url=http://121.137.95.45:8170 +external.ts.return.uri=/api/external/laanc/vc/callback + +### Token key ###### +spring.jwt.secret=jwtsecretkey +spring.jwt.prefix=palnet + +### Weather key ### +weather.api.url = http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst +weather.api.key = =r6RMUsk3Vtama7D6uq7MiWV9dTC9MwfIIr4%2F45y0uVNw6BaYbgpKmL%2BLUDFVTfIYUmEe4K%2FaniEjdV9mg5t82Q%3D%3D + +### AWS S3 #### +#cloud.aws.credentials.accessKey=AKIAW75VMZKFTMBRXK4I +cloud.aws.credentials.accessKey=AKIAW75VMZKFTMBRXK4I +cloud.aws.credentials.secretKey=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 +cloud.aws.stack.auto=false + +cloud.aws.s3.bucket=palnet-file +cloud.aws.region.static=ap-northeast-2 + +cloud.aws.s3.bucket.url=https://s3.ap-northeast-2.amazonaws.com/palnet-file \ No newline at end of file diff --git a/web/api-common/src/main/java/kr/co/palnet/kac/api/v1/common/file/controller/ComFileController.java b/web/api-common/src/main/java/kr/co/palnet/kac/api/v1/common/file/controller/ComFileController.java new file mode 100644 index 0000000..06cc44b --- /dev/null +++ b/web/api-common/src/main/java/kr/co/palnet/kac/api/v1/common/file/controller/ComFileController.java @@ -0,0 +1,79 @@ +//package kr.co.palnet.kac.api.v1.common.file.controller; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.core.io.ByteArrayResource; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.MediaType; +//import org.springframework.http.ResponseEntity; +//import org.springframework.web.bind.annotation.DeleteMapping; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.PathVariable; +//import org.springframework.web.bind.annotation.PostMapping; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RequestParam; +//import org.springframework.web.bind.annotation.RestController; +//import org.springframework.web.multipart.MultipartFile; +// +//import io.swagger.v3.oas.annotations.Operation; +//import io.swagger.v3.oas.annotations.Parameter; +//import io.swagger.v3.oas.annotations.enums.ParameterIn; +//import io.swagger.v3.oas.annotations.media.Content; +//import io.swagger.v3.oas.annotations.tags.Tag; +//import kr.co.palnet.kac.api.v1.common.file.service.ComFileService; +//import lombok.RequiredArgsConstructor; +// +//@RestController +//@RequiredArgsConstructor +//@RequestMapping("/v1/com/file") +//@Tag(name = "file", description = "파일데이터 관련 API") +//public class ComFileController { +// +// private final ComFileService service; +// +// /** +// * 파일 업로드 기능 +// * @param file +// * @return +// */ +// @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) +// @Operation(summary = "파일업로드") +// public ResponseEntity uploadFile( +// @Parameter( +// description = "multipart/form-data 형식의 파일데이터를 input으로 받습니다. 이때 key 값은 file 입니다.", +// content = @Content(mediaType = MediaType.MULTIPART_FORM_DATA_VALUE) +// )@RequestParam(value = "file") MultipartFile file +// ) { +// return new ResponseEntity<>(service.uploadFile(file), HttpStatus.OK); +// } +// +// /** +// * 파일 다운로드 기능. +// * @param fileName +// * @return +// */ +// @GetMapping("/download/{fileName}") +// @Operation(summary = "파일다운로드") +// @Parameter(name="fileName", description = "파일 명", in = ParameterIn.PATH, example = "파일명") +// public ResponseEntity downloadFile(@PathVariable String fileName) { +// byte[] data = service.downloadFile(fileName); +// ByteArrayResource resource = new ByteArrayResource(data); +// return ResponseEntity +// .ok() +// .contentLength(data.length) +// .header("Content-type", "application/octet-stream") +// .header("Content-disposition", "attachment; filename=\"" + fileName + "\"") +// .body(resource); +// } +// +// /** +// * 파일 삭제 기능. +// * @param fileName +// * @return +// */ +// @DeleteMapping("/delete/{fileName}") +// @Operation(summary = "파일삭제") +// @Parameter(name="fileName", description = "파일 명", in = ParameterIn.PATH, example = "파일명") +// public ResponseEntity deleteFile(@PathVariable String fileName) { +// return new ResponseEntity<>(service.deleteFile(fileName), HttpStatus.OK); +// } +//} \ No newline at end of file diff --git a/web/api-common/src/main/java/kr/co/palnet/kac/api/v1/common/file/service/ComFileService.java b/web/api-common/src/main/java/kr/co/palnet/kac/api/v1/common/file/service/ComFileService.java new file mode 100644 index 0000000..f0bc89a --- /dev/null +++ b/web/api-common/src/main/java/kr/co/palnet/kac/api/v1/common/file/service/ComFileService.java @@ -0,0 +1,87 @@ +//package kr.co.palnet.kac.api.v1.common.file.service; +// +//import java.io.File; +//import java.io.FileOutputStream; +//import java.io.IOException; +// +//import org.apache.tomcat.util.http.fileupload.IOUtils; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.stereotype.Service; +//import org.springframework.web.multipart.MultipartFile; +// +//import com.amazonaws.services.s3.AmazonS3; +//import com.amazonaws.services.s3.model.PutObjectRequest; +//import com.amazonaws.services.s3.model.S3Object; +//import com.amazonaws.services.s3.model.S3ObjectInputStream; +// +//import lombok.extern.slf4j.Slf4j; +// +//@Service +//@Slf4j +//public class ComFileService { +// +// @Value("${cloud.aws.s3.bucket}") +// private String bucketName; +// +// @Autowired +// private AmazonS3 s3Client; +// +// /** +// * 파일 업로드 기능. +// * @param file +// * @return +// */ +// public String uploadFile(MultipartFile file) { +// File fileObj = convertMultiPartFileToFile(file); +// String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename(); +// s3Client.putObject(new PutObjectRequest(bucketName, fileName, fileObj)); +// fileObj.delete(); +// return fileName; +// } +// +// +// /** +// * 파일 다운로드 기능. 아마존 S3에 있는 데이터 다운로드해주는 기능. +// * @param fileName +// * @return +// */ +// public byte[] downloadFile(String fileName) { +// S3Object s3Object = s3Client.getObject(bucketName, fileName); +// S3ObjectInputStream inputStream = s3Object.getObjectContent(); +// try { +// byte[] content = IOUtils.toByteArray(inputStream); +// return content; +// } catch (IOException e) { +// e.printStackTrace(); +// } +// return null; +// } +// +// +// /** +// * 아마존 S3에 있는 데이터 삭제하는 기능. +// * @param fileName +// * @return +// */ +// public String deleteFile(String fileName) { +// s3Client.deleteObject(bucketName, fileName); +// return fileName + " removed ..."; +// } +// +// +// /** +// * MultipartFile로 받은 객체를 File 객체로 변환 +// * @param file +// * @return +// */ +// private File convertMultiPartFileToFile(MultipartFile file) { +// File convertedFile = new File(file.getOriginalFilename()); +// try (FileOutputStream fos = new FileOutputStream(convertedFile)) { +// fos.write(file.getBytes()); +// } catch (IOException e) { +// log.error("Error converting multipartFile to file", e); +// } +// return convertedFile; +// } +//}