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;
@Override
public List<TopClickedTagResponse> getTopClickedTags() {
public List<TopClickedTagResponse> getTopClickedTags(Integer storeId) {
log.info("가장 많이 클릭된 상위 5개 태그 조회 시작");
List<Tag> topTags = tagRepositoryPort.findTopClickedTags();
List<Tag> topTags = tagRepositoryPort.findTopClickedTags(storeId);
AtomicInteger rank = new AtomicInteger(1);

View File

@ -16,7 +16,7 @@ public interface TagUseCase {
/**
* 가장 많이 클릭된 상위 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.Map;
import java.util.List;
import java.util.Map;
/**
/**
* 외부 플랫폼 포트 인터페이스
* 외부 플랫폼 연동 기능을 정의
*
* @author 하이오더 개발팀
* @version 1.0.0
*/
public interface ExternalPlatformPort {
public interface ExternalPlatformPort {
/**
* 네이버 리뷰 동기화
@ -105,4 +105,4 @@ public interface ExternalPlatformPort {
List<String> getConnectedPlatforms(Long storeId);
public List<Map<String, Object>> getTempReviews(Long storeId, String platform);
}
}

View File

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

View File

@ -29,11 +29,11 @@ public class TagController {
/**
* 가장 많이 클릭된 상위 5개 태그 조회 API
*/
@GetMapping("/top-clicked")
@GetMapping("/top-clicked/{storeId}")
@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));
}

View File

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

View File

@ -57,10 +57,10 @@ public class TagRepositoryAdapter implements TagRepositoryPort {
}
@Override
public List<Tag> findTopClickedTags() {
public List<Tag> findTopClickedTags(Integer storeId) {
log.info("가장 많이 클릭된 상위 5개 태그 조회");
List<TagEntity> entities = tagJpaRepository.findTop5ByOrderByClickCountDesc(
List<TagEntity> entities = tagJpaRepository.findTop5ByOrderByClickCountDesc(storeId,
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 io.lettuce.core.dynamic.annotation.Param;
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.Query;
import org.springframework.stereotype.Repository;
@ -55,6 +56,6 @@ public interface TagJpaRepository extends JpaRepository<TagEntity, Long> {
/**
* 클릭 기준 상위 5개 태그 조회
*/
@Query("SELECT t FROM TagEntity t WHERE t.isActive = true ORDER BY t.clickCount DESC")
List<TagEntity> findTop5ByOrderByClickCountDesc(PageRequest pageRequest);
@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> findTop5ByStoreIdOrderByClickCountDesc(@Param("storeId") Long storeId, Pageable pageable); List<TagEntity> findTop5ByOrderByClickCountDesc(Integer storeId, PageRequest pageRequest);
}

View File

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