-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Query DSL 적용 * 수정사항 업로드 * 수정사항 업로드2 * 수정사항 업로드3 * 수정사항 업로드3 * 수정사항 업로드3 * 수정사항 업로드3 * 수정사항 업로드3 * 수정사항 업로드3
- Loading branch information
1 parent
a622abd
commit 0bd8e38
Showing
28 changed files
with
599 additions
and
123 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,6 +10,7 @@ public enum ErrorCode { | |
E400, | ||
E403, | ||
E404, | ||
E500 | ||
E500, | ||
E5404 | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
9 changes: 4 additions & 5 deletions
9
core/core-api/src/main/java/com/nerd/favorite18/core/api/ranking/business/RankBusiness.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 27 additions & 0 deletions
27
...re-api/src/main/java/com/nerd/favorite18/core/api/ranking/business/RankRedisBusiness.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package com.nerd.favorite18.core.api.ranking.business; | ||
|
||
import com.nerd.favorite18.core.api._common.annotation.Business; | ||
import com.nerd.favorite18.core.api.ranking.dto.RankRedisDto; | ||
import com.nerd.favorite18.core.api.ranking.dto.request.RankAddRequest; | ||
import com.nerd.favorite18.core.api.ranking.service.RankRedisService; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.transaction.annotation.Transactional; | ||
|
||
import java.util.List; | ||
|
||
@RequiredArgsConstructor | ||
@Business | ||
public class RankRedisBusiness { | ||
|
||
private final RankRedisService rankRedisService; | ||
|
||
@Transactional(readOnly = true) | ||
public List<RankRedisDto> getTop100Songs() { | ||
return rankRedisService.getTop100Songs(); | ||
} | ||
|
||
@Transactional | ||
public void clickSong(Long songId, RankAddRequest rankAddRequest) { | ||
rankRedisService.clickSong(songId, rankAddRequest); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
38 changes: 18 additions & 20 deletions
38
...pi/src/main/java/com/nerd/favorite18/core/api/ranking/controller/RankRadisController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,35 @@ | ||
package com.nerd.favorite18.core.api.ranking.controller; | ||
|
||
import com.nerd.favorite18.core.api.ranking.service.RedisRankService; | ||
import com.nerd.favorite18.core.api._common.support.response.ApiResponse; | ||
import com.nerd.favorite18.core.api.ranking.business.RankRedisBusiness; | ||
import com.nerd.favorite18.core.api.ranking.dto.RankRedisDto; | ||
import com.nerd.favorite18.core.api.ranking.dto.request.RankAddRequest; | ||
import com.nerd.favorite18.core.api.song.business.SongBusiness; | ||
import lombok.RequiredArgsConstructor; | ||
import lombok.extern.slf4j.Slf4j; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.*; | ||
|
||
import java.util.HashMap; | ||
import java.util.List; | ||
|
||
@Slf4j | ||
@RequiredArgsConstructor | ||
@RequestMapping("/api/v1/songs/rank") | ||
@RequestMapping("/api/v1/rank/redis") | ||
@RestController | ||
public class RankRadisController { | ||
|
||
private final RedisRankService redisRankService; | ||
private final RankRedisBusiness rankRedisBusiness; | ||
private final SongBusiness songBusiness; | ||
|
||
@GetMapping("/redis/rank/{songId}") | ||
public String getSongCount(@PathVariable Long songId) { | ||
return redisRankService.getSongCounts(songId); | ||
/** 1~100위 노래ID 조회 */ | ||
@GetMapping() | ||
public List<RankRedisDto> getTop100Songs() { | ||
return rankRedisBusiness.getTop100Songs(); | ||
} | ||
|
||
@PostMapping("/redis/rank") | ||
public void setSongCount(@RequestBody HashMap<String, String> body) { | ||
Long songId = Long.valueOf(body.get("songId").toString()); | ||
String searchCnt = body.get("searchCount").toString(); | ||
redisRankService.setSongCounts(songId, searchCnt); | ||
} | ||
|
||
@PostMapping("/redis/rank/increment/{songId}") | ||
public ResponseEntity<String> incrementSongCount(@PathVariable Long songId) { | ||
// 여기서는 간단히 조회수를 1 증가시킨다고 가정 | ||
redisRankService.incrementSongCount(songId); | ||
return ResponseEntity.ok("Song count incremented for songId: " + songId); | ||
/** 노래 상세정보 클릭 시 */ | ||
@PostMapping("/{songId}") | ||
public ApiResponse<Void> clickSong(@PathVariable Long songId, @RequestBody RankAddRequest rankAddRequest){ | ||
rankRedisBusiness.clickSong(songId, rankAddRequest); | ||
return ApiResponse.success(); | ||
} | ||
} |
39 changes: 22 additions & 17 deletions
39
.../core-api/src/main/java/com/nerd/favorite18/core/api/ranking/converter/RankConverter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,28 +1,33 @@ | ||
package com.nerd.favorite18.core.api.ranking.converter; | ||
|
||
import com.nerd.favorite18.core.api._common.annotation.Converter; | ||
import com.nerd.favorite18.core.api.ranking.dto.RankDto; | ||
import com.nerd.favorite18.core.api.ranking.dto.request.RankAddRequest; | ||
import com.nerd.favorite18.core.api.ranking.dto.response.RankResponse; | ||
import com.nerd.favorite18.core.api.song.dto.response.SongCodeResponse; | ||
import com.nerd.favorite18.storage.db.core.ranking.dto.RankQueryDto; | ||
import com.nerd.favorite18.storage.db.core.ranking.entity.Rank; | ||
import com.nerd.favorite18.storage.db.core.ranking.projection.RankListProjection; | ||
import com.nerd.favorite18.storage.db.core.song.dto.SongCodeQueryDto; | ||
import com.nerd.favorite18.storage.db.core.song.dto.SongQueryDto; | ||
import lombok.RequiredArgsConstructor; | ||
import lombok.extern.slf4j.Slf4j; | ||
|
||
import java.util.List; | ||
import java.util.stream.Collectors; | ||
|
||
@Slf4j | ||
@Converter | ||
@RequiredArgsConstructor | ||
public class RankConverter { | ||
public RankDto toDto(Rank entity) { | ||
return RankDto.of( | ||
entity.getId(), | ||
entity.getRankSong(), | ||
entity.getRankDate(), | ||
entity.getRank(), | ||
entity.getSearchCnt(), | ||
entity.getCreatedAt(), | ||
entity.getUpdatedAt() | ||
); | ||
} | ||
public List<RankDto> toDto(List<Rank> entities) { | ||
return entities.stream() | ||
.map(this::toDto) | ||
.collect(Collectors.toList()); | ||
public RankResponse toRankResponse(RankQueryDto rankQueryDto) { | ||
return RankResponse.builder() | ||
.rankId(rankQueryDto.getId()) | ||
.title(rankQueryDto.getTitle()) | ||
.artist(rankQueryDto.getArtist()) | ||
.albumUrl(rankQueryDto.getAlbumUrl()) | ||
.rankDate(rankQueryDto.getRankDate()) | ||
.ranking(rankQueryDto.getRanking()) | ||
.searchCnt(rankQueryDto.getSearchCnt()) | ||
.songCode(rankQueryDto.getSongCode()) | ||
.build(); | ||
} | ||
} |
44 changes: 44 additions & 0 deletions
44
...-api/src/main/java/com/nerd/favorite18/core/api/ranking/converter/RankRedisConverter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
package com.nerd.favorite18.core.api.ranking.converter; | ||
|
||
import com.fasterxml.jackson.databind.ObjectMapper; | ||
import com.nerd.favorite18.core.api._common.annotation.Converter; | ||
import com.nerd.favorite18.core.api._common.support.error.CoreApiException; | ||
import com.nerd.favorite18.core.api._common.support.error.ErrorType; | ||
import com.nerd.favorite18.core.api.ranking.dto.RankRedisDto; | ||
import com.nerd.favorite18.core.api.ranking.dto.request.RankAddRequest; | ||
import lombok.RequiredArgsConstructor; | ||
import lombok.extern.slf4j.Slf4j; | ||
import org.apache.commons.lang3.ObjectUtils; | ||
|
||
import java.io.IOException; | ||
|
||
@Slf4j | ||
@Converter | ||
@RequiredArgsConstructor | ||
public class RankRedisConverter { | ||
private final ObjectMapper objectMapper; | ||
|
||
public RankRedisDto toDto(RankAddRequest request) { | ||
if (ObjectUtils.isEmpty(request)) { | ||
throw new CoreApiException(ErrorType.BAD_REQUEST); | ||
} | ||
|
||
return RankRedisDto.of( | ||
request.getSongId(), | ||
request.getAlbumUrl(), | ||
request.getTitle(), | ||
request.getArtist(), | ||
request.getRankDate(), | ||
request.getRanking(), | ||
request.getSearchCnt() | ||
); | ||
} | ||
|
||
public RankAddRequest toRequest(String json) { | ||
try { | ||
return objectMapper.readValue(json, RankAddRequest.class); | ||
} catch (IOException e) { | ||
throw new CoreApiException(ErrorType.BAD_REQUEST, e); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
42 changes: 42 additions & 0 deletions
42
core/core-api/src/main/java/com/nerd/favorite18/core/api/ranking/dto/RankRedisDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package com.nerd.favorite18.core.api.ranking.dto; | ||
|
||
import com.nerd.favorite18.storage.db.core.song.entity.SongCode; | ||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
|
||
import java.time.LocalDate; | ||
import java.util.List; | ||
|
||
@Getter | ||
@NoArgsConstructor | ||
@AllArgsConstructor | ||
public class RankRedisDto { | ||
private Long songId; | ||
private String albumUrl; | ||
private String title; | ||
private String artist; | ||
private LocalDate rankDate; | ||
private String ranking; | ||
private Long searchCnt; | ||
|
||
public static RankRedisDto of( | ||
Long songId, | ||
String albumUrl, | ||
String title, | ||
String artist, | ||
LocalDate rankDate, | ||
String ranking, | ||
Long searchCnt | ||
) { | ||
return new RankRedisDto( | ||
songId, | ||
albumUrl, | ||
title, | ||
artist, | ||
rankDate, | ||
ranking, | ||
searchCnt | ||
); | ||
} | ||
} |
14 changes: 12 additions & 2 deletions
14
...re-api/src/main/java/com/nerd/favorite18/core/api/ranking/dto/request/RankAddRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,24 @@ | ||
package com.nerd.favorite18.core.api.ranking.dto.request; | ||
|
||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||
import com.fasterxml.jackson.annotation.JsonProperty; | ||
import com.nerd.favorite18.storage.db.core.song.entity.SongCode; | ||
import lombok.Getter; | ||
import lombok.Setter; | ||
|
||
import java.time.LocalDate; | ||
import java.time.LocalDateTime; | ||
import java.util.List; | ||
|
||
@Getter | ||
@Setter | ||
@JsonIgnoreProperties(ignoreUnknown = true) | ||
public class RankAddRequest { | ||
private Long songId; | ||
private String albumUrl; | ||
private String title; | ||
private String artist; | ||
private LocalDate rankDate; | ||
private String ranking; | ||
private Long searchCnt; | ||
private String machineType; | ||
|
||
} |
Oops, something went wrong.