Skip to content

Commit

Permalink
[OING-339] feat: 확장된 가족 초대 링크 기능을 구현하기 위한 View API Spec 우선 구현 및 응답 모킹 (
Browse files Browse the repository at this point in the history
  • Loading branch information
Kwon770 authored Jun 9, 2024
1 parent 52e6297 commit 4a52409
Show file tree
Hide file tree
Showing 5 changed files with 127 additions and 10 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.oing.dto.response;

import io.swagger.v3.oas.annotations.media.Schema;

import java.util.List;

@Schema(description = "가족 초대 링크 응답")
public record FamilyInviteDeepLinkResponse(

@Schema(description = "가족 ID", example = "01HGW2N7EHJVJ4CJ999RRS2E97")
String familyId,

@Schema(description = "가족 명", example = "사랑하는 우리가족")
String familyName,

@Schema(description = "대표 가족구성원 프로필 이미지 URL", example = "https://asset.no5ing.kr/member/profile/ab3fde93ee")
List<String> familyMembersProfileImageUrls,

@Schema(description = "대표 가족구성원 외 구성원 수", example = "3")
Integer extraFamilyMembersCount,

@Schema(description = "전체 가족 구성원 수", example = "5")
Integer familyMembersCoun,

@Schema(description = "초대자 이름", example = "김철수")
String inviterName,

@Schema(description = "완료한 생존신고의 수", example = "3")
Integer survivalCount,

@Schema(description = "요청자가 이미 가족에 가입되어 있는지 여부 (토큰 첨부 시에만 반환, 미첨부 시 null 반환)", example = "true")
Boolean isRequesterJoinedFamily
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.oing.controller;

import com.oing.dto.response.FamilyInviteDeepLinkResponse;
import com.oing.restapi.DeepLinkApi;
import com.oing.restapi.FamilyInviteViewApi;
import com.oing.restapi.MeApi;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;

import java.util.List;

@Controller
@RequiredArgsConstructor
public class FamilyInviteViewController implements FamilyInviteViewApi {

private final DeepLinkApi deepLinkApi;
private final MeApi meApi;

@Override
public FamilyInviteDeepLinkResponse getFamilyInviteLinkDetails(String linkId, String loginMemberId) {

// TODO : 기능 구현할 때, 응답 모킹용 코드 삭제하고 아래 주석 풀기
boolean isRequesterJoinedFamily = false;
// MemberResponse me = meApi.getMe(loginMemberId);
// if (me.familyId() != null) {
// isRequesterJoinedFamily = true;
// }
//
if (loginMemberId != null) {
isRequesterJoinedFamily = true;
}



return new FamilyInviteDeepLinkResponse (
"01HGW2N7EHJVJ4CJ999RRS2E97",
"사랑하는 우리가족",
List.of("https://upload.wikimedia.org/wikipedia/en/thumb/6/63/Feels_good_man.jpg/200px-Feels_good_man.jpg", "https://upload.wikimedia.org/wikipedia/en/thumb/6/63/Feels_good_man.jpg/200px-Feels_good_man.jpg"),
3,
5,
"김철수",
3,
isRequesterJoinedFamily
);
}
}
35 changes: 35 additions & 0 deletions gateway/src/main/java/com/oing/restapi/FamilyInviteViewApi.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.oing.restapi;

import com.oing.dto.response.FamilyInviteDeepLinkResponse;
import com.oing.util.security.LoginMemberId;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Tag(name = "가족초대 페이지 뷰 기반 API", description = "웹뷰와 앱에서 가족초대와 관련된 페이지 기반으로 작성된 View API입니다.")
@RestController
@RequestMapping("/v1/view/family-invite")
public interface FamilyInviteViewApi {

@Operation(
summary = "가족 초대 링크 정보 조회 (딥링크 웹뷰 + 가족 가입 앱 겸용)",
description = """
linkId를 통해 해당 가족 초대 링크의 세부 정보들을 조회합니다.
토큰 미첨부 시 : 가족 초대 링크 상세 정보 조회 (딥링크 웹뷰 페이지용)
토큰 첨부 시 : 요청자 입장에서의 가족 초대 링크 정보 조회 (가족 가입 프로세스 앱 페이지용)"""
)
@GetMapping("/{linkId}")
FamilyInviteDeepLinkResponse getFamilyInviteLinkDetails(
@PathVariable
@Parameter(description = "링크 ID", example = "bef039df")
String linkId,

@LoginMemberId
@Parameter(hidden = true)
String loginMemberId
);
}
12 changes: 12 additions & 0 deletions gateway/src/main/java/com/oing/service/DeepLinkService.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,16 @@ public DeepLink getDeepLink(String linkId) {
.findById(linkId)
.orElseThrow(LinkNotValidException::new);
}

public DeepLink getFamilyInviteLink(String linkId) {
DeepLink deepLink = deepLinkRepository
.findById(linkId)
.orElseThrow(LinkNotValidException::new);

if (!deepLink.getType().equals(DeepLinkType.FAMILY_REGISTRATION)) {
throw new LinkNotValidException();
}

return deepLink;
}
}

0 comments on commit 4a52409

Please sign in to comment.