From d2adcfc031e8c36fe6d8e37aaafbe3bf4d7b045f Mon Sep 17 00:00:00 2001 From: Changil Park <55132026+parkcoldroad@users.noreply.github.com> Date: Wed, 4 Oct 2023 11:09:56 +0900 Subject: [PATCH] =?UTF-8?q?[=EA=B4=80=EB=A6=AC=EC=9E=90]=20=EC=9E=91?= =?UTF-8?q?=EA=B0=80=20=ED=8F=AC=ED=8A=B8=ED=8F=B4=EB=A6=AC=EC=98=A4=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=B6=94=EA=B0=80,=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20(#85)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 관리자 라이센스 이미지 추가 * feat: 관리자 라이센스 이미지 조회 * chore: Make JacksonConfig from feign to transmit dto and MultipartFile --- .../adapter/feign/ProductServiceClient.java | 9 ++++++ .../admin/global/config/JacksonConfig.java | 20 ++++++++++++ .../LicenseImageCreateService.java | 12 +++++++ .../LicenseImageRetrieveService.java | 9 ++++++ .../impl/LicenseImageCreateServiceImpl.java | 26 ++++++++++++++++ .../impl/LicenseImageRetrieveServiceImpl.java | 21 +++++++++++++ .../LicenseImageCreateController.java | 31 +++++++++++++++++++ .../LicenseImageRetrieveController.java | 26 ++++++++++++++++ .../controller/dto/LicenseImageCreateDto.java | 24 ++++++++++++++ .../dto/LicenseImageRetrieveDto.java | 21 +++++++++++++ 10 files changed, 199 insertions(+) create mode 100644 src/main/java/com/liberty52/admin/global/config/JacksonConfig.java create mode 100644 src/main/java/com/liberty52/admin/service/applicationservice/LicenseImageCreateService.java create mode 100644 src/main/java/com/liberty52/admin/service/applicationservice/LicenseImageRetrieveService.java create mode 100644 src/main/java/com/liberty52/admin/service/applicationservice/impl/LicenseImageCreateServiceImpl.java create mode 100644 src/main/java/com/liberty52/admin/service/applicationservice/impl/LicenseImageRetrieveServiceImpl.java create mode 100644 src/main/java/com/liberty52/admin/service/controller/LicenseImageCreateController.java create mode 100644 src/main/java/com/liberty52/admin/service/controller/LicenseImageRetrieveController.java create mode 100644 src/main/java/com/liberty52/admin/service/controller/dto/LicenseImageCreateDto.java create mode 100644 src/main/java/com/liberty52/admin/service/controller/dto/LicenseImageRetrieveDto.java diff --git a/src/main/java/com/liberty52/admin/global/adapter/feign/ProductServiceClient.java b/src/main/java/com/liberty52/admin/global/adapter/feign/ProductServiceClient.java index 7d9ba2a..b2b89e3 100644 --- a/src/main/java/com/liberty52/admin/global/adapter/feign/ProductServiceClient.java +++ b/src/main/java/com/liberty52/admin/global/adapter/feign/ProductServiceClient.java @@ -169,4 +169,13 @@ void createProductIntroductionByAdmin(@RequestHeader("LB-Role") String role, @Pa @ResponseStatus(HttpStatus.NO_CONTENT) void modifyProductIntroductionByAdmin(@RequestHeader("LB-Role") String role, @PathVariable String productId, @RequestPart(value = "images",required = false) MultipartFile productIntroductionImageFile); + /** 라이센스 이미지 추가*/ + @PostMapping(value = "/admin/licenseImage", consumes = "multipart/form-data") + @ResponseStatus(HttpStatus.CREATED) + void createLicenseImageByAdmin(@RequestHeader("LB-Role") String role, @RequestPart("dto") String dtoJson, + @RequestPart(value = "image") MultipartFile productIntroductionImageFile); + /** 라이센스 이미지 조회*/ + @GetMapping("/admin/licenseImage") + @ResponseStatus(HttpStatus.OK) + List retrieveLicenseImageByAdmin(@RequestHeader("LB-Role")String role); } diff --git a/src/main/java/com/liberty52/admin/global/config/JacksonConfig.java b/src/main/java/com/liberty52/admin/global/config/JacksonConfig.java new file mode 100644 index 0000000..a5bda52 --- /dev/null +++ b/src/main/java/com/liberty52/admin/global/config/JacksonConfig.java @@ -0,0 +1,20 @@ +package com.liberty52.admin.global.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; + +@Configuration +public class JacksonConfig { + + @Bean + public ObjectMapper objectMapper() { + ObjectMapper mapper = new ObjectMapper(); + mapper.registerModule(new JavaTimeModule()); + mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + return mapper; + } +} diff --git a/src/main/java/com/liberty52/admin/service/applicationservice/LicenseImageCreateService.java b/src/main/java/com/liberty52/admin/service/applicationservice/LicenseImageCreateService.java new file mode 100644 index 0000000..9ba58c4 --- /dev/null +++ b/src/main/java/com/liberty52/admin/service/applicationservice/LicenseImageCreateService.java @@ -0,0 +1,12 @@ +package com.liberty52.admin.service.applicationservice; + +import java.io.IOException; + +import org.springframework.web.multipart.MultipartFile; + +import com.liberty52.admin.service.controller.dto.LicenseImageCreateDto; + +public interface LicenseImageCreateService { + void createLicenseImageByAdmin(String role, LicenseImageCreateDto dto, + MultipartFile productIntroductionImageFile) throws IOException; +} diff --git a/src/main/java/com/liberty52/admin/service/applicationservice/LicenseImageRetrieveService.java b/src/main/java/com/liberty52/admin/service/applicationservice/LicenseImageRetrieveService.java new file mode 100644 index 0000000..8b20c8f --- /dev/null +++ b/src/main/java/com/liberty52/admin/service/applicationservice/LicenseImageRetrieveService.java @@ -0,0 +1,9 @@ +package com.liberty52.admin.service.applicationservice; + +import java.util.List; + +import com.liberty52.admin.service.controller.dto.LicenseImageRetrieveDto; + +public interface LicenseImageRetrieveService { + List retrieveLicenseImageByAdmin(String role); +} diff --git a/src/main/java/com/liberty52/admin/service/applicationservice/impl/LicenseImageCreateServiceImpl.java b/src/main/java/com/liberty52/admin/service/applicationservice/impl/LicenseImageCreateServiceImpl.java new file mode 100644 index 0000000..b2f3eae --- /dev/null +++ b/src/main/java/com/liberty52/admin/service/applicationservice/impl/LicenseImageCreateServiceImpl.java @@ -0,0 +1,26 @@ +package com.liberty52.admin.service.applicationservice.impl; + +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.liberty52.admin.global.adapter.feign.ProductServiceClient; +import com.liberty52.admin.service.applicationservice.LicenseImageCreateService; +import com.liberty52.admin.service.controller.dto.LicenseImageCreateDto; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class LicenseImageCreateServiceImpl implements LicenseImageCreateService { + private final ProductServiceClient productServiceClient; + private final ObjectMapper objectMapper; + + @Override + public void createLicenseImageByAdmin(String role, LicenseImageCreateDto dto, + MultipartFile productIntroductionImageFile) throws JsonProcessingException { + String dtoJson = objectMapper.writeValueAsString(dto); + productServiceClient.createLicenseImageByAdmin(role, dtoJson, productIntroductionImageFile); + } +} diff --git a/src/main/java/com/liberty52/admin/service/applicationservice/impl/LicenseImageRetrieveServiceImpl.java b/src/main/java/com/liberty52/admin/service/applicationservice/impl/LicenseImageRetrieveServiceImpl.java new file mode 100644 index 0000000..4c89a6c --- /dev/null +++ b/src/main/java/com/liberty52/admin/service/applicationservice/impl/LicenseImageRetrieveServiceImpl.java @@ -0,0 +1,21 @@ +package com.liberty52.admin.service.applicationservice.impl; + +import java.util.List; + +import org.springframework.stereotype.Service; + +import com.liberty52.admin.global.adapter.feign.ProductServiceClient; +import com.liberty52.admin.service.applicationservice.LicenseImageRetrieveService; +import com.liberty52.admin.service.controller.dto.LicenseImageRetrieveDto; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class LicenseImageRetrieveServiceImpl implements LicenseImageRetrieveService { + private final ProductServiceClient productServiceClient; + @Override + public List retrieveLicenseImageByAdmin(String role) { + return productServiceClient.retrieveLicenseImageByAdmin(role); + } +} diff --git a/src/main/java/com/liberty52/admin/service/controller/LicenseImageCreateController.java b/src/main/java/com/liberty52/admin/service/controller/LicenseImageCreateController.java new file mode 100644 index 0000000..6f50eda --- /dev/null +++ b/src/main/java/com/liberty52/admin/service/controller/LicenseImageCreateController.java @@ -0,0 +1,31 @@ +package com.liberty52.admin.service.controller; + +import java.io.IOException; + +import org.springframework.http.HttpStatus; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.liberty52.admin.service.applicationservice.LicenseImageCreateService; +import com.liberty52.admin.service.controller.dto.LicenseImageCreateDto; + +import lombok.RequiredArgsConstructor; + +@RestController +@RequiredArgsConstructor +public class LicenseImageCreateController { + private final LicenseImageCreateService licenseImageCreateService; + + @PostMapping("/licenseImage") + @ResponseStatus(HttpStatus.CREATED) + public void createLicenseImageByAdmin(@RequestHeader("LB-Role") String role, + @Validated @RequestPart("dto") LicenseImageCreateDto dto, + @RequestPart(value = "image") MultipartFile productIntroductionImageFile) throws IOException { + licenseImageCreateService.createLicenseImageByAdmin(role, dto, productIntroductionImageFile); + } +} diff --git a/src/main/java/com/liberty52/admin/service/controller/LicenseImageRetrieveController.java b/src/main/java/com/liberty52/admin/service/controller/LicenseImageRetrieveController.java new file mode 100644 index 0000000..8828077 --- /dev/null +++ b/src/main/java/com/liberty52/admin/service/controller/LicenseImageRetrieveController.java @@ -0,0 +1,26 @@ +package com.liberty52.admin.service.controller; + +import java.util.List; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; + +import com.liberty52.admin.service.applicationservice.LicenseImageRetrieveService; +import com.liberty52.admin.service.controller.dto.LicenseImageRetrieveDto; + +import lombok.RequiredArgsConstructor; + +@RestController +@RequiredArgsConstructor +public class LicenseImageRetrieveController { + private final LicenseImageRetrieveService licenseImageRetrieveService; + + @GetMapping("/licenseImage") + @ResponseStatus(HttpStatus.OK) + public List retrieveLicenseImageByAdmin(@RequestHeader("LB-Role") String role) { + return licenseImageRetrieveService.retrieveLicenseImageByAdmin(role); + } +} diff --git a/src/main/java/com/liberty52/admin/service/controller/dto/LicenseImageCreateDto.java b/src/main/java/com/liberty52/admin/service/controller/dto/LicenseImageCreateDto.java new file mode 100644 index 0000000..162eb4c --- /dev/null +++ b/src/main/java/com/liberty52/admin/service/controller/dto/LicenseImageCreateDto.java @@ -0,0 +1,24 @@ +package com.liberty52.admin.service.controller.dto; + +import java.time.LocalDate; + +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +public class LicenseImageCreateDto { + @NotBlank + private String artistName; + @NotBlank + private String artName; + @NotNull + private LocalDate startDate; + @NotNull + private LocalDate endDate; + @Min(0) + private Integer stock; +} diff --git a/src/main/java/com/liberty52/admin/service/controller/dto/LicenseImageRetrieveDto.java b/src/main/java/com/liberty52/admin/service/controller/dto/LicenseImageRetrieveDto.java new file mode 100644 index 0000000..9266eb3 --- /dev/null +++ b/src/main/java/com/liberty52/admin/service/controller/dto/LicenseImageRetrieveDto.java @@ -0,0 +1,21 @@ +package com.liberty52.admin.service.controller.dto; + +import java.time.LocalDate; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class LicenseImageRetrieveDto { + private String id; + private String artistName; + private String artName; + private LocalDate startDate; + private LocalDate endDate; + private String licenseImageUrl; + private Integer stock; + +}