Spring boot/위니아에이드 클론코딩 프로젝트21 [위니아에이드] 팀 프로젝트 - 고장 증상 추가하기 관리자 페이지 - 제품 등록/수정/취소 기능 구현 중 마지막으로 제품 카테고리에 따른 고장 증상을 등록/수정/추가를 했습니다. 전체 고장 증상이 1부터 100까지 있다면 사용자 입장에서 고장 증상을 추가하고 싶을때 A카테고리에 1부터 10까지의 고장 증상이 있으면 굳이 이미 카테고리에 추가 되어 있는 1부터 10까지의 고장 증상을 보여줘서 혼란을 줄 필요는 없겠죠 그래서 이것을 구현하고자 했습니다. 아쉽게도 MariaDB에는 쿼리문에서 교집합으로 사용되는 MINUS를 사용할 수 없었습니다. 그래서 where절에서 NOT IN과 서브쿼리를 통해서 MINUS를 대체하였습니다. 이것은 현재 DB에 저장되어 있는 고장 증상의 총 개수입니다. 188개 입니다. 그리고 카테고리1에는 고장 증상이 33개가 등록이 되.. Spring boot/위니아에이드 클론코딩 프로젝트 2022. 10. 22. [위니아에이드] 팀 프로젝트 - 관리자 페이지 제품 삭제 (파일명 들고 와서 처리하기 보완) 관리자 페이지를 구현 중에 상품 등록, 수정을 마쳤고 마지막으로 삭제를 구현하고 있었습니다. 상세 제품을 하나 삭제한다면 그 제품의 키 값으로 DB에서 Delete를 해주고 파일 이름을 불러와 파일도 지워주면 됩니다. 밑에 이미지는 처음 생각했던 결과물입니다. 하지만 최상위 카테고리를 삭제한다면? 하위에 있는 모든 제품들을 DB에서 Delete 해주어야 하고 파일 또한 모든 이미지이름을 불러와서 그에 맞는 경로를 지정해주고 모두 지워주어야 합니다. 처음에는 카테고리 코드로 전부 불러와서 이미지를 삭제했지만 문제점을 찾았습니다. 최상위 카테고리는 그룹코드로 하위 카테고리와 연관이 있고 그 하위 카테고리의 카테고리 코드로 상세 제품이 이어져 있습니다. 1번의 카테고리 코드, 1번의 그룹 코드 2번의.. Spring boot/위니아에이드 클론코딩 프로젝트 2022. 10. 21. [위니아에이드] 팀 프로젝트 - 다른 사용자 접근 불가 A라는 회원이 서비스를 신청하고 그 신청 내역을 확인하는 것은 당연한 일입니다. 하지만 B라는 회원이 A회원이 신청한 내역을 확인은 불가능하게 만드는 것 또한 당연한 일입니다. 하지만 이런 부분은 처음 구현을 할 때 간과하고 있었고 구현을 못 할 뻔했지만 서비스 수정과 게시글 수정을 구현하던 중 다른 사용자가 URL을 통해 이런 화면으로 들어가면 안 되겠다 라는 생각이 떠올라 구현을 했습니다. 게시글 수정 페이지는 본인이 작성한 게시글이 아니라면 접근을 막아 주었고 서비스 신청 내역 또한 본인이 신청한 서비스 내역이 아니라면 접근을 막아주었습니다. 서비스 업데이트 또한 마찬가지로 본인이 접수했던 내역이 아니라면 접근을 막아주었습니다. 처음부터 접근을 막아야겠다는 생각은 못 했지만 막아야겠다고 생각이 들어.. Spring boot/위니아에이드 클론코딩 프로젝트 2022. 10. 20. [위니아에이드] 팀 프로젝트 - 게시글 수정 (파일) 게시글을 작성하고 수정을 할 때 업로드했던 파일을 어떻게 처리할지 고민을 했습니다. 우선 게시글을 DB에서 불러올때 해당 게시글에 업로드된 파일이 존재한다면 클라이언트에 보여주고 x표시를 옆에 만들었습니다. 그리고 파일은 3개까지만 업로드 가능하게 만들었고 파일이 하나 존재한다면 한 개의 input 태그를 disabled 시켜줌으로써 비활성화를 시켜주었습니다. x를 눌러준다면 비활성화 되었던 input 태그를 다시 원상복구 시켜주고 파일 추가를 가능하게 구현해보았습니다. 3개의 파일을 추가하고 수정을 진행합니다. 이제 해당 게시글은 새롭게 업데이트된 파일을 가지고 있고 다시 수정을 진행한다면 3개의 input 태그가 모두 비활성화되었습니다. status = boardRepository.updateBoar.. Spring boot/위니아에이드 클론코딩 프로젝트 2022. 10. 20. [위니아에이드] 팀 프로젝트 - 파일명 들고 와서 처리하기 관리자 페이지에서 제품 삭제를 구현하는 중 한 가지의 문제점이 생겼습니다. 상위 카테고리를 삭제한다면 하위 카테고리도 함께 삭제 되어야 합니다. 삭제는 어렵지 않게 구현을 했지만 해당 카테고리, 하위 제품에 등록되어있는 이미지는 어떻게 처리를 해야 할지 고민을 했습니다. 삭제를 하는 것이 맞기 때문에 삭제 되어지는 카테고리, 제품들의 이미지 이름을 전부 가져와서 각각 이미지가 저장 되어있는 경로를 맞추어 이미지 삭제를 진행해야만 했습니다. 처음 시도한 것은 DB에서 값을 가져올 때 MyBatis의 ResultMap과 Collection을 이용해서 하나의 객체의 필드에 List를 만들어 데이터를 넣어서 중복제거와 null값을 제거하는 로직을 구현해 이미지 제거를 진행하고자 했습니다. SELECT wpm.p.. Spring boot/위니아에이드 클론코딩 프로젝트 2022. 10. 20. [위니아에이드] 팀 프로젝트 - 이전 접수 데이터를 이용하기 서비스 신청을 할 때 로그인을 한 회원 사용자라면 이전 접수 목록을 확인할 수 있는 버튼이 생기고 누르게 되면 이전에 접수 했던 내역들을 볼 수 있고 선택할 수 있게 됩니다. 이전에 접수 했던 내역으로 신청을 간편하게 할 수 있습니다. 원하는 내역을 선택 한다면 이렇게 이전에 신청했던 내역들로 기본 정보들이 세팅이 됩니다. 여기서 수정할 부분은 수정하고 그대로 사용할 부분은 그대로 사용하게끔 구현했습니다. 이전 접수 주소 목록 또한 비슷한 기능입니다. 지난번에 접수했던 데이터를 바탕으로 목록을 보여주고 해당 주소를 선택 후 확인을 누른다면 값이 세팅 되게 구현했습니다. 데이터를 불러오는 것은 어렵지 않았습니다. 하지만 불러온 데이터를 세팅을 해주는 과정에서 어떤 방법으로 하면 좋을지 생각을 하고 막아줘야.. Spring boot/위니아에이드 클론코딩 프로젝트 2022. 10. 19. [위니아에이드] 팀 프로젝트 - 캐시를 이용해서 데이터를 가져오기 구현한 사이트에서는 선택한 제품에 대해서 DB에 접근해서 데이터를 가져와서 그 결괏값을 처리하는 로직을 거치게 되고 이러한 과정들을 거친 후에 데이터를 가져와서 클라이언트에 동적으로 데이터를 뿌려줍니다. 예를 들자면 이렇게 메인 카테고리마다 하위 제품들이 각자 존재하고 제품마다의 고유 키값으로 고장 증상 또한 DB에 접근해서 데이터를 가져오는 방식입니다. 왼쪽 이미지는 김치냉장고에 대한 고장 증상이고 오른쪽 이미지는 제습기에 관한 고장 증상입니다. 구현한 사이트에서 데이터를 DB에 접근해서 자주 가져와야 하지만 자회사 제품 A/S 신청 사이트인 만큼 A/S 신청 가능한 제품과 고장 증상이 자주 업데이트되지 않을 것을 생각을 해서 해당 데이터를 가져와야 하는 부분을 캐시를 이용해서 불필요한 DB 접근을 최.. Spring boot/위니아에이드 클론코딩 프로젝트 2022. 10. 19. [위니아에이드] 팀 프로젝트 - 방문 서비스 신청/조회/변경/취소 신청 구현 화면입니다. 카테고리 안에 다시 카테고리 안에 제품이 있는 경우가 있어서 추후 관리자 페이지 구현을 생각함과 동시에 클라이언트에 동적으로 뿌려주는 부분이 너무 어려웠습니다. 그리고 달력을 자바스크립트로 구현하는 것도 금방 끝날 줄 알았지만 이 부분도 시간이 좀 걸렸습니다. 제품은 다음과 같은 방법으로 리스트를 불러와 처리했습니다. @Cacheable(value = "product", key = "#company") @CompanyCheck @GetMapping("/list/category/{company}") public ResponseEntity getMainCategoryList(@PathVariable String company) { List productCategoryList = nul.. Spring boot/위니아에이드 클론코딩 프로젝트 2022. 10. 13. [위니아에이드] 팀 프로젝트 - 프로젝트 전체 소감 및 소개 코리아IT아카데미 백엔드 마지막 수업으로 팀 프로젝트를 진행했습니다. 주제는 웹사이트 하나를 정해서 5주 동안 진행하는 클론 코딩입니다. 저희 조는 위니아에이드 라는 자사 제품의 A/S를 신청하거나 제품에 관한 도움을 받을 수 있는 사이트입니다. 현재 목표했던 부분중 관리자 페이지를 통해서 데이터를 유동적으로 바꿀 수 있게 하고 싶은 마음에 처음 DB 테이블을 만들 때부터 고민을 많이 해보고 시행착오도 많이 겪고 수정도 많이 한 만큼 시간이 오래 걸려 관리자 페이지는 시간안에 완성시키지 못한다는 판단을 세워 관리자 페이지는 추후 구현할 생각으로 다른 부분을 좀 더 신경을 써서 구현을 했습니다. 현재 구현된 기능은 다음과 같습니다. 주 기능 -방문서비스 신청/조회/변경/취소 -김치냉장고 리콜 신청/조회/취.. Spring boot/위니아에이드 클론코딩 프로젝트 2022. 10. 13. 이전 1 2 다음