Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.ch.yourdelivery.external;

import com.ch.yourdelivery.store.domain.dto.StoreResponse;
import com.ch.yourdelivery.store.domain.model.Menu;
import java.util.List;

public interface StoreClient {

List<StoreResponse> findStoresByCategory(String category, int page, int size);

List<Menu> findMenusByStoreId(String storeId, int page, int size);
}
Original file line number Diff line number Diff line change
@@ -1,63 +1,67 @@
package com.ch.yourdelivery.external;

import com.ch.yourdelivery.external.util.MenuRandomSampleData;
import com.ch.yourdelivery.external.util.StoreRandomSampleData;
import com.ch.yourdelivery.store.domain.dto.StoreResponse;
import com.ch.yourdelivery.store.domain.model.DeliveryLocation;
import com.ch.yourdelivery.store.domain.model.Menu;
import com.ch.yourdelivery.store.domain.model.OperatingTimeInMonth;
import com.ch.yourdelivery.store.service.StoreClient;
import com.ch.yourdelivery.external.util.StoreRandomSampleData;
import jakarta.annotation.PostConstruct;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.UUID;
import java.util.stream.Collectors;
import org.springframework.stereotype.Service;

@Service
public class StoreClientImpl implements StoreClient {

public static final String CHICKEN = "치킨";

private List<StoreResponse> storeResponseList = new ArrayList<>();
private List<OperatingTimeInMonth> operatingTimeInMonthList = new ArrayList<>();
private List<DeliveryLocation> deliveryLocationList = new ArrayList<>();
private static final Random random = new Random();
private static final List<StoreResponse> list = new ArrayList<>();

@PostConstruct
public void init(){
operatingTimeInMonthList.add(StoreRandomSampleData.generateOperatingTimeInMonth());
operatingTimeInMonthList.add(StoreRandomSampleData.generateOperatingTimeInMonth());
public void init() {
for (int i = 0; i < random.nextInt(100, 1000); i++) {
StoreResponse storeResponse = StoreResponse.builder()
.id(random.nextLong())
.ownerId(random.nextLong())
.name(UUID.randomUUID().toString())
.operatingTimeList(StoreRandomSampleData.generateOperatingTimeInMonthList(3))
.phoneNumber(UUID.randomUUID().toString())
.deliveryLocation(StoreRandomSampleData.generateDeliveryLocationList(3))
.descriptionForNotification(UUID.randomUUID().toString())
.storeLocationXY(StoreRandomSampleData.generateStoreLocationXY())
.menus(MenuRandomSampleData.generateRandomMenus(5))
.category(StoreRandomSampleData.generateCategory())
.build();

deliveryLocationList.add(StoreRandomSampleData.generateDeliveryLocation());
deliveryLocationList.add(StoreRandomSampleData.generateDeliveryLocation());
list.add(storeResponse);
}
}

@Override
public List<StoreResponse> findStoresByCategory(String category, int page, int size) {
int start = size * (page - 1);
int end = size * page;

for (int i = 0; i < Math.random() * 10; i++) {
String storeName = StoreRandomSampleData.generateStoreName();
List storesByCategories = list.stream().filter(
storeResponse ->
storeResponse.getCategory().getName().equals(category))
.collect(Collectors.toList());

StoreResponse storeResponse = StoreResponse.builder()
.id(StoreRandomSampleData.generateRandomId())
.ownerId(StoreRandomSampleData.generateOwnerIndex())
.name(storeName)
.operatingTimeList(operatingTimeInMonthList)
.phoneNumber(StoreRandomSampleData.generatePhoneNumber())
.deliveryLocation(deliveryLocationList)
.descriptionForNotification(StoreRandomSampleData.generateDescription())
.storeLocationXY(StoreRandomSampleData.generateStoreLocationXY())
.menus(MenuRandomSampleData.generateRandomMenus(5))
.build();

storeResponseList.add(storeResponse);
//end의 사이즈가 끝을 지나는 경우는 마지막 페이지를 리턴(Validation 역할도 함)
if (storesByCategories.size() < end) {
start = (storesByCategories.size() / size) * size;
end = start + storesByCategories.size() % size;
return storesByCategories.subList(start, end);
} else {
return storesByCategories.subList(start, end);
}
}

@Override
public List<StoreResponse> findAllStores() {
//size 5
//page 3
// 11 = size * (page-1) + 1
// 15 = size * page
//validation 해야함...
//return storeResponseList.subList(size * (page-1) + 1, size * page);
return storeResponseList;
public List<Menu> findMenusByStoreId(String storeId, int page, int size) {
return null;
}


}
Original file line number Diff line number Diff line change
@@ -1,32 +1,31 @@
package com.ch.yourdelivery.external;
package com.ch.yourdelivery.external.util;

import com.ch.yourdelivery.store.domain.model.Menu;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Random;
import java.util.UUID;
import java.util.stream.IntStream;


public class MenuRandomSampleData {

private static final Random random = new Random();

public static Menu generateRandomMenu() {

return Menu.builder()
.id(random.nextLong())
.name(UUID.randomUUID().toString())
.price(random.nextInt()%10000)
.reviewScore(random.nextInt()%5)
.deliveryTip(random.nextInt()%5000)
.build();
.id(random.nextLong())
.name(UUID.randomUUID().toString())
.price(random.nextInt() % 10000)
.reviewScore(random.nextInt() % 5)
.deliveryTip(random.nextInt() % 5000)
.build();
}


public static List<Menu> generateRandomMenus(Integer count) {
return IntStream.range(0, count)
.mapToObj(i -> generateRandomMenu())
.toList();
.mapToObj(i -> generateRandomMenu())
.toList();
}
}
Original file line number Diff line number Diff line change
@@ -1,73 +1,58 @@
package com.ch.yourdelivery.external.util;

import com.ch.yourdelivery.store.domain.model.Category;
import com.ch.yourdelivery.store.domain.model.DeliveryLocation;
import com.ch.yourdelivery.store.domain.model.OperatingTimeInMonth;
import com.ch.yourdelivery.store.domain.model.StoreLocationXY;
import java.util.List;
import java.util.Random;
import java.util.UUID;
import java.util.stream.IntStream;

public class StoreRandomSampleData {

//Sample Data
private static final String DESCRIPTION = "리뷰 이벤트 중입니다. 캔 음료 1캔 증정";
private static final String NUMBER_010 = "010";
private static final String WEEKS_DAYS = "Weekdays";
private static final String STORE_POST_FIX = "호점";
private static final String[] START_TIMES = {"08:00:00", "09:00:00", "10:00:00"};
private static final String[] END_TIMES = {"21:00:00", "22:00:00", "23:00:00"};
private static final String[] DONG_NAMES = {" 대치동", " 논현동", " 개포동", " 도곡동", " 삼성동"};
private static final String[] GIL_NAMES = {" 선릉로", " 역삼로", " 교대로", " 서초로", " 테헤란로"};
private static final String[] STORE_NAMES = {"치킨은요리다", "바베큐치킨", "라면떡볶이", "맛있는떡볶이", "김밥라라"};
private static final String PAST_ADDRESS_PREFIX = "서울특별시 강남구";
private static final String[] categories = {"치킨", "일식", "중식", "한식", "양식", "초밥"};
private static final Random random = new Random();

public static StoreLocationXY generateStoreLocationXY() {
return StoreLocationXY.builder()
.mapX(Double.toString(Math.random()))
.mapY(Double.toString(Math.random()))
.mapX(Double.toString(random.nextDouble()))
.mapY(Double.toString(random.nextDouble()))
.build();
}

public static String generateDescription() {
return DESCRIPTION;
}

public static String generatePhoneNumber() {
return NUMBER_010 + (int) ((Math.random() * 10000) + 1) + (int) ((Math.random() * 10000)
+ 1);
}

public static Long generateOwnerIndex() {
return (long) (Math.random() * 100) + 1L;
}

public static String generateStoreName() {
return STORE_NAMES[(int) (Math.random() * 5)] + generateRandomId() + STORE_POST_FIX;
private static OperatingTimeInMonth generateOperatingTimeInMonth() {
return OperatingTimeInMonth.builder()
.dayOfTheWeek(UUID.randomUUID().toString())
.startTime(Integer.toString(random.nextInt(8, 11)))
.endTime(Integer.toString(random.nextInt(19, 23)))
.build();
}

public static long generateRandomId() {
return (long) (Math.random() * 100) + 1L;
public static List<OperatingTimeInMonth> generateOperatingTimeInMonthList(int count) {
return IntStream.range(0, count)
.mapToObj(i -> generateOperatingTimeInMonth())
.toList();
}

public static OperatingTimeInMonth generateOperatingTimeInMonth() {
return OperatingTimeInMonth.builder()
.dayOfTheWeek(WEEKS_DAYS)
.startTime(START_TIMES[(int) (Math.random() * 3)])//HH:mm:ss
.endTime(END_TIMES[(int) (Math.random() * 3)])
public static DeliveryLocation generateDeliveryLocation() {
return DeliveryLocation.builder()
.name(UUID.randomUUID().toString())
.pastAddress(UUID.randomUUID().toString())
.roadNameAddress(UUID.randomUUID().toString())
.build();
}

public static List<DeliveryLocation> generateDeliveryLocationList(int count) {
return IntStream.range(0, count)
.mapToObj(i -> generateDeliveryLocation())
.toList();
}

public static DeliveryLocation generateDeliveryLocation() {
String dongName = DONG_NAMES[(int) (Math.random() * 5)];
return DeliveryLocation.builder()
.name(DONG_NAMES[(int) (Math.random() * 5)])
.pastAddress(
PAST_ADDRESS_PREFIX
+ dongName
+ (int) (Math.random() * 100))
.roadNameAddress(
PAST_ADDRESS_PREFIX
+ dongName
+ GIL_NAMES[(int) (Math.random() * 5)]
)
public static Category generateCategory() {
return Category.builder()
.id(random.nextInt(6))
.name(categories[random.nextInt(6)])
.build();
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package com.ch.yourdelivery.store.controller;

import com.ch.yourdelivery.store.domain.dto.StoreResponse;
import com.ch.yourdelivery.store.domain.model.Menu;
import com.ch.yourdelivery.store.service.StoreService;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
Expand All @@ -15,8 +19,17 @@ public class StoreController {

//가게정보 다건조회
@GetMapping("/stores")
public List<StoreResponse> findStores(@RequestParam String category, Pageable pageable) {
return storeService.findAllStores();
public List<StoreResponse> findStoresByCategory(@RequestParam String category,
Pageable pageable) {
return storeService.findStoresByCategory(category, pageable.getPageNumber(),
pageable.getPageSize());
}

//가게정보 다건조회
@GetMapping("/stores/{storeId}/menus")
public List<Menu> findMenusByStoreId(@PathVariable String storeId, Pageable pageable) {
return storeService.findMenusByStoreId(storeId, pageable.getPageNumber(),
pageable.getPageSize());
}

}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
import com.ch.yourdelivery.store.domain.model.DeliveryLocation;
import com.ch.yourdelivery.store.domain.model.Menu;
import com.ch.yourdelivery.store.domain.model.OperatingTimeInMonth;
import com.ch.yourdelivery.store.domain.model.Category;
import com.ch.yourdelivery.store.domain.model.StoreLocationXY;
import java.util.List;
import lombok.Builder;
import lombok.Getter;

import java.util.List;

@Getter
@Builder
public class StoreResponse {
Expand All @@ -22,5 +22,6 @@ public class StoreResponse {
private String descriptionForNotification; //이벤트나, 공지사항등의 설명란
private StoreLocationXY storeLocationXY; //가게 위치
private List<Menu> menus;
private Category category;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.ch.yourdelivery.store.domain.model;

import lombok.Builder;
import lombok.Getter;

@Getter
@Builder
public class Category {

private long id; // 카테고리 id
private String name; // 카테고리 이름

}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.ch.yourdelivery.store.service;

import com.ch.yourdelivery.external.StoreClient;
import com.ch.yourdelivery.store.domain.dto.StoreResponse;
import com.ch.yourdelivery.store.domain.model.Menu;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

Expand All @@ -12,8 +14,11 @@ public class StoreService {

private final StoreClient storeClient;

public List<StoreResponse> findAllStores() {
return storeClient.findAllStores();
public List<StoreResponse> findStoresByCategory(String category, int page, int size) {
return storeClient.findStoresByCategory(category, page, size);
}

public List<Menu> findMenusByStoreId(String storeId, int page, int size) {
return storeClient.findMenusByStoreId(storeId, page, size);
}
}