Skip to content

Commit

Permalink
[Feat] 횃불이 평가, 평가 점수 리스트 가져오기 기능 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
hen715 committed May 1, 2024
1 parent fb4378c commit 8696b6f
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,15 @@
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import kr.inuappcenterportal.inuportal.domain.Fire;
import kr.inuappcenterportal.inuportal.dto.FireDto;
import kr.inuappcenterportal.inuportal.dto.FireRatingDto;
import kr.inuappcenterportal.inuportal.dto.ResponseDto;
import kr.inuappcenterportal.inuportal.dto.UriDto;
import kr.inuappcenterportal.inuportal.service.FireService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
Expand All @@ -28,7 +31,7 @@
public class FireController {
private final FireService fireService;

@Operation(summary = "횃불이 ai 그림 그리기",description = "바디에 {param}을 json 형식으로 보내주세요. 성공 시 만들어진 이미지의 데이터베이스 아이디 값이 {data: id}으로 보내집니다.")
@Operation(summary = "횃불이 ai 그림 그리기",description = "헤더에 인증토큰을, 바디에 {param}을 json 형식으로 보내주세요. 성공 시 만들어진 이미지의 데이터베이스 아이디 값이 {data: id}으로 보내집니다.")
@ApiResponses({
@ApiResponse(responseCode = "201",description = "횃불이 ai 그림 그리기 성공",content = @Content(schema = @Schema(implementation = ResponseDto.class))),
@ApiResponse(responseCode = "400",description = "횃불이 ai 이미지 생성 uri에 문제가 있습니다.",content = @Content(schema = @Schema(implementation = ResponseDto.class)))
Expand Down Expand Up @@ -63,6 +66,28 @@ public ResponseEntity<ResponseDto<Long>> changeRequestUri(@Valid @RequestBody Ur
return new ResponseEntity<>(new ResponseDto<>(1L,"ai 생성 요청 uri 변경 성공"),HttpStatus.OK);
}

@Operation(summary = "횃불이 ai 이미지 별점 추가",description = "url 변수에 횃불이 ai 이미지 데이터베이스id값을, 바디에 {rating}을 json 형식으로 보내주세요.성공시 횃불이 이미지의 데이터베이스id값이 보내집니다.")
@ApiResponses({
@ApiResponse(responseCode = "200",description = "횃불이 별점 추가 성공",content = @Content(schema = @Schema(implementation = ResponseDto.class))),
@ApiResponse(responseCode = "404",description = "존재하지 않는 이미지 번호입니다. / 평점은 1~5이어야 합니다.",content = @Content(schema = @Schema(implementation = ResponseDto.class)))
})
@PostMapping("/rating/{id}")
public ResponseEntity<ResponseDto<Long>> ratingAiImage(@PathVariable Long id, @Valid@RequestBody FireRatingDto fireRatingDto){
log.info("횃불이 ai 이미지 별점 부여 이미지 번호 : {}, 별점 : {}",id,fireRatingDto.getRating());
return new ResponseEntity<>(new ResponseDto<>(fireService.ratingImage(id, fireRatingDto.getRating()),"횃불이 별점 추가 성공"),HttpStatus.OK);
}

@Operation(summary = "횃불이 ai 이미지 정보들 가져오기",description = "url 파라미터에 페이지 번호를 보내주세요. 보내지 않을 시 첫 페이지가 보내집니다. 한 페이지의 크기는 10입니다.")
@ApiResponses({
@ApiResponse(responseCode = "200",description = "횃불이 ai 이미지 정보들 가져오기 성공",content = @Content(schema = @Schema(implementation = ResponseDto.class))),
})
@GetMapping("/rating")
public ResponseEntity<ResponseDto<Page<Fire>>> getFireRating(@RequestParam(required = false,defaultValue = "0") int page){
return new ResponseEntity<>(new ResponseDto<>(fireService.getFireImageList(page),"횃불이 ai 이미지 정보들 가져오기 성공"),HttpStatus.OK);
}






Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
public class SearchController {
private final PostService postService;
private final FolderService folderService;
private final TokenProvider tokenProvider;

@Operation(summary = "게시글 검색",description = "url 파라미터에 검색내용 query , 정렬기준을 sort(date/공백(최신순),like,scrap)를, 페이지(공백일 시 1)를 보내주세요.")
@ApiResponses({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
@Entity
@Getter
@NoArgsConstructor
public class Fire {
public class Fire extends BaseTimeEntity{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package kr.inuappcenterportal.inuportal.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Schema(description = "횃불이 ai 그림 별점 부여 요청Dto")
@NoArgsConstructor
@Getter
public class FireRatingDto {
@Schema(description = "횃불이 ai 이미지 평점")
@NotNull
@Min(value = 1, message = "평점은 1~5이어야 합니다.")
@Max(value = 5, message = "평점은 1~5이여야 합니다.")
private Integer rating;

@Builder
public FireRatingDto(Integer rating){
this.rating=rating;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatusCode;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
Expand Down Expand Up @@ -71,6 +73,19 @@ public void changeUri(String uri){
log.info("uri 변경 완료 변경된 요청 uri: {}",url);
}

@Transactional
public Long ratingImage(Long id, int rate){
Fire fire = fireRepository.findById(id).orElseThrow(()-> new MyException(MyErrorCode.IMAGE_NOT_FOUND));
fire.givePoint(rate);
return fire.getId();
}

@Transactional(readOnly = true)
public Page<Fire> getFireImageList(int page){
Pageable pageable = PageRequest.of(page,10);
return fireRepository.findAll(pageable);
}



}

0 comments on commit 8696b6f

Please sign in to comment.