diff --git a/src/main/java/com/ajou/prcoding/myweb/controller/MyWebController.java b/src/main/java/com/ajou/prcoding/myweb/controller/MyWebController.java index 9f230ce44a535199639a7fdc9424737ddc3fa363..8a8bdc46a0664677b4baf7d95679ba0b0141dbb5 100644 --- a/src/main/java/com/ajou/prcoding/myweb/controller/MyWebController.java +++ b/src/main/java/com/ajou/prcoding/myweb/controller/MyWebController.java @@ -16,6 +16,7 @@ import com.ajou.prcoding.myweb.dto.FavoriteMusicRequestDto; import com.ajou.prcoding.myweb.dto.MusicList; import com.ajou.prcoding.myweb.entity.FavoriteMusic; import com.ajou.prcoding.myweb.repository.FavoriteRepository; +import com.ajou.prcoding.myweb.service.MusicService; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.transaction.Transactional; @@ -23,62 +24,22 @@ import jakarta.transaction.Transactional; @RestController public class MyWebController { @Autowired - FavoriteRepository albumsRepo; - - RestTemplate restTemplate = new RestTemplate(); - - @GetMapping(value="/musicSearch/{term}") - public MusicList musicSearchByPath(@PathVariable String term) { - try { - String response = restTemplate.getForObject("https://itunes.apple.com/search?term={term}&entity=album",String.class, "aespa"); - ObjectMapper mapper = new ObjectMapper(); - MusicList list = mapper.readValue(response, MusicList.class); - System.out.println(list.getResultCount()); - return list; - } catch(IOException e) { - System.out.println(e.toString()); - } - return null; + MusicService service; + @GetMapping(value = "/musicSearch/{name}") + public MusicList musicSearchByPath(@PathVariable String name){ + return service.searchMusic(name); } @GetMapping(value="/musicSearch") - public MusicList musicSearchByParam(@RequestParam String term){ - RestTemplate restTemplate = new RestTemplate(); - try { - String response = restTemplate.getForObject("https://itunes.apple.com/search?term={term}&entity=album",String.class, "aespa"); - ObjectMapper mapper = new ObjectMapper(); - MusicList list = mapper.readValue(response, MusicList.class); - System.out.println(list.getResultCount()); - return list; - } catch(IOException e) { - System.out.println(e.toString()); - } - return null; + public MusicList musicSearchByParam(@RequestParam(value="term") String name) { + return service.searchMusic(name); } - //Get Favorite Music list from Database - @GetMapping(value="/likes") + + @GetMapping(value="/likes") //Get Favorite Music list from Database public List<FavoriteMusic> getLikes() { - try { - return albumsRepo.findAll(); - } catch (Exception e) { - System.out.println(e.toString()); - return null; - } + return service.getLikes(); } @PostMapping(value="/likes") - @Transactional - public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) - { - FavoriteMusic music = albumsRepo.save(favorite.toEntity()); - if(music != null) { - return 1; - } - else { - return 0; - } -} - - - - + public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) { + return service.saveFavorite(favorite); + } } - diff --git a/src/main/java/com/ajou/prcoding/myweb/dto/FavoriteMusicRequestDto.java b/src/main/java/com/ajou/prcoding/myweb/dto/FavoriteMusicRequestDto.java index 3d10a91af7faf2378cf4f7a768ca7a95bbf1d9c0..2a2590e813715646718b5eaed0502392ffcaa5db 100644 --- a/src/main/java/com/ajou/prcoding/myweb/dto/FavoriteMusicRequestDto.java +++ b/src/main/java/com/ajou/prcoding/myweb/dto/FavoriteMusicRequestDto.java @@ -11,12 +11,21 @@ import lombok.ToString; @ToString public class FavoriteMusicRequestDto { private String collectionId; - /// …. 중간 생략 …. + private String collectionType; + private String artistId; + private String artistName; + private String artistViewUrl; + private String collectionName; private String collectionViewUrl; - public FavoriteMusic toEntity(){ + public FavoriteMusic toEntity() { FavoriteMusic music = new FavoriteMusic(); music.setCollectionId(this.collectionId); - /// …. 중간 생략 …. 여러분이 이 부분을 채워넣어야 합니다. + music.setCollectionType(this.collectionType); + music.setArtistId(this.artistId); + music.setArtistName(this.artistName); + music.setArtistViewUrl(this.artistViewUrl); + music.setCollectionName(this.collectionName); + music.setCollectionViewUrl(this.collectionViewUrl); return music; -} -} + } +} \ No newline at end of file diff --git a/src/main/java/com/ajou/prcoding/myweb/service/MusicService.java b/src/main/java/com/ajou/prcoding/myweb/service/MusicService.java new file mode 100644 index 0000000000000000000000000000000000000000..59c90c182e935888d5d355f3db22468b2e5a4c6e --- /dev/null +++ b/src/main/java/com/ajou/prcoding/myweb/service/MusicService.java @@ -0,0 +1,79 @@ +package com.ajou.prcoding.myweb.service; + +import java.io.IOException; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.client.RestTemplate; + +import com.ajou.prcoding.myweb.dto.FavoriteMusicRequestDto; +import com.ajou.prcoding.myweb.dto.MusicList; +import com.ajou.prcoding.myweb.entity.FavoriteMusic; +import com.ajou.prcoding.myweb.repository.FavoriteRepository; +import com.fasterxml.jackson.databind.ObjectMapper; + +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; + +@Service +@Transactional +@RequiredArgsConstructor +public class MusicService { + RestTemplate restTemplate = new RestTemplate(); + + public MusicList musicSearchByPath(@PathVariable String term) { + try { + String response = restTemplate.getForObject("https://itunes.apple.com/search?term={term}&entity=album", String.class, term); + ObjectMapper mapper = new ObjectMapper(); + MusicList list = mapper.readValue(response, MusicList.class); + System.out.println(list.getResultCount()); + return list; + } catch(IOException e) { + System.out.println(e.toString()); + } + return null; + } + + public MusicList searchMusic(@RequestParam String term) { + try { + String response = restTemplate.getForObject("https://itunes.apple.com/search?term={term}&entity=album", String.class, term); + ObjectMapper mapper = new ObjectMapper(); + MusicList list = mapper.readValue(response, MusicList.class); + System.out.println(list.getResultCount()); + return list; + } catch(IOException e) { + System.out.println(e.toString()); + } + return null; + } + + @Autowired + FavoriteRepository albumsRepo; + + public List<FavoriteMusic> getLikes() { + try { + return albumsRepo.findAll(); + } catch (Exception e) { + System.out.println(e.toString()); + return null; + } + } + + @Transactional + public int saveFavorite(@RequestBody FavoriteMusicRequestDto favorite) + { + FavoriteMusic music = albumsRepo.save(favorite.toEntity()); + if(music != null) { + return 1; + } + else { + return 0; + } + } +} \ No newline at end of file