Skip to content

Commit

Permalink
Merge pull request #10 from oven-2023/feature/work
Browse files Browse the repository at this point in the history
Feature/work
  • Loading branch information
haen-su authored Oct 17, 2023
2 parents 969f623 + f94cbce commit 1e8d1ee
Show file tree
Hide file tree
Showing 10 changed files with 64 additions and 17 deletions.
4 changes: 2 additions & 2 deletions src/main/java/com/oven/server/api/user/domain/RatingWork.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ public class RatingWork extends BaseEntity {
@JoinColumn(name = "work_id")
private Work work;

private int rating; // 1~5점
private Float rating; // 1~5점

public RatingWork(User user, Work work, int rating) {
public RatingWork(User user, Work work, Float rating) {
this.user = user;
this.work = work;
this.rating = rating;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ public class JwtTokenResponse {

@Schema(description = "액세스 토큰")
private String accessToken;
@Schema(description = "리프레쉬 토큰", example = "오븐좋아")
@Schema(description = "리프레쉬 토큰")
private String refreshToken;

@Builder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.oven.server.api.user.dto.response.AccessTokenResponse;
import com.oven.server.api.user.dto.response.IdCheckResponse;
import com.oven.server.api.user.dto.response.JwtTokenResponse;
import com.oven.server.api.user.dto.response.LoginSuccessResponse;
import com.oven.server.api.user.repository.RefreshTokenRepository;
import com.oven.server.api.user.repository.UserRepository;
import com.oven.server.common.exception.BaseException;
Expand Down Expand Up @@ -54,7 +55,7 @@ public void join(JoinRequest joinRequest) throws BaseException {

}

public JwtTokenResponse login(LoginRequest loginRequest) {
public LoginSuccessResponse login(LoginRequest loginRequest) {

User user = userRepository.findByUsername(loginRequest.getUsername())
.orElseThrow(() -> new BaseException(ResponseCode.ID_NOT_FOUND));
Expand All @@ -63,7 +64,11 @@ public JwtTokenResponse login(LoginRequest loginRequest) {
throw new BaseException(ResponseCode.PASSWORD_NOT_MATCH);
}

return jwtTokenProvider.createJwtToken(user.getUsername());
return LoginSuccessResponse.builder()
.jwtTokenResponse(jwtTokenProvider.createJwtToken(user.getUsername()))
.nickname(user.getNickname())
.build();

}

public void logout(User user, RefreshTokenRequest refreshTokenRequest) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.oven.server.api.user.domain.User;
import com.oven.server.api.work.dto.request.PostRatingDto;
import com.oven.server.api.work.dto.response.PostLikeResponse;
import com.oven.server.api.work.dto.response.WorkDetailDto;
import com.oven.server.api.work.service.GetWorkDetailService;
import com.oven.server.api.work.service.PostInterestingWorkService;
Expand All @@ -26,16 +27,16 @@ public class WorkController {

@Operation(summary = "작품 상세 조회")
@GetMapping("/{workId}")
public Response<WorkDetailDto> getRecommendWorkList(@PathVariable("workId") Long workId) {
WorkDetailDto workDetailDto = getWorkDetailService.getWorkDetail(workId);
public Response<WorkDetailDto> getRecommendWorkList(@AuthenticationPrincipal User user, @PathVariable("workId") Long workId) {
WorkDetailDto workDetailDto = getWorkDetailService.getWorkDetail(user, workId);
return Response.success(ResponseCode.SUCCESS_OK, workDetailDto);
}

@Operation(summary = "작품 좋아요")
@PostMapping("/{workId}/like")
public Response<Void> postInterestingWork(@AuthenticationPrincipal User user, @PathVariable("workId") Long workId) {
postInterestingWorkService.postInterestingWork(user, workId);
return Response.success(ResponseCode.SUCCESS_CREATED);
public Response<PostLikeResponse> postInterestingWork(@AuthenticationPrincipal User user, @PathVariable("workId") Long workId) {
PostLikeResponse response = postInterestingWorkService.postLike(user, workId);
return Response.success(ResponseCode.SUCCESS_CREATED, response);
}

@Operation(summary = "작품 평점 추가")
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/oven/server/api/work/domain/Work.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public class Work extends BaseEntity {

private int year;

private String rating; // 관람연령등급
private String ageRating; // 관람연령등급

private String director;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@
public class PostRatingDto {

@Schema(description = "평점", example = "3")
private Integer rating;
private Float rating;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.oven.server.api.work.dto.response;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Getter;

@Getter
public class PostLikeResponse {

@Schema(description = "좋아요 여부")
private boolean liked;

@Builder
public PostLikeResponse(boolean liked) {
this.liked = liked;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class WorkDetailDto {
private int year;

@Schema(description = "관람연령등급", example = "15세이상관람가")
private String rating;
private String ageRating;

@Schema(description = "감독", example = "조의석")
private String director;
Expand All @@ -43,4 +43,10 @@ public class WorkDetailDto {
@Schema(description = "장르", example = "SF, 액션, 드라마, 스릴러, 미스터리")
private String genre;

@Schema(description = "좋아요 여부")
private boolean liked;

@Schema(description = "유저 평점(null이면 평가 안한 것)")
private Float rating;

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package com.oven.server.api.work.service;

import com.oven.server.api.user.domain.InterestingWork;
import com.oven.server.api.user.domain.User;
import com.oven.server.api.user.repository.InterestingWorkRepository;
import com.oven.server.api.user.repository.RatingWorkRepository;
import com.oven.server.api.work.domain.Work;
import com.oven.server.api.work.dto.response.ProviderDto;
import com.oven.server.api.work.dto.response.WorkDetailDto;
Expand All @@ -18,18 +22,19 @@ public class GetWorkDetailService {

private final WorkRepository workRepository;
private final WorkProviderRepository workProviderRepository;
private final InterestingWorkRepository interestingWorkRepository;
private final RatingWorkRepository ratingWorkRepository;

public WorkDetailDto getWorkDetail(Long workId) throws BaseException {
public WorkDetailDto getWorkDetail(User user, Long workId) throws BaseException {

Work findWork = workRepository.findById(workId).orElseThrow(() -> new BaseException(ResponseCode.WORK_NOT_FOUND));

WorkDetailDto workDetailDto = WorkDetailDto.builder()
.titleKr(findWork.getTitleKr())
.titleEng(findWork.getTitleEng())
.poster(findWork.getPoster())
.actor(findWork.getActor())
.summary(findWork.getSummary())
.rating(findWork.getRating())
.ageRating(findWork.getAgeRating())
.year(findWork.getYear())
.director(findWork.getDirector())
.providerList(workProviderRepository.findWorkProviderByWorkId(workId)
Expand All @@ -43,9 +48,13 @@ public WorkDetailDto getWorkDetail(Long workId) throws BaseException {
.collect(Collectors.toList())
)
.genre(findWork.getGenre().toString())
.liked(interestingWorkRepository.findByUserAndWork(user, findWork) != null)
.rating((ratingWorkRepository.findByUserAndWork(user, findWork) != null) ?
ratingWorkRepository.findByUserAndWork(user, findWork).getRating() : null)
.build();

return workDetailDto;

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.oven.server.api.user.domain.User;
import com.oven.server.api.user.repository.InterestingWorkRepository;
import com.oven.server.api.work.domain.Work;
import com.oven.server.api.work.dto.response.PostLikeResponse;
import com.oven.server.api.work.repository.WorkRepository;
import com.oven.server.common.exception.BaseException;
import com.oven.server.common.response.ResponseCode;
Expand All @@ -20,20 +21,27 @@ public class PostInterestingWorkService {
private final WorkRepository workRepository;
private final InterestingWorkRepository interestingWorkRepository;

public void postInterestingWork(@AuthenticationPrincipal User user, Long workId) throws BaseException {
public PostLikeResponse postLike(@AuthenticationPrincipal User user, Long workId) throws BaseException {

userValidate(user);
Work work = workValidate(workId);

InterestingWork interestingWork = interestingWorkRepository.findByUserAndWork(user, work);

boolean liked = false;

if(interestingWork == null) {
InterestingWork newInterestingWork = new InterestingWork(user, work);
interestingWorkRepository.save(newInterestingWork);
liked = true;
} else {
interestingWorkRepository.delete(interestingWork);
}

return PostLikeResponse.builder()
.liked(liked)
.build();

}

private void userValidate(User user) throws BaseException {
Expand Down

0 comments on commit 1e8d1ee

Please sign in to comment.