Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import umc.kkijuk.server.member.service.MemberService;

import java.util.List;
import umc.kkijuk.server.tag.dto.TagUsageResponseDto;

@Tag(name="Search Career", description = "활동 조회 및 검색 관련 API")
@RestController
Expand Down Expand Up @@ -92,6 +93,20 @@ public CareerResponse<FindTagResponse.SearchTagResponse> findTag(
);
}

@GetMapping("/find/taglist/count")
@Operation(
summary = "활동 검색 - 태그 ( 사용량이 많은 태그 순으로 조회 )",
description = "특정 사용자의 활동 태그들을 사용량 순으로 조회합니다. ")
public CareerResponse<List<TagUsageResponseDto>> findTagWithCount(
@RequestHeader("Authorization") String token
) {
Member requestMember = loginUser.extractMemberId(token);
return CareerResponse.success(
CareerResponseMessage.CAREER_SEARCH_SUCCESS,
careerSearchService.findAllTagWithCount(requestMember)
);
}

@GetMapping("/find/tag")
@Operation(
summary = "활동 검색 - 태그 ( 선택한 태그에 대한 활동 기록 조회 )",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package umc.kkijuk.server.career.service;

import umc.kkijuk.server.career.controller.response.*;
import umc.kkijuk.server.career.controller.response.FindTagResponse.SearchTagResponse;
import umc.kkijuk.server.member.domain.Member;

import java.util.List;
import java.util.Map;
import umc.kkijuk.server.tag.dto.TagUsageResponseDto;

public interface CareerSearchService {
List<TimelineResponse> findCareerForTimeline(Member requestMember);
Expand All @@ -21,4 +23,6 @@ public interface CareerSearchService {
List<FindCareerResponse> findCareerWithKeyword(Member requestMember, String keyword, String sort);

List<CareerTitleResponse> findCareerForNewDetail(Member requestMember);

List<TagUsageResponseDto> findAllTagWithCount(Member requestMember);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import lombok.Builder;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import umc.kkijuk.server.career.controller.response.*;
import umc.kkijuk.server.career.controller.response.FindTagResponse.SearchTagResponse;
import umc.kkijuk.server.career.domain.*;
import umc.kkijuk.server.career.dto.converter.BaseCareerConverter;
import umc.kkijuk.server.career.repository.*;
Expand All @@ -16,6 +18,7 @@
import umc.kkijuk.server.detail.repository.CareerDetailRepository;
import umc.kkijuk.server.member.domain.Member;
import umc.kkijuk.server.tag.domain.Tag;
import umc.kkijuk.server.tag.dto.TagUsageResponseDto;
import umc.kkijuk.server.tag.repository.TagRepository;

import java.time.LocalDate;
Expand Down Expand Up @@ -334,6 +337,12 @@ public List<CareerTitleResponse> findCareerForNewDetail(Member requestMember) {
.collect(Collectors.toList());
}

@Override
public List<TagUsageResponseDto> findAllTagWithCount(Member requestMember) {
List<TagUsageResponseDto> tags = tagRepository.findTopPopularTagsByMember(requestMember.getId(), PageRequest.of(0, 10));
return tags;
}


//타임라인 쪽에서 데이터 구별 하기 위함
private CareerType resolveCareerType(BaseCareer career) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package umc.kkijuk.server.tag.dto;

import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public class TagUsageResponseDto {
private Long id;
private String name;
private long usageCount;

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package umc.kkijuk.server.tag.repository;

import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
Expand All @@ -8,6 +9,7 @@

import java.util.List;
import java.util.Optional;
import umc.kkijuk.server.tag.dto.TagUsageResponseDto;

public interface TagJpaRepository extends JpaRepository<Tag,Long> {
boolean existsByNameAndMemberId(String name, Long memberId);
Expand All @@ -18,4 +20,24 @@ public interface TagJpaRepository extends JpaRepository<Tag,Long> {
"ORDER BY CASE WHEN tag.name = :keyword THEN 0 ELSE 1 END, tag.name ASC")
List<Tag> findByKeywordAndMemberId(@Param("keyword") String keyword, @Param("memberId") Long memberId);
Optional<Tag> findById(Long Id);

@Query("""
select new umc.kkijuk.server.tag.dto.TagUsageResponseDto(
t.id, t.name, count(cdt.id)
)
from Tag t
left join CareerDetailTag cdt on cdt.tag = t
left join cdt.baseCareerDetail bcd
where t.memberId = :memberId
and (bcd is null or bcd.memberId = :memberId)
group by t.id, t.name
order by count(cdt.id) desc, t.name asc
""")
List<TagUsageResponseDto> findTopPopularTagsByMember(
@Param("memberId") Long memberId,
Pageable pageable
);



}
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package umc.kkijuk.server.tag.repository;

import org.springframework.data.domain.Pageable;
import umc.kkijuk.server.tag.domain.Tag;

import java.util.List;
import java.util.Optional;
import umc.kkijuk.server.tag.dto.TagUsageResponseDto;

public interface TagRepository {
boolean existsByNameAndMemberId(String tagName, Long memberId);
Expand All @@ -17,4 +19,5 @@ public interface TagRepository {
void delete(Tag deleteTag);

List<Tag> findByKeywordAndMemberId(String keyword, Long id);
List<TagUsageResponseDto> findTopPopularTagsByMember(Long memberId, Pageable pageable);
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package umc.kkijuk.server.tag.repository;

import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;
import umc.kkijuk.server.tag.domain.Tag;

import java.util.List;
import java.util.Optional;
import umc.kkijuk.server.tag.dto.TagUsageResponseDto;

@Repository
@RequiredArgsConstructor
Expand Down Expand Up @@ -41,4 +44,9 @@ public void delete(Tag deleteTag) {
public List<Tag> findByKeywordAndMemberId(String keyword, Long id) {
return tagJpaRepository.findByKeywordAndMemberId(keyword,id);
}

@Override
public List<TagUsageResponseDto> findTopPopularTagsByMember(Long memberId, Pageable pageable) {
return tagJpaRepository.findTopPopularTagsByMember(memberId, pageable);
}
}
Loading