Skip to content

Commit

Permalink
merge dev
Browse files Browse the repository at this point in the history
  • Loading branch information
bongsh0112 committed Dec 16, 2023
1 parent a32c23d commit af2069d
Show file tree
Hide file tree
Showing 6 changed files with 208 additions and 2 deletions.
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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,16 @@
import org.springdoc.api.annotations.ParameterObject;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import tify.server.api.common.slice.SliceResponse;
import tify.server.api.user.model.dto.request.PatchNeighborsOrdersRequest;
import tify.server.api.user.model.dto.request.PatchUserFavorRequest;
Expand All @@ -28,8 +37,30 @@
import tify.server.api.user.model.dto.vo.UserOpinionVo;
import tify.server.api.user.model.dto.vo.UserReportInfoVo;
import tify.server.api.user.model.dto.vo.UserSearchInfoVo;
import tify.server.api.user.service.*;
import tify.server.api.user.service.AcceptanceNeighborApplicationUseCase;
import tify.server.api.user.service.CreateNeighborUseCase;
import tify.server.api.user.service.CreateUserOpinionUseCase;
import tify.server.api.user.service.CreateUserReportUseCase;
import tify.server.api.user.service.NeighborInfoUseCase;
import tify.server.api.user.service.RejectNeighborApplicationUseCase;
import tify.server.api.user.service.RemoveNeighborUseCase;
import tify.server.api.user.service.RetrieveBirthdayNeighborUseCase;
import tify.server.api.user.service.RetrieveMutualFriendsUseCase;
import tify.server.api.user.service.RetrieveMyDailyAnswerUseCase;
import tify.server.api.user.service.RetrieveNeighborApplicationUseCase;
import tify.server.api.user.service.RetrieveNeighborFavorBoxUseCase;
import tify.server.api.user.service.RetrieveNeighborListUseCase;
import tify.server.api.user.service.RetrieveUserListUseCase;
import tify.server.api.user.service.RetrieveUserOpinionUseCase;
import tify.server.api.user.service.RetrieveUserReportUseCase;
import tify.server.api.user.service.UpdateNeighborUseCase;
import tify.server.api.user.service.UpdateUserFavorUseCase;
import tify.server.api.user.service.UpdateUserProfileUseCase;
import tify.server.api.user.service.UserBlockUseCase;
import tify.server.api.user.service.UserFavorFilterUseCase;
import tify.server.api.user.service.UserFavorUseCase;
import tify.server.api.user.service.UserInfoUseCase;
import tify.server.api.user.service.UserOnBoardingUseCase;
import tify.server.domain.domains.question.domain.DailyQuestionCategory;
import tify.server.domain.domains.user.domain.SmallCategory;
import tify.server.domain.domains.user.dto.condition.UserCondition;
Expand Down
15 changes: 15 additions & 0 deletions Api/src/main/java/tify/server/api/user/model/dto/UserFavorDto.java
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;
}
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;
}
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();
}
}
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);
}
}

0 comments on commit af2069d

Please sign in to comment.