-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a32c23d
commit af2069d
Showing
6 changed files
with
208 additions
and
2 deletions.
There are no files selected for viewing
68 changes: 68 additions & 0 deletions
68
Api/src/main/java/tify/server/api/product/model/vo/ProductRetrieveVo.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
package tify.server.api.product.model.vo; | ||
|
||
|
||
import io.swagger.v3.oas.annotations.media.Schema; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
import tify.server.domain.domains.product.dto.ProductRetrieveDTO; | ||
import tify.server.domain.domains.user.domain.DetailCategory; | ||
import tify.server.domain.domains.user.domain.LargeCategory; | ||
import tify.server.domain.domains.user.domain.SmallCategory; | ||
|
||
@Getter | ||
@Builder | ||
public class ProductRetrieveVo { | ||
|
||
@Schema(description = "상품의 pk 값입니다.") | ||
private final Long productId; | ||
|
||
@Schema(description = "상품의 이름입니다.") | ||
private final String name; | ||
|
||
@Schema(description = "상품의 브랜드입니다.") | ||
private final String brand; | ||
|
||
@Schema(description = "상품의 속성입니다.", example = "포근한") | ||
private final String characteristic; | ||
|
||
@Schema(description = "상품의 가격입니다.") | ||
private final Long price; | ||
|
||
@Schema(description = "상품의 옵션입니다.", example = "브라운, 옐로우") | ||
private final String productOption; | ||
|
||
@Schema(description = "상품의 이미지 url입니다.") | ||
private final String imageUrl; | ||
|
||
@Schema(description = "상품의 구매 링크입니다.") | ||
private final String siteUrl; | ||
|
||
@Schema(description = "상품의 대분류입니다.", implementation = LargeCategory.class) | ||
private final LargeCategory largeCategory; | ||
|
||
@Schema(description = "상품의 중분류입니다.", implementation = SmallCategory.class) | ||
private final SmallCategory smallCategory; | ||
|
||
@Schema(description = "상품의 소분류입니다.", implementation = DetailCategory.class) | ||
private final DetailCategory detailCategory; | ||
|
||
@Schema(description = "상품 질문의 카테고리 이름입니다.", example = "BMLIP") | ||
private final String categoryName; | ||
|
||
public static ProductRetrieveVo from(ProductRetrieveDTO dto) { | ||
return ProductRetrieveVo.builder() | ||
.productId(dto.getProduct().getId()) | ||
.name(dto.getProduct().getName()) | ||
.brand(dto.getProduct().getBrand()) | ||
.characteristic(dto.getProduct().getCharacteristic()) | ||
.price(dto.getProduct().getPrice()) | ||
.productOption(dto.getProduct().getProductOption()) | ||
.imageUrl(dto.getProduct().getImageUrl()) | ||
.siteUrl(dto.getProduct().getCrawlUrl()) | ||
.largeCategory(dto.getFavorQuestionCategory().getLargeCategory()) | ||
.smallCategory(dto.getFavorQuestionCategory().getSmallCategory()) | ||
.detailCategory(dto.getFavorQuestionCategory().getDetailCategory()) | ||
.categoryName(dto.getFavorQuestionCategory().getName()) | ||
.build(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
15 changes: 15 additions & 0 deletions
15
Api/src/main/java/tify/server/api/user/model/dto/UserFavorDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package tify.server.api.user.model.dto; | ||
|
||
|
||
import io.swagger.v3.oas.annotations.media.Schema; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import tify.server.domain.domains.user.domain.DetailCategory; | ||
|
||
@Getter | ||
@NoArgsConstructor | ||
public class UserFavorDto { | ||
|
||
@Schema(description = "취향의 종류입니다.", example = "LIP") | ||
private DetailCategory detailCategory; | ||
} |
15 changes: 15 additions & 0 deletions
15
Api/src/main/java/tify/server/api/user/model/dto/request/PatchUserFavorRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package tify.server.api.user.model.dto.request; | ||
|
||
|
||
import java.util.List; | ||
import javax.validation.constraints.NotNull; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import tify.server.api.user.model.dto.UserFavorDto; | ||
|
||
@Getter | ||
@NoArgsConstructor | ||
public class PatchUserFavorRequest { | ||
|
||
@NotNull private List<UserFavorDto> userFavorDtoList; | ||
} |
36 changes: 36 additions & 0 deletions
36
Api/src/main/java/tify/server/api/user/model/dto/vo/UserFavorBoxVo.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package tify.server.api.user.model.dto.vo; | ||
|
||
|
||
import io.swagger.v3.oas.annotations.media.Schema; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
import tify.server.domain.domains.user.domain.DetailCategory; | ||
import tify.server.domain.domains.user.domain.LargeCategory; | ||
import tify.server.domain.domains.user.domain.SmallCategory; | ||
import tify.server.domain.domains.user.vo.UserFavorVo; | ||
|
||
@Getter | ||
@Builder | ||
public class UserFavorBoxVo { | ||
|
||
@Schema(description = "유저 취향 박스 내 취향의 pk값입니다.", example = "1") | ||
private final Long userFavorId; | ||
|
||
@Schema(description = "유저 취향 박스 내 취향의 대분류입니다.", example = "BEAUTY") | ||
private final LargeCategory largeCategory; | ||
|
||
@Schema(description = "유저 취향 박스 내 취향의 중분류입니다.", example = "MAKEUP") | ||
private final SmallCategory smallCategory; | ||
|
||
@Schema(description = "유저 취향 박스 내 취향의 소분류입니다.", example = "LIP") | ||
private final DetailCategory detailCategory; | ||
|
||
public static UserFavorBoxVo from(UserFavorVo userFavorVo) { | ||
return UserFavorBoxVo.builder() | ||
.userFavorId(userFavorVo.getUserFavor().getId()) | ||
.largeCategory(userFavorVo.getLargeCategory()) | ||
.smallCategory(userFavorVo.getUserFavor().getDetailCategory().getSmallCategory()) | ||
.detailCategory(userFavorVo.getUserFavor().getDetailCategory()) | ||
.build(); | ||
} | ||
} |
41 changes: 41 additions & 0 deletions
41
Api/src/main/java/tify/server/api/user/service/UpdateUserFavorUseCase.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
package tify.server.api.user.service; | ||
|
||
|
||
import java.util.List; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.transaction.annotation.Transactional; | ||
import tify.server.api.user.model.dto.request.PatchUserFavorRequest; | ||
import tify.server.core.annotation.UseCase; | ||
import tify.server.core.exception.BaseException; | ||
import tify.server.domain.domains.user.adaptor.UserAdaptor; | ||
import tify.server.domain.domains.user.adaptor.UserFavorAdaptor; | ||
import tify.server.domain.domains.user.domain.User; | ||
import tify.server.domain.domains.user.domain.UserFavor; | ||
import tify.server.domain.domains.user.exception.UserException; | ||
|
||
@UseCase | ||
@RequiredArgsConstructor | ||
public class UpdateUserFavorUseCase { | ||
|
||
private final UserAdaptor userAdaptor; | ||
private final UserFavorAdaptor userFavorAdaptor; | ||
|
||
@Transactional | ||
public void execute(Long userId, PatchUserFavorRequest body) { | ||
if (body.getUserFavorDtoList().size() != 3) { | ||
throw new BaseException(UserException.USER_FAVOR_UPDATE_ERROR); | ||
} | ||
User user = userAdaptor.query(userId); | ||
|
||
List<UserFavor> updateFavors = | ||
body.getUserFavorDtoList().stream() | ||
.map( | ||
dto -> | ||
UserFavor.builder() | ||
.user(user) | ||
.detailCategory(dto.getDetailCategory()) | ||
.build()) | ||
.toList(); | ||
user.updateUserFavors(updateFavors); | ||
} | ||
} |