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

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

Slack 메시지 생성 및 전송 (All)Slack 메시지를 생성 및 전송하기 위한 POST /api/slack?username=..&deliveryId=.. Controller 기능 구현.응답 객체와 메시지, HttpStatus code를 같이 묶어서 응답할 수 있게 ApiResponseData 클래스 생성.배송 도메인에서 배송 담당자가 배정이 되면 RabbitMQ를 사용해서 받아온 배송 데이터로 주문 메시지를 생성.메시지에 담길 주문 정보와 배송 정보를 FeignClient로 조회한 뒤, Gemini API를 활용해서 최종 발송 시한을 추가로 발송하는 기능을 구현.팀원들이 각자 구현한 API에 FeignClient를 사용해서 응답값을 받아오는 과정에서 해당 엔트 포인트를 찾지 못하거나, null 값을..

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

업체 등록 (Master, Hub)업체를 등록하기 위한 POST /api/company Controller 기능 구현.응답 객체와 메시지, HttpStatus code를 같이 묶어서 응답할 수 있게 ApiResponseData 클래스 생성.업체는 허브에 소속되어야 하므로 관리하는 Hub에서 업체를 생성할 수 있다. 특정 업체 조회 (All)특정 업체를 조회하기 위해 GET /api/company/{companyId} Controller 기능 구현.deleted 상태가 아닌 업체를 조회할 수 있도록 허브 엔티티와 매핑한 Repository에 findByIdAndDeletedAtIsNull 메서드로 간단하게 구현. 업체 전체 조회 (All)모든 업체를 조회하기 위해 GET /api/company Contro..

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

프로젝트 이름: eleven-logistics (MSA, DDD 구조 설계)본 프로젝트는 마이크로서비스 아키텍처를 기반으로 설계되었으며, 서비스 간 비동기 통신을 위해 RabbitMQ를 메시징 시스템으로 사용합니다. 개발 환경:Java: 17Spring Boot: 3.4.3데이터베이스: PostgreSQL, Redis개발 도구: Docker, Github메시징 시스템 : RabbitMQ 허브 등록 (Master)허브를 등록하기 위한 POST /api/hub Controller 기능 구현.응답 객체와 메시지, HttpStatus code를 같이 묶어서 응답할 수 있게 ApiResponseData 클래스 생성.NAVER Geocoding API를 사용해서 허브를 등록할 때 허브의 주소를 기반으로 해당 위치의..

NAVER Geocoding API 사용해서 위도, 경도 추가하기

원하는 주소에 원하는 데이터를 요청하는 과정에서 위도, 경도를 추가해야 하는 상황이 생겼다.처음에는 위도, 경도를 같이 요청 보냈지만, 추후에 확장성과 주소를 수정해야 하는 상황이 생길 때마다 위도, 경도도 바꿔줘야 하는 불편함이 생길 것 같아서 주소를 입력하면 위도, 경도가 자동으로 추가될 수 있는 시스템을 만들기로 하였다. 우선 naver map을 사용하기 위해서 정보를 등록해야 한다.  NAVER CLOUD PLATFORMcloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certificationwww.ncloud.com 이 사이트에 접속해서 회원가입을 진행하고 로그..

Slack API 적용해서 사용자에게 DM 보내는 기능을 만들어보자

클라이언트에서 API 요청을 하면 해당 사용자에게 DM을 보내는 기능을 만들어보자.향후에 MSA 통신으로 DM 보내는 기능으로 리팩터링 할 것 같다. Slack API: Applications | SlackYour Apps Don't see an app you're looking for? Sign in to another workspace.api.slack.com우선 Slack 기능을 사용하기 위해서 Token을 발급받아야 하는데, 위에 링크로 들어가서 Create New App을 통해 나만의 App을 만들어야 한다. 여기서 From scratch를 클릭한다.그럼 App Name과 워크스페이스를 지정해줘야 하는데 만약 워크스페이스가 없다면 Slack에서 워크스페이스를 만들어야 한다.이제 여기서 Setti..

프로젝트 기록하기 3

메뉴 등록 (Owner, Manager)메뉴를 등록하기 위해 POST /api/menus 기능을 구현함.메뉴 등록은 OWNER, MANAGER만 가능하도록 @PreAuthorize() 어노테이션 사용.메뉴를 등록할 때 이미지를 리스트로 요청해서 메뉴 이미지 목록을 보여줄 수 있는 기능을 사용.특정 매장의 메뉴 목록 조회 (All)특정 매장의 메뉴 목록을 조회하기 위해 GET /api/menus? storeId=? 기능을 구현함.메뉴의 존재 유·무를 false, true로 관리해서 메뉴가 존재한다면 false로 관리함. true상태의 메뉴는 조회 불가능.메뉴 상세 조회 (All)메뉴를 상세하게 조회하기 위해 GET /api/menus/{menuId} 기능을 구현함.매장의 정보와 관심 있는 메뉴의 상세한 정..

프로젝트 기록하기 2

전체 매장 목록 조회 (Master)전체 매장을 조회하기 위해 GET /api/admin/stores/{userId} 기능 구현.조회를 시도하는 유저의 권한을 확인한 뒤 매장의 유·무와 상태를 반환했기에 간단하게 구현했다.특정 매장 강제 삭제 (Master)특정 매장을 삭제하기 위해 DELETE /api/admin/stores/{storeId} 기능 구현.불법 매장 또는 관리자가 매장 폐업을 결정하고 삭제할 수 있도록 기능을 구현.삭제 요청을 승인하는 흐름과 비슷하게 실제로 데이터베이스에 삭제되지 않고 상태값을 변경함.매장 등록, 삭제 요청 승인 (Master)매장을 등록, 삭제 요청하기 위해 PUT /api/admin/stores/{storeId}/approve 기능 구현.매장 주인이 매장을 등록. 삭..

프로젝트 기록하기 1

프로젝트 이름: bedelivery개발 환경:Java: 17Spring Boot: 3.3.9데이터베이스: PostgreSQL개발 도구: Docker, Github매장 등록 요청 (Owner)매장 등록을 요청하기 위한 GET /api/stores/{userId} Controller 기능 구현.응답 객체와 메시지, HttpStatus code를 같이 묶어서 응답할 수 있게 ApiResponseData 클래스 생성.매장 등록을 요청할 시 enum 으로 정의한 Status.PENDING 으로 설정하게 함.업종과 지역을 관리하는 엔티티 구현 (매장과 업종은 N:N 단방향 관계, 매장과 지역은 1:N 단방향 관계).매장 등록 요청 사항을 먼저 저장한 뒤, 업종 테이블을 조회해서 가져온 데이터를 매장과 업종의 중간 ..