From e3d2ad7eeb891d4a75282279f9ded4a9eee194cb Mon Sep 17 00:00:00 2001 From: Suhun0331 Date: Mon, 10 Feb 2025 15:35:46 +0900 Subject: [PATCH 1/6] Feat : Setting ProductRegistration form --- .../registration/controller/RegistrationController.java | 4 ++++ .../java/kw/zeropick/registration/domain/Registration.java | 4 ++++ .../registration/repository/RegistrationRepository.java | 4 ++++ .../kw/zeropick/registration/service/RegistrationService.java | 4 ++++ 4 files changed, 16 insertions(+) create mode 100644 src/main/java/kw/zeropick/registration/controller/RegistrationController.java create mode 100644 src/main/java/kw/zeropick/registration/domain/Registration.java create mode 100644 src/main/java/kw/zeropick/registration/repository/RegistrationRepository.java create mode 100644 src/main/java/kw/zeropick/registration/service/RegistrationService.java diff --git a/src/main/java/kw/zeropick/registration/controller/RegistrationController.java b/src/main/java/kw/zeropick/registration/controller/RegistrationController.java new file mode 100644 index 0000000..6ffdee9 --- /dev/null +++ b/src/main/java/kw/zeropick/registration/controller/RegistrationController.java @@ -0,0 +1,4 @@ +package kw.zeropick.registration.controller; + +public class RegistrationController { +} diff --git a/src/main/java/kw/zeropick/registration/domain/Registration.java b/src/main/java/kw/zeropick/registration/domain/Registration.java new file mode 100644 index 0000000..facd042 --- /dev/null +++ b/src/main/java/kw/zeropick/registration/domain/Registration.java @@ -0,0 +1,4 @@ +package kw.zeropick.registration.domain; + +public class Registration { +} diff --git a/src/main/java/kw/zeropick/registration/repository/RegistrationRepository.java b/src/main/java/kw/zeropick/registration/repository/RegistrationRepository.java new file mode 100644 index 0000000..742c360 --- /dev/null +++ b/src/main/java/kw/zeropick/registration/repository/RegistrationRepository.java @@ -0,0 +1,4 @@ +package kw.zeropick.registration.repository; + +public class RegistrationRepository { +} diff --git a/src/main/java/kw/zeropick/registration/service/RegistrationService.java b/src/main/java/kw/zeropick/registration/service/RegistrationService.java new file mode 100644 index 0000000..d4b38f5 --- /dev/null +++ b/src/main/java/kw/zeropick/registration/service/RegistrationService.java @@ -0,0 +1,4 @@ +package kw.zeropick.registration.service; + +public class RegistrationService { +} From ad9a1522a1e4207bcfee85d9893152a705e479d7 Mon Sep 17 00:00:00 2001 From: Suhun0331 Date: Mon, 10 Feb 2025 16:24:05 +0900 Subject: [PATCH 2/6] =?UTF-8?q?Feat=20:=20=EC=A0=9C=ED=92=88=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EC=9A=94=EC=B2=AD=20=EC=83=9D=EC=84=B1=20api=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../registration/domain/QRegistration.java | 71 +++++++++++++++++++ .../kw/zeropick/member/domain/Member.java | 2 + .../controller/RegistrationController.java | 33 +++++++++ .../response/RegistrationResponse.java | 23 ++++++ .../registration/domain/Registration.java | 69 +++++++++++++++++- .../dto/RegistrationRequestDto.java | 14 ++++ .../repository/RegistrationRepository.java | 8 ++- .../service/RegistrationService.java | 30 ++++++++ 8 files changed, 248 insertions(+), 2 deletions(-) create mode 100644 src/main/generated/kw/zeropick/registration/domain/QRegistration.java create mode 100644 src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java create mode 100644 src/main/java/kw/zeropick/registration/dto/RegistrationRequestDto.java diff --git a/src/main/generated/kw/zeropick/registration/domain/QRegistration.java b/src/main/generated/kw/zeropick/registration/domain/QRegistration.java new file mode 100644 index 0000000..cb91a8f --- /dev/null +++ b/src/main/generated/kw/zeropick/registration/domain/QRegistration.java @@ -0,0 +1,71 @@ +package kw.zeropick.registration.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QRegistration is a Querydsl query type for Registration + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QRegistration extends EntityPathBase { + + private static final long serialVersionUID = -1263438447L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QRegistration registration = new QRegistration("registration"); + + public final kw.zeropick.common.domain.QBaseEntity _super = new kw.zeropick.common.domain.QBaseEntity(this); + + public final StringPath additional = createString("additional"); + + public final StringPath brand = createString("brand"); + + public final EnumPath category = createEnum("category", kw.zeropick.product.domain.Category.class); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath imageUrl = createString("imageUrl"); + + public final StringPath ingredient = createString("ingredient"); + + public final kw.zeropick.member.domain.QMember member; + + public final StringPath productName = createString("productName"); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public QRegistration(String variable) { + this(Registration.class, forVariable(variable), INITS); + } + + public QRegistration(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QRegistration(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QRegistration(PathMetadata metadata, PathInits inits) { + this(Registration.class, metadata, inits); + } + + public QRegistration(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.member = inits.isInitialized("member") ? new kw.zeropick.member.domain.QMember(forProperty("member")) : null; + } + +} + diff --git a/src/main/java/kw/zeropick/member/domain/Member.java b/src/main/java/kw/zeropick/member/domain/Member.java index f5f0ead..02fbe04 100644 --- a/src/main/java/kw/zeropick/member/domain/Member.java +++ b/src/main/java/kw/zeropick/member/domain/Member.java @@ -4,9 +4,11 @@ import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; import kw.zeropick.common.converter.StringListToStringConverter; +import kw.zeropick.registration.domain.Registration; import lombok.*; import java.time.LocalDate; +import java.util.ArrayList; import java.util.List; @Entity diff --git a/src/main/java/kw/zeropick/registration/controller/RegistrationController.java b/src/main/java/kw/zeropick/registration/controller/RegistrationController.java index 6ffdee9..fd08d57 100644 --- a/src/main/java/kw/zeropick/registration/controller/RegistrationController.java +++ b/src/main/java/kw/zeropick/registration/controller/RegistrationController.java @@ -1,4 +1,37 @@ package kw.zeropick.registration.controller; +import io.swagger.v3.oas.annotations.Operation; +import kw.zeropick.common.LoginUser; +import kw.zeropick.member.domain.Member; +import kw.zeropick.member.service.MemberService; +import kw.zeropick.registration.controller.response.RegistrationResponse; +import kw.zeropick.registration.dto.RegistrationRequestDto; +import kw.zeropick.registration.service.RegistrationService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/registration") +@RequiredArgsConstructor public class RegistrationController { + + private final RegistrationService registrationService; + private final MemberService memberService; + + @PostMapping + @Operation(summary = "제품 등록 요청 생성") + public ResponseEntity registerProduct( + @RequestBody RegistrationRequestDto requestDto) { + + Long memberId = LoginUser.get().getId(); + Member requestMember = memberService.getById(memberId); + RegistrationResponse response = registrationService.registerProduct(requestMember, requestDto); + + return ResponseEntity.ok(response); + } } diff --git a/src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java b/src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java new file mode 100644 index 0000000..5b110b5 --- /dev/null +++ b/src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java @@ -0,0 +1,23 @@ +package kw.zeropick.registration.controller.response; + +import kw.zeropick.registration.domain.Registration; +import lombok.Getter; + +@Getter +public class RegistrationResponse { + private Long id; + private String brand; + private String productName; + private String category; + private String ingredient; + private String additional; + + public RegistrationResponse(Registration registration) { + this.id = registration.getId(); + this.brand = registration.getBrand(); + this.productName = registration.getProductName(); + this.category = registration.getCategory().name(); + this.ingredient = registration.getIngredient(); + this.additional = registration.getAdditional(); + } +} diff --git a/src/main/java/kw/zeropick/registration/domain/Registration.java b/src/main/java/kw/zeropick/registration/domain/Registration.java index facd042..50f9e19 100644 --- a/src/main/java/kw/zeropick/registration/domain/Registration.java +++ b/src/main/java/kw/zeropick/registration/domain/Registration.java @@ -1,4 +1,71 @@ package kw.zeropick.registration.domain; -public class Registration { +import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; +import kw.zeropick.common.domain.BaseEntity; +import kw.zeropick.member.domain.Member; +import kw.zeropick.product.domain.Category; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Entity +public class Registration extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "registration_id") + private Long id; + + @ManyToOne(fetch = FetchType.LAZY)//단방향 연결 + @JoinColumn(name = "member_id", nullable = false) + private Member member; + + @NotNull + private String brand; + + @NotNull + private String productName; + + @NotNull + private Category category; + + private String ingredient; + + private String imageUrl; + + private String additional; + + public void setId(Long id) { + this.id = id; + } + + public void setBrand(String brand) { + this.brand = brand; + } + + public void setProductName(String productName) { + this.productName = productName; + } + + public void setCategory(Category category) { + this.category = category; + } + + public void setIngredient(String ingredient) { + this.ingredient = ingredient; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public void setAdditional(String additional) { + this.additional = additional; + } } diff --git a/src/main/java/kw/zeropick/registration/dto/RegistrationRequestDto.java b/src/main/java/kw/zeropick/registration/dto/RegistrationRequestDto.java new file mode 100644 index 0000000..776f1b8 --- /dev/null +++ b/src/main/java/kw/zeropick/registration/dto/RegistrationRequestDto.java @@ -0,0 +1,14 @@ +package kw.zeropick.registration.dto; + +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +public class RegistrationRequestDto { + private String brand; + private String productName; + private String category; + private String ingredient; + private String additional; +} diff --git a/src/main/java/kw/zeropick/registration/repository/RegistrationRepository.java b/src/main/java/kw/zeropick/registration/repository/RegistrationRepository.java index 742c360..49a5352 100644 --- a/src/main/java/kw/zeropick/registration/repository/RegistrationRepository.java +++ b/src/main/java/kw/zeropick/registration/repository/RegistrationRepository.java @@ -1,4 +1,10 @@ package kw.zeropick.registration.repository; -public class RegistrationRepository { +import kw.zeropick.registration.domain.Registration; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface RegistrationRepository extends JpaRepository { + + + } diff --git a/src/main/java/kw/zeropick/registration/service/RegistrationService.java b/src/main/java/kw/zeropick/registration/service/RegistrationService.java index d4b38f5..293c965 100644 --- a/src/main/java/kw/zeropick/registration/service/RegistrationService.java +++ b/src/main/java/kw/zeropick/registration/service/RegistrationService.java @@ -1,4 +1,34 @@ package kw.zeropick.registration.service; +import kw.zeropick.member.domain.Member; +import kw.zeropick.product.domain.Category; +import kw.zeropick.registration.controller.response.RegistrationResponse; +import kw.zeropick.registration.domain.Registration; +import kw.zeropick.registration.dto.RegistrationRequestDto; +import kw.zeropick.registration.repository.RegistrationRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor public class RegistrationService { + + private final RegistrationRepository registrationRepository; + @Transactional + public RegistrationResponse registerProduct(Member member, RegistrationRequestDto requestDto) { + Registration registration = Registration.builder() + .member(member) + .brand(requestDto.getBrand()) + .productName(requestDto.getProductName()) + .category(Category.valueOf(requestDto.getCategory())) + .ingredient(requestDto.getIngredient()) + .additional(requestDto.getAdditional()) + .build(); + + Registration savedRegistration = registrationRepository.save(registration); + + return new RegistrationResponse(savedRegistration); + } + } From 04b3c8a4cadc065ff58c57463a96207981c53261 Mon Sep 17 00:00:00 2001 From: Suhun0331 Date: Mon, 10 Feb 2025 16:38:35 +0900 Subject: [PATCH 3/6] =?UTF-8?q?Feat=20:=20=EC=A0=9C=ED=92=88=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EC=9A=94=EC=B2=AD=20=EC=A1=B0=ED=9A=8C=20api=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/RegistrationController.java | 35 +++++++++++++++---- .../dto/RegistrationRequestDto.java | 17 ++++++++- .../repository/RegistrationRepository.java | 7 ++-- .../service/RegistrationService.java | 13 ++++++- 4 files changed, 60 insertions(+), 12 deletions(-) diff --git a/src/main/java/kw/zeropick/registration/controller/RegistrationController.java b/src/main/java/kw/zeropick/registration/controller/RegistrationController.java index fd08d57..220069f 100644 --- a/src/main/java/kw/zeropick/registration/controller/RegistrationController.java +++ b/src/main/java/kw/zeropick/registration/controller/RegistrationController.java @@ -1,20 +1,21 @@ package kw.zeropick.registration.controller; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import kw.zeropick.common.LoginUser; import kw.zeropick.member.domain.Member; import kw.zeropick.member.service.MemberService; +import kw.zeropick.payload.ApiResponse; import kw.zeropick.registration.controller.response.RegistrationResponse; import kw.zeropick.registration.dto.RegistrationRequestDto; import kw.zeropick.registration.service.RegistrationService; import lombok.RequiredArgsConstructor; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +@Tag(name = "product", description = "상품 등록 요청 API") @RestController @RequestMapping("/registration") @RequiredArgsConstructor @@ -25,13 +26,33 @@ public class RegistrationController { @PostMapping @Operation(summary = "제품 등록 요청 생성") - public ResponseEntity registerProduct( + public ResponseEntity registerProduct( @RequestBody RegistrationRequestDto requestDto) { Long memberId = LoginUser.get().getId(); Member requestMember = memberService.getById(memberId); RegistrationResponse response = registrationService.registerProduct(requestMember, requestDto); - return ResponseEntity.ok(response); + return ResponseEntity.ok( + ApiResponse.builder() + .check(true) + .information(response) + .build() + ); + } + + @GetMapping + @Operation(summary = "제품 등록 요청 조회") + public ResponseEntity getAllRegistrations() { + Long memberId = LoginUser.get().getId(); + Member requestMember = memberService.getById(memberId); + List responseList = registrationService.getAllRegistrations(requestMember); + + return ResponseEntity.ok( + ApiResponse.builder() + .check(true) + .information(responseList) + .build() + ); } } diff --git a/src/main/java/kw/zeropick/registration/dto/RegistrationRequestDto.java b/src/main/java/kw/zeropick/registration/dto/RegistrationRequestDto.java index 776f1b8..24540b0 100644 --- a/src/main/java/kw/zeropick/registration/dto/RegistrationRequestDto.java +++ b/src/main/java/kw/zeropick/registration/dto/RegistrationRequestDto.java @@ -1,14 +1,29 @@ package kw.zeropick.registration.dto; +import jakarta.validation.constraints.NotNull; +import kw.zeropick.product.domain.Category; +import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @Getter +@Builder @NoArgsConstructor public class RegistrationRequestDto { + @NotNull private String brand; + @NotNull private String productName; - private String category; + @NotNull + private Category category; private String ingredient; private String additional; + + public RegistrationRequestDto(String brand, String productName, Category category, String ingredient, String additional) { + this.brand = brand; + this.productName = productName; + this.category = category; + this.ingredient = ingredient; + this.additional = additional; + } } diff --git a/src/main/java/kw/zeropick/registration/repository/RegistrationRepository.java b/src/main/java/kw/zeropick/registration/repository/RegistrationRepository.java index 49a5352..bdbfc57 100644 --- a/src/main/java/kw/zeropick/registration/repository/RegistrationRepository.java +++ b/src/main/java/kw/zeropick/registration/repository/RegistrationRepository.java @@ -1,10 +1,11 @@ package kw.zeropick.registration.repository; +import kw.zeropick.member.domain.Member; import kw.zeropick.registration.domain.Registration; import org.springframework.data.jpa.repository.JpaRepository; -public interface RegistrationRepository extends JpaRepository { - - +import java.util.List; +public interface RegistrationRepository extends JpaRepository { + List findByMember(Member member); } diff --git a/src/main/java/kw/zeropick/registration/service/RegistrationService.java b/src/main/java/kw/zeropick/registration/service/RegistrationService.java index 293c965..aa25ed7 100644 --- a/src/main/java/kw/zeropick/registration/service/RegistrationService.java +++ b/src/main/java/kw/zeropick/registration/service/RegistrationService.java @@ -10,6 +10,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; +import java.util.stream.Collectors; + @Service @RequiredArgsConstructor public class RegistrationService { @@ -21,7 +24,7 @@ public RegistrationResponse registerProduct(Member member, RegistrationRequestDt .member(member) .brand(requestDto.getBrand()) .productName(requestDto.getProductName()) - .category(Category.valueOf(requestDto.getCategory())) + .category(requestDto.getCategory()) .ingredient(requestDto.getIngredient()) .additional(requestDto.getAdditional()) .build(); @@ -31,4 +34,12 @@ public RegistrationResponse registerProduct(Member member, RegistrationRequestDt return new RegistrationResponse(savedRegistration); } + @Transactional(readOnly = true) + public List getAllRegistrations(Member member) { + List registrations = registrationRepository.findByMember(member); + return registrations.stream() + .map(RegistrationResponse::new) + .collect(Collectors.toList()); + } + } From 1bbe82eb285b25eb2478fd8461791a3b54101e2f Mon Sep 17 00:00:00 2001 From: Suhun0331 Date: Mon, 10 Feb 2025 17:13:45 +0900 Subject: [PATCH 4/6] =?UTF-8?q?Refactor=20:=20Registration=20=EC=97=94?= =?UTF-8?q?=ED=8B=B0=ED=8B=B0=20=EC=B2=98=EB=A6=AC=EC=83=81=ED=83=9C=20/?= =?UTF-8?q?=20=EB=B0=98=EB=A0=A4=20=EC=82=AC=EC=9C=A0=20=EC=BB=AC=EB=9F=BC?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/RegistrationResponse.java | 17 +++++++++++------ .../registration/domain/Registration.java | 12 ++++++++++++ .../registration/domain/RegistrationStatus.java | 7 +++++++ .../service/RegistrationService.java | 2 ++ 4 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 src/main/java/kw/zeropick/registration/domain/RegistrationStatus.java diff --git a/src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java b/src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java index 5b110b5..da48ebb 100644 --- a/src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java +++ b/src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java @@ -1,16 +1,19 @@ package kw.zeropick.registration.controller.response; import kw.zeropick.registration.domain.Registration; +import kw.zeropick.registration.domain.RegistrationStatus; import lombok.Getter; @Getter public class RegistrationResponse { - private Long id; - private String brand; - private String productName; - private String category; - private String ingredient; - private String additional; + private final Long id; + private final String brand; + private final String productName; + private final String category; + private final String ingredient; + private final String additional; + private final RegistrationStatus registrationStatus; + private final String rejectionReason; public RegistrationResponse(Registration registration) { this.id = registration.getId(); @@ -19,5 +22,7 @@ public RegistrationResponse(Registration registration) { this.category = registration.getCategory().name(); this.ingredient = registration.getIngredient(); this.additional = registration.getAdditional(); + this.registrationStatus = registration.getRegistrationStatus(); + this.rejectionReason = registration.getRejectionReason(); } } diff --git a/src/main/java/kw/zeropick/registration/domain/Registration.java b/src/main/java/kw/zeropick/registration/domain/Registration.java index 50f9e19..880c46e 100644 --- a/src/main/java/kw/zeropick/registration/domain/Registration.java +++ b/src/main/java/kw/zeropick/registration/domain/Registration.java @@ -41,6 +41,10 @@ public class Registration extends BaseEntity { private String additional; + private RegistrationStatus registrationStatus; // 등록 요청 처리 상태 + + private String rejectionReason; // 반려 사유 + public void setId(Long id) { this.id = id; } @@ -68,4 +72,12 @@ public void setImageUrl(String imageUrl) { public void setAdditional(String additional) { this.additional = additional; } + + public void setRegistrationStatus(RegistrationStatus registrationStatus) { + this.registrationStatus = registrationStatus; + } + + public void setRejectionReason(String rejectionReason) { + this.rejectionReason = rejectionReason; + } } diff --git a/src/main/java/kw/zeropick/registration/domain/RegistrationStatus.java b/src/main/java/kw/zeropick/registration/domain/RegistrationStatus.java new file mode 100644 index 0000000..d9639ee --- /dev/null +++ b/src/main/java/kw/zeropick/registration/domain/RegistrationStatus.java @@ -0,0 +1,7 @@ +package kw.zeropick.registration.domain; + +public enum RegistrationStatus { + PENDING, // 대기중 + REJECTED, // 반려 + COMPLETED // 등록 완료 +} diff --git a/src/main/java/kw/zeropick/registration/service/RegistrationService.java b/src/main/java/kw/zeropick/registration/service/RegistrationService.java index aa25ed7..13b0526 100644 --- a/src/main/java/kw/zeropick/registration/service/RegistrationService.java +++ b/src/main/java/kw/zeropick/registration/service/RegistrationService.java @@ -4,6 +4,7 @@ import kw.zeropick.product.domain.Category; import kw.zeropick.registration.controller.response.RegistrationResponse; import kw.zeropick.registration.domain.Registration; +import kw.zeropick.registration.domain.RegistrationStatus; import kw.zeropick.registration.dto.RegistrationRequestDto; import kw.zeropick.registration.repository.RegistrationRepository; import lombok.RequiredArgsConstructor; @@ -27,6 +28,7 @@ public RegistrationResponse registerProduct(Member member, RegistrationRequestDt .category(requestDto.getCategory()) .ingredient(requestDto.getIngredient()) .additional(requestDto.getAdditional()) + .registrationStatus(RegistrationStatus.PENDING) .build(); Registration savedRegistration = registrationRepository.save(registration); From 4f60cd1caf789ffd38c645ae558f6b8ee7fb190c Mon Sep 17 00:00:00 2001 From: Suhun0331 Date: Tue, 11 Feb 2025 17:50:49 +0900 Subject: [PATCH 5/6] =?UTF-8?q?Refactor=20:=20=EC=A0=9C=ED=92=88=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=20=EC=9A=94=EC=B2=AD=20=EB=B0=8F=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=EC=8B=9C=20file=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../registration/domain/QRegistration.java | 6 ++++- .../controller/RegistrationController.java | 13 ++++++----- .../response/RegistrationResponse.java | 5 +++++ .../registration/domain/Registration.java | 12 ++++++---- .../service/RegistrationService.java | 22 ++++++++++++++++++- 5 files changed, 47 insertions(+), 11 deletions(-) diff --git a/src/main/generated/kw/zeropick/registration/domain/QRegistration.java b/src/main/generated/kw/zeropick/registration/domain/QRegistration.java index cb91a8f..c8974bb 100644 --- a/src/main/generated/kw/zeropick/registration/domain/QRegistration.java +++ b/src/main/generated/kw/zeropick/registration/domain/QRegistration.java @@ -35,7 +35,7 @@ public class QRegistration extends EntityPathBase { public final NumberPath id = createNumber("id", Long.class); - public final StringPath imageUrl = createString("imageUrl"); + public final ListPath imageUrls = this.createList("imageUrls", String.class, StringPath.class, PathInits.DIRECT2); public final StringPath ingredient = createString("ingredient"); @@ -43,6 +43,10 @@ public class QRegistration extends EntityPathBase { public final StringPath productName = createString("productName"); + public final EnumPath registrationStatus = createEnum("registrationStatus", RegistrationStatus.class); + + public final StringPath rejectionReason = createString("rejectionReason"); + //inherited public final DateTimePath updatedAt = _super.updatedAt; diff --git a/src/main/java/kw/zeropick/registration/controller/RegistrationController.java b/src/main/java/kw/zeropick/registration/controller/RegistrationController.java index 220069f..62b1eb9 100644 --- a/src/main/java/kw/zeropick/registration/controller/RegistrationController.java +++ b/src/main/java/kw/zeropick/registration/controller/RegistrationController.java @@ -9,13 +9,15 @@ import kw.zeropick.registration.controller.response.RegistrationResponse; import kw.zeropick.registration.dto.RegistrationRequestDto; import kw.zeropick.registration.service.RegistrationService; +import kw.zeropick.review.dto.request.ReviewRequestDto; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.util.List; -@Tag(name = "product", description = "상품 등록 요청 API") +@Tag(name = "registration", description = "상품 등록 요청 API") @RestController @RequestMapping("/registration") @RequiredArgsConstructor @@ -27,11 +29,12 @@ public class RegistrationController { @PostMapping @Operation(summary = "제품 등록 요청 생성") public ResponseEntity registerProduct( - @RequestBody RegistrationRequestDto requestDto) { + @RequestPart(value = "registration") RegistrationRequestDto requestDto, + @RequestPart(value = "files", required = false) List files) { - Long memberId = LoginUser.get().getId(); + Long memberId = 1L; Member requestMember = memberService.getById(memberId); - RegistrationResponse response = registrationService.registerProduct(requestMember, requestDto); + RegistrationResponse response = registrationService.registerProduct(requestMember, requestDto, files); return ResponseEntity.ok( ApiResponse.builder() @@ -44,7 +47,7 @@ public ResponseEntity registerProduct( @GetMapping @Operation(summary = "제품 등록 요청 조회") public ResponseEntity getAllRegistrations() { - Long memberId = LoginUser.get().getId(); + Long memberId = 1L; Member requestMember = memberService.getById(memberId); List responseList = registrationService.getAllRegistrations(requestMember); diff --git a/src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java b/src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java index da48ebb..f6ded7a 100644 --- a/src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java +++ b/src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java @@ -4,6 +4,9 @@ import kw.zeropick.registration.domain.RegistrationStatus; import lombok.Getter; +import java.util.ArrayList; +import java.util.List; + @Getter public class RegistrationResponse { private final Long id; @@ -14,6 +17,7 @@ public class RegistrationResponse { private final String additional; private final RegistrationStatus registrationStatus; private final String rejectionReason; + private List imageUrls = new ArrayList<>(); public RegistrationResponse(Registration registration) { this.id = registration.getId(); @@ -24,5 +28,6 @@ public RegistrationResponse(Registration registration) { this.additional = registration.getAdditional(); this.registrationStatus = registration.getRegistrationStatus(); this.rejectionReason = registration.getRejectionReason(); + this.imageUrls = registration.getImageUrls(); } } diff --git a/src/main/java/kw/zeropick/registration/domain/Registration.java b/src/main/java/kw/zeropick/registration/domain/Registration.java index 880c46e..b29a93e 100644 --- a/src/main/java/kw/zeropick/registration/domain/Registration.java +++ b/src/main/java/kw/zeropick/registration/domain/Registration.java @@ -2,6 +2,7 @@ import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; +import kw.zeropick.common.converter.StringListToStringConverter; import kw.zeropick.common.domain.BaseEntity; import kw.zeropick.member.domain.Member; import kw.zeropick.product.domain.Category; @@ -10,6 +11,9 @@ import lombok.Getter; import lombok.NoArgsConstructor; +import java.util.ArrayList; +import java.util.List; + @Getter @Builder @NoArgsConstructor @@ -37,7 +41,8 @@ public class Registration extends BaseEntity { private String ingredient; - private String imageUrl; + @Convert(converter = StringListToStringConverter.class) + private List imageUrls = new ArrayList<>(); private String additional; @@ -65,10 +70,9 @@ public void setIngredient(String ingredient) { this.ingredient = ingredient; } - public void setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; + public void setImageUrls(List imageUrls) { + this.imageUrls = imageUrls; } - public void setAdditional(String additional) { this.additional = additional; } diff --git a/src/main/java/kw/zeropick/registration/service/RegistrationService.java b/src/main/java/kw/zeropick/registration/service/RegistrationService.java index 13b0526..193c33c 100644 --- a/src/main/java/kw/zeropick/registration/service/RegistrationService.java +++ b/src/main/java/kw/zeropick/registration/service/RegistrationService.java @@ -7,10 +7,13 @@ import kw.zeropick.registration.domain.RegistrationStatus; import kw.zeropick.registration.dto.RegistrationRequestDto; import kw.zeropick.registration.repository.RegistrationRepository; +import kw.zeropick.util.S3Util; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -19,8 +22,24 @@ public class RegistrationService { private final RegistrationRepository registrationRepository; + + private final S3Util s3Util; @Transactional - public RegistrationResponse registerProduct(Member member, RegistrationRequestDto requestDto) { + public RegistrationResponse registerProduct(Member member, RegistrationRequestDto requestDto, List files) { + + List images = new ArrayList<>(); + + // 이미지 파일 처리 및 S3 업로드 + if (files != null && !files.isEmpty()) { + for (MultipartFile file : files) { + if (file != null && !file.isEmpty()) { + String imageUrl = s3Util.upload(file); + System.out.println(imageUrl); + images.add(imageUrl); + } + } + } + Registration registration = Registration.builder() .member(member) .brand(requestDto.getBrand()) @@ -29,6 +48,7 @@ public RegistrationResponse registerProduct(Member member, RegistrationRequestDt .ingredient(requestDto.getIngredient()) .additional(requestDto.getAdditional()) .registrationStatus(RegistrationStatus.PENDING) + .imageUrls(images) .build(); Registration savedRegistration = registrationRepository.save(registration); From 47c3e70b76e312d7c341ca7bc934273ca2efd755 Mon Sep 17 00:00:00 2001 From: Suhun0331 Date: Tue, 11 Feb 2025 18:05:41 +0900 Subject: [PATCH 6/6] =?UTF-8?q?Refactor=20:=20=EC=A0=9C=ED=92=88=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=20created=5Fat=20=EB=88=84=EB=9D=BD=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/kw/zeropick/ZeropickApplication.java | 2 ++ .../registration/controller/response/RegistrationResponse.java | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/main/java/kw/zeropick/ZeropickApplication.java b/src/main/java/kw/zeropick/ZeropickApplication.java index 278715d..7729ca3 100644 --- a/src/main/java/kw/zeropick/ZeropickApplication.java +++ b/src/main/java/kw/zeropick/ZeropickApplication.java @@ -2,8 +2,10 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; @SpringBootApplication +@EnableJpaAuditing public class ZeropickApplication { public static void main(String[] args) { diff --git a/src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java b/src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java index f6ded7a..88981e1 100644 --- a/src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java +++ b/src/main/java/kw/zeropick/registration/controller/response/RegistrationResponse.java @@ -4,6 +4,7 @@ import kw.zeropick.registration.domain.RegistrationStatus; import lombok.Getter; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -18,6 +19,7 @@ public class RegistrationResponse { private final RegistrationStatus registrationStatus; private final String rejectionReason; private List imageUrls = new ArrayList<>(); + private LocalDateTime createdAt; public RegistrationResponse(Registration registration) { this.id = registration.getId(); @@ -29,5 +31,6 @@ public RegistrationResponse(Registration registration) { this.registrationStatus = registration.getRegistrationStatus(); this.rejectionReason = registration.getRejectionReason(); this.imageUrls = registration.getImageUrls(); + this.createdAt = registration.getCreatedAt(); } }