Skip to content

Commit

Permalink
Feat: #135 사진생성요청 취소 및 FCM 알림 연동
Browse files Browse the repository at this point in the history
  • Loading branch information
BYEONGRYEOL committed Aug 24, 2024
1 parent 3b3fd70 commit f0c5bde
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 91 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
Expand Down Expand Up @@ -40,32 +42,23 @@ public class AdminPGREQController implements AdminPGREQApi {
@Logging(item = LogItem.PGREQ, action = LogAction.VIEW, requester = LogRequester.ADMIN)
@GetMapping("/admin-matched")
public ResponseEntity<ApiResult<Page<PGREQAdminMatchedDetailFindByAdminResponseDto>>> getAllAdminMatchedPGREQ(
@Parameter(description = "페이지 번호 (0-based)", example = "0", required = true)
@RequestParam(name = "page", defaultValue = "0") @NotNull @Min(0) int page,
@Parameter(description = "페이지 당 요소 개수 >=1", example = "10", required = true)
@RequestParam(name = "size", defaultValue = "10") @NotNull @Min(1) int size,
@Parameter(description = "페이지 번호 (0-based)", example = "0", required = true) @RequestParam(name = "page", defaultValue = "0") @NotNull @Min(0) int page,
@Parameter(description = "페이지 당 요소 개수 >=1", example = "10", required = true) @RequestParam(name = "size", defaultValue = "10") @NotNull @Min(1) int size,
@Parameter(description = "정렬 조건 - 기본값 생성일시", example = "createdAt", schema = @Schema(allowableValues = {"id",
"createdAt"}))
@RequestParam(name = "sortBy", defaultValue = "createdAt") String sortBy,
"createdAt"})) @RequestParam(name = "sortBy", defaultValue = "createdAt") String sortBy,
@Parameter(description = "정렬 방향 - 기본값 내림차순", example = "desc", schema = @Schema(allowableValues = {"acs",
"desc"}))
@RequestParam(name = "direction", defaultValue = "desc") String direction,
@Parameter(description = "현재 작업(사진생성응답)의 상태로 조회한다. ALL 조회 가능, EXPIRED는 MVP상 도메인로직엔 없지만 어드민페이지의 성격 상 필요하다고 생각하여 추가했습니다.",
examples = {@ExampleObject(name = "BEFORE_WORK", description = "작업 대기", value = "BEFORE_WORK"),
@ExampleObject(name = "IN_PROGRESS", description = "작업 중", value = "IN_PROGRESS"),
@ExampleObject(name = "COMPLETED", description = "작업 완료", value = "COMPLETED"),
@ExampleObject(name = "EXPIRED", description = "만료됨 (기존의 협의된 내용은 아니지만 어드민페이지에 필요하다고 생각했습니다. 추가 부탁드립니다.)", value = "EXPIRED"),
@ExampleObject(name = "ALL", description = "전체", value = "ALL")})
@RequestParam(name = "status", defaultValue = "ALL")
@ValidEnum(value = PictureGenerateResponseStatusForAdmin.class, hasAllOption = true) String status,
@Parameter(description = "유저의 email")
@RequestParam(name = "email", required = false) @Email(message = "올바른 email 형식이 아닙니다.") String email
) {
"desc"})) @RequestParam(name = "direction", defaultValue = "desc") String direction,
@Parameter(description = "현재 작업(사진생성응답)의 상태로 조회한다. ALL 조회 가능, EXPIRED는 MVP상 도메인로직엔 없지만 어드민페이지의 성격 상 필요하다고 생각하여 추가했습니다.", examples = {
@ExampleObject(name = "BEFORE_WORK", description = "작업 대기", value = "BEFORE_WORK"),
@ExampleObject(name = "IN_PROGRESS", description = "작업 중", value = "IN_PROGRESS"),
@ExampleObject(name = "COMPLETED", description = "작업 완료", value = "COMPLETED"),
@ExampleObject(name = "EXPIRED", description = "만료됨 (기존의 협의된 내용은 아니지만 어드민페이지에 필요하다고 생각했습니다. 추가 부탁드립니다.)", value = "EXPIRED"),
@ExampleObject(name = "ALL", description = "전체", value = "ALL")}) @RequestParam(name = "status", defaultValue = "ALL") @ValidEnum(value = PictureGenerateResponseStatusForAdmin.class, hasAllOption = true) String status,
@Parameter(description = "유저의 email") @RequestParam(name = "email", required = false) @Email(message = "올바른 email 형식이 아닙니다.") String email) {
Sort.Direction sortDirection = Sort.Direction.fromString(direction);
Pageable pageable = PageRequest.of(page, size, Sort.by(sortDirection, sortBy));
if (email != null) {
return success(
pictureGenerateRequestUseCase.getAllAdminMatchedByRequesterEmail(email, pageable));
return success(pictureGenerateRequestUseCase.getAllAdminMatchedByRequesterEmail(email, pageable));
}
if ("ALL".equalsIgnoreCase(status)) {
return success(pictureGenerateRequestUseCase.getAllAdminMatched(pageable));
Expand All @@ -75,34 +68,26 @@ public ResponseEntity<ApiResult<Page<PGREQAdminMatchedDetailFindByAdminResponseD
}
}

@Logging(item = LogItem.PGREQ, action = LogAction.VIEW, requester = LogRequester.ADMIN)
@Logging(item = LogItem.PGREQ, action = LogAction.DELETE, requester = LogRequester.ADMIN)
@GetMapping("/creator-submitted")
public ResponseEntity<ApiResult<Page<PGREQCreatorSubmittedDetailFindByAdminResponseDto>>> getAllCreatorSubmittedPGREQ(
@Parameter(description = "페이지 번호 (0-based)", example = "0", required = true)
@RequestParam(name = "page", defaultValue = "0") @NotNull @Min(0) int page,
@Parameter(description = "페이지 당 요소 개수 >=1", example = "10", required = true)
@RequestParam(name = "size", defaultValue = "10") @NotNull @Min(1) int size,
@Parameter(description = "페이지 번호 (0-based)", example = "0", required = true) @RequestParam(name = "page", defaultValue = "0") @NotNull @Min(0) int page,
@Parameter(description = "페이지 당 요소 개수 >=1", example = "10", required = true) @RequestParam(name = "size", defaultValue = "10") @NotNull @Min(1) int size,
@Parameter(description = "정렬 조건 - 기본값 생성일시", example = "createdAt", schema = @Schema(allowableValues = {"id",
"createdAt"}))
@RequestParam(name = "sortBy", defaultValue = "createdAt") String sortBy,
"createdAt"})) @RequestParam(name = "sortBy", defaultValue = "createdAt") String sortBy,
@Parameter(description = "정렬 방향 - 기본값 내림차순", example = "desc", schema = @Schema(allowableValues = {"acs",
"desc"}))
@RequestParam(name = "direction", defaultValue = "desc") String direction,
@Parameter(description = "현재 작업(사진생성응답)의 상태로 조회한다. ALL 조회 가능, EXPIRED는 MVP상 도메인로직엔 없지만 어드민페이지의 성격 상 필요하다고 생각하여 추가했습니다.",
examples = {@ExampleObject(name = "BEFORE_WORK", description = "작업 대기", value = "BEFORE_WORK"),
@ExampleObject(name = "IN_PROGRESS", description = "작업 중", value = "IN_PROGRESS"),
@ExampleObject(name = "COMPLETED", description = "작업 완료", value = "COMPLETED"),
@ExampleObject(name = "EXPIRED", description = "만료됨 (기존의 협의된 내용은 아니지만 어드민페이지에 필요하다고 생각했습니다. 추가 부탁드립니다.)", value = "EXPIRED"),
@ExampleObject(name = "ALL", description = "전체", value = "ALL")})
@RequestParam(name = "status", defaultValue = "ALL") @ValidEnum(value = PictureGenerateResponseStatusForAdmin.class, hasAllOption = true) String status,
@Parameter(description = "유저의 email")
@RequestParam(name = "email", required = false) @Email(message = "올바른 email 형식이 아닙니다.") String email
) {
"desc"})) @RequestParam(name = "direction", defaultValue = "desc") String direction,
@Parameter(description = "현재 작업(사진생성응답)의 상태로 조회한다. ALL 조회 가능, EXPIRED는 MVP상 도메인로직엔 없지만 어드민페이지의 성격 상 필요하다고 생각하여 추가했습니다.", examples = {
@ExampleObject(name = "BEFORE_WORK", description = "작업 대기", value = "BEFORE_WORK"),
@ExampleObject(name = "IN_PROGRESS", description = "작업 중", value = "IN_PROGRESS"),
@ExampleObject(name = "COMPLETED", description = "작업 완료", value = "COMPLETED"),
@ExampleObject(name = "EXPIRED", description = "만료됨 (기존의 협의된 내용은 아니지만 어드민페이지에 필요하다고 생각했습니다. 추가 부탁드립니다.)", value = "EXPIRED"),
@ExampleObject(name = "ALL", description = "전체", value = "ALL")}) @RequestParam(name = "status", defaultValue = "ALL") @ValidEnum(value = PictureGenerateResponseStatusForAdmin.class, hasAllOption = true) String status,
@Parameter(description = "유저의 email") @RequestParam(name = "email", required = false) @Email(message = "올바른 email 형식이 아닙니다.") String email) {
Sort.Direction sortDirection = Sort.Direction.fromString(direction);
Pageable pageable = PageRequest.of(page, size, Sort.by(sortDirection, sortBy));
if (email != null) {
return success(
pictureGenerateRequestUseCase.getAllCreatorSubmittedByRequesterEmail(email, pageable));
return success(pictureGenerateRequestUseCase.getAllCreatorSubmittedByRequesterEmail(email, pageable));
}
if ("ALL".equalsIgnoreCase(status)) {
return success(pictureGenerateRequestUseCase.getAllCreatorSubmitted(pageable));
Expand All @@ -111,4 +96,11 @@ public ResponseEntity<ApiResult<Page<PGREQCreatorSubmittedDetailFindByAdminRespo
PictureGenerateResponseStatusForAdmin.valueOf(status), pageable));
}
}

@Logging(item = LogItem.PGREQ, action = LogAction.VIEW, requester = LogRequester.ADMIN)
@DeleteMapping("/{pictureGenerateRequestId}")
public ResponseEntity<ApiResult<Boolean>> cancelRequest(
@PathVariable(name = "pictureGenerateRequestId") Long pictureGenerateRequestId) {
return success(pictureGenerateRequestUseCase.cancelRequestByAdmin(pictureGenerateRequestId));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@
public enum PictureGenerateRequestCancellationReason {
NO_MATCHING, // 12시간 동안 아무와도 매칭되지 않음
SUPPLIER_DID_NOT_WORK, // 작업하기로 한 공급자가 6시간 동안 작업을 수행하지 않음
SUPPLIER_EXIT; // 작업하기로 한 공급자가 회원 탈퇴함
SUPPLIER_EXIT, // 작업하기로 한 공급자가 회원 탈퇴함
INVALID_PROMPT, // 부적절한 프롬프트
INVALID_IMAGE; // 부적절한 사진
}
Loading

0 comments on commit f0c5bde

Please sign in to comment.