tag update

This commit is contained in:
youbeen 2025-06-17 16:54:38 +09:00
parent d53604d24a
commit dafaeba5d8
11 changed files with 109 additions and 105 deletions

BIN
dump.rdb

Binary file not shown.

Binary file not shown.

View File

@ -29,10 +29,10 @@ public class TagService implements TagUseCase {
private final TagRepositoryPort tagRepositoryPort; private final TagRepositoryPort tagRepositoryPort;
@Override @Override
public List<TopClickedTagResponse> getTopClickedTags() { public List<TopClickedTagResponse> getTopClickedTags(Integer storeId) {
log.info("가장 많이 클릭된 상위 5개 태그 조회 시작"); log.info("가장 많이 클릭된 상위 5개 태그 조회 시작");
List<Tag> topTags = tagRepositoryPort.findTopClickedTags(); List<Tag> topTags = tagRepositoryPort.findTopClickedTags(storeId);
AtomicInteger rank = new AtomicInteger(1); AtomicInteger rank = new AtomicInteger(1);

View File

@ -16,7 +16,7 @@ public interface TagUseCase {
/** /**
* 가장 많이 클릭된 상위 5개 태그 조회 * 가장 많이 클릭된 상위 5개 태그 조회
*/ */
List<TopClickedTagResponse> getTopClickedTags(); List<TopClickedTagResponse> getTopClickedTags(Integer storeId);
/** /**
* 태그 클릭 이벤트 처리 * 태그 클릭 이벤트 처리

View File

@ -1,16 +1,16 @@
package com.ktds.hi.store.biz.usecase.out; package com.ktds.hi.store.biz.usecase.out;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* 외부 플랫폼 포트 인터페이스 * 외부 플랫폼 포트 인터페이스
* 외부 플랫폼 연동 기능을 정의 * 외부 플랫폼 연동 기능을 정의
* *
* @author 하이오더 개발팀 * @author 하이오더 개발팀
* @version 1.0.0 * @version 1.0.0
*/ */
public interface ExternalPlatformPort { public interface ExternalPlatformPort {
/** /**
* 네이버 리뷰 동기화 * 네이버 리뷰 동기화
@ -105,4 +105,4 @@ public interface ExternalPlatformPort {
List<String> getConnectedPlatforms(Long storeId); List<String> getConnectedPlatforms(Long storeId);
public List<Map<String, Object>> getTempReviews(Long storeId, String platform); public List<Map<String, Object>> getTempReviews(Long storeId, String platform);
} }

View File

@ -33,7 +33,7 @@ public interface TagRepositoryPort {
/** /**
* 가장 많이 클릭된 상위 5개 태그 조회 * 가장 많이 클릭된 상위 5개 태그 조회
*/ */
List<Tag> findTopClickedTags(); List<Tag> findTopClickedTags(Integer storeId);
/** /**
* 태그 클릭 증가 * 태그 클릭 증가

View File

@ -29,11 +29,11 @@ public class TagController {
/** /**
* 가장 많이 클릭된 상위 5개 태그 조회 API * 가장 많이 클릭된 상위 5개 태그 조회 API
*/ */
@GetMapping("/top-clicked") @GetMapping("/top-clicked/{storeId}")
@Operation(summary = "인기 태그 조회", description = "가장 많이 클릭된 상위 5개 태그를 조회합니다.") @Operation(summary = "인기 태그 조회", description = "가장 많이 클릭된 상위 5개 태그를 조회합니다.")
public ResponseEntity<ApiResponse<List<TopClickedTagResponse>>> getTopClickedTags() { public ResponseEntity<ApiResponse<List<TopClickedTagResponse>>> getTopClickedTags(Integer storeId) {
List<TopClickedTagResponse> topTags = tagUseCase.getTopClickedTags(); List<TopClickedTagResponse> topTags = tagUseCase.getTopClickedTags(storeId);
return ResponseEntity.ok(ApiResponse.success(topTags)); return ResponseEntity.ok(ApiResponse.success(topTags));
} }

View File

@ -67,6 +67,8 @@ public class ExternalPlatformAdapter implements ExternalPlatformPort {
return 0; return 0;
} }
} }
//*****//
@Override @Override
public int syncKakaoReviews(Long storeId, String externalStoreId) { public int syncKakaoReviews(Long storeId, String externalStoreId) {
log.info("카카오 리뷰 동기화 시작: storeId={}, externalStoreId={}", storeId, externalStoreId); log.info("카카오 리뷰 동기화 시작: storeId={}, externalStoreId={}", storeId, externalStoreId);

View File

@ -57,10 +57,10 @@ public class TagRepositoryAdapter implements TagRepositoryPort {
} }
@Override @Override
public List<Tag> findTopClickedTags() { public List<Tag> findTopClickedTags(Integer storeId) {
log.info("가장 많이 클릭된 상위 5개 태그 조회"); log.info("가장 많이 클릭된 상위 5개 태그 조회");
List<TagEntity> entities = tagJpaRepository.findTop5ByOrderByClickCountDesc( List<TagEntity> entities = tagJpaRepository.findTop5ByOrderByClickCountDesc(storeId,
PageRequest.of(0, 5) PageRequest.of(0, 5)
); );

View File

@ -4,6 +4,7 @@ import com.ktds.hi.store.domain.TagCategory;
import com.ktds.hi.store.infra.gateway.entity.TagEntity; import com.ktds.hi.store.infra.gateway.entity.TagEntity;
import io.lettuce.core.dynamic.annotation.Param; import io.lettuce.core.dynamic.annotation.Param;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@ -55,6 +56,6 @@ public interface TagJpaRepository extends JpaRepository<TagEntity, Long> {
/** /**
* 클릭 기준 상위 5개 태그 조회 * 클릭 기준 상위 5개 태그 조회
*/ */
@Query("SELECT t FROM TagEntity t WHERE t.isActive = true ORDER BY t.clickCount DESC") @Query("SELECT t FROM TagEntity t JOIN t.stores s WHERE s.id = :storeId AND t.isActive = true ORDER BY t.clickCount DESC")
List<TagEntity> findTop5ByOrderByClickCountDesc(PageRequest pageRequest); List<TagEntity> findTop5ByStoreIdOrderByClickCountDesc(@Param("storeId") Long storeId, Pageable pageable); List<TagEntity> findTop5ByOrderByClickCountDesc(Integer storeId, PageRequest pageRequest);
} }

View File

@ -24,6 +24,7 @@ spring:
eventhub: eventhub:
connection-string: ${AZURE_EVENTHUB_CONNECTION_STRING} connection-string: ${AZURE_EVENTHUB_CONNECTION_STRING}
data: data:
redis: redis:
host: ${REDIS_HOST:localhost} host: ${REDIS_HOST:localhost}