🔥 스파르타 TIL (프로젝트)

두 번째 프로젝트 기록하기 2

승승장규 2025. 3. 26. 18:42

업체 등록 (Master, Hub)

  • 업체를 등록하기 위한 POST /api/company Controller 기능 구현.
  • 응답 객체와 메시지, HttpStatus code를 같이 묶어서 응답할 수 있게 ApiResponseData 클래스 생성.
  • 업체는 허브에 소속되어야 하므로 관리하는 Hub에서 업체를 생성할 수 있다.

 

특정 업체 조회 (All)

  • 특정 업체를 조회하기 위해 GET /api/company/{companyId} Controller 기능 구현.
  • deleted 상태가 아닌 업체를 조회할 수 있도록 허브 엔티티와 매핑한 Repository에 findByIdAndDeletedAtIsNull 메서드로 간단하게 구현.

 

업체 전체 조회 (All)

  • 모든 업체를 조회하기 위해 GET /api/company Controller 기능 구현.
  • 업체 정보는 자주 변경되지 않는 정보이기 때문에 여기도 Cache-Aside전략을 사용해서 조회 시간 단축 ( ex 93ms -> 23ms)
    • 특정 허브 조회와 같이 Page로 된 데이터를 역직렬화 하지 못하는 오류가 발생해서 PageResponseDto를 사용해서 응답 객체를 구성했다.

 

업체 삭제 (Master, Hub)

  • 업체를 삭제하기 위해 DELETE /api/company/{companyId} Controller 기능 구현.
  • 삭제를 요청한 뒤, deletedBy를 삭제처리한 사용자의 이름으로 수정함 (실제로 데이터베이스에 정보가 삭제되지 않게 처리함.

 

업체 수정 (Master, Hub, Company)

  • 업체의 정보를 수정하기 위해 PUT /api/company/{companyId} Controller 기능 구현.
  • 수정에 성공하면, updatedBy를 수정처리한 사용자의 이름으로 수정함.
    • 만약 Company 권한을 가진 사용자의 경우 본인의 업체만 수정 가능하도록 구현해야 했기에 FeignClient로 사용자의 데이터를 보관하고 있는 User 서비스에 해당 유저를 조회한 뒤, Company 권한을 갖고 있다면 수정할 수 있게 구현함.