Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Team-16][iOS] 메뉴 목록 CollectionView 구현 #28

Merged
merged 21 commits into from Apr 20, 2022

Conversation

sanghyeok-kim
Copy link

@sanghyeok-kim sanghyeok-kim commented Apr 20, 2022

안녕하세요 Lena!
2주 동안 리뷰를 받게 된 @P-SeoB 과 Mase입니다!!!
이번 주는 View를 중점적으로 구현하려 해서,
Image를 병렬적으로 처리하는 부분에 대해서는 아직 제대로 구현하지 못 한 상태입니다.
(이미지 URL 객체 생성시 강제추출!을 사용한 점.. 미리 양해 부탁드립니다. 향후 리팩토링 할 예정입니다!)
2주 동안 잘 부탁드리겠습니다!🙏

실행 화면

CleanShot 2022-04-20 at 16 59 18

CleanShot 2022-04-20 at 16 58 48@2x

Feature

  • URLSession을 이용한 NetworkManager 구현
  • 서버로부터 Data를 받아와 뷰에 형식에 맞게 출력
    • 각 메뉴 정보를 Item으로 나타내는 CollectionView 구현
    • CustomHeader 구현
    • CustomCollectionViewDataSource 구현
    • CustomCollectionViewDelegate 구현

Todo

  • DetailView 구현
  • Image파일을 병렬처리와 Caching을 이용해서 받아오도록 변경
  • HeaderView 터치시 Section의 Item 개수 출력하는 뷰 구현
    (현재 MockView로 애니메이션 없이 출력)
  • 메인반찬/국물요리/밑반찬 3개의 Section을 모두 출력하도록 변경
    (현재 메인반찬으로만 3가지 Section을 모두 출력)

고민 및 질문

CollectionView에서 Cell을 선택했을 때,
해당 Cell에 대한 정보를 OrderingVC에게 넘겨주는 로직을 구현하는데
이 과정에서 CollectioViewDelegate의 책임과 역할이 어디까지인가에 대한 고민입니다.

  1. CustomCollectionViewDelegate가 delegate를 통해 OrderingVC에게
    Selected Item의 IndexPath값만을 넘겨줄 것인지,
  2. 아니면 IndexPath를 통해 Menu 객체까지 직접 만들어서 Menu 객체를 넘겨줄 것인지를 고민했습니다.

현재는 2번 방식으로 선택해서 구현한 상태입니다. 이 부분에 대한 Lena의 의견을 듣고싶습니다.

P_SeoB and others added 21 commits April 18, 2022 11:58
content
- JSON파싱을 위한 구조체(SideDishInfo) 설정
- NetworkManger클래스 생성 및 request 메서드 구현
- EndPoint관련 타입 생성
수고 많으셨습니다~!^^*&@!
Contents
- OrderingView StackView 통해 Badge 존재 여부에 따라 중앙 정렬되도록 구현
- CustomCell 생성 및 Mock Cell 구현

Todo
- Mock 이미지가 아닌 서버에서 받아온 이미지를 출력하도록 변경
Contents
- Custom CollectionView Header 생성
- HeaderView gesture 추가

Todo
- HeaderView Delegate 추가
- Dynamic HeaderView Height 구현
Contents
- DataSource에게 제공될 함수 구현
- 가격 할인 Label, 특가 Label 상세 구현

Todo
- title, backgroundColor값 Constant로 변경
- Font Bold로 바꿔야 할 것들 Bold로 변경
[feat][#1] CollectionView Header
[Feat][#1] Cell에 그려질 OrderingView에 대한 함수 구현, 뷰 상세 구현
Contents
- NotificationCenter를 이용한 DataFecth작업 Noti
- CollectionView Fetch한 데이터를 이용 reload

Todo
- Autolayout 이슈
Contents
- Cell을 reload할때 마다 View가 중복으로 추가되던  버그 수정
- BadgeStackView 사이즈 버그 수정
- image 출력 버그 수정

Todo
- image Caching, 비동기 처리
Fetch 받아온 뒤 뷰에 정상적으로 출력되지 않는 문제 해결하기
Contents
- Scheme Editor에서 environment variable에 OS_ACTIVITY_MODE-disable 추가
Contents
- Custom CollectionView Delegate 생성, 구현
- CollectionView DataSource로 부터 Menu정보 가져오기

Todo
- 제품 상세설명 View구현
Content
- BadgeType 열거형 제거
- Providing Function 함수 정리
Content
- DetailDishInfo 구조체 구현
- MenuDetail 구조체 구현
- NetworkManager를 통한 get 요청 구현

Todo
- get 받아온 DetailDishInfo 데이터를 DetailView에 출력
@piggyse piggyse requested a review from dev-Lena April 20, 2022 08:02
@piggyse piggyse added the review-iOS Extra attention is needed label Apr 20, 2022
Comment on lines +178 to +191

types.forEach { type in
switch type {
case "런칭특가":
let badge = UILabel.makeBadge(title: "런칭특가", backgroundColor: launchingBadgeBackgrounColor)
badgeStackView.addArrangedSubview(badge)
case "이벤트특가":
let badge = UILabel.makeBadge(title: "이벤트특가", backgroundColor: eventBadgeBackgroundColor)
badgeStackView.addArrangedSubview(badge)
default:
let badge = UILabel.makeBadge(title: type, backgroundColor: defaultBadgeBackgroundColor)
badgeStackView.addArrangedSubview(badge)
}
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

type을 String값으로 하드코딩하지 않으려고 했는데, 서버에서 오는 값에 의존해서 뱃지를 보여주어야 한다는 사항이 있었습니다.
Enum값 등으로 저희가 타입을 만들게 되면 서버에서 오는 값을 그대로 처리하기에는 무리가 있다고 판단이 들어
JSON을 파싱한 값 그대로를 title에 대입하여 Badge를 만드는 방향으로 처리를 해보았습니다.
특히, BackgroundColor는 몇개의 badge가 들어올지 모르기 때문에 색상의 통일성을 위해,
첫 두개의 Badge빼고는 같은 색상으로 두었습니다.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아하 그런 점을 고민하셨었군요!
한 가지 궁금한게 혹시 HTTPMethod enum처럼 enum을 이용할 수는 없을까요??👀

Copy link

@dev-Lena dev-Lena left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P-SeoB 과 Mase 반가워요! 😆
이번 PR 처럼 질문과 고민한 점과 더불어 피드백 받고 싶은 부분을 Description이나 코드 블럭지정 후 코멘트로 달아주시면 리뷰하는데에 도움이 될 것 같아요! 앞으로 잘부탁드리겠습니다 🙌🏻

ㅎㅎㅎ 혹시 현업에 계셨다가 오셨나요? 전체적으로 은닉화며 final 선언, extension 활용이나 메서드 분리, enum 사용, 제네릭 사용이나 에러 처리, 네트워킹 등등 군더더기 없이 깔끔하게 잘하셨네요! 👍🏻 👍🏻
진행속도가 빠르고 잘 하셔서 property wrapperasync/await 등 추가적으로 하면 좋을 것 같은 부분 욕심내서 코멘트 남겨봤습니다 ☺️
+ 추가로 구현은 어느정도 속도를 내셨으니 구조/설계에 대해서도 고민해보시고 공유해주세요 :)

질문 주신 부분에 대한 의견이나 몇 가지 코멘트/질문 남겼는데 PR이 병합되더라도 질문 및 답변 달아주세요!


// handling DecodingError
do {
let deleteCase: Any = "DELETE"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"DELETE"라면 위에 있는 enum HTTPMethod 에 descriptioin을 사용하면 되지 않을까요???👀

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

앗, DELETE도 description으로 넣으면 되겠네요. 수정 완료 했습니다!

}

private func layoutMenuInfoStackView() {
menuInfoStackView.translatesAutoresizingMaskIntoConstraints = false

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

translatesAutoresizingMaskIntoConstraints 설정하는 코드는 property wrapper를 이용해서 전체적으로 반복 작업을 줄이도록 만들 수 있을 것 같아요! ☺️

Comment on lines +134 to +142
func setDishImage(by imageName: String) {
let url = URL(string: imageName)
DispatchQueue.global().async {
guard let data = try? Data(contentsOf: url!) else { return }
DispatchQueue.main.async {
self.dishImageView.image = UIImage(data: data)
}
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이번 미션 요구사항에는 없지만 이 부분은 Swift5.5에 추가된 async/await을 도입해보는 건 어떤가요?
진행 속도가 빠르셔서 부분적으로라도 새로 추가된 Swift 비동기 문법을 도입해보면 좋을 것 같아요 🙌🏻
async/await에 대해서는 Swift Language Guide - Concurrency를 참고해보세요!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

위의 property wrapper와 더불어 이 부분은 아직 곧바로 적용시키기에는
아직 저희가 공부해야할 내용이 많이 필요해 보여서.. 차근차근 시도해 보겠습니다 🧐

Comment on lines +13 to +15
private let launchingBadgeBackgrounColor = UIColor(red: 0.0, green: 102/255, blue: 214/255, alpha: 1.0)
private let eventBadgeBackgroundColor = UIColor(red: 128/255, green: 188/255, blue: 255/255, alpha: 1.0)
private let defaultBadgeBackgroundColor = UIColor(red: 0.0, green: 122/255, blue: 1.0, alpha: 1.0)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분은 UIColor를 extention에서 메서드로 구현할 수 있을 것 같아요!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UIColor를 Extension해서 Custom UIColor들을 따로 분리시켜보았습니다. 좋은 의견 감사합니다 😄


private lazy var cellView = UIView()

private lazy var dishImageView: UIImageView = {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

전반적으로 view를 lazy 로 생성하는 이유가 있을까요??👀

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

뷰가 로드되는 시점에 값을 초기화 할 수 있도록 하면
성능적으로 더 효율적이지 않을까 하는 생각에 lazy로 선언하게되었습니다.
특히 이미지처럼 메모리 공간을 많이 차지할 수 있는 프로퍼티의 경우
이 부분이 더 중요하다고 생각했습니다.

descriptionLabel.text = text
}

func setMenuPrice(nPrice: String?, sPrice: String?) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nPrice, sPrice은 네이밍을 개선할 수 있을 것 같아요 ~

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

originPrice, discountedPrice로 개선해보았습니다!

private lazy var sectionCountLabel: UILabel = {
let label: UILabel = UILabel()
label.font = .systemFont(ofSize: fontSize / 2)
label.text = "밥 밥바밥바밥바밥 밥밥~"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🍚 🍙🍚🍚🍙🍚🍙🍚 🍚🍚


import UIKit

final class OrderingCollectionViewDataSource: NSObject, UICollectionViewDataSource {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

전체적으로 상속이 필요없는 부분의 final 선언까지 디테일 좋네요 👍🏻

Comment on lines +10 to +23
final class OrderingCollectionViewDelegate: NSObject, UICollectionViewDelegate {

weak var delegate: CollectionViewSelectionDetectable?

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
guard let dataSource = collectionView.dataSource as? OrderingCollectionViewDataSource else { return }
let selectedItem = dataSource.getSelectedItem(at: indexPath.item)
delegate?.didSelectItem(item: selectedItem)
}
}

protocol CollectionViewSelectionDetectable: AnyObject {
func didSelectItem(item: Menu)
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고민 및 질문

CollectionView에서 Cell을 선택했을 때, 해당 Cell에 대한 정보를 OrderingVC에게 넘겨주는 로직을 구현하는데 이 과정에서 CollectioViewDelegate의 책임과 역할이 어디까지인가에 대한 고민입니다. CustomCollectionViewDelegate가 delegate를 통해 OrderingVC에게 Selected Item의 IndexPath값만을 넘겨줄 것인지, 아니면 IndexPath를 통해 Menu 객체까지 직접 만들어서 Menu 객체를 넘겨줄 것인지를 고민했습니다. 현재는 2번 방식으로 선택해서 구현한 상태입니다. 이 부분에 대한 Lena의 의견을 듣고싶습니다.

물론 상황과 구조, 설계에 따라서 다르겠지만 이번 경우에는 굳이 Delegate가 DataSource를 알고 있을 필요가 있을까 싶습니다. 특히 CollectionViewSelectionDetectable를 채택하고 있는 OrderingViewController 에 이미 OrderingCollectionViewDataSource를 가지고 있어서 더욱 이곳에서는 불필요해 보여요. 👀

Delegation in Swift 이 글에

Delegation is usually a good choice when a type needs to be usable in many different contexts, and when it has a clear owner in all of those contexts
// 파파고's 번역
위임은 일반적으로 여러 가지 상황에서 유형을 사용할 수 있어야하고 모든 상황에서 명확한 소유자가 있는 경우 좋은 선택입니다

이런 부분이 나옵니다. 저도 이에 동의합니다. 그래서 Delegate를 채택한 곳에서 구체적인 구현이 들어가니 Delegate는 유연하고 가벼운게 좋다고 생각해요! 😃

이건 개인적인 의견이긴 합니다. P-SeoBMase의 이유와 목적이 있다면 지금 현재의 방식대로 가는 것도 좋습니다. P-SeoBMase는 두 가지 방법 중에 2번을 선택하신 이유가 뭔가요?? 🤓

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

첨부해주신 레퍼런스를 읽어보니 Delegate가 굳이 이 상황에서 DataSource까지 알고있을 필요는 없다고 생각이 듭니다.
Delegate는 IndexPath값만 넘겨주고 그 이상의 작업은 VC에서 하는걸로 수정하였습니다. 🙂

Comment on lines +178 to +191

types.forEach { type in
switch type {
case "런칭특가":
let badge = UILabel.makeBadge(title: "런칭특가", backgroundColor: launchingBadgeBackgrounColor)
badgeStackView.addArrangedSubview(badge)
case "이벤트특가":
let badge = UILabel.makeBadge(title: "이벤트특가", backgroundColor: eventBadgeBackgroundColor)
badgeStackView.addArrangedSubview(badge)
default:
let badge = UILabel.makeBadge(title: type, backgroundColor: defaultBadgeBackgroundColor)
badgeStackView.addArrangedSubview(badge)
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아하 그런 점을 고민하셨었군요!
한 가지 궁금한게 혹시 HTTPMethod enum처럼 enum을 이용할 수는 없을까요??👀

@dev-Lena dev-Lena merged commit 9d9b81f into codesquad-members-2022:team-16 Apr 20, 2022
@sanghyeok-kim
Copy link
Author

아하 그런 점을 고민하셨었군요!
한 가지 궁금한게 혹시 HTTPMethod enum처럼 enum을 이용할 수는 없을까요??👀

enum은 사용하는 값의 종류가 명확하게 정해져 있을 때 사용한다고 생각을 하는데
Badge값의 경우 서버에서 어떤 값이 올지 알 수 없기 때문에 enum을 사용하기 어렵다고 판단했습니다 😭

Dae-Hwa pushed a commit that referenced this pull request Apr 22, 2022
bibi6666667 pushed a commit that referenced this pull request Apr 26, 2022
[puco] DetailView Model - View 연결 구현
wooody92 pushed a commit that referenced this pull request Apr 27, 2022
[BE] 1주차 금요일 PR 코멘트 반영
kowoohyuk pushed a commit that referenced this pull request Apr 27, 2022
* Design: Navbar, Menu, Icons 컴포넌트 레이아웃 수정 - #10

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: Navbar 마우스 이벤트 추가 - #10

* MouseEnter, MouseLeave 이벤트 추가
* SubMenuhover 효과 추가

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Design: Global Style 에 font-family 적용 - #15

* theme의 font family 삭제

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Rename: Header 컴포넌트 폴더 생성해서 그룹화 - #15

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Design: 기획전 TitleBox, TabBar UI 구현 - #15

* Tab Mouse hover 밑줄 효과 구현

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Fix: 기획전 Tab hover 시 사용성 개선 - #15

* 기존 border 속성을 box-shadow 로 변경

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Feat: API fetch 요청하는 util 함수 구현 - #15

* GET 요청만 우선적으로 구현

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Design: CardContainer를 Styled Components로 구현 - #15

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Design: Card Component UI 구현 -  #15

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: fetch로 API 요청, Card 동적 생성 - #15

* 임시 데이터로 UI 먼저 구현

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: Tab 클릭 시 fetch 요청 후 리렌더링 기능 구현 - #16

* fetch 요청 로직을 fetchTabData 함수로 분리
* 하드 코딩 부분은 추후 리팩토링 예정

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Refactor: .gitignore 불필요한 옵션 제거 - #17

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Refactor: Navbar의 div 태그 header로 변경 - #17

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Refactor: menu와 tabData 데이터 분리 후 동적생성 - #18

* 하드코딩 되었던 컴포넌트를 data 분리 후 map 으로 동적 생성

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Rename: Card 컴포넌트 이름 오타 수정

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Build: jsconfig.json 파일에 baseUrl src로 설정

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Rename: Header, Special 컴포넌트를 components 폴더로 이동

* 파일 경로 일부 절대 경로로 수정
* App.js에서 className 삭제

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Refactor: checkError로 네이밍 수정, 상태코드 200만 고려 - #26

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Refactor: isSelected에서 삼항 연산자 제거 -#26

* SpecialTab 컴포넌트에서 불필요하게 사용한 삼항 연산자 개선

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: Card 컴포넌트에 medium, small 사이즈 추가 - #28

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: 카드에 마우스 hover시 '새벽배송/전국택배' 내용 노출 - #29

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Design: 슬라이더 좌우 화살표 svg 파일 추가 - #30

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Design: fontSize 에 display 속성 추가 - #30

* 기존 xLarge 값을 display로 수정
* xLarge 를 적용했던 SpecialTitle 수정

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Design: Slider UI 구현 완료 - #30

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Fix: 카드 hover 효과의 배송 정보 버그 수정 - #32

* Fix: 헤더 네비게이션 바 Open/Close 이벤트 버그 수정 - #39

* Feat: Slider의 좌우 화살표 버튼 활성화 상태 제어 - #31

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Feat: Slider 좌우 화살표 클릭 시 새로운 메뉴 카드 표시 기능 구현 - #31

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Fix: Slider 좌우 화살표 클릭 버그 해결 - #31

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Refactor: Slider 화살표 상태 체크 함수 로직 개선 - #31

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Refactor: api url을 constants 폴더에 옮김

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: Slider에 좌우 화살표 클릭 시 애니메이션 추가 - #31

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Refactor: handleArrowClick 함수 로직 분리 - #31

* checkArrowActive : 화살표 활성화 체크
* calcNewStartIndex : 시작 인덱스 계산 함수

* Design: public 경로에 favicon.ico 파일 추가

* Feat: '모든 카테고리 보기' 버튼 UI & 기능 구현 - #33

* categoryTitle 데이터 추가하여 카테고리 제목 동적으로 생성

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Fix: Card 컴포넌트 hover 효과 버그 수정 - #43

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>
Co-authored-by: Hemudi <ksum1205@naver.com>
Co-authored-by: Millie <jaypedia@users.noreply.github.com>
hanurii pushed a commit that referenced this pull request Apr 28, 2022
* chore: Prettier 설정

* refactor: Header에 StyledComponent Naming 적용 및 구조 리팩토링 (#30)

- 네이밍 적용(S)
- 컴포넌트 구조 리팩토링
- 헤더 로고 리로드 로직 리팩토링

* refactor: 카테고리에서 슬라이더 분리 (#28)

* refactor: Styled Component 네이밍 변경 (#28)

* refactor: 카드 사이즈 상수로 분리, Slide 구조 변경 (#28)

* feat: 카드 사이즈에 따라 Slide 크기 변경, 페이지네이션 추가 (#28)

* feat: 슬라이드 버튼 구현 (#28)

- 슬라이드 관련 상수 추가 (마진, 슬라이드 개수)
- 버튼 누르면 현재 페이지 변경

* feat: 슬라이드 기능 구현 (#28)

- 현재 페이지에 따라 이동할 translate 값, 카드가 나눠 떨어지지 않는 경우에 추가로 이동해야 할 값 계산
- 현재 페이지가 바뀔 때마다 translate 값 변경

* feat: 모달 구현 (#35)

 - Protal을 사용해 모달 렌더링
 - 유저가 썸네일 이미지를 선택하면 메인 이미지가 변경된다.
 - 이미지 목록 중 유저가 선택한 이미지로 메인 이미지가 변경된다.
 - 메인 이미지로 보여지고 있는 이미지에는 테두리를 표시한다.
 - 주문 수량은 1 이상으로만 선택할 수 있다.
 - 주문 수량에 따라 상품금액, 배송비, 주문금액이 계산되어 표시된다.
 - 상품이 품절인 경우 ‘품절’ 버튼으로 나타낸다.

* feat: 연관 상품 슬라이더 추가 (#35)

- 카드 사이즈에 따라 카테고리 스타일 변경
- 모달에 SMALL 사이즈로 카테고리 렌더링

* refactor: 사용하는 상수 변수를 파일로 분리 (#35)

* feat: 기획전 탭 기능 구현 (#29)

- 유저가 현재 클릭한 탭은 밑줄이 표시된다.
- 이미 활성화된 탭을 클릭하면 동작하지 않는다.
- 임시로 data/exhibition.js의 목데이터를 활용

* feat: Alert 모달 구현 (#42)

* feat: Alert 모달과 Product 모달의 공통 부분 분리 (#42)

- Background를 Portal로 분리

Co-authored-by: Sangbeom Heo <mansaout@gmail.com>
wheejuni pushed a commit that referenced this pull request Apr 28, 2022
* (#27)feat: ImageRepository 구현

- Entity 생성자 및 Getter 추가

* (#28)feat: ProductDeliveryRepository 구현

- Entity 생성자, Getter 추가
eve712 pushed a commit that referenced this pull request Apr 28, 2022
* Chore: 초기개발환경

Chore: CRA 초기구성

Chore: eslint 구성

Chore: prettier 구성

* Style: App.js -> jsx 수정

* [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

* Feat: 프로젝트 초기 세팅

ref: #8

* [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

* [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

* Docs: 프로젝트 및 팀원 소개(readme.md)

* Chore: Issues, PR templates 추가

ref: #1

Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

* Docs: 팀원 수정

- 팀원 한 마디 추가

* Chore: 초기개발환경

Chore: CRA 초기구성

Chore: eslint 구성

Chore: prettier 구성

* Style: App.js -> jsx 수정

Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

Co-authored-by: Louie <dhdustnr0134@naver.com>
Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Co-authored-by: Jwu <sju02048@naver.com>
Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

* [FE] MealContainer 레이아웃 작성 (#16)

* Chore: vscode debugger .gitingore에추가

* Chore: axios 라이브러리 추가

* Feat: MealContainer

- MealHeader
- Carousel -> MealCard여러개

* Refactor: useMemo 삭제

* Chore: TODO 주석 작성

- 컴포넌트 분리
- stlye 코드 분리
- status 코드

* [FE] BestMealContainer 레이아웃 작성 (#18)

* Chore: Prettier useTabs true로 수정

* Chore: axios 라이브러리 추가

* Feat: BestMealContainer 기본 레이아웃

Co-authored-by: YUNHO <kimyouknow@naver.com>

* [FE] components단위로 파일 분리 (#20)

* Refactor: App.jsx에서 BestMealContainer import수정

* Refactor: MealContainer에서 Loader와 MealCard 분리

* Chore: components 폴더 관리

* [FE] 페어 리팩토링 (#21)

* Refactor: mockServerURL .env파일에서 관리

- constant폴더에서 관리

* Feat: setDefaultImage()함수 추가

- 인자로 image url을 받아서 false면 default이미지로 반환

* Chore: 폴더경로 상대경로에서 절대경로로 변경

- jsconfig.json파일 설정

* [FE] team-03브랜치에서 dev-FE로 최신화

commit a773a14
Merge: 2bc424b 1276077
Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Date:   Sun Apr 24 22:54:48 2022 +0900

    Merge pull request #59 from Louie-03/dev-BE

    [Team-03][BE][루이&쿠킴] - 특정 음식 타입 조회 기능

commit 2bc424b
Author: Jwu <sju02048@naver.com>
Date:   Sun Apr 24 17:06:36 2022 +0900

    [team-03][FE][쥬&도리] 1주차 두 번째 PR: 컴포넌트 단위 설계 (#66)

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    * [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

    * Feat: 프로젝트 초기 세팅

    ref: #8

    * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: Jwu <sju02048@naver.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] MealContainer 레이아웃 작성 (#16)

    * Chore: vscode debugger .gitingore에추가

    * Chore: axios 라이브러리 추가

    * Feat: MealContainer

    - MealHeader
    - Carousel -> MealCard여러개

    * Refactor: useMemo 삭제

    * Chore: TODO 주석 작성

    - 컴포넌트 분리
    - stlye 코드 분리
    - status 코드

    * [FE] BestMealContainer 레이아웃 작성 (#18)

    * Chore: Prettier useTabs true로 수정

    * Chore: axios 라이브러리 추가

    * Feat: BestMealContainer 기본 레이아웃

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE] components단위로 파일 분리 (#20)

    * Refactor: App.jsx에서 BestMealContainer import수정

    * Refactor: MealContainer에서 Loader와 MealCard 분리

    * Chore: components 폴더 관리

    * [FE] 페어 리팩토링 (#21)

    * Refactor: mockServerURL .env파일에서 관리

    - constant폴더에서 관리

    * Feat: setDefaultImage()함수 추가

    - 인자로 image url을 받아서 false면 default이미지로 반환

    * Chore: 폴더경로 상대경로에서 절대경로로 변경

    - jsconfig.json파일 설정

    Co-authored-by: YUNHO <kimyouknow@naver.com>
    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

commit 1276077
Merge: e8eca13 68b6e96
Author: Louie <dhdustnr0134@naver.com>
Date:   Fri Apr 22 11:03:53 2022 +0900

    Merge pull request #22 from Louie-03/BE-feature-GET_api_products_meal_type

    [BE] 특정 음식 타입 조회 기능

commit 68b6e96
Author: Louie <dhdustnr0134@naver.com>
Date:   Fri Apr 22 10:39:03 2022 +0900

    Fix: DiscountPolicy NPE 문제 해결

    - DiscountPolicy가 존재하지 않는 상품의 인수 테스트 추가

    Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

commit 5335f2e
Author: Louie <dhdustnr0134@naver.com>
Date:   Fri Apr 22 10:37:09 2022 +0900

    Refactor: 계산 로직의 책임을 Product에서 DiscountPolicy로 위임

    - 기존 Product의 계산 로직을 DiscountPolicy의 calculateFixedPrice 메서드로 옮겼다.

    Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

commit 1e27697
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 17:47:25 2022 +0900

    Feat: meal type으로 음식 조회가 되지 않는 경우 조회 실패 구현(404 NOT FOUND)

commit db93682
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 17:27:13 2022 +0900

    Fix: Product 객체 fixedPrice 계산 로직 수정

    - 기존 연산 괄호 실수 -> 올바르게 변경
    - 테스트 코드 추가

commit 3b74382
Author: Louie <dhdustnr0134@naver.com>
Date:   Thu Apr 21 16:53:35 2022 +0900

    Refactor: Entity와 Domain 객체 분리

    - Entity를 Domain 객체로 변경해주는 DomainEntityMapper 구현
    - 변경된 코드에 따른 테스트 코드 수정

    Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

commit ca34b5a
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 15:17:09 2022 +0900

    Feat: 특정 Products의 meal type 조회 기능의 리포지토리 구현

    - 테스트 작성

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

commit 06cebb6
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 15:15:29 2022 +0900

    Feat: product, product_image, discount_policy 테이블 DDL과 더미데이터 생성, 테스트 환경 구분

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

commit feb2909
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 09:32:59 2022 +0900

    Refactor: Product <-> Response Dto 변환 위치를 컨트롤러에서 서비스로 변경

commit fc57090
Author: Jwu <sju02048@naver.com>
Date:   Wed Apr 20 21:07:11 2022 +0900

    [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

commit 4f385a1
Merge: a002511 e8eca13
Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Date:   Wed Apr 20 18:29:42 2022 +0900

    Merge pull request #20 from Louie-03/dev-BE

    [Team-03][BE] 쿠킴 & 루이 - 데이터베이스 설계, Mock API Server, 배포 아키텍처, 프로젝트 세팅

commit f4c13a4
Author: “kukim” <kukim.dev@gmail.com>
Date:   Wed Apr 20 17:32:01 2022 +0900

    Feat: 특정 Products의 meal type 조회 기능의 서비스 구현

    - 테스트 작성

commit 8e691b4
Author: “kukim” <kukim.dev@gmail.com>
Date:   Wed Apr 20 17:03:56 2022 +0900

    Feat: 특정 Products의 meal type 조회 기능의 컨트롤러 구현

    - API : GET /api/products?meal={value}
    - 컨트롤러 테스트 구현
    - 서비스 계층은 Mock 처리
    - Product 도메인 객체 생성
    - ProductsDtoMapper 객체 생성 : Product 도메인 <-> ProductsMealTypeResponse 변환

commit b9873d0
Author: “kukim” <kukim.dev@gmail.com>
Date:   Wed Apr 20 15:57:24 2022 +0900

    Test: 특정 Products의 meal type 조회 기능 테스트코드만 작성

    - 인수 테스트 작성

commit e8eca13
Author: Louie <dhdustnr0134@naver.com>
Date:   Wed Apr 20 14:24:31 2022 +0900

    Feat: 프로젝트 초기 세팅

    ref: #8

Co-Authored-By: YUNHO <kimyouknow@naver.com>
Co-Authored-By: Louie <dhdustnr0134@naver.com>
Co-Authored-By: kukim <57086195+ku-kim@users.noreply.github.com>

* [FE] Styled Component Best Header 부분 (#25)

* Feat: 프로젝트 초기 세팅

ref: #8

* [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

* [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

* Docs: 프로젝트 및 팀원 소개(readme.md)

* Chore: Issues, PR templates 추가

ref: #1

Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

* Docs: 팀원 수정

- 팀원 한 마디 추가

* Chore: 초기개발환경

Chore: CRA 초기구성

Chore: eslint 구성

Chore: prettier 구성

* Style: App.js -> jsx 수정

Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

* Chore: env 추가

* Style: SVG 아이콘 추가

* Feat: theme 추가

* Style: 폰트 추가

* Style: 파일 이름 변경

* Design: BestMeal 헤더&네비게이션

Co-authored-by: Louie <dhdustnr0134@naver.com>
Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

* [FE] PR 반영 및 styledCSS 수정 (#28)

- 두 번째 PR 반영
- 코드 스타일 리팩토링
ref: #26

Co-authored-by: YUNHO <kimyouknow@naver.com>

* [FE] 일반 Meal 컴포넌트 UI 구현 (#39)

* Design: Meal Card

styles.js 분리

* Design: 카드에 hover시 택배서비스 표시

* Design: MealConatiner  헤더 및 레이아웃

* Design: 캐러셀 컨테이너

- svg추가

* Chore: Card컨테이너에서 hover할 때 보여지는 배송정보 코드 상 위치 변경

- 컴포넌트 하단으로 빼기

* Build: mock servser url 환경변수로 관리

.env파일에서 관리하던 url을 각 로컬에서 관리하기

* Refactor: mock sever 403에러 일때 constant에 있는 mock데이터 사용

* Design: theme 세부속성 분해할당해서 접근

이전: theme -> theme.color
이후: theme: {color} -> color

* Refactor: mealCard hover 속성 js변수에서 css로 제어

* Chore: 주석 정리

* [FE] Best 컴포넌트 구현 (#40)

* Feat: 금액 toLocalString로 구분

* Feat: mock api -> mock data로 수정

- postman api 호출횟수 초과해서 로컬로 값 보내는 걸로 수정

* Design: Best 컴포넌트 추가

Co-authored-by: YUNHO <kimyouknow@naver.com>

* [FE]  캐러셀 디자인, getCarouselDesign() (#48)

* Design: App에서 Main 컴포넌트 분리

* Desgin: 캐러셀 디자인, getCarouselDesign()

- getCarouselDesign: 이미지 사이즈, 이미지 개수에 따라 동적으로 UI 결정

* [FE] GNB Design 구현 (#49)

* Style: 오타 수정

* Design: 글로벌스타일 button poiner 추가

* Design: Header Component 추가

- 헤더에 hover 시 레이아웃 나타나는 디자인
- 글씨, 아이콘 hover 디자인
- 전체적인 헤더 UI 디자인

* [FE] BestMealCard 컴포넌트와 MealCard 컴포넌트 통합 (#50)

* Refactor: BestMeal Container mock데이터 분리 및 탭 변수 수정

    - MOCK_DATA_JS -> MOCK_BEST_MEAT: 변수명 변경 및 contant로 이동
    - BEST_SUBTITLE -> BEST_TAB_TYPE: 변수명 변경 및 api
    Params추가
    - Tabs컴포넌트 BestMeals컴포넌트처럼 양식 통일

* Refactor: BestMealCard를 MealCard컴포넌트와 통일

- MealCard를 받을 때 이미지 사이즈 넘겨받기

* Feat: BestMeal에서 findTargetTab()함수

선택한 탭의 id를 인자로 받고 apiParams를 반환함.

* Chore: Main위치 src/components -> src/pages

* Chore: 메인 레이아웃

헤더 mainWidth설정

* Chore: 함수 선언식 -> arrow function

* Design 캐러셀 양 옆 svg 스타일 수정

- border 없애기
- 크기 키움

* Fix: Main 경로 오타 수정

* Refactor: 호버창 컴포넌트 단위로 분리

* Refactor: state값 이용하지 않고 hover로 수정

* Design: 컴포넌트 간 간격 수정

* [FE] 컴포넌트 리팩토링 (#51)

Refactor: 호버창 컴포넌트 단위로 분리

Refactor: state값 이용하지 않고 hover로 수정

Design: 컴포넌트 간 간격 수정

* Chore: 오타수정

* Chore: 충돌해결하면서 지우지 못한 폴더 삭제

- constant
- util

* Chore: reset.css 삭제

* [FE} 캐러셀 컴포넌트 구현 (#58)

* Chore: mock server에서 실제서버url로 변경

* Feat: Carousel  구현

* Feat: Carousel 재사용성 고려해서 children을 밖에서 선언

* [FE] Custom Axios 작성 및 데이터 fetch 기능 (#59)

* Style: API 변수이름 수정

* Fix: price 오타 수정

* Delete: PR 충돌 오류로 삭제

* Style: 여백 오타 수정

* Feat: useAxios 추가

* Design: 더보기 버튼

* Feat: 카테고리 더보기

* Design: 버튼 가운데 정렬

* Feat: 카테고리 추가 렌더링

버그 고쳐야함

* Feat: 추가 데이터 버튼 감추기

Co-authored-by: yunho <kimyouknow@naver.com>
Co-authored-by: Jwu <sju02048@naver.com>

Co-authored-by: YUNHO <kimyouknow@naver.com>
Co-authored-by: Louie <dhdustnr0134@naver.com>
Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
BumgeunSong pushed a commit that referenced this pull request May 1, 2022
BumgeunSong pushed a commit that referenced this pull request May 1, 2022
BumgeunSong pushed a commit that referenced this pull request May 1, 2022
BumgeunSong pushed a commit that referenced this pull request May 1, 2022
kowoohyuk pushed a commit that referenced this pull request May 1, 2022
* Design: Navbar, Menu, Icons 컴포넌트 레이아웃 수정 - #10

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: Navbar 마우스 이벤트 추가 - #10

* MouseEnter, MouseLeave 이벤트 추가
* SubMenuhover 효과 추가

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Design: Global Style 에 font-family 적용 - #15

* theme의 font family 삭제

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Rename: Header 컴포넌트 폴더 생성해서 그룹화 - #15

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Design: 기획전 TitleBox, TabBar UI 구현 - #15

* Tab Mouse hover 밑줄 효과 구현

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Fix: 기획전 Tab hover 시 사용성 개선 - #15

* 기존 border 속성을 box-shadow 로 변경

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Feat: API fetch 요청하는 util 함수 구현 - #15

* GET 요청만 우선적으로 구현

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Design: CardContainer를 Styled Components로 구현 - #15

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Design: Card Component UI 구현 -  #15

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: fetch로 API 요청, Card 동적 생성 - #15

* 임시 데이터로 UI 먼저 구현

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: Tab 클릭 시 fetch 요청 후 리렌더링 기능 구현 - #16

* fetch 요청 로직을 fetchTabData 함수로 분리
* 하드 코딩 부분은 추후 리팩토링 예정

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Refactor: .gitignore 불필요한 옵션 제거 - #17

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Refactor: Navbar의 div 태그 header로 변경 - #17

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Refactor: menu와 tabData 데이터 분리 후 동적생성 - #18

* 하드코딩 되었던 컴포넌트를 data 분리 후 map 으로 동적 생성

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Rename: Card 컴포넌트 이름 오타 수정

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Build: jsconfig.json 파일에 baseUrl src로 설정

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Rename: Header, Special 컴포넌트를 components 폴더로 이동

* 파일 경로 일부 절대 경로로 수정
* App.js에서 className 삭제

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Refactor: checkError로 네이밍 수정, 상태코드 200만 고려 - #26

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Refactor: isSelected에서 삼항 연산자 제거 -#26

* SpecialTab 컴포넌트에서 불필요하게 사용한 삼항 연산자 개선

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: Card 컴포넌트에 medium, small 사이즈 추가 - #28

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: 카드에 마우스 hover시 '새벽배송/전국택배' 내용 노출 - #29

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Design: 슬라이더 좌우 화살표 svg 파일 추가 - #30

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Design: fontSize 에 display 속성 추가 - #30

* 기존 xLarge 값을 display로 수정
* xLarge 를 적용했던 SpecialTitle 수정

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Design: Slider UI 구현 완료 - #30

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Fix: 카드 hover 효과의 배송 정보 버그 수정 - #32

* Fix: 헤더 네비게이션 바 Open/Close 이벤트 버그 수정 - #39

* Feat: Slider의 좌우 화살표 버튼 활성화 상태 제어 - #31

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Feat: Slider 좌우 화살표 클릭 시 새로운 메뉴 카드 표시 기능 구현 - #31

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Fix: Slider 좌우 화살표 클릭 버그 해결 - #31

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Refactor: Slider 화살표 상태 체크 함수 로직 개선 - #31

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Refactor: api url을 constants 폴더에 옮김

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: Slider에 좌우 화살표 클릭 시 애니메이션 추가 - #31

Co-authored-by: Millie <jaypedia@users.noreply.github.com>

* Refactor: handleArrowClick 함수 로직 분리 - #31

* checkArrowActive : 화살표 활성화 체크
* calcNewStartIndex : 시작 인덱스 계산 함수

* Design: public 경로에 favicon.ico 파일 추가

* Feat: '모든 카테고리 보기' 버튼 UI & 기능 구현 - #33

* categoryTitle 데이터 추가하여 카테고리 제목 동적으로 생성

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Fix: Card 컴포넌트 hover 효과 버그 수정 - #43

* Fix: Header의 네비게이션 바 마우스 이벤트 수정 - #44

* 메뉴 부분에만 마우스오버 되었을 시 펼쳐지도록 수정

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Refactor: URL을 파일로 분리

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: 기획전 Tab 기능 구현 - #16

* URL 마지막 슬래시(/) 제거
* specialTab 데이터 인덱스 수정

Co-authored-by: Hemdi <hemudi@users.noreply.github.com>

* Refactor: Card 컴포넌트에서 Badge 컴포넌트 분리 - #45

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: json-server를 이용한 Mock server 구현

Co-authored-by: Hemdi <hemudi@users.noreply.github.com>

* Refactor: 할인율, 뱃지 이름 constants 폴더로 분리

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Refactor: Thumbnail 컴포넌트 분리

* Card 컴포넌트 내부에 있던 Thumbnail 컴포넌트를 분리

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Refactor: Slider 재사용 가능한 컴포넌트로 리팩토링

* API를 반영해 categoryTitle의 id 수정

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: 로그인 기능 구현 시도

* react-router-dom 활용하여 App 컴포넌트를 재구성

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: 상세 페이지 모달 UI & 기능 구현 - #45

* react-dom의 createPortal 함수를 활용하여 모달 구현

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Feat: 상세페이지 주문 버튼 모달 구현 - #45

* Feat: 카드 클릭 시 상세 페이지 모달 팝업 기능 구현 - #45

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Design: MainWrapper에 margin-bottom 추가

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

* Refactor: 기획전 컴포넌트의 API URL 수정

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>

Co-authored-by: Hemudi <hemudi@users.noreply.github.com>
Co-authored-by: Hemudi <ksum1205@naver.com>
Co-authored-by: Millie <jaypedia@users.noreply.github.com>
Co-authored-by: Hemdi <34249911+hemudi@users.noreply.github.com>
Zimins pushed a commit that referenced this pull request May 1, 2022
eve712 pushed a commit that referenced this pull request May 2, 2022
* Chore: 초기개발환경

Chore: CRA 초기구성

Chore: eslint 구성

Chore: prettier 구성

* Style: App.js -> jsx 수정

* [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

* Feat: 프로젝트 초기 세팅

ref: #8

* [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

* [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

* Docs: 프로젝트 및 팀원 소개(readme.md)

* Chore: Issues, PR templates 추가

ref: #1

Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

* Docs: 팀원 수정

- 팀원 한 마디 추가

* Chore: 초기개발환경

Chore: CRA 초기구성

Chore: eslint 구성

Chore: prettier 구성

* Style: App.js -> jsx 수정

Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

Co-authored-by: Louie <dhdustnr0134@naver.com>
Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Co-authored-by: Jwu <sju02048@naver.com>
Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

* [FE] MealContainer 레이아웃 작성 (#16)

* Chore: vscode debugger .gitingore에추가

* Chore: axios 라이브러리 추가

* Feat: MealContainer

- MealHeader
- Carousel -> MealCard여러개

* Refactor: useMemo 삭제

* Chore: TODO 주석 작성

- 컴포넌트 분리
- stlye 코드 분리
- status 코드

* [FE] BestMealContainer 레이아웃 작성 (#18)

* Chore: Prettier useTabs true로 수정

* Chore: axios 라이브러리 추가

* Feat: BestMealContainer 기본 레이아웃

Co-authored-by: YUNHO <kimyouknow@naver.com>

* [FE] components단위로 파일 분리 (#20)

* Refactor: App.jsx에서 BestMealContainer import수정

* Refactor: MealContainer에서 Loader와 MealCard 분리

* Chore: components 폴더 관리

* [FE] 페어 리팩토링 (#21)

* Refactor: mockServerURL .env파일에서 관리

- constant폴더에서 관리

* Feat: setDefaultImage()함수 추가

- 인자로 image url을 받아서 false면 default이미지로 반환

* Chore: 폴더경로 상대경로에서 절대경로로 변경

- jsconfig.json파일 설정

* [FE] team-03브랜치에서 dev-FE로 최신화

commit a773a14
Merge: 2bc424b 1276077
Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Date:   Sun Apr 24 22:54:48 2022 +0900

    Merge pull request #59 from Louie-03/dev-BE

    [Team-03][BE][루이&쿠킴] - 특정 음식 타입 조회 기능

commit 2bc424b
Author: Jwu <sju02048@naver.com>
Date:   Sun Apr 24 17:06:36 2022 +0900

    [team-03][FE][쥬&도리] 1주차 두 번째 PR: 컴포넌트 단위 설계 (#66)

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    * [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

    * Feat: 프로젝트 초기 세팅

    ref: #8

    * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: Jwu <sju02048@naver.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] MealContainer 레이아웃 작성 (#16)

    * Chore: vscode debugger .gitingore에추가

    * Chore: axios 라이브러리 추가

    * Feat: MealContainer

    - MealHeader
    - Carousel -> MealCard여러개

    * Refactor: useMemo 삭제

    * Chore: TODO 주석 작성

    - 컴포넌트 분리
    - stlye 코드 분리
    - status 코드

    * [FE] BestMealContainer 레이아웃 작성 (#18)

    * Chore: Prettier useTabs true로 수정

    * Chore: axios 라이브러리 추가

    * Feat: BestMealContainer 기본 레이아웃

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE] components단위로 파일 분리 (#20)

    * Refactor: App.jsx에서 BestMealContainer import수정

    * Refactor: MealContainer에서 Loader와 MealCard 분리

    * Chore: components 폴더 관리

    * [FE] 페어 리팩토링 (#21)

    * Refactor: mockServerURL .env파일에서 관리

    - constant폴더에서 관리

    * Feat: setDefaultImage()함수 추가

    - 인자로 image url을 받아서 false면 default이미지로 반환

    * Chore: 폴더경로 상대경로에서 절대경로로 변경

    - jsconfig.json파일 설정

    Co-authored-by: YUNHO <kimyouknow@naver.com>
    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

commit 1276077
Merge: e8eca13 68b6e96
Author: Louie <dhdustnr0134@naver.com>
Date:   Fri Apr 22 11:03:53 2022 +0900

    Merge pull request #22 from Louie-03/BE-feature-GET_api_products_meal_type

    [BE] 특정 음식 타입 조회 기능

commit 68b6e96
Author: Louie <dhdustnr0134@naver.com>
Date:   Fri Apr 22 10:39:03 2022 +0900

    Fix: DiscountPolicy NPE 문제 해결

    - DiscountPolicy가 존재하지 않는 상품의 인수 테스트 추가

    Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

commit 5335f2e
Author: Louie <dhdustnr0134@naver.com>
Date:   Fri Apr 22 10:37:09 2022 +0900

    Refactor: 계산 로직의 책임을 Product에서 DiscountPolicy로 위임

    - 기존 Product의 계산 로직을 DiscountPolicy의 calculateFixedPrice 메서드로 옮겼다.

    Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

commit 1e27697
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 17:47:25 2022 +0900

    Feat: meal type으로 음식 조회가 되지 않는 경우 조회 실패 구현(404 NOT FOUND)

commit db93682
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 17:27:13 2022 +0900

    Fix: Product 객체 fixedPrice 계산 로직 수정

    - 기존 연산 괄호 실수 -> 올바르게 변경
    - 테스트 코드 추가

commit 3b74382
Author: Louie <dhdustnr0134@naver.com>
Date:   Thu Apr 21 16:53:35 2022 +0900

    Refactor: Entity와 Domain 객체 분리

    - Entity를 Domain 객체로 변경해주는 DomainEntityMapper 구현
    - 변경된 코드에 따른 테스트 코드 수정

    Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

commit ca34b5a
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 15:17:09 2022 +0900

    Feat: 특정 Products의 meal type 조회 기능의 리포지토리 구현

    - 테스트 작성

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

commit 06cebb6
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 15:15:29 2022 +0900

    Feat: product, product_image, discount_policy 테이블 DDL과 더미데이터 생성, 테스트 환경 구분

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

commit feb2909
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 21 09:32:59 2022 +0900

    Refactor: Product <-> Response Dto 변환 위치를 컨트롤러에서 서비스로 변경

commit fc57090
Author: Jwu <sju02048@naver.com>
Date:   Wed Apr 20 21:07:11 2022 +0900

    [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

commit 4f385a1
Merge: a002511 e8eca13
Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Date:   Wed Apr 20 18:29:42 2022 +0900

    Merge pull request #20 from Louie-03/dev-BE

    [Team-03][BE] 쿠킴 & 루이 - 데이터베이스 설계, Mock API Server, 배포 아키텍처, 프로젝트 세팅

commit f4c13a4
Author: “kukim” <kukim.dev@gmail.com>
Date:   Wed Apr 20 17:32:01 2022 +0900

    Feat: 특정 Products의 meal type 조회 기능의 서비스 구현

    - 테스트 작성

commit 8e691b4
Author: “kukim” <kukim.dev@gmail.com>
Date:   Wed Apr 20 17:03:56 2022 +0900

    Feat: 특정 Products의 meal type 조회 기능의 컨트롤러 구현

    - API : GET /api/products?meal={value}
    - 컨트롤러 테스트 구현
    - 서비스 계층은 Mock 처리
    - Product 도메인 객체 생성
    - ProductsDtoMapper 객체 생성 : Product 도메인 <-> ProductsMealTypeResponse 변환

commit b9873d0
Author: “kukim” <kukim.dev@gmail.com>
Date:   Wed Apr 20 15:57:24 2022 +0900

    Test: 특정 Products의 meal type 조회 기능 테스트코드만 작성

    - 인수 테스트 작성

commit e8eca13
Author: Louie <dhdustnr0134@naver.com>
Date:   Wed Apr 20 14:24:31 2022 +0900

    Feat: 프로젝트 초기 세팅

    ref: #8

Co-Authored-By: YUNHO <kimyouknow@naver.com>
Co-Authored-By: Louie <dhdustnr0134@naver.com>
Co-Authored-By: kukim <57086195+ku-kim@users.noreply.github.com>

* [FE] Styled Component Best Header 부분 (#25)

* Feat: 프로젝트 초기 세팅

ref: #8

* [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

* [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

* Docs: 프로젝트 및 팀원 소개(readme.md)

* Chore: Issues, PR templates 추가

ref: #1

Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

* Docs: 팀원 수정

- 팀원 한 마디 추가

* Chore: 초기개발환경

Chore: CRA 초기구성

Chore: eslint 구성

Chore: prettier 구성

* Style: App.js -> jsx 수정

Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

* Chore: env 추가

* Style: SVG 아이콘 추가

* Feat: theme 추가

* Style: 폰트 추가

* Style: 파일 이름 변경

* Design: BestMeal 헤더&네비게이션

Co-authored-by: Louie <dhdustnr0134@naver.com>
Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

* [FE] PR 반영 및 styledCSS 수정 (#28)

- 두 번째 PR 반영
- 코드 스타일 리팩토링
ref: #26

Co-authored-by: YUNHO <kimyouknow@naver.com>

* [FE] 일반 Meal 컴포넌트 UI 구현 (#39)

* Design: Meal Card

styles.js 분리

* Design: 카드에 hover시 택배서비스 표시

* Design: MealConatiner  헤더 및 레이아웃

* Design: 캐러셀 컨테이너

- svg추가

* Chore: Card컨테이너에서 hover할 때 보여지는 배송정보 코드 상 위치 변경

- 컴포넌트 하단으로 빼기

* Build: mock servser url 환경변수로 관리

.env파일에서 관리하던 url을 각 로컬에서 관리하기

* Refactor: mock sever 403에러 일때 constant에 있는 mock데이터 사용

* Design: theme 세부속성 분해할당해서 접근

이전: theme -> theme.color
이후: theme: {color} -> color

* Refactor: mealCard hover 속성 js변수에서 css로 제어

* Chore: 주석 정리

* [FE] Best 컴포넌트 구현 (#40)

* Feat: 금액 toLocalString로 구분

* Feat: mock api -> mock data로 수정

- postman api 호출횟수 초과해서 로컬로 값 보내는 걸로 수정

* Design: Best 컴포넌트 추가

Co-authored-by: YUNHO <kimyouknow@naver.com>

* [FE]  캐러셀 디자인, getCarouselDesign() (#48)

* Design: App에서 Main 컴포넌트 분리

* Desgin: 캐러셀 디자인, getCarouselDesign()

- getCarouselDesign: 이미지 사이즈, 이미지 개수에 따라 동적으로 UI 결정

* [FE] GNB Design 구현 (#49)

* Style: 오타 수정

* Design: 글로벌스타일 button poiner 추가

* Design: Header Component 추가

- 헤더에 hover 시 레이아웃 나타나는 디자인
- 글씨, 아이콘 hover 디자인
- 전체적인 헤더 UI 디자인

* [FE] BestMealCard 컴포넌트와 MealCard 컴포넌트 통합 (#50)

* Refactor: BestMeal Container mock데이터 분리 및 탭 변수 수정

    - MOCK_DATA_JS -> MOCK_BEST_MEAT: 변수명 변경 및 contant로 이동
    - BEST_SUBTITLE -> BEST_TAB_TYPE: 변수명 변경 및 api
    Params추가
    - Tabs컴포넌트 BestMeals컴포넌트처럼 양식 통일

* Refactor: BestMealCard를 MealCard컴포넌트와 통일

- MealCard를 받을 때 이미지 사이즈 넘겨받기

* Feat: BestMeal에서 findTargetTab()함수

선택한 탭의 id를 인자로 받고 apiParams를 반환함.

* Chore: Main위치 src/components -> src/pages

* Chore: 메인 레이아웃

헤더 mainWidth설정

* Chore: 함수 선언식 -> arrow function

* Design 캐러셀 양 옆 svg 스타일 수정

- border 없애기
- 크기 키움

* Fix: Main 경로 오타 수정

* Refactor: 호버창 컴포넌트 단위로 분리

* Refactor: state값 이용하지 않고 hover로 수정

* Design: 컴포넌트 간 간격 수정

* [FE] 컴포넌트 리팩토링 (#51)

Refactor: 호버창 컴포넌트 단위로 분리

Refactor: state값 이용하지 않고 hover로 수정

Design: 컴포넌트 간 간격 수정

* Chore: 오타수정

* Chore: 충돌해결하면서 지우지 못한 폴더 삭제

- constant
- util

* Chore: reset.css 삭제

* [FE} 캐러셀 컴포넌트 구현 (#58)

* Chore: mock server에서 실제서버url로 변경

* Feat: Carousel  구현

* Feat: Carousel 재사용성 고려해서 children을 밖에서 선언

* [FE] Custom Axios 작성 및 데이터 fetch 기능 (#59)

* Style: API 변수이름 수정

* Fix: price 오타 수정

* Delete: PR 충돌 오류로 삭제

* Style: 여백 오타 수정

* Feat: useAxios 추가

* Design: 더보기 버튼

* Feat: 카테고리 더보기

* Design: 버튼 가운데 정렬

* Feat: 카테고리 추가 렌더링

버그 고쳐야함

* Feat: 추가 데이터 버튼 감추기

Co-authored-by: yunho <kimyouknow@naver.com>
Co-authored-by: Jwu <sju02048@naver.com>

* [FE] team-03브랜치에서 dev-FE로 최신화

* [FE] Deatil 페이지 및 OAuth 테스트용 뷰 추가 (#63)

* Design: CSS 스타일 변경

* Refactor: 유틸함수 따로 관리

* Feat: 세부정보(detail) 페이지

* Refactor: useAxios response state 수정

* Design: OAuth 테스트용 추가

* Squashed commit of the following:

commit 274e734
Merge: 43ee842 3bc6667
Author: sju02048 <sju02048@naver.com>
Date:   Fri Apr 29 12:10:31 2022 +0900

    Merge branch 'team-03' of https://github.com/Louie-03/sidedish into team-03

commit 3bc6667
Author: Jwu <sju02048@naver.com>
Date:   Fri Apr 29 11:40:04 2022 +0900

    Revert "[FE] Deatil 페이지 및 OAuth 테스트용 뷰 추가 (#61)" (#62)

    This reverts commit 2baf578.

commit 2baf578
Author: Jwu <sju02048@naver.com>
Date:   Fri Apr 29 11:38:13 2022 +0900

    [FE] Deatil 페이지 및 OAuth 테스트용 뷰 추가 (#61)

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    * [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

    * Feat: 프로젝트 초기 세팅

    ref: #8

    * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: Jwu <sju02048@naver.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] MealContainer 레이아웃 작성 (#16)

    * Chore: vscode debugger .gitingore에추가

    * Chore: axios 라이브러리 추가

    * Feat: MealContainer

    - MealHeader
    - Carousel -> MealCard여러개

    * Refactor: useMemo 삭제

    * Chore: TODO 주석 작성

    - 컴포넌트 분리
    - stlye 코드 분리
    - status 코드

    * [FE] BestMealContainer 레이아웃 작성 (#18)

    * Chore: Prettier useTabs true로 수정

    * Chore: axios 라이브러리 추가

    * Feat: BestMealContainer 기본 레이아웃

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE] components단위로 파일 분리 (#20)

    * Refactor: App.jsx에서 BestMealContainer import수정

    * Refactor: MealContainer에서 Loader와 MealCard 분리

    * Chore: components 폴더 관리

    * [FE] 페어 리팩토링 (#21)

    * Refactor: mockServerURL .env파일에서 관리

    - constant폴더에서 관리

    * Feat: setDefaultImage()함수 추가

    - 인자로 image url을 받아서 false면 default이미지로 반환

    * Chore: 폴더경로 상대경로에서 절대경로로 변경

    - jsconfig.json파일 설정

    * [FE] team-03브랜치에서 dev-FE로 최신화

    commit a773a14
    Merge: 2bc424b 1276077
    Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Date:   Sun Apr 24 22:54:48 2022 +0900

        Merge pull request #59 from Louie-03/dev-BE

        [Team-03][BE][루이&쿠킴] - 특정 음식 타입 조회 기능

    commit 2bc424b
    Author: Jwu <sju02048@naver.com>
    Date:   Sun Apr 24 17:06:36 2022 +0900

        [team-03][FE][쥬&도리] 1주차 두 번째 PR: 컴포넌트 단위 설계 (#66)

        * Chore: 초기개발환경

        Chore: CRA 초기구성

        Chore: eslint 구성

        Chore: prettier 구성

        * Style: App.js -> jsx 수정

        * [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

        * Feat: 프로젝트 초기 세팅

        ref: #8

        * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

        * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

        * Docs: 프로젝트 및 팀원 소개(readme.md)

        * Chore: Issues, PR templates 추가

        ref: #1

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

        * Docs: 팀원 수정

        - 팀원 한 마디 추가

        * Chore: 초기개발환경

        Chore: CRA 초기구성

        Chore: eslint 구성

        Chore: prettier 구성

        * Style: App.js -> jsx 수정

        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

        Co-authored-by: Louie <dhdustnr0134@naver.com>
        Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
        Co-authored-by: Jwu <sju02048@naver.com>
        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

        * [FE] MealContainer 레이아웃 작성 (#16)

        * Chore: vscode debugger .gitingore에추가

        * Chore: axios 라이브러리 추가

        * Feat: MealContainer

        - MealHeader
        - Carousel -> MealCard여러개

        * Refactor: useMemo 삭제

        * Chore: TODO 주석 작성

        - 컴포넌트 분리
        - stlye 코드 분리
        - status 코드

        * [FE] BestMealContainer 레이아웃 작성 (#18)

        * Chore: Prettier useTabs true로 수정

        * Chore: axios 라이브러리 추가

        * Feat: BestMealContainer 기본 레이아웃

        Co-authored-by: YUNHO <kimyouknow@naver.com>

        * [FE] components단위로 파일 분리 (#20)

        * Refactor: App.jsx에서 BestMealContainer import수정

        * Refactor: MealContainer에서 Loader와 MealCard 분리

        * Chore: components 폴더 관리

        * [FE] 페어 리팩토링 (#21)

        * Refactor: mockServerURL .env파일에서 관리

        - constant폴더에서 관리

        * Feat: setDefaultImage()함수 추가

        - 인자로 image url을 받아서 false면 default이미지로 반환

        * Chore: 폴더경로 상대경로에서 절대경로로 변경

        - jsconfig.json파일 설정

        Co-authored-by: YUNHO <kimyouknow@naver.com>
        Co-authored-by: Louie <dhdustnr0134@naver.com>
        Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    commit 1276077
    Merge: e8eca13 68b6e96
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Fri Apr 22 11:03:53 2022 +0900

        Merge pull request #22 from Louie-03/BE-feature-GET_api_products_meal_type

        [BE] 특정 음식 타입 조회 기능

    commit 68b6e96
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Fri Apr 22 10:39:03 2022 +0900

        Fix: DiscountPolicy NPE 문제 해결

        - DiscountPolicy가 존재하지 않는 상품의 인수 테스트 추가

        Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

    commit 5335f2e
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Fri Apr 22 10:37:09 2022 +0900

        Refactor: 계산 로직의 책임을 Product에서 DiscountPolicy로 위임

        - 기존 Product의 계산 로직을 DiscountPolicy의 calculateFixedPrice 메서드로 옮겼다.

        Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

    commit 1e27697
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 17:47:25 2022 +0900

        Feat: meal type으로 음식 조회가 되지 않는 경우 조회 실패 구현(404 NOT FOUND)

    commit db93682
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 17:27:13 2022 +0900

        Fix: Product 객체 fixedPrice 계산 로직 수정

        - 기존 연산 괄호 실수 -> 올바르게 변경
        - 테스트 코드 추가

    commit 3b74382
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Thu Apr 21 16:53:35 2022 +0900

        Refactor: Entity와 Domain 객체 분리

        - Entity를 Domain 객체로 변경해주는 DomainEntityMapper 구현
        - 변경된 코드에 따른 테스트 코드 수정

        Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

    commit ca34b5a
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 15:17:09 2022 +0900

        Feat: 특정 Products의 meal type 조회 기능의 리포지토리 구현

        - 테스트 작성

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    commit 06cebb6
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 15:15:29 2022 +0900

        Feat: product, product_image, discount_policy 테이블 DDL과 더미데이터 생성, 테스트 환경 구분

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    commit feb2909
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 09:32:59 2022 +0900

        Refactor: Product <-> Response Dto 변환 위치를 컨트롤러에서 서비스로 변경

    commit fc57090
    Author: Jwu <sju02048@naver.com>
    Date:   Wed Apr 20 21:07:11 2022 +0900

        [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

        * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

        * Docs: 프로젝트 및 팀원 소개(readme.md)

        * Chore: Issues, PR templates 추가

        ref: #1

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

        * Docs: 팀원 수정

        - 팀원 한 마디 추가

        * Chore: 초기개발환경

        Chore: CRA 초기구성

        Chore: eslint 구성

        Chore: prettier 구성

        * Style: App.js -> jsx 수정

        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    commit 4f385a1
    Merge: a002511 e8eca13
    Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Date:   Wed Apr 20 18:29:42 2022 +0900

        Merge pull request #20 from Louie-03/dev-BE

        [Team-03][BE] 쿠킴 & 루이 - 데이터베이스 설계, Mock API Server, 배포 아키텍처, 프로젝트 세팅

    commit f4c13a4
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Wed Apr 20 17:32:01 2022 +0900

        Feat: 특정 Products의 meal type 조회 기능의 서비스 구현

        - 테스트 작성

    commit 8e691b4
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Wed Apr 20 17:03:56 2022 +0900

        Feat: 특정 Products의 meal type 조회 기능의 컨트롤러 구현

        - API : GET /api/products?meal={value}
        - 컨트롤러 테스트 구현
        - 서비스 계층은 Mock 처리
        - Product 도메인 객체 생성
        - ProductsDtoMapper 객체 생성 : Product 도메인 <-> ProductsMealTypeResponse 변환

    commit b9873d0
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Wed Apr 20 15:57:24 2022 +0900

        Test: 특정 Products의 meal type 조회 기능 테스트코드만 작성

        - 인수 테스트 작성

    commit e8eca13
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Wed Apr 20 14:24:31 2022 +0900

        Feat: 프로젝트 초기 세팅

        ref: #8

    Co-Authored-By: YUNHO <kimyouknow@naver.com>
    Co-Authored-By: Louie <dhdustnr0134@naver.com>
    Co-Authored-By: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] Styled Component Best Header 부분 (#25)

    * Feat: 프로젝트 초기 세팅

    ref: #8

    * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Chore: env 추가

    * Style: SVG 아이콘 추가

    * Feat: theme 추가

    * Style: 폰트 추가

    * Style: 파일 이름 변경

    * Design: BestMeal 헤더&네비게이션

    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] PR 반영 및 styledCSS 수정 (#28)

    - 두 번째 PR 반영
    - 코드 스타일 리팩토링
    ref: #26

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE] 일반 Meal 컴포넌트 UI 구현 (#39)

    * Design: Meal Card

    styles.js 분리

    * Design: 카드에 hover시 택배서비스 표시

    * Design: MealConatiner  헤더 및 레이아웃

    * Design: 캐러셀 컨테이너

    - svg추가

    * Chore: Card컨테이너에서 hover할 때 보여지는 배송정보 코드 상 위치 변경

    - 컴포넌트 하단으로 빼기

    * Build: mock servser url 환경변수로 관리

    .env파일에서 관리하던 url을 각 로컬에서 관리하기

    * Refactor: mock sever 403에러 일때 constant에 있는 mock데이터 사용

    * Design: theme 세부속성 분해할당해서 접근

    이전: theme -> theme.color
    이후: theme: {color} -> color

    * Refactor: mealCard hover 속성 js변수에서 css로 제어

    * Chore: 주석 정리

    * [FE] Best 컴포넌트 구현 (#40)

    * Feat: 금액 toLocalString로 구분

    * Feat: mock api -> mock data로 수정

    - postman api 호출횟수 초과해서 로컬로 값 보내는 걸로 수정

    * Design: Best 컴포넌트 추가

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE]  캐러셀 디자인, getCarouselDesign() (#48)

    * Design: App에서 Main 컴포넌트 분리

    * Desgin: 캐러셀 디자인, getCarouselDesign()

    - getCarouselDesign: 이미지 사이즈, 이미지 개수에 따라 동적으로 UI 결정

    * [FE] GNB Design 구현 (#49)

    * Style: 오타 수정

    * Design: 글로벌스타일 button poiner 추가

    * Design: Header Component 추가

    - 헤더에 hover 시 레이아웃 나타나는 디자인
    - 글씨, 아이콘 hover 디자인
    - 전체적인 헤더 UI 디자인

    * [FE] BestMealCard 컴포넌트와 MealCard 컴포넌트 통합 (#50)

    * Refactor: BestMeal Container mock데이터 분리 및 탭 변수 수정

        - MOCK_DATA_JS -> MOCK_BEST_MEAT: 변수명 변경 및 contant로 이동
        - BEST_SUBTITLE -> BEST_TAB_TYPE: 변수명 변경 및 api
        Params추가
        - Tabs컴포넌트 BestMeals컴포넌트처럼 양식 통일

    * Refactor: BestMealCard를 MealCard컴포넌트와 통일

    - MealCard를 받을 때 이미지 사이즈 넘겨받기

    * Feat: BestMeal에서 findTargetTab()함수

    선택한 탭의 id를 인자로 받고 apiParams를 반환함.

    * Chore: Main위치 src/components -> src/pages

    * Chore: 메인 레이아웃

    헤더 mainWidth설정

    * Chore: 함수 선언식 -> arrow function

    * Design 캐러셀 양 옆 svg 스타일 수정

    - border 없애기
    - 크기 키움

    * Fix: Main 경로 오타 수정

    * Refactor: 호버창 컴포넌트 단위로 분리

    * Refactor: state값 이용하지 않고 hover로 수정

    * Design: 컴포넌트 간 간격 수정

    * [FE] 컴포넌트 리팩토링 (#51)

    Refactor: 호버창 컴포넌트 단위로 분리

    Refactor: state값 이용하지 않고 hover로 수정

    Design: 컴포넌트 간 간격 수정

    * Chore: 오타수정

    * Chore: 충돌해결하면서 지우지 못한 폴더 삭제

    - constant
    - util

    * Chore: reset.css 삭제

    * [FE} 캐러셀 컴포넌트 구현 (#58)

    * Chore: mock server에서 실제서버url로 변경

    * Feat: Carousel  구현

    * Feat: Carousel 재사용성 고려해서 children을 밖에서 선언

    * [FE] Custom Axios 작성 및 데이터 fetch 기능 (#59)

    * Style: API 변수이름 수정

    * Fix: price 오타 수정

    * Delete: PR 충돌 오류로 삭제

    * Style: 여백 오타 수정

    * Feat: useAxios 추가

    * Design: 더보기 버튼

    * Feat: 카테고리 더보기

    * Design: 버튼 가운데 정렬

    * Feat: 카테고리 추가 렌더링

    버그 고쳐야함

    * Feat: 추가 데이터 버튼 감추기

    Co-authored-by: yunho <kimyouknow@naver.com>
    Co-authored-by: Jwu <sju02048@naver.com>

    * Design: CSS 스타일 변경

    * Refactor: 유틸함수 따로 관리

    * Feat: 세부정보(detail) 페이지

    * Refactor: useAxios response state 수정

    * Design: OAuth 테스트용 추가

    Co-authored-by: YUNHO <kimyouknow@naver.com>
    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

commit 43ee842
Author: Jwu <sju02048@naver.com>
Date:   Fri Apr 29 01:12:56 2022 +0900

    [team-03][FE][쥬&도리] 2주차 첫 번째: 컴포넌트 구현 (#143)

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    * [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

    * Feat: 프로젝트 초기 세팅

    ref: #8

    * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: Jwu <sju02048@naver.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] MealContainer 레이아웃 작성 (#16)

    * Chore: vscode debugger .gitingore에추가

    * Chore: axios 라이브러리 추가

    * Feat: MealContainer

    - MealHeader
    - Carousel -> MealCard여러개

    * Refactor: useMemo 삭제

    * Chore: TODO 주석 작성

    - 컴포넌트 분리
    - stlye 코드 분리
    - status 코드

    * [FE] BestMealContainer 레이아웃 작성 (#18)

    * Chore: Prettier useTabs true로 수정

    * Chore: axios 라이브러리 추가

    * Feat: BestMealContainer 기본 레이아웃

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE] components단위로 파일 분리 (#20)

    * Refactor: App.jsx에서 BestMealContainer import수정

    * Refactor: MealContainer에서 Loader와 MealCard 분리

    * Chore: components 폴더 관리

    * [FE] 페어 리팩토링 (#21)

    * Refactor: mockServerURL .env파일에서 관리

    - constant폴더에서 관리

    * Feat: setDefaultImage()함수 추가

    - 인자로 image url을 받아서 false면 default이미지로 반환

    * Chore: 폴더경로 상대경로에서 절대경로로 변경

    - jsconfig.json파일 설정

    * [FE] team-03브랜치에서 dev-FE로 최신화

    commit a773a14
    Merge: 2bc424b 1276077
    Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Date:   Sun Apr 24 22:54:48 2022 +0900

        Merge pull request #59 from Louie-03/dev-BE

        [Team-03][BE][루이&쿠킴] - 특정 음식 타입 조회 기능

    commit 2bc424b
    Author: Jwu <sju02048@naver.com>
    Date:   Sun Apr 24 17:06:36 2022 +0900

        [team-03][FE][쥬&도리] 1주차 두 번째 PR: 컴포넌트 단위 설계 (#66)

        * Chore: 초기개발환경

        Chore: CRA 초기구성

        Chore: eslint 구성

        Chore: prettier 구성

        * Style: App.js -> jsx 수정

        * [FE] team-03브랜치에서 dev-FE로 최신화 (#14)

        * Feat: 프로젝트 초기 세팅

        ref: #8

        * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

        * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

        * Docs: 프로젝트 및 팀원 소개(readme.md)

        * Chore: Issues, PR templates 추가

        ref: #1

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

        * Docs: 팀원 수정

        - 팀원 한 마디 추가

        * Chore: 초기개발환경

        Chore: CRA 초기구성

        Chore: eslint 구성

        Chore: prettier 구성

        * Style: App.js -> jsx 수정

        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

        Co-authored-by: Louie <dhdustnr0134@naver.com>
        Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
        Co-authored-by: Jwu <sju02048@naver.com>
        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

        * [FE] MealContainer 레이아웃 작성 (#16)

        * Chore: vscode debugger .gitingore에추가

        * Chore: axios 라이브러리 추가

        * Feat: MealContainer

        - MealHeader
        - Carousel -> MealCard여러개

        * Refactor: useMemo 삭제

        * Chore: TODO 주석 작성

        - 컴포넌트 분리
        - stlye 코드 분리
        - status 코드

        * [FE] BestMealContainer 레이아웃 작성 (#18)

        * Chore: Prettier useTabs true로 수정

        * Chore: axios 라이브러리 추가

        * Feat: BestMealContainer 기본 레이아웃

        Co-authored-by: YUNHO <kimyouknow@naver.com>

        * [FE] components단위로 파일 분리 (#20)

        * Refactor: App.jsx에서 BestMealContainer import수정

        * Refactor: MealContainer에서 Loader와 MealCard 분리

        * Chore: components 폴더 관리

        * [FE] 페어 리팩토링 (#21)

        * Refactor: mockServerURL .env파일에서 관리

        - constant폴더에서 관리

        * Feat: setDefaultImage()함수 추가

        - 인자로 image url을 받아서 false면 default이미지로 반환

        * Chore: 폴더경로 상대경로에서 절대경로로 변경

        - jsconfig.json파일 설정

        Co-authored-by: YUNHO <kimyouknow@naver.com>
        Co-authored-by: Louie <dhdustnr0134@naver.com>
        Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    commit 1276077
    Merge: e8eca13 68b6e96
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Fri Apr 22 11:03:53 2022 +0900

        Merge pull request #22 from Louie-03/BE-feature-GET_api_products_meal_type

        [BE] 특정 음식 타입 조회 기능

    commit 68b6e96
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Fri Apr 22 10:39:03 2022 +0900

        Fix: DiscountPolicy NPE 문제 해결

        - DiscountPolicy가 존재하지 않는 상품의 인수 테스트 추가

        Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

    commit 5335f2e
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Fri Apr 22 10:37:09 2022 +0900

        Refactor: 계산 로직의 책임을 Product에서 DiscountPolicy로 위임

        - 기존 Product의 계산 로직을 DiscountPolicy의 calculateFixedPrice 메서드로 옮겼다.

        Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

    commit 1e27697
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 17:47:25 2022 +0900

        Feat: meal type으로 음식 조회가 되지 않는 경우 조회 실패 구현(404 NOT FOUND)

    commit db93682
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 17:27:13 2022 +0900

        Fix: Product 객체 fixedPrice 계산 로직 수정

        - 기존 연산 괄호 실수 -> 올바르게 변경
        - 테스트 코드 추가

    commit 3b74382
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Thu Apr 21 16:53:35 2022 +0900

        Refactor: Entity와 Domain 객체 분리

        - Entity를 Domain 객체로 변경해주는 DomainEntityMapper 구현
        - 변경된 코드에 따른 테스트 코드 수정

        Co-authored-by: “ku-kim” <kukim.dev@gmail.com>

    commit ca34b5a
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 15:17:09 2022 +0900

        Feat: 특정 Products의 meal type 조회 기능의 리포지토리 구현

        - 테스트 작성

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    commit 06cebb6
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 15:15:29 2022 +0900

        Feat: product, product_image, discount_policy 테이블 DDL과 더미데이터 생성, 테스트 환경 구분

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    commit feb2909
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Thu Apr 21 09:32:59 2022 +0900

        Refactor: Product <-> Response Dto 변환 위치를 컨트롤러에서 서비스로 변경

    commit fc57090
    Author: Jwu <sju02048@naver.com>
    Date:   Wed Apr 20 21:07:11 2022 +0900

        [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

        * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

        * Docs: 프로젝트 및 팀원 소개(readme.md)

        * Chore: Issues, PR templates 추가

        ref: #1

        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

        * Docs: 팀원 수정

        - 팀원 한 마디 추가

        * Chore: 초기개발환경

        Chore: CRA 초기구성

        Chore: eslint 구성

        Chore: prettier 구성

        * Style: App.js -> jsx 수정

        Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
        Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    commit 4f385a1
    Merge: a002511 e8eca13
    Author: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Date:   Wed Apr 20 18:29:42 2022 +0900

        Merge pull request #20 from Louie-03/dev-BE

        [Team-03][BE] 쿠킴 & 루이 - 데이터베이스 설계, Mock API Server, 배포 아키텍처, 프로젝트 세팅

    commit f4c13a4
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Wed Apr 20 17:32:01 2022 +0900

        Feat: 특정 Products의 meal type 조회 기능의 서비스 구현

        - 테스트 작성

    commit 8e691b4
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Wed Apr 20 17:03:56 2022 +0900

        Feat: 특정 Products의 meal type 조회 기능의 컨트롤러 구현

        - API : GET /api/products?meal={value}
        - 컨트롤러 테스트 구현
        - 서비스 계층은 Mock 처리
        - Product 도메인 객체 생성
        - ProductsDtoMapper 객체 생성 : Product 도메인 <-> ProductsMealTypeResponse 변환

    commit b9873d0
    Author: “kukim” <kukim.dev@gmail.com>
    Date:   Wed Apr 20 15:57:24 2022 +0900

        Test: 특정 Products의 meal type 조회 기능 테스트코드만 작성

        - 인수 테스트 작성

    commit e8eca13
    Author: Louie <dhdustnr0134@naver.com>
    Date:   Wed Apr 20 14:24:31 2022 +0900

        Feat: 프로젝트 초기 세팅

        ref: #8

    Co-Authored-By: YUNHO <kimyouknow@naver.com>
    Co-Authored-By: Louie <dhdustnr0134@naver.com>
    Co-Authored-By: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] Styled Component Best Header 부분 (#25)

    * Feat: 프로젝트 초기 세팅

    ref: #8

    * [team-03][FE][쥬&도리] 1주차 첫 PR: 프로젝트 환경설정 및 설계 (#25)

    * [공통] Issues, PR templates 와 프로젝트 소개 README.md 추가 (#2)

    * Docs: 프로젝트 및 팀원 소개(readme.md)

    * Chore: Issues, PR templates 추가

    ref: #1

    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Docs: 팀원 수정

    - 팀원 한 마디 추가

    * Chore: 초기개발환경

    Chore: CRA 초기구성

    Chore: eslint 구성

    Chore: prettier 구성

    * Style: App.js -> jsx 수정

    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
    Co-authored-by: “Louie-03” <dhdustnr0134@naver.com>

    * Chore: env 추가

    * Style: SVG 아이콘 추가

    * Feat: theme 추가

    * Style: 폰트 추가

    * Style: 파일 이름 변경

    * Design: BestMeal 헤더&네비게이션

    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

    * [FE] PR 반영 및 styledCSS 수정 (#28)

    - 두 번째 PR 반영
    - 코드 스타일 리팩토링
    ref: #26

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE] 일반 Meal 컴포넌트 UI 구현 (#39)

    * Design: Meal Card

    styles.js 분리

    * Design: 카드에 hover시 택배서비스 표시

    * Design: MealConatiner  헤더 및 레이아웃

    * Design: 캐러셀 컨테이너

    - svg추가

    * Chore: Card컨테이너에서 hover할 때 보여지는 배송정보 코드 상 위치 변경

    - 컴포넌트 하단으로 빼기

    * Build: mock servser url 환경변수로 관리

    .env파일에서 관리하던 url을 각 로컬에서 관리하기

    * Refactor: mock sever 403에러 일때 constant에 있는 mock데이터 사용

    * Design: theme 세부속성 분해할당해서 접근

    이전: theme -> theme.color
    이후: theme: {color} -> color

    * Refactor: mealCard hover 속성 js변수에서 css로 제어

    * Chore: 주석 정리

    * [FE] Best 컴포넌트 구현 (#40)

    * Feat: 금액 toLocalString로 구분

    * Feat: mock api -> mock data로 수정

    - postman api 호출횟수 초과해서 로컬로 값 보내는 걸로 수정

    * Design: Best 컴포넌트 추가

    Co-authored-by: YUNHO <kimyouknow@naver.com>

    * [FE]  캐러셀 디자인, getCarouselDesign() (#48)

    * Design: App에서 Main 컴포넌트 분리

    * Desgin: 캐러셀 디자인, getCarouselDesign()

    - getCarouselDesign: 이미지 사이즈, 이미지 개수에 따라 동적으로 UI 결정

    * [FE] GNB Design 구현 (#49)

    * Style: 오타 수정

    * Design: 글로벌스타일 button poiner 추가

    * Design: Header Component 추가

    - 헤더에 hover 시 레이아웃 나타나는 디자인
    - 글씨, 아이콘 hover 디자인
    - 전체적인 헤더 UI 디자인

    * [FE] BestMealCard 컴포넌트와 MealCard 컴포넌트 통합 (#50)

    * Refactor: BestMeal Container mock데이터 분리 및 탭 변수 수정

        - MOCK_DATA_JS -> MOCK_BEST_MEAT: 변수명 변경 및 contant로 이동
        - BEST_SUBTITLE -> BEST_TAB_TYPE: 변수명 변경 및 api
        Params추가
        - Tabs컴포넌트 BestMeals컴포넌트처럼 양식 통일

    * Refactor: BestMealCard를 MealCard컴포넌트와 통일

    - MealCard를 받을 때 이미지 사이즈 넘겨받기

    * Feat: BestMeal에서 findTargetTab()함수

    선택한 탭의 id를 인자로 받고 apiParams를 반환함.

    * Chore: Main위치 src/components -> src/pages

    * Chore: 메인 레이아웃

    헤더 mainWidth설정

    * Chore: 함수 선언식 -> arrow function

    * Design 캐러셀 양 옆 svg 스타일 수정

    - border 없애기
    - 크기 키움

    * Fix: Main 경로 오타 수정

    * Refactor: 호버창 컴포넌트 단위로 분리

    * Refactor: state값 이용하지 않고 hover로 수정

    * Design: 컴포넌트 간 간격 수정

    * [FE] 컴포넌트 리팩토링 (#51)

    Refactor: 호버창 컴포넌트 단위로 분리

    Refactor: state값 이용하지 않고 hover로 수정

    Design: 컴포넌트 간 간격 수정

    * Chore: 오타수정

    * Chore: 충돌해결하면서 지우지 못한 폴더 삭제

    - constant
    - util

    * Chore: reset.css 삭제

    * [FE} 캐러셀 컴포넌트 구현 (#58)

    * Chore: mock server에서 실제서버url로 변경

    * Feat: Carousel  구현

    * Feat: Carousel 재사용성 고려해서 children을 밖에서 선언

    * [FE] Custom Axios 작성 및 데이터 fetch 기능 (#59)

    * Style: API 변수이름 수정

    * Fix: price 오타 수정

    * Delete: PR 충돌 오류로 삭제

    * Style: 여백 오타 수정

    * Feat: useAxios 추가

    * Design: 더보기 버튼

    * Feat: 카테고리 더보기

    * Design: 버튼 가운데 정렬

    * Feat: 카테고리 추가 렌더링

    버그 고쳐야함

    * Feat: 추가 데이터 버튼 감추기

    Co-authored-by: yunho <kimyouknow@naver.com>
    Co-authored-by: Jwu <sju02048@naver.com>

    Co-authored-by: YUNHO <kimyouknow@naver.com>
    Co-authored-by: Louie <dhdustnr0134@naver.com>
    Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
    Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>

commit e00348e
Merge: a773a14 97dd386
Author: kukim <57086195+ku-kim@users.noreply.github.com>
Date:   Thu Apr 28 14:20:36 2022 +0900

    Merge pull request #135 from Louie-03/dev-BE

    [Team-03][BE][루이&쿠킴] - 로그인 제외한 모든 API 기능 구현, 배포

commit 97dd386
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 28 11:54:59 2022 +0900

    Chore: 운영 DB 더미데이터 추가

commit d84f4a6
Author: Louie <dhdustnr0134@naver.com>
Date:   Thu Apr 28 11:45:23 2022 +0900

    Feat: 주문 실패 시 현재 재고 수량을 반환해주도록 GlobalExceptionHandler 구현

    - 인수 테스트 작성

commit ecac1da
Author: “kukim” <kukim.dev@gmail.com>
Date:   Thu Apr 28 10:43:13 2022 +0900

    Refactor: PR 리뷰 피드백 적용(오타, 사용하지 않는 코드제거(Valid), Long -> long 타입 변환)

commit b3cb1eb
Merge: 05b9d52 dc7383d
Author: Louie <dhdustnr0134@naver.com>
Date:   Wed Apr 27 16:58:07 2022 +0900

    Merge pull request #55 from Louie-03/BE-feature-remove_id_field

    [BE] 도메인 객체의 불필요한 id 필드 제거

commit dc7383d
Author: seok <dhdustnr0134@naver.com>
Date:   Wed Apr 27 16:45:42 2022 +0900

    Refactor: 도메인 객체의 불필요한 id 필드 제거

commit 05b9d52
Merge: 947bdca c8826e0
Author: Louie <dhdustnr0134@naver.com>
Date:   Wed Apr 27 16:20:40 2022 +0900

    Merge pull request #53 from Louie-03/BE-feature-cors_bug_fix

    [BE] 도메인 설정으로 CORS 문제 해결

commit c8826e0
Author: seok <dhdustnr0134@naver.com>
Date:   Wed Apr 27 16:17:00 2022 +0900

    Fix: 도메인 설정으로 인한 CORS 문제 해결

commit 947bdca
Merge: 3375244 921e065
Author: kukim <57086195+ku-kim@users.noreply.github.com>
Date:   Tue Apr 26 16:20:37 2022 +0900

    Merge pull request #43 from Louie-03/BE-feature-POST_products_order

    [BE] 특정 상품 주문 기능 구현

commit 921e065
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 16:13:35 2022 +0900

    Fix: Spring Data Jdbc에서 save 메서드를 통해서 update 할 때 PK를 List의 index 값으로 입력되는 오류 수정

    update 쿼리를 직접 작성해서 사용하는 방식으로 해당 문제를 해결했습니다.

commit 3375244
Merge: b8753ad b67ecc9
Author: Louie <dhdustnr0134@naver.com>
Date:   Tue Apr 26 15:54:25 2022 +0900

    Merge pull request #41 from Louie-03/BE-feature-CORS

    [BE] CORS 기능 추가 (시스템 환경변수 활용)

commit b67ecc9
Author: “kukim” <kukim.dev@gmail.com>
Date:   Tue Apr 26 15:34:49 2022 +0900

    Feat: CORS 기능 추가 (시스템 환경변수 활용하여 LOCAL_IP, AWS_IP 추가)

    - 환경변수로 LOCAl_IP, AWS_IP 추가해야함

commit d5c67f6
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 15:03:27 2022 +0900

    Feat: 특정 상품 주문하기의 RequestBody 검증 구현

    - 만약 count가 음수라면 400(Bad Request) 상태코드를 반환한다.

commit b7fcfef
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 14:41:26 2022 +0900

    Feat: 특정 상품 주문하기 기능 구현

    - 서비스, 리파지토리 계층에 특정 상품 주문하기와 관련된 로직 구현
    - Response 전용 객체인 OrderSaveResponse 구현

commit 825fb39
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 14:32:37 2022 +0900

    Feat: 도메인 객체에 id 필드 추가

    - 특정 상품 주문 시 엔티티를 도메인 객체로 변경하는 과정에서 id가 사라지는 문제가 발생했습니다.
    - 해당 문제를 해결하기 위해 도메인 객체에 id 필드를 추가했습니다.

commit 95511a7
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 13:20:36 2022 +0900

    Style: ProductsDtoMapper의 클래스명, 메서드명 변경

    - ProductsDtoMapper 클래스의 이름을 DomainDtoMapper로 변경
    - DomainDtoMapper에서 두개의 도메인 객체를 참조하기 때문에 메서드명에 사용되었던 Domain이라는 단어를 실제 도메인 객체 이름으로 변경했습니다.

commit 5ff762d
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 13:15:43 2022 +0900

    Feat: OrderEntity 구현

commit 6543cb6
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 13:14:09 2022 +0900

    Feat: Product 클래스에 재고 수량 차감 로직 구현

    - 만약 주문 개수보다 재고 수량이 부족하다면 NotEnoughStockQuantityException이 발생한다.

commit 0fdbb79
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 13:11:18 2022 +0900

    Feat: Order 도메인 객체 구현

    - totalPrice를 계산하는 calculateTotalPrice() 구현
    - deliveryPrice를 계산하는 calculateDeliveryPrice() 구현

commit c20b925
Author: seok <dhdustnr0134@naver.com>
Date:   Tue Apr 26 13:06:34 2022 +0900

    Feat: orders 테이블 스키마 작성

commit b8753ad
Merge: a763171 9f62389
Author: kukim <57086195+ku-kim@users.noreply.github.com>
Date:   Tue Apr 26 12:52:20 2022 +0900

    Merge pull request #38 from Louie-03/BE-feature-GET_api_products_recommendation

    [BE] 배포/개발 환경 application 분리

commit 9f62389
Author: “kukim” <kukim.dev@gmail.com>
Date:   Tue Apr 26 12:47:29 2022 +0900

    Build: 배포/개발 환경 분리 application 프로파일 설정

    - 환경변수 설정

commit 401b9ad
Author: Louie <dhdustnr0134@naver.com>
Date:   Tue Apr 26 00:38:58 2022 +0900

    Feat: 특정 음식 주문하기 기능의 컨트롤러 구현

    - Product 테이블과 객체에 stock_quantity 필드 추가
    - stock_quantity 샘플 데이터 추가
    - 컨트롤러 테스트 구현

commit a763171
Merge: 52dd9da 1541eb2
Author: kukim <57086195+ku-kim@users.noreply.github.com>
Date:   Mon Apr 25 21:02:47 2022 +0900

    Merge pull request #36 from Louie-03/BE-feature-GET_products_best_category

    [BE] 특정 카테고리의 베스트 음식 조회 기능 구현

commit 1541eb2
Author: Louie <dhdustnr0134@naver.com>
Date:   Mon Apr 25 19:20:06 2022 +0900

    Feat: 특정 베스트 카테고리 음식 조회 기능 구현

    특정 베스트 카테고리 음식 조회 기능 인수테스트 작성
    특정 베스트 카테고리 음식 조회 기능 리파지토리 테스트 작성
    @repository 어노테이션 제거
    discountRate 자료형 float에서 long으로 변경
    validProducts 메서드 이름 validateProducts로 이름 변경

commit 9882c4a
Author: Louie <dhdustnr0134@naver.com>
Date:   Mon Apr 25 15:34:35 2022 +0900

    Feat: 특정 베스트 음식 카테고리 조회 기능의 컨트롤러 구현

    - API : GET /api/products/best?category={value}
    - 컨트롤러 테스트 구현
    - 서비스 계층은 Mock 처리

commit 52dd9da
Merge: 5810e2e fbb5a66
Author: Louie <dhdustnr0134@naver.com>
Date:   Mon Apr 25 15:19:24 2022 +0900

    Merge pull request #31 from Louie-03/BE-feature-GET_api_products_recommendation

    [BE] 추천 음식 조회 기능

commit fbb5a66
Author: “kukim” <kukim.dev@gmail.com>
Date:   Mon Apr 25 14:57:30 2022 +0900

    feat: 추천 음식 조회 기능

    - 현재 10개의 Product 랜덤하게 전달
    - 추후 로그인, 유저별 추천 가능성이 있다.

commit 5810e2e
Author: “kukim” <kukim.dev@gmail.com>
Date:   Mon Apr 25 13:06:37 2022 +0900

    Refactor: ProductMealTypeResponse -> ProductBasicTypeResponse 이름 변경

commit b11552c
Merge: a773a14 e750413
Author: kukim <57086195+ku-kim@users.noreply.github.com>
Date:   Mon Apr 25 12:30:56 2022 +0900

    Merge pull request #27 from Louie-03/BE-feature-GET_api_products_id

    [BE] 특정 id의 음식 조회 기능

commit e750413
Author: “kukim” <kukim.dev@gmail.com>
Date:   Mon Apr 25 12:22:32 2022 +0900

    feat: 특정 id의 음식 조회 기능 구현 (Controller, Service 계층)

    - 테스트 코드 작성

commit 5bda672
Author: “kukim” <kukim.dev@gmail.com>
Date:   Mon Apr 25 12:21:14 2022 +0900

    feat: Product 도메인 객체에 Delivery 객체 연결

commit d63a0f6
Author: “kukim” <kukim.dev@gmail.com>
Date:   Mon Apr 25 12:17:54 2022 +0900

    feat: DeliveryPolicy Repository 구현과 테스트

commit 1157fca
Author: “kukim” <kukim.dev@gmail.com>
Date:   Mon Apr 25 12:12:32 2022 +0900

    feat: DeliveryPolicy 테이블 설계와 Dummy 데이터 추가

* Style: 주석 제거

* Refactor: api 주소 변경

* Chore: FE/src/Pages -> FE/src/pages 폴더명 변경

* Chore: src/Pages 폴더 삭제

Co-authored-by: YUNHO <kimyouknow@naver.com>
Co-authored-by: Louie <dhdustnr0134@naver.com>
Co-authored-by: HYUNJUN SON <55608425+guswns1659@users.noreply.github.com>
Co-authored-by: kukim <57086195+ku-kim@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
review-iOS Extra attention is needed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants