상품을 기준으로 사용자간 채팅을 할 수 있도록 설계 합니다.
설계
상품을 확인하고, 판매자에게 채팅을 요청 했을때 아래와 같은 동작을 합니다.
sequenceDiagram; actor 구매자; 구매자->>+서버: 상품 구매 채팅; activate 서버; Note right of 서버: 상품 판매 여부 및 사용자 검수; actor 판매자; 서버->>+판매자: 채팅 메시지 전달; deactivate 서버; 서버->>-구매자: 채팅 메시지 전달;
상품에 대한 검수를 아래과 같이 처리 하고 나면, 채팅을 전달합니다.
graph TD; A[상품 판매 채팅 검수] --> B{채팅방 존재}; B -->|Y| H; B -->|N| D{상품 & 판매자 & 구매자 확인}; D --> |Y| F(채팅방 생성); D --> |N| E[오류 메시지 전달]; F --> H(채팅 전달);
채팅방이 존재 하지 않고, 상품이 판매 완료인 경우 새로운 채팅방을 생성할 수 없습니다.
테이블 구조
채팅방명은 상품ID-판매자ID-구매자ID
로 유일한 값을 가지게 됩니다.
또한 마지막 판매자 구매자의 마지막 읽은 채팅ID를 가지고 있습니다.