Skip to content

Commit

Permalink
Merge pull request #324 from TEAM-LIAISON/develop
Browse files Browse the repository at this point in the history
deploy : 1.0 release prod server
  • Loading branch information
oznchex authored Jul 23, 2024
2 parents 24cfc95 + a819a8f commit 1d90ce1
Show file tree
Hide file tree
Showing 24 changed files with 384 additions and 1,039 deletions.
1,156 changes: 195 additions & 961 deletions src/docs/asciidoc/docs.html

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ public enum ExceptionCode {
NOT_ALLOW_P2T_MATCHING(10015, "나의 팀 소개서에 매칭 요청을 보낼 수 없습니다,"),

NOT_ALLOW_P2P_WISH(10016, "나의 내 이력서를 찜할 수 없습니다,"),
NOT_ALLOW_P2T_WISH(10017, "나의 팀 소개서를에 찜할 수 없습니다,"),
NOT_ALLOW_P2T_WISH(10017, "나의 팀 소개서를 찜할 수 없습니다,"),

// 팀 소개서 관련 항목
NOT_FOUND_TEAM_PROFILE_BY_MEMBER_ID(1005, "사용자의 ID에 해당하는 팀 소개서 정보가 존재하지 않습니다."),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import liaison.linkit.global.exception.BadRequestException;
import liaison.linkit.login.infrastructure.BearerAuthorizationExtractor;
import liaison.linkit.login.infrastructure.JwtProvider;
import liaison.linkit.member.domain.repository.MemberRepository;
import liaison.linkit.member.domain.type.ProfileType;
import liaison.linkit.member.domain.type.TeamProfileType;
import liaison.linkit.profile.domain.Profile;
Expand All @@ -21,15 +20,14 @@
import static liaison.linkit.global.exception.ExceptionCode.NOT_FOUND_PROFILE_BY_MEMBER_ID;
import static liaison.linkit.global.exception.ExceptionCode.NOT_FOUND_TEAM_PROFILE_BY_MEMBER_ID;

@RequiredArgsConstructor

@Component
@RequiredArgsConstructor
@Slf4j
public class ProfileBrowseAccessInterceptor implements HandlerInterceptor {

private final JwtProvider jwtProvider;
private final BearerAuthorizationExtractor extractor;
private final MemberRepository memberRepository;

private final ProfileRepository profileRepository;
private final TeamProfileRepository teamProfileRepository;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public class MiniProfileResponse {
private final List<String> myKeywordNames;
private final String memberName;
private final List<String> jobRoleNames;
private final Boolean isPrivateSaved;

public MiniProfileResponse(final String memberName, final List<String> jobRoleNames) {
this.id = null;
Expand All @@ -28,6 +29,7 @@ public MiniProfileResponse(final String memberName, final List<String> jobRoleNa
this.myKeywordNames = null;
this.memberName = memberName;
this.jobRoleNames = jobRoleNames;
this.isPrivateSaved = false;
}

public static MiniProfileResponse personalMiniProfile(
Expand All @@ -47,7 +49,32 @@ public static MiniProfileResponse personalMiniProfile(
miniProfile.isActivate(),
myKeywordNames,
memberName,
jobRoleNames
jobRoleNames,
false
);
}


public static MiniProfileResponse personalBrowseMiniProfile(
final MiniProfile miniProfile,
final List<MiniProfileKeyword> miniProfileKeywordList,
final String memberName,
final List<String> jobRoleNames,
final boolean isPrivateSaved
) {
List<String> myKeywordNames = miniProfileKeywordList.stream()
.map(MiniProfileKeyword::getMyKeywordNames) // 올바른 메서드 참조 사용
.collect(Collectors.toList());

return new MiniProfileResponse(
miniProfile.getId(),
miniProfile.getProfileTitle(),
miniProfile.getMiniProfileImg(),
miniProfile.isActivate(),
myKeywordNames,
memberName,
jobRoleNames,
isPrivateSaved
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import liaison.linkit.auth.Auth;
import liaison.linkit.auth.MemberOnly;
import liaison.linkit.auth.domain.Accessor;
import liaison.linkit.profile.browse.CheckBrowseToPrivateProfileAccess;
import liaison.linkit.profile.dto.response.ProfileIntroductionResponse;
import liaison.linkit.profile.dto.response.antecedents.AntecedentsResponse;
import liaison.linkit.profile.dto.response.attach.AttachResponse;
Expand All @@ -17,6 +16,7 @@
import liaison.linkit.profile.dto.response.profileRegion.ProfileRegionResponse;
import liaison.linkit.profile.dto.response.teamBuilding.ProfileTeamBuildingFieldResponse;
import liaison.linkit.profile.service.*;
import liaison.linkit.search.dto.response.browseAfterLogin.BrowseMiniProfileResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
Expand Down Expand Up @@ -50,7 +50,6 @@ public class BrowsePrivateProfileController {
// 타겟 이력서 열람 컨트롤러
@GetMapping("/browse/private/profile/{miniProfileId}")
@MemberOnly
@CheckBrowseToPrivateProfileAccess
public ResponseEntity<?> getBrowsePrivateProfile(
@Auth final Accessor accessor,
@PathVariable final Long miniProfileId
Expand All @@ -69,7 +68,7 @@ public ResponseEntity<?> getBrowsePrivateProfile(
final ProfileIsValueResponse profileIsValueResponse = browsePrivateProfileService.getProfileIsValue(browseTargetPrivateProfileId);
log.info("profileIsValueResponse={}", profileIsValueResponse);

final MiniProfileResponse miniProfileResponse = getMiniProfileResponse(browseTargetPrivateProfileId, profileIsValueResponse.isMiniProfile());
final MiniProfileResponse miniProfileResponse = getBrowseMiniProfileResponse(accessor.getMemberId(), browseTargetPrivateProfileId, profileIsValueResponse.isMiniProfile());
log.info("miniProfileResponse={}", miniProfileResponse);

final CompletionResponse completionResponse = getCompletionResponse(browseTargetPrivateProfileId);
Expand Down Expand Up @@ -223,15 +222,16 @@ private CompletionResponse getCompletionResponse(
}

// 회원 미니 프로필
private MiniProfileResponse getMiniProfileResponse(
private MiniProfileResponse getBrowseMiniProfileResponse(
final Long memberId,
final Long browseTargetPrivateProfileId,
final boolean isMiniProfile
) {
// 미니 프로필이 존재하는 경우
if (isMiniProfile) {
miniProfileService.validateMiniProfileByTargetProfileId(browseTargetPrivateProfileId);
log.info("targetPrivateProfileId={}가 유효합니다. in browsePrivateProfileController", browseTargetPrivateProfileId);
return miniProfileService.getBrowserPersonalMiniProfile(browseTargetPrivateProfileId);
return miniProfileService.getBrowsePersonalMiniProfile(memberId, browseTargetPrivateProfileId);
} else {
final String memberName = miniProfileService.getMemberName(browseTargetPrivateProfileId);
final List<String> jobRoleNames = miniProfileService.getJobRoleNames(browseTargetPrivateProfileId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import liaison.linkit.profile.dto.response.onBoarding.JobAndSkillResponse;
import liaison.linkit.profile.dto.response.profileRegion.ProfileRegionResponse;
import liaison.linkit.profile.dto.response.teamBuilding.ProfileTeamBuildingFieldResponse;
import liaison.linkit.search.dto.response.browseAfterLogin.BrowseMiniProfileResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import liaison.linkit.profile.domain.role.ProfileJobRole;
import liaison.linkit.profile.dto.request.miniProfile.MiniProfileRequest;
import liaison.linkit.profile.dto.response.miniProfile.MiniProfileResponse;
import liaison.linkit.wish.domain.repository.PrivateWishRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationEventPublisher;
Expand All @@ -44,6 +45,8 @@ public class MiniProfileService {
private final S3Uploader s3Uploader;
private final ApplicationEventPublisher publisher;

private final PrivateWishRepository privateWishRepository;

// 모든 "내 이력서" 서비스 계층에 필요한 profile 조회 메서드
private Profile getProfile(final Long memberId) {
return profileRepository.findByMemberId(memberId)
Expand Down Expand Up @@ -194,7 +197,7 @@ public MiniProfileResponse getPersonalMiniProfile(final Long memberId) {
}

@Transactional(readOnly = true)
public MiniProfileResponse getBrowserPersonalMiniProfile(final Long profileId) {
public MiniProfileResponse getBrowsePersonalMiniProfile(final Long memberId, final Long profileId) {
final Profile profile = profileRepository.findById(profileId)
.orElseThrow(() -> new BadRequestException(NOT_FOUND_PROFILE_BY_ID));

Expand All @@ -211,7 +214,9 @@ public MiniProfileResponse getBrowserPersonalMiniProfile(final Long profileId) {
final List<String> jobRoleNames = getJobRoleNames(profile.getMember().getId());
log.info("대상 객체의 희망 직무 및 역할을 조회하였습니다.");

return MiniProfileResponse.personalMiniProfile(miniProfile, miniProfileKeywordList, memberBasicInform.getMemberName(), jobRoleNames);
final boolean isPrivateSaved = privateWishRepository.findByMemberIdAndProfileId(memberId, miniProfile.getProfile().getId());

return MiniProfileResponse.personalBrowseMiniProfile(miniProfile, miniProfileKeywordList, memberBasicInform.getMemberName(), jobRoleNames, isPrivateSaved);
}

private List<ProfileJobRole> getProfileJobRoleList(final Long profileId) {
Expand Down Expand Up @@ -275,4 +280,9 @@ public List<String> getJobRoleNames(final Long memberId) {
.map(JobRole::getJobRoleName)
.toList();
}

public boolean getIsPrivateSaved(final Long memberId, final Long profileId) {
final MiniProfile miniProfile = getMiniProfile(profileId);
return privateWishRepository.findByMemberIdAndProfileId(memberId, miniProfile.getProfile().getId());
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package liaison.linkit.search.dto.response.browseAfterLogin;

import liaison.linkit.team.dto.response.announcement.TeamMemberAnnouncementResponse;
import liaison.linkit.team.dto.response.miniProfile.TeamMiniProfileResponse;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
Expand All @@ -8,5 +9,5 @@
@RequiredArgsConstructor
public class SearchBrowseTeamProfileResponse {
private final TeamMiniProfileResponse teamMiniProfileResponse;
private final BrowseTeamMemberAnnouncementResponse browseTeamMemberAnnouncementResponse;
private final TeamMemberAnnouncementResponse teamMemberAnnouncementResponse;
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
import liaison.linkit.profile.dto.response.miniProfile.MiniProfileResponse;
import liaison.linkit.search.dto.response.SearchTeamProfileResponse;
import liaison.linkit.search.dto.response.browseAfterLogin.BrowseMiniProfileResponse;
import liaison.linkit.search.dto.response.browseAfterLogin.BrowseTeamMemberAnnouncementResponse;
import liaison.linkit.search.dto.response.browseAfterLogin.SearchBrowseTeamProfileResponse;
import liaison.linkit.team.domain.announcement.TeamMemberAnnouncement;
import liaison.linkit.team.domain.announcement.TeamMemberAnnouncementJobRole;
Expand Down Expand Up @@ -217,6 +216,7 @@ public Page<SearchBrowseTeamProfileResponse> findTeamMemberAnnouncementsWithTeam
activityTagCount,
pageable
);

return teamMemberAnnouncements.map(teamMemberAnnouncement -> convertToSearchTeamProfileResponseAfterLogin(teamMemberAnnouncement, memberId));
}

Expand Down Expand Up @@ -249,7 +249,7 @@ private SearchBrowseTeamProfileResponse convertToSearchTeamProfileResponseAfterL

return new SearchBrowseTeamProfileResponse(
TeamMiniProfileResponse.personalTeamMiniProfile(teamMiniProfile, teamMiniProfileKeyword),
BrowseTeamMemberAnnouncementResponse.of(teamMemberAnnouncement, teamName, teamMemberAnnouncementJobRole, teamMemberAnnouncementSkillList, isTeamSaved)
TeamMemberAnnouncementResponse.afterLogin(teamMemberAnnouncement, teamName, teamMemberAnnouncementJobRole, teamMemberAnnouncementSkillList, isTeamSaved)
);
}

Expand Down Expand Up @@ -321,7 +321,8 @@ private MiniProfileResponse convertToMiniProfileResponse(final MiniProfile miniP
miniProfile.isActivate(),
myKeywordNames,
memberName,
jobRoleNames
jobRoleNames,
false
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public class TeamMemberAnnouncementResponse {
private final String mainBusiness;
private final List<String> skillNames;
private final String applicationProcess;
private final Boolean isTeamSaved;

public static TeamMemberAnnouncementResponse of(
final TeamMemberAnnouncement teamMemberAnnouncement,
Expand All @@ -46,8 +47,38 @@ public static TeamMemberAnnouncementResponse of(
jobRoleName,
teamMemberAnnouncement.getMainBusiness(),
skillNames,
teamMemberAnnouncement.getApplicationProcess()
teamMemberAnnouncement.getApplicationProcess(),
false
);
}

public static TeamMemberAnnouncementResponse afterLogin(
final TeamMemberAnnouncement teamMemberAnnouncement,
final String teamName,
final TeamMemberAnnouncementJobRole teamMemberAnnouncementJobRole,
final List<TeamMemberAnnouncementSkill> teamMemberAnnouncementSkillList,
final Boolean isTeamSaved
) {
final JobRole jobRole = teamMemberAnnouncementJobRole.getJobRole();

final String jobRoleName = jobRole.getJobRoleName();

final List<Skill> skillList = teamMemberAnnouncementSkillList.stream()
.map(TeamMemberAnnouncementSkill::getSkill)
.toList();

final List<String> skillNames = skillList.stream()
.map(Skill::getSkillName)
.toList();

return new TeamMemberAnnouncementResponse(
teamMemberAnnouncement.getId(),
teamName,
jobRoleName,
teamMemberAnnouncement.getMainBusiness(),
skillNames,
teamMemberAnnouncement.getApplicationProcess(),
isTeamSaved
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
import liaison.linkit.auth.Auth;
import liaison.linkit.auth.MemberOnly;
import liaison.linkit.auth.domain.Accessor;
import liaison.linkit.profile.browse.CheckBrowseToTeamProfileAccess;
import liaison.linkit.team.dto.response.*;
import liaison.linkit.team.dto.response.TeamMemberIntroductionResponse;
import liaison.linkit.team.dto.response.TeamProfileIntroductionResponse;
import liaison.linkit.team.dto.response.TeamProfileIsValueResponse;
import liaison.linkit.team.dto.response.TeamProfileTeamBuildingFieldResponse;
import liaison.linkit.team.dto.response.activity.ActivityResponse;
import liaison.linkit.team.dto.response.announcement.TeamMemberAnnouncementResponse;
import liaison.linkit.team.dto.response.attach.TeamAttachResponse;
Expand Down Expand Up @@ -53,7 +55,6 @@ public class BrowseTeamProfileController {

@GetMapping("/browse/team/profile/{teamMiniProfileId}")
@MemberOnly
@CheckBrowseToTeamProfileAccess
public ResponseEntity<?> getBrowseTeamProfile(
@Auth final Accessor accessor,
@PathVariable final Long teamMiniProfileId
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@

public interface TeamWishRepository extends JpaRepository<TeamWish, Long> {

@Query("SELECT tw FROM TeamWish tw WHERE tw.member.id = : memberId")
@Query("SELECT tw FROM TeamWish tw WHERE tw.member.id = :memberId")
List<TeamWish> findAllByMemberId(@Param("memberId") final Long memberId);

@Modifying
@Transactional
@Query("DELETE FROM TeamWish tw WHERE tw.member.id = :memberId AND tw.teamMemberAnnouncement.id = :teamMemberAnnouncementId")
void deleteByMemberIdAndTeamMemberAnnouncementId(@Param("memberId") final Long memberId, @Param("teamMemberAnnouncementId") final Long teamMemberAnnouncementId);

@Query("SELECT tw FROM TeamWish tw WHERE tw.teamMemberAnnouncement.id = : teamMemberAnnouncementId")
@Query("SELECT tw FROM TeamWish tw WHERE tw.teamMemberAnnouncement.id = :teamMemberAnnouncementId")
Optional<TeamWish> findByTeamMemberAnnouncementId(@Param("teamMemberAnnouncementId") final Long teamMemberAnnouncementId);

@Query("SELECT COUNT(tw) > 0 FROM TeamWish tw WHERE tw.teamMemberAnnouncement.id = :teamMemberAnnouncementId AND tw.member.id = :memberId")
Expand All @@ -36,4 +36,9 @@ public interface TeamWishRepository extends JpaRepository<TeamWish, Long> {
void deleteByMemberId(@Param("memberId") final Long memberId);

boolean existsByMemberId(@Param("memberId") final Long memberId);

@Query("SELECT tw FROM TeamWish tw WHERE tw.teamMemberAnnouncement.id = :teamMemberAnnouncementId AND tw.member.id = :memberId")
Optional<TeamWish> findByMemberIdAndTeamMemberAnnouncementId(final Long teamMemberAnnouncementId, final Long memberId);


}
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package liaison.linkit.wish.dto.response;

import liaison.linkit.search.dto.response.browseAfterLogin.BrowseTeamMemberAnnouncementResponse;
import liaison.linkit.team.dto.response.announcement.TeamMemberAnnouncementResponse;
import liaison.linkit.team.dto.response.miniProfile.TeamMiniProfileResponse;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public class WishTeamProfileResponse {
// 팀 찜하기 응답
private final TeamMiniProfileResponse teamMiniProfileResponse;
private final BrowseTeamMemberAnnouncementResponse browseTeamMemberAnnouncementResponse;
private final TeamMemberAnnouncementResponse teamMemberAnnouncementResponse;
}
Loading

0 comments on commit 1d90ce1

Please sign in to comment.