-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
63a0638
commit 3d7a5db
Showing
45 changed files
with
331 additions
and
4 deletions.
There are no files selected for viewing
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added
BIN
+9.76 KB
...er/build/classes/java/main/com/example/hackathon/content/application/ContentService.class
Binary file not shown.
Binary file added
BIN
+2.73 KB
.../build/classes/java/main/com/example/hackathon/content/controller/ContentController.class
Binary file not shown.
Binary file added
BIN
+2.29 KB
...ld/classes/java/main/com/example/hackathon/content/dto/ContentDto$ContentDtoBuilder.class
Binary file not shown.
Binary file added
BIN
+2.37 KB
server/build/classes/java/main/com/example/hackathon/content/dto/ContentDto.class
Binary file not shown.
Binary file added
BIN
+1.85 KB
...xample/hackathon/content/dto/InterestContentResponse$InterestContentResponseBuilder.class
Binary file not shown.
Binary file added
BIN
+2.13 KB
...r/build/classes/java/main/com/example/hackathon/content/dto/InterestContentResponse.class
Binary file not shown.
Binary file added
BIN
+1.83 KB
.../com/example/hackathon/content/dto/ScrapContentResponse$ScrapContentResponseBuilder.class
Binary file not shown.
Binary file added
BIN
+2.12 KB
server/build/classes/java/main/com/example/hackathon/content/dto/ScrapContentResponse.class
Binary file not shown.
Binary file added
BIN
+2.22 KB
...ava/main/com/example/hackathon/content/dto/SimpleContentDto$SimpleContentDtoBuilder.class
Binary file not shown.
Binary file added
BIN
+2.29 KB
server/build/classes/java/main/com/example/hackathon/content/dto/SimpleContentDto.class
Binary file not shown.
Binary file modified
BIN
-1.23 KB
(37%)
server/build/classes/java/main/com/example/hackathon/dataset/controller/DataController.class
Binary file not shown.
Binary file modified
BIN
+209 Bytes
(110%)
server/build/classes/java/main/com/example/hackathon/dataset/domain/DataField.class
Binary file not shown.
Binary file added
BIN
+1.59 KB
server/build/classes/java/main/com/example/hackathon/dataset/domain/DataFieldUser.class
Binary file not shown.
Binary file modified
BIN
+851 Bytes
(280%)
...uild/classes/java/main/com/example/hackathon/dataset/repository/DataFieldRepository.class
Binary file not shown.
Binary file added
BIN
+1.54 KB
.../classes/java/main/com/example/hackathon/dataset/repository/DataFieldUserRepository.class
Binary file not shown.
Binary file modified
BIN
+481 Bytes
(230%)
server/build/classes/java/main/com/example/hackathon/dataset/repository/DataRepository.class
Binary file not shown.
Binary file modified
BIN
+2.19 KB
(150%)
server/build/classes/java/main/com/example/hackathon/tmdb/application/TmdbService.class
Binary file not shown.
Binary file modified
BIN
-301 Bytes
(70%)
server/build/classes/java/main/com/example/hackathon/tmdb/controller/TmdbController.class
Binary file not shown.
Binary file modified
BIN
-1 Byte
(100%)
server/build/classes/java/main/com/example/hackathon/user/model/User.class
Binary file not shown.
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
Binary file added
BIN
+2.08 KB
server/build/tmp/compileJava/compileTransaction/stash-dir/ContentController.class.uniqueId0
Binary file not shown.
Binary file added
BIN
+7.7 KB
server/build/tmp/compileJava/compileTransaction/stash-dir/ContentService.class.uniqueId2
Binary file not shown.
Binary file added
BIN
+1.28 KB
...uild/tmp/compileJava/compileTransaction/stash-dir/DataFieldUserRepository.class.uniqueId1
Binary file not shown.
Binary file removed
BIN
-1.24 KB
server/build/tmp/compileJava/compileTransaction/stash-dir/TmdbController.class.uniqueId0
Binary file not shown.
Binary file removed
BIN
-2.71 KB
server/build/tmp/compileJava/compileTransaction/stash-dir/TmdbService.class.uniqueId1
Binary file not shown.
Binary file not shown.
122 changes: 122 additions & 0 deletions
122
server/src/main/java/com/example/hackathon/content/application/ContentService.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,122 @@ | ||
package com.example.hackathon.content.application; | ||
|
||
import com.example.hackathon.content.dto.ContentDto; | ||
import com.example.hackathon.content.dto.InterestContentResponse; | ||
import com.example.hackathon.content.dto.ScrapContentResponse; | ||
import com.example.hackathon.content.dto.SimpleContentDto; | ||
import com.example.hackathon.dataset.domain.Data; | ||
import com.example.hackathon.dataset.domain.DataField; | ||
import com.example.hackathon.dataset.domain.DataFieldUser; | ||
import com.example.hackathon.dataset.repository.DataFieldRepository; | ||
import com.example.hackathon.dataset.repository.DataFieldUserRepository; | ||
import com.example.hackathon.dataset.repository.DataRepository; | ||
import com.example.hackathon.exception.BadRequestException; | ||
import com.example.hackathon.user.model.User; | ||
import com.example.hackathon.user.repository.UserRepository; | ||
import lombok.AllArgsConstructor; | ||
import org.springframework.data.domain.PageRequest; | ||
import org.springframework.data.domain.Pageable; | ||
import org.springframework.data.domain.Sort; | ||
import org.springframework.stereotype.Service; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
import java.util.Optional; | ||
|
||
@AllArgsConstructor | ||
@Service | ||
public class ContentService { | ||
private final UserRepository userRepository; | ||
private final DataRepository dataRepository; | ||
private final DataFieldRepository dataFieldRepository; | ||
private final DataFieldUserRepository dataFieldUserRepository; | ||
public InterestContentResponse getInterestContentResponse(Long userId, Integer pagesize){ | ||
User user = userRepository.findById(userId) | ||
.orElseThrow(() -> new BadRequestException("유저 토큰 값을 다시 확인해주세요")); | ||
Optional<DataFieldUser> dataFieldUser = dataFieldUserRepository.findByUserId(userId); | ||
if(dataFieldUser.isPresent()){ | ||
DataField dataField = dataFieldUser.get().getDataField(); | ||
if(dataField.getGenre().equals("") || dataField.getGenre().equals("No genres found")){ | ||
Pageable pageable = PageRequest.of(0, pagesize); | ||
List<DataField> dataFields = dataFieldRepository.findDataFieldRandom(pageable); | ||
List<ContentDto> contentDtos = getContentDto(dataFields, user); | ||
return new InterestContentResponse(contentDtos); | ||
} | ||
else{ | ||
String[] parts = dataField.getGenre().split(","); | ||
Pageable pageable = PageRequest.of(0, pagesize); | ||
if (parts.length > 0) { | ||
String firstPart = parts[0]; | ||
List<DataField> dataFields = dataFieldRepository.findDataFieldByGenre(firstPart, pageable); | ||
List<ContentDto> contentDtos = getContentDto(dataFields, user); | ||
return new InterestContentResponse(contentDtos); | ||
} else { | ||
List<DataField> dataFields = dataFieldRepository.findDataFieldByGenre(dataField.getGenre(), pageable); | ||
List<ContentDto> contentDtos = getContentDto(dataFields, user); | ||
return new InterestContentResponse(contentDtos); | ||
} | ||
|
||
} | ||
} | ||
else{ | ||
Pageable pageable = PageRequest.of(0, pagesize); | ||
List<DataField> dataFields = dataFieldRepository.findDataFieldRandom(pageable); | ||
List<ContentDto> contentDtos = getContentDto(dataFields, user); | ||
return new InterestContentResponse(contentDtos); | ||
} | ||
} | ||
|
||
public ScrapContentResponse getScrapContentResponse(Long userId){ | ||
User user = userRepository.findById(userId) | ||
.orElseThrow(() -> new BadRequestException("유저 토큰 값을 다시 확인해주세요")); | ||
List<DataFieldUser> dataFieldUser = dataFieldUserRepository.findListByUserId(userId); | ||
if(dataFieldUser==null){ | ||
return new ScrapContentResponse(null); | ||
} | ||
else{ | ||
List<SimpleContentDto> simpleContentDtos = getSimpleContentDto(dataFieldUser, user); | ||
return new ScrapContentResponse(simpleContentDtos); | ||
} | ||
} | ||
|
||
public List<SimpleContentDto> getSimpleContentDto(List<DataFieldUser> dataFieldUsers, User user){ | ||
List<SimpleContentDto> simpleContentDtos = new ArrayList<>(); | ||
for(DataFieldUser dataFieldUser : dataFieldUsers){ | ||
DataField dataField = dataFieldUser.getDataField(); | ||
SimpleContentDto simpleContentDto = SimpleContentDto.builder() | ||
.contentId(dataField.getId()) | ||
.contentTitle(dataField.getTitleName()) | ||
.contentImage(dataField.getImage()) | ||
.isScraped(isScraped(user, dataField)) | ||
.build(); | ||
simpleContentDtos.add(simpleContentDto); | ||
} | ||
return simpleContentDtos; | ||
} | ||
|
||
public List<ContentDto> getContentDto(List<DataField> dataFields, User user){ | ||
List<ContentDto> contentDtos = new ArrayList<>(); | ||
for(DataField dataField : dataFields){ | ||
Data data = dataRepository.findByTitle(dataField.getTitleName()) | ||
.orElseThrow(() -> new BadRequestException("작품 정보를 다시 확인해주세요")); | ||
String[] parts = data.getAddress().split(" "); | ||
String result = parts[0] + " " + parts[1]; | ||
ContentDto contentDto = ContentDto.builder() | ||
.contentId(dataField.getId()) | ||
.contentTitle(dataField.getTitleName()) | ||
.contentImage(dataField.getImage()) | ||
.isScraped(isScraped(user, dataField)) | ||
.address(result) | ||
.build(); | ||
contentDtos.add(contentDto); | ||
} | ||
return contentDtos; | ||
} | ||
public Boolean isScraped(User user, DataField dataField){ | ||
Optional<DataFieldUser> dataFieldUser = dataFieldUserRepository.findByUserAndDataField(user, dataField); | ||
if (dataFieldUser.isEmpty()) | ||
return false; | ||
else | ||
return true; | ||
} | ||
} |
33 changes: 33 additions & 0 deletions
33
server/src/main/java/com/example/hackathon/content/controller/ContentController.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,33 @@ | ||
package com.example.hackathon.content.controller; | ||
|
||
import com.example.hackathon.content.application.ContentService; | ||
import com.example.hackathon.content.dto.InterestContentResponse; | ||
import com.example.hackathon.content.dto.ScrapContentResponse; | ||
import io.swagger.v3.oas.annotations.Operation; | ||
import lombok.AllArgsConstructor; | ||
import org.springframework.http.HttpStatus; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RequestParam; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
@RestController | ||
@AllArgsConstructor | ||
@RequestMapping("/api/content") | ||
public class ContentController { | ||
private final ContentService contentService; | ||
@GetMapping("/interest") | ||
@Operation(summary = "내가 관심 있어 하는 장르의 작품 리스트 + 간편 주소를 가져옵니다. " ,description = "userId와 가져올 컨텐츠 갯수를 파라미터로 넣어주세요") | ||
public ResponseEntity<InterestContentResponse> getInterestContentResponse(@RequestParam Long userId, @RequestParam Integer pagesize) { | ||
InterestContentResponse interestContentResponse = contentService.getInterestContentResponse(userId, pagesize); | ||
return new ResponseEntity<>(interestContentResponse, HttpStatus.OK); | ||
} | ||
|
||
@GetMapping("/scrap") | ||
@Operation(summary = "내가 찜한 작품 리스트를 가져옵니다. " ,description = "userId를 파라미터로 넣어주세요") | ||
public ResponseEntity<ScrapContentResponse> getScrapContentResponse(@RequestParam Long userId) { | ||
ScrapContentResponse scrapContentResponse = contentService.getScrapContentResponse(userId); | ||
return new ResponseEntity<>(scrapContentResponse, HttpStatus.OK); | ||
} | ||
} |
13 changes: 13 additions & 0 deletions
13
server/src/main/java/com/example/hackathon/content/dto/ContentDto.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,13 @@ | ||
package com.example.hackathon.content.dto; | ||
|
||
import lombok.Builder; | ||
|
||
@Builder | ||
public record ContentDto( | ||
Long contentId, | ||
String contentTitle, | ||
String contentImage, | ||
Boolean isScraped, | ||
String address | ||
) { | ||
} |
11 changes: 11 additions & 0 deletions
11
server/src/main/java/com/example/hackathon/content/dto/InterestContentResponse.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,11 @@ | ||
package com.example.hackathon.content.dto; | ||
|
||
import lombok.Builder; | ||
|
||
import java.util.List; | ||
|
||
@Builder | ||
public record InterestContentResponse( | ||
List<ContentDto> contentDtos | ||
) { | ||
} |
10 changes: 10 additions & 0 deletions
10
server/src/main/java/com/example/hackathon/content/dto/ScrapContentResponse.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,10 @@ | ||
package com.example.hackathon.content.dto; | ||
|
||
import lombok.Builder; | ||
|
||
import java.util.List; | ||
@Builder | ||
public record ScrapContentResponse( | ||
List<SimpleContentDto> simpleContentDtos | ||
) { | ||
} |
12 changes: 12 additions & 0 deletions
12
server/src/main/java/com/example/hackathon/content/dto/SimpleContentDto.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,12 @@ | ||
package com.example.hackathon.content.dto; | ||
|
||
import lombok.Builder; | ||
|
||
@Builder | ||
public record SimpleContentDto( | ||
Long contentId, | ||
String contentTitle, | ||
String contentImage, | ||
Boolean isScraped | ||
) { | ||
} |
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
22 changes: 22 additions & 0 deletions
22
server/src/main/java/com/example/hackathon/dataset/domain/DataFieldUser.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,22 @@ | ||
package com.example.hackathon.dataset.domain; | ||
|
||
import com.example.hackathon.user.model.User; | ||
import jakarta.persistence.*; | ||
import lombok.AccessLevel; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import lombok.Setter; | ||
|
||
@Getter | ||
@Setter | ||
@Entity | ||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
public class DataFieldUser { | ||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
private Long id; | ||
@ManyToOne(fetch = FetchType.LAZY) | ||
private User user; | ||
@ManyToOne(fetch = FetchType.LAZY) | ||
private DataField dataField; | ||
} |
9 changes: 9 additions & 0 deletions
9
server/src/main/java/com/example/hackathon/dataset/repository/DataFieldRepository.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,9 +1,18 @@ | ||
package com.example.hackathon.dataset.repository; | ||
|
||
import com.example.hackathon.dataset.domain.DataField; | ||
import org.springframework.data.domain.Pageable; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
import org.springframework.data.jpa.repository.Query; | ||
import org.springframework.data.repository.query.Param; | ||
import org.springframework.stereotype.Repository; | ||
|
||
import java.util.List; | ||
|
||
@Repository | ||
public interface DataFieldRepository extends JpaRepository<DataField, Long> { | ||
@Query("SELECT df FROM DataField df ORDER BY RAND()") | ||
List<DataField> findDataFieldRandom(Pageable pageable); | ||
@Query("SELECT df FROM DataField df WHERE df.genre LIKE %:genre% ORDER BY RAND()") | ||
List<DataField> findDataFieldByGenre(@Param("genre")String genre , Pageable pageable); | ||
} |
23 changes: 23 additions & 0 deletions
23
server/src/main/java/com/example/hackathon/dataset/repository/DataFieldUserRepository.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,23 @@ | ||
package com.example.hackathon.dataset.repository; | ||
|
||
import com.example.hackathon.dataset.domain.DataField; | ||
import com.example.hackathon.dataset.domain.DataFieldUser; | ||
import com.example.hackathon.user.model.User; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
import org.springframework.data.jpa.repository.Query; | ||
import org.springframework.data.repository.query.Param; | ||
import org.springframework.stereotype.Repository; | ||
|
||
import java.util.List; | ||
import java.util.Optional; | ||
|
||
@Repository | ||
public interface DataFieldUserRepository extends JpaRepository<DataFieldUser, Long> { | ||
@Query("SELECT dfu FROM DataFieldUser dfu WHERE dfu.user.id=:userId ORDER BY RAND() limit 1") | ||
Optional<DataFieldUser> findByUserId(@Param("userId")Long userId); | ||
|
||
@Query("SELECT dfu FROM DataFieldUser dfu WHERE dfu.user.id=:userId") | ||
List<DataFieldUser> findListByUserId(@Param("userId")Long userId); | ||
|
||
Optional<DataFieldUser>findByUserAndDataField(User user, DataField dataField); | ||
} |
7 changes: 7 additions & 0 deletions
7
server/src/main/java/com/example/hackathon/dataset/repository/DataRepository.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,7 +1,14 @@ | ||
package com.example.hackathon.dataset.repository; | ||
|
||
import com.example.hackathon.dataset.domain.Data; | ||
import com.example.hackathon.dataset.domain.DataFieldUser; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
import org.springframework.data.jpa.repository.Query; | ||
import org.springframework.data.repository.query.Param; | ||
|
||
import java.util.Optional; | ||
|
||
public interface DataRepository extends JpaRepository<Data, Long> { | ||
@Query("SELECT d FROM Data d WHERE d.titleName=:title ORDER BY RAND() limit 1") | ||
Optional<Data> findByTitle(@Param("title")String title); | ||
} |
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
Oops, something went wrong.