diff --git a/src/main/generated/com/kusitms/jipbap/order/QOrder.java b/src/main/generated/com/kusitms/jipbap/order/QOrder.java index acc9234..e866c00 100644 --- a/src/main/generated/com/kusitms/jipbap/order/QOrder.java +++ b/src/main/generated/com/kusitms/jipbap/order/QOrder.java @@ -33,6 +33,12 @@ public class QOrder extends EntityPathBase { public final NumberPath orderCount = createNumber("orderCount", Long.class); + public final NumberPath regionId = createNumber("regionId", Long.class); + + public final EnumPath status = createEnum("status", OrderStatus.class); + + public final NumberPath totalPrice = createNumber("totalPrice", Long.class); + //inherited public final DateTimePath updatedAt = _super.updatedAt; diff --git a/src/main/generated/com/kusitms/jipbap/store/QStore.java b/src/main/generated/com/kusitms/jipbap/store/QStore.java index 537f971..68e26c2 100644 --- a/src/main/generated/com/kusitms/jipbap/store/QStore.java +++ b/src/main/generated/com/kusitms/jipbap/store/QStore.java @@ -33,10 +33,16 @@ public class QStore extends EntityPathBase { public final StringPath description = createString("description"); + public final com.kusitms.jipbap.user.entity.QGlobalRegion globalRegion; + public final NumberPath id = createNumber("id", Long.class); public final StringPath image = createString("image"); + public final StringPath image2 = createString("image2"); + + public final StringPath image3 = createString("image3"); + public final BooleanPath koreanYn = createBoolean("koreanYn"); public final NumberPath minOrderAmount = createNumber("minOrderAmount", Long.class); @@ -70,6 +76,7 @@ public QStore(PathMetadata metadata, PathInits inits) { public QStore(Class type, PathMetadata metadata, PathInits inits) { super(type, metadata, inits); + this.globalRegion = inits.isInitialized("globalRegion") ? new com.kusitms.jipbap.user.entity.QGlobalRegion(forProperty("globalRegion")) : null; this.owner = inits.isInitialized("owner") ? new com.kusitms.jipbap.user.QUser(forProperty("owner"), inits.get("owner")) : null; } diff --git a/src/main/java/com/kusitms/jipbap/common/utils/S3Utils.java b/src/main/java/com/kusitms/jipbap/common/utils/S3Utils.java index 19cce7e..367dab3 100644 --- a/src/main/java/com/kusitms/jipbap/common/utils/S3Utils.java +++ b/src/main/java/com/kusitms/jipbap/common/utils/S3Utils.java @@ -11,7 +11,7 @@ public class S3Utils { // originalFilename에 Random UUID 붙여서 같은 파일명 덮어쓰기 방지 public static String saveFile(AmazonS3 amazonS3, String bucket, MultipartFile multipartFile) throws IOException { - String originalFilename = multipartFile.getOriginalFilename() + UUID.randomUUID(); + String originalFilename = multipartFile.getOriginalFilename() + "_" + UUID.randomUUID(); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentLength(multipartFile.getSize()); diff --git a/src/main/java/com/kusitms/jipbap/store/Store.java b/src/main/java/com/kusitms/jipbap/store/Store.java index 80fd58b..b9607ca 100644 --- a/src/main/java/com/kusitms/jipbap/store/Store.java +++ b/src/main/java/com/kusitms/jipbap/store/Store.java @@ -47,6 +47,8 @@ public class Store extends DateEntity { private Double avgRate; // 가게 평점 private Long minOrderAmount; //최소 주문 금액 private String image; + private String image2; + private String image3; private Long reviewCount; // 가게 후기 개수 private Long bookmarkCount; // 가게 즐겨찾기 횟수 (추천순) diff --git a/src/main/java/com/kusitms/jipbap/store/StoreController.java b/src/main/java/com/kusitms/jipbap/store/StoreController.java index 6d39211..4b7d415 100644 --- a/src/main/java/com/kusitms/jipbap/store/StoreController.java +++ b/src/main/java/com/kusitms/jipbap/store/StoreController.java @@ -38,7 +38,7 @@ public class StoreController { public CommonResponse registerStore( @Auth AuthInfo authInfo, @RequestPart(value = "dto") RegisterStoreRequestDto dto, - @RequestPart(value = "image", required = false) MultipartFile image + @RequestPart(value = "image", required = false) List image ){ return new CommonResponse<>(storeService.registerStore(authInfo.getEmail(), dto, image)); } diff --git a/src/main/java/com/kusitms/jipbap/store/StoreRepositoryExtensionImpl.java b/src/main/java/com/kusitms/jipbap/store/StoreRepositoryExtensionImpl.java index 5ba09b9..427439d 100644 --- a/src/main/java/com/kusitms/jipbap/store/StoreRepositoryExtensionImpl.java +++ b/src/main/java/com/kusitms/jipbap/store/StoreRepositoryExtensionImpl.java @@ -43,6 +43,10 @@ public Slice searchByKeywordOrderBySort(User user, Pagea List dtoList = new ArrayList<>(); for(Store s: storeList) { + String[] strArr = new String[3]; + strArr[0] = s.getImage(); + strArr[1] = s.getImage2(); + strArr[2] = s.getImage3(); dtoList.add(new StoreDetailResponseDto( new StoreDto( s.getId(), @@ -51,7 +55,7 @@ public Slice searchByKeywordOrderBySort(User user, Pagea s.getKoreanYn(), s.getAvgRate(), s.getMinOrderAmount(), - s.getImage() + strArr ), isUserBookmarkedStore(user, s) )); @@ -77,8 +81,8 @@ private Boolean isUserBookmarkedStore(User user, Store store) { private BooleanExpression lastStore(Pageable pageable, List> specifiers, Long id) { if(id==null) return null; - Store stdStore = queryFactory.selectFrom(QStore.store) - .where(QStore.store.id.eq(id)) + Store stdStore = queryFactory.selectFrom(store) + .where(store.id.eq(id)) .fetchFirst(); for (Sort.Order order : pageable.getSort()) { diff --git a/src/main/java/com/kusitms/jipbap/store/StoreService.java b/src/main/java/com/kusitms/jipbap/store/StoreService.java index 1c65d5e..3d65afb 100644 --- a/src/main/java/com/kusitms/jipbap/store/StoreService.java +++ b/src/main/java/com/kusitms/jipbap/store/StoreService.java @@ -45,27 +45,52 @@ public class StoreService { private String bucket; @Transactional - public StoreDto registerStore(String email, RegisterStoreRequestDto dto, MultipartFile image) { + public StoreDto registerStore(String email, RegisterStoreRequestDto dto, List image) { User user = userRepository.findByEmail(email).orElseThrow(()-> new UserNotFoundException("유저 정보가 존재하지 않습니다.")); - String imageUri = null; + String[] imageUri = new String[3]; if(storeRepository.existsByOwner(user)) { throw new StoreExistsException("이미 가게를 생성한 유저입니다."); } //이미지가 null이 아닌 경우 s3 업로드 - if(image!=null) { - try { - imageUri = S3Utils.saveFile(amazonS3, bucket, image); - } catch (IOException e) { - throw new S3RegisterFailureException("가게 이미지 저장 중 오류가 발생했습니다."); + for(int i=0; i<3; i++) { + if(image.get(i)!=null) { + try { + imageUri[i] = S3Utils.saveFile(amazonS3, bucket, image.get(i)); + } catch (IOException e) { + throw new S3RegisterFailureException("가게 이미지 저장 중 오류가 발생했습니다."); + } } } Store store = storeRepository.save( - new Store(null, user, user.getGlobalRegion(), dto.getName(), dto.getDescription(), dto.getKoreanYn(), 0D, dto.getMinOrderAmount(),null, 0L, 0L, 0L) + Store.builder() + .id(null) + .owner(user) + .globalRegion(user.getGlobalRegion()) + .name(dto.getName()) + .description(dto.getDescription()) + .koreanYn(dto.getKoreanYn()) + .avgRate(0D) + .minOrderAmount(dto.getMinOrderAmount()) + .image(imageUri[0]) + .image2(imageUri[1]) + .image3(imageUri[2]) + .reviewCount(0L) + .bookmarkCount(0L) + .rateCount(0L) + .build() ); - return new StoreDto(store.getId(), store.getName(), store.getDescription(), store.getKoreanYn(), store.getAvgRate(), store.getBookmarkCount(), store.getImage()); + return new StoreDto( + store.getId(), + store.getName(), + store.getDescription(), + store.getKoreanYn(), + store.getAvgRate(), + store.getBookmarkCount(), + imageUri + ); } @Transactional @@ -82,6 +107,7 @@ public StoreDetailResponseDto getStoreDetail(String email, Long storeId) { User user = userRepository.findByEmail(email).orElseThrow(()-> new UserNotFoundException("유저 정보가 존재하지 않습니다.")); Store store = storeRepository.findById(storeId).orElseThrow(()-> new StoreNotExistsException("storeId: "+storeId+"에 해당하는 가게가 존재하지 않습니다.")); + return new StoreDetailResponseDto( new StoreDto( store.getId(), @@ -90,7 +116,7 @@ public StoreDetailResponseDto getStoreDetail(String email, Long storeId) { store.getKoreanYn(), store.getAvgRate(), store.getMinOrderAmount(), - store.getImage() + new String[]{store.getImage(), store.getImage2(), store.getImage3()} ), isStoreBookmarked(user, store) ); @@ -111,7 +137,7 @@ public StoreDto bookmarkStore(String email, Long storeId) { store.getKoreanYn(), store.getAvgRate(), store.getMinOrderAmount(), - store.getImage() + new String[]{store.getImage(), store.getImage2(), store.getImage3()} ); } @@ -122,6 +148,7 @@ public BookmarkedStoreListResponseDto findBookmarkedStore(String email) { List storeBookmarks = storeBookmarkRepository.findByUser(user); List sbList = new ArrayList<>(); + for (StoreBookmark sb : storeBookmarks) { sbList.add(new StoreDto( sb.getId(), @@ -130,7 +157,7 @@ public BookmarkedStoreListResponseDto findBookmarkedStore(String email) { sb.getStore().getKoreanYn(), sb.getStore().getAvgRate(), sb.getStore().getMinOrderAmount(), - sb.getStore().getImage() + new String[]{sb.getStore().getImage(), sb.getStore().getImage2(), sb.getStore().getImage3()} ) ); } diff --git a/src/main/java/com/kusitms/jipbap/store/dto/StoreDto.java b/src/main/java/com/kusitms/jipbap/store/dto/StoreDto.java index 7fc9249..41eda57 100644 --- a/src/main/java/com/kusitms/jipbap/store/dto/StoreDto.java +++ b/src/main/java/com/kusitms/jipbap/store/dto/StoreDto.java @@ -17,5 +17,5 @@ public class StoreDto { private Boolean koreanYn; private Double avgRate; // 가게 평점 private Long minOrderAmount; //최소 주문 금액 - private String image; + private String[] images; }