modern-agile-team / dongurami-server

모던애자일 2기 동그라미 (Back repository)
5 stars 6 forks source link

[Notification] 알림에 대한 API 추가 생성 #440

Closed jisu3817 closed 2 years ago

jisu3817 commented 2 years ago

목적

모든 API에서 알림을 보내주는 로직을 포함한 코드들을 알림 API로 따로 분리해 가독성을 높이고, 유지보수하기 편하도록 하기위해서 리팩터링하고자 한다.

구현기능


❗️참고

기존 알림 생성에 대한 로직은 위에 해당하는 API 요청 시 백엔드에서 자동적으로 알림을 생성하도록 로직이 구현되어 있었다. 하지만 기능 분리와 유지보수를 위해 알림 API를 따로 분리해 주었고, 따라서 위에 해당하는 API 요청 후 추가적으로 알림 생성에 대한 API 요청을 한번 더 보내주도록 해야 한다.


📖 notiCategoryNum

0: 댓글 1: 답글 2: 동아리 가입 승인 3: 동아리 가입 거절 4: 일정 생성 5: 일정 수정 6: 동아리 공지 생성 7: 동아리 가입 신청 8: 동아리 탈퇴 9: 게시글 좋아요 10: 댓글 좋아요 11: 답글 좋아요 12: 전체 공지 생성


💡 API 명세서

  1. 댓글 생성 알림 API
  • Request

URL : /api/notification/comment/:category/:boardNum ex) /api/notification/comment/notice/31

(여기서 boardNum은 댓글 생성 API 요청에 대한 응답 데이터와 같음.) Method : POST
Headers : "Content-type" : "application/json; charset=utf-8"

{
  cmtDescription: String, // 댓글 생성 API 요청 시 body에 담긴 description과 같음. 
  notiCategoryNum: Number,
  hiddenFlag: Number // 0: 익명 x, 1: 익명
}
{
  cmtDescription: '우아한 애자일 동아리 너무 좋아요.',
  notiCategoryNum: 0,
  hiddenFlag: 1
}


Status

성공 : 201(Created) 실패 : 400(Bad Request)

Content-type : application/json; charset=utf-8

{
  success: Boolean,
  msg: String
}
{ 
  success: true, 
  msg: '댓글 알림이 생성되었습니다.' 
}


{
  success: Boolean, 
  msg: String
}
//notiCategoryNum이 잘못된 경우.
{ 
  success: false, 
  msg: '댓글 생성 알림에 대한 요청이 아닙니다.' 
};
// 500 서버에러
{
  success: false, 
  msg: '서버 에러입니다. 서버 개발자에게 문의해주세요.'
}



  1. 답글 생성 알림 API
  • Request

URL : /api/notification/reply-comment/:category/:boardNum/:cmtNum ex) /api/notification/reply-comment/notice/30/1565

(여기서 boardNum과 cmtNum은 답글 생성 API 요청에 대한 응답 데이터와 같음.) Method : POST
Headers : "Content-type" : "application/json; charset=utf-8"

{
  replyCmtDescription: String, // 답글 생성 API 요청 시 body에 담긴 description과 같음. 
  notiCategoryNum: Number,
  hiddenFlag: Number // 0: 익명 x, 1: 익명
}
{
  replyCmtDescription: '우아한 애자일 동아리 너무 좋아요.',
  notiCategoryNum: 1,
  hiddenFlag: 1
}


Status

성공 : 201(Created) 실패 : 400(Bad Request)

Content-type : application/json; charset=utf-8

{
  success: Boolean,
  msg: String
}
{ 
  success: true, 
  msg: '답글 알림이 생성되었습니다.' 
}


{
  success: Boolean, 
  msg: String
}
//notiCategoryNum이 잘못된 경우.
{ 
  success: false, 
  msg: '답글 생성 알림에 대한 요청이 아닙니다.' 
};
// 500 서버에러
{
  success: false, 
  msg: '서버 에러입니다. 서버 개발자에게 문의해주세요.'
}



  1. 동아리 가입 결과 알림 API
  • Request

URL : /api/notification/join-club/result/:clubNum ex) /api/notification/join-club/result/2
Method : POST
Headers : "Content-type" : "application/json; charset=utf-8"

{
  applicant: String, 
  notiCategoryNum: Number
}
{
   applicant: '200010255',
  notiCategoryNum: 2 // 가입 승인: 2, 가입 거절: 3
}


Status

성공 : 201(Created) 실패 : 400(Bad Request)

Content-type : application/json; charset=utf-8

{
  success: Boolean,
  msg: String
}
{ 
  success: true, 
  msg: '동아리가입 승인알림이 생성되었습니다.' 
}


{
  success: Boolean, 
  msg: String
}
//notiCategoryNum이 잘못된 경우.
{ 
  success: false, 
  msg: '동아리가입 결과 알림에 대한 요청이 아닙니다.' 
},
// 500 서버에러
{
  success: false, 
  msg: '서버 에러입니다. 서버 개발자에게 문의해주세요.'
}



  1. 동아리 일정 생성과 수정 알림 API
  • Request

URL : /api/notification/schedule/:clubNum ex) /api/notification/schedule/2
Method : POST
Headers : "Content-type" : "application/json; charset=utf-8"

{
  scheduleTitle: String, //일정 생성/수정 API 요청 시 body에 담긴 title과 같음.
  notiCategoryNum: Number
}
{
   scheduleTitle: '우애 3기 종료',
  notiCategoryNum: 4 // 일정 생성: 4, 일정 수정: 5
}


Status

성공 : 201(Created) 실패 : 400(Bad Request)

Content-type : application/json; charset=utf-8

{
  success: Boolean,
  msg: String
}
{ 
  success: true, 
  msg: '일정에 대한 알림이 생성되었습니다.' 
}


{
  success: Boolean, 
  msg: String
}
//notiCategoryNum이 잘못된 경우.
{ 
  success: false, 
  msg: '일정알림에 대한 요청이 아닙니다.' 
},
// 500 서버에러
{
  success: false, 
  msg: '서버 에러입니다. 서버 개발자에게 문의해주세요.'
}



  1. 전체 공지 글 생성 알림 API
  • Request

URL : /api/notification/board/notice/:boardNum ex) /api/notification/board/notice/35
Method : POST
Headers : "Content-type" : "application/json; charset=utf-8"

{
  boardTitle: String, //글 생성 API 요청 시 body에 담긴 title과 같음.
  notiCategoryNum: Number
}
{
  boardTitle: '동그라미 서비스 사용 설명서',
  notiCategoryNum: 12
}


Status

성공 : 201(Created) 실패 : 400(Bad Request)

Content-type : application/json; charset=utf-8

{
  success: Boolean,
  msg: String
}
{ 
  success: true, 
  msg: '전체공지 알림이 생성되었습니다.' 
}


{
  success: Boolean, 
  msg: String
}
//notiCategoryNum이 잘못된 경우.
{ 
  success: false, 
  msg: '전체공지 생성알림에 대한 요청이 아닙니다.' 
},
// 500 서버에러
{
  success: false, 
  msg: '서버 에러입니다. 서버 개발자에게 문의해주세요.'
}



  1. 동아리 공지 글 생성 알림 API
  • Request

URL : /api/notification/board/club-notice/:clubNum/:boardNum ex) /api/notification/board/club-notice/2/35
Method : POST
Headers : "Content-type" : "application/json; charset=utf-8"

{
  boardTitle: String,
  notiCategoryNum: Number
}
{
  boardTitle: 야호,
  notiCategoryNum: 6
}


Status

성공 : 201(Created) 실패 : 400(Bad Request)

Content-type : application/json; charset=utf-8

{
  success: Boolean,
  msg: String
}
{ 
  success: true, 
  msg: '동아리공지 알림이 생성되었습니다.' 
}


{
  success: Boolean, 
  msg: String
}
//notiCategoryNum이 잘못된 경우.
{ 
  success: false, 
  msg: '동아리공지 생성알림에 대한 요청이 아닙니다.' 
},
// 500 서버에러 
{
  success: false, 
  msg: '서버 에러입니다. 서버 개발자에게 문의해주세요.'
}



  1. 동아리 신청 완료 알림 API
  • Request

URL : /api/notification/join-club/:clubNum ex) /api/notification/join-club/2
Method : POST
Headers : "Content-type" : "application/json; charset=utf-8"

{
  notiCategoryNum: Number
}
{
  notiCategoryNum: 7
}


Status

성공 : 201(Created) 실패 : 400(Bad Request)

Content-type : application/json; charset=utf-8

{
  success: Boolean,
  msg: String
}
{
  success: true, 
  msg: '가입 신청 알림이 생성되었습니다.' 
}


{
  success: Boolean, 
  msg: String
}
//notiCategoryNum이 잘못된 경우.
{ 
  success: false, 
  msg: '가입 신청 알림에 대한 요청이 아닙니다.' 
},
// 500 서버에러
{
  success: false, 
  msg: '서버 에러입니다. 서버 개발자에게 문의해주세요.'
}



  1. 동아리 탈퇴 알림 API
  • Request

URL : /api/notification/resign-club/:clubNum ex) /api/notification/resign-club/2
Method : POST
Headers : "Content-type" : "application/json; charset=utf-8"

{
  notiCategoryNum: Number
}
{
  notiCategoryNum: 8
}


Status

성공 : 201(Created) 실패 : 400(Bad Request)

Content-type : application/json; charset=utf-8

{
  success: Boolean,
  msg: String
}
{ 
  success: true, 
  msg: '동아리탈퇴 알림이 생성되었습니다.' 
}


{
  success: Boolean, 
  msg: String
}
//notiCategoryNum이 잘못된 경우.
{ 
  success: false, 
  msg: '동아리탈퇴 알림에 대한 요청이 아닙니다.' 
},
// 500 서버에러
{
  success: false, 
  msg: '서버 에러입니다. 서버 개발자에게 문의해주세요.'
}



  1. 게시글 좋아요 알림 API
  • Request

URL : /api/notification/like/board/:category/:boardNum ex) /api/notification/like/board/notice/30
Method : POST
Headers : "Content-type" : "application/json; charset=utf-8"

{
  notiCategoryNum: Number
}
{
  notiCategoryNum: 9
}


Status

성공 : 201(Created) 실패 : 400(Bad Request)

Content-type : application/json; charset=utf-8

{
  success: Boolean,
  msg: String
}
{ 
  success: true, 
  msg: '좋아요 알림이 생성되었습니다.' 
}


{
  success: Boolean, 
  msg: String
}
//notiCategoryNum이 잘못된 경우.
{ 
  success: false, 
  msg: '좋아요 생성 알림에 대한 요청이 아닙니다.' 
},
// 500 서버에러
{
  success: false, 
  msg: '서버 에러입니다. 서버 개발자에게 문의해주세요.'
}



  1. 댓글 좋아요 알림 API
  • Request

URL : /api/notification/like/comment/:category/:cmtNum ex) /api/notification/like/comment/notice/1565
Method : POST
Headers : "Content-type" : "application/json; charset=utf-8"

{
  notiCategoryNum: Number
}
{
  notiCategoryNum: 10
}


Status

성공 : 201(Created) 실패 : 400(Bad Request)

Content-type : application/json; charset=utf-8

{
  success: Boolean,
  msg: String
}
{ 
  success: true, 
  msg: '좋아요 알림이 생성되었습니다.' 
}


{
  success: Boolean, 
  msg: String
}
//notiCategoryNum이 잘못된 경우.
{ 
  success: false, 
  msg: '좋아요 생성 알림에 대한 요청이 아닙니다.' 
},
// 500 서버에러
{
  success: false, 
  msg: '서버 에러입니다. 서버 개발자에게 문의해주세요.'
}



  1. 답글 좋아요 알림 API
  • Request

URL : /api/notification/like/reply-comment/:category/:replyCmtNum ex) /api/notification/like/reply-comment/notice/1565
Method : POST
Headers : "Content-type" : "application/json; charset=utf-8"

{
  notiCategoryNum: Number
}
{
  notiCategoryNum: 11
}


Status

성공 : 201(Created) 실패 : 400(Bad Request)

Content-type : application/json; charset=utf-8

{
  success: Boolean,
  msg: String
}
{ 
  success: true, 
  msg: '좋아요 알림이 생성되었습니다.' 
}


{
  success: Boolean, 
  msg: String
}
//notiCategoryNum이 잘못된 경우.
{ 
  success: false, 
  msg: '좋아요 생성 알림에 대한 요청이 아닙니다.' 
},
// 500 서버에러
{
  success: false, 
  msg: '서버 에러입니다. 서버 개발자에게 문의해주세요.'
}