Skip to content

Commit

Permalink
Merge pull request #278 from sharemindteam/feature/277-admin-search-word
Browse files Browse the repository at this point in the history
feat: 검색어 확인하는 어드민 기능 구현
  • Loading branch information
letskuku authored Dec 23, 2024
2 parents 2f73dd6 + abd5573 commit 919fbc0
Show file tree
Hide file tree
Showing 7 changed files with 80 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.example.sharemind.admin.dto.response.PaymentGetSettlementOngoingResponse;
import com.example.sharemind.admin.dto.response.PostGetByIdResponse;
import com.example.sharemind.admin.dto.response.PostGetUnpaidPrivateResponse;
import com.example.sharemind.admin.dto.response.SearchWordGetResponse;
import com.example.sharemind.counselor.dto.response.CounselorGetProfileResponse;

import com.example.sharemind.sms.dto.response.SmsGetResponse;
Expand Down Expand Up @@ -54,4 +55,6 @@ public interface AdminService {
Boolean updateShutdown(Boolean shutdown);

Boolean getShutdown();

List<SearchWordGetResponse> getSearchWords();
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.example.sharemind.admin.dto.response.PaymentGetSettlementOngoingResponse;
import com.example.sharemind.admin.dto.response.PostGetByIdResponse;
import com.example.sharemind.admin.dto.response.PostGetUnpaidPrivateResponse;
import com.example.sharemind.admin.dto.response.SearchWordGetResponse;
import com.example.sharemind.chat.application.ChatService;
import com.example.sharemind.chat.content.ChatStatus;
import com.example.sharemind.chat.domain.Chat;
Expand Down Expand Up @@ -40,6 +41,8 @@
import com.example.sharemind.post.domain.Post;
import com.example.sharemind.post.exception.PostErrorCode;
import com.example.sharemind.post.exception.PostException;
import com.example.sharemind.searchWord.application.SearchWordService;
import com.example.sharemind.searchWord.domain.SearchWord;
import com.example.sharemind.sms.application.SmsService;
import com.example.sharemind.sms.dto.response.SmsGetResponse;
import lombok.RequiredArgsConstructor;
Expand All @@ -66,6 +69,7 @@ public class AdminServiceImpl implements AdminService {
private final PostService postService;
private final EmailService emailService;
private final SmsService smsService;
private final SearchWordService searchWordService;
private final RedisTemplate<String, Boolean> redisTemplate;

@Override
Expand Down Expand Up @@ -336,4 +340,10 @@ public Boolean getShutdown() {
ValueOperations<String, Boolean> valueOperations = redisTemplate.opsForValue();
return valueOperations.get(SHUT_DOWN_KEY);
}

@Override
public List<SearchWordGetResponse> getSearchWords() {
List<SearchWord> searchWords = searchWordService.getSearchWordsOrderByCount();
return searchWords.stream().map(SearchWordGetResponse::of).toList();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.example.sharemind.admin.dto.response;

import com.example.sharemind.searchWord.domain.SearchWord;
import io.swagger.v3.oas.annotations.media.Schema;
import java.time.LocalDateTime;
import lombok.Builder;
import lombok.Getter;

@Getter
public class SearchWordGetResponse {

@Schema(description = "검색어 아이디")
private final Long wordId;

@Schema(description = "검색어")
private final String word;

@Schema(description = "검색 횟수")
private final Long count;

@Schema(description = "최초 검색 일시")
private final LocalDateTime createdAt;

@Schema(description = "마지막 검색 일시")
private final LocalDateTime updatedAt;

@Builder
public SearchWordGetResponse(Long wordId, String word, Long count, LocalDateTime createdAt,
LocalDateTime updatedAt) {
this.wordId = wordId;
this.word = word;
this.count = count;
this.createdAt = createdAt;
this.updatedAt = updatedAt;
}

public static SearchWordGetResponse of(SearchWord searchWord) {
return SearchWordGetResponse.builder()
.wordId(searchWord.getWordId())
.word(searchWord.getWord())
.count(searchWord.getCount())
.createdAt(searchWord.getCreatedAt())
.updatedAt(searchWord.getUpdatedAt())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.example.sharemind.admin.dto.response.PaymentGetSettlementOngoingResponse;
import com.example.sharemind.admin.dto.response.PostGetByIdResponse;
import com.example.sharemind.admin.dto.response.PostGetUnpaidPrivateResponse;
import com.example.sharemind.admin.dto.response.SearchWordGetResponse;
import com.example.sharemind.counselor.dto.response.CounselorGetProfileResponse;
import com.example.sharemind.global.exception.CustomExceptionResponse;
import com.example.sharemind.sms.dto.response.SmsGetResponse;
Expand Down Expand Up @@ -335,4 +336,13 @@ public ResponseEntity<Boolean> updateShutdown(@RequestParam Boolean shutdown) {
public ResponseEntity<Boolean> getShutdown() {
return ResponseEntity.ok(adminService.getShutdown());
}

@Operation(summary = "검색어 내림차순 조회", description = "검색어 내림차순 조회")
@ApiResponses({
@ApiResponse(responseCode = "200", description = "조회 성공")
})
@GetMapping("/search-words")
public ResponseEntity<List<SearchWordGetResponse>> getSearchWords() {
return ResponseEntity.ok(adminService.getSearchWords());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.example.sharemind.counselor.dto.response.CounselorGetListResponse;
import com.example.sharemind.post.dto.response.PostGetPublicListResponse;
import com.example.sharemind.searchWord.domain.SearchWord;
import com.example.sharemind.searchWord.dto.request.SearchWordDeleteRequest;
import com.example.sharemind.searchWord.dto.request.SearchWordCounselorFindRequest;

Expand All @@ -27,4 +28,6 @@ List<PostGetPublicListResponse> storeAllSearchWordAndGetPosts(String sortType,

List<PostGetPublicListResponse> storeSearchWordAndGetPosts(Long customerId, String sortType,
SearchWordPostFindRequest searchWordPostFindRequest);

List<SearchWord> getSearchWordsOrderByCount();
}
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,11 @@ public List<PostGetPublicListResponse> storeSearchWordAndGetPosts(Long customerI
.toList();
}

@Override
public List<SearchWord> getSearchWordsOrderByCount() {
return searchWordRepository.findAllByOrderByCountDesc();
}

@Transactional
@Override
public void storeSearchWordInDB(String word) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package com.example.sharemind.searchWord.repository;

import com.example.sharemind.searchWord.domain.SearchWord;
import java.util.List;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface SearchWordRepository extends JpaRepository<SearchWord, Long> {
Optional<SearchWord> findByWordAndIsActivatedTrue(String word);

List<SearchWord> findAllByOrderByCountDesc();
}

0 comments on commit 919fbc0

Please sign in to comment.