Se-Engineering-2023-kgu / termProject-main

0 stars 0 forks source link

ReservationForm 및 ReservationService 관련 #13

Closed choi4624 closed 1 year ago

choi4624 commented 1 year ago

https://github.com/Se-Engineering-2023-kgu/termProject-main/commit/985316edcec7937c11f341419f1074343ecda45b 이 커밋을 참고해주세요.

private List<Long> orderMenuList = new ArrayList<>();
// change List<OrderMenuDTO> to List<Long> 
//약간 이해는 안되는데 결국엔 여기 쓰이는 리스트는 그냥 for 를 위한 리스트라고 봐도 되나요? 

저기에 원래 OrderMenuDTO 로 되어 있는데

ReservationService 부분에서

    for (Long mid : form.getOrderMenuList()) {                           // form 에서 받아온 여러가지 주문 상품 종류 mid : Long 타입으로 받아옴
        Menu menu = menuRepository.findById(mid).get();                  // 받아온 long 타입 id 로 mene 종류 찾고
        OrderMenu orderMenu = OrderMenu.createOrderMenu(menu, 1);  // 개수는 지정하지 못했음.... 1개
        userOrderMenuList.add(orderMenu);                                // 새로정의한 userOrderMenuList 에 추가
    } 

이 코드의 구조가 OrderMenuDTO 로 할 수 없어서 이 부분 일단 임시로 땜빵했어요. 어떤 의도인지 구조가 이해 안되서 약간 설명 부탁드립니다.

jookbooin commented 1 year ago

우선 제가 모든 DTO 내부에 있는 form 이라고 붙인 이름은 view -> Controller에 데이터 값들을 가져올때를 구별하기 위해서 쓰는 객체이름입니다.

위에서 RegisterForm 객체는 image

프론트 단에서 menu 와 table의 th:value 를 모두 id들로 설정했습니다. 이유는 jpa의 낮은 숙련도 때문에 db에서 무언갈 찾아올때는 findById(id) 밖에 몰랐어요.. image

List orderMenuList = new ArrayList(); 와 같이 적은 이유는 실제로 check 박스를 선택해서 전달받아올 때는 선택한 칸의 value 값들이 전달됩니다. 만약 음료 ,디저트 , 에피타이저를 선택했으면
[1,2,3] 이 전달되어 옵니다.

image

View 단에서 다음과 같이( 메뉴 , 개수 )를 함께 받아오는 것이 목표기 때문에 ( Long -> DTO( 메뉴id , count ) 가 담긴 ) image

choi4624 commented 1 year ago

아 질문을 약간 잘못한거 같은데... 2023-05-12_215248

원래는 List를 받는걸로 되어 있는데 얘가 오류가 나는 형태로 되어 있어서 Long 형태의 ID를 받아서 땜빵(?) 했거든요, 이거 이렇게 하는게 맞나요? 아니면 원래 의도를 올려주신 걸로 했다면, OrderMenuDTO로 설정하는 건가요? 그러면 ReservationService에 있는 for의 구조가 이 방식으로 성립할 수 없는 방식인데...

이 부분은 고치는게 약간 애매해서, 일단 저는 시큐리티만 적용해놓고 이 부분은 구조를 할 것 같습니다. Long 타입 쓰는게 원래 의도에 맞는지.. 아니면 MenuDTO가 맞는지;

jookbooin commented 1 year ago

앗... 병훈님이 맞는것 같습니다. 제가 계속 수정하느라 .. 마지막 올렸을때 Long으로 올려서 테스트한 것 같은데 잘못 올라갔었나 보네요 .. image