Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@
import org.mainapp.domain.v1.post.controller.request.ReserveUploadTimeRequest;
import org.mainapp.domain.v1.post.controller.request.SinglePostUpdateRequest;
import org.mainapp.domain.v1.post.controller.request.UpdatePostContentRequest;
import org.mainapp.domain.v1.post.controller.request.UpdatePostGroupStepRequest;
import org.mainapp.domain.v1.post.controller.request.UpdatePostsMetadataRequest;
import org.mainapp.domain.v1.post.controller.request.UpdateReservedPostsRequest;
import org.mainapp.domain.v1.post.controller.response.CreatePostsResponse;
import org.mainapp.domain.v1.post.controller.response.GetAgentReservedPostsResponse;
import org.mainapp.domain.v1.post.controller.response.GetPostGroupPostsResponse;
import org.mainapp.domain.v1.post.controller.response.GetPostGroupStepResponse;
import org.mainapp.domain.v1.post.controller.response.GetPostGroupTopicResponse;
import org.mainapp.domain.v1.post.controller.response.GetPostGroupsResponse;
import org.mainapp.domain.v1.post.controller.response.PromptHistoriesResponse;
Expand Down Expand Up @@ -232,6 +234,26 @@ public ResponseEntity<GetPostGroupTopicResponse> getPostGroupTopic(
return ResponseEntity.ok(postService.getPostGroupTopic(agentId, postGroupId));
}

@Operation(summary = "게시물 그룹 단계 조회 API", description = "게시물 그룹의 진행 단계를 조회합니다.")
@GetMapping("/post-groups/{postGroupId}/step")
public ResponseEntity<GetPostGroupStepResponse> getPostGroupStep(
@PathVariable Long agentId,
@PathVariable Long postGroupId
) {
return ResponseEntity.ok(postService.getPostGroupStep(agentId, postGroupId));
}

@Operation(summary = "게시물 그룹 단계 변경 API", description = "게시물 그룹의 진행 단계를 조회합니다.")
@PutMapping("/post-groups/{postGroupId}/step")
public ResponseEntity<Void> updatePostGroupStep(
@PathVariable Long agentId,
@PathVariable Long postGroupId,
@Validated @RequestBody UpdatePostGroupStepRequest updatePostGroupStepRequest
) {
postService.updatePostGroupStep(agentId, postGroupId, updatePostGroupStepRequest);
return ResponseEntity.ok().build();
}

@Operation(summary = "게시물 그룹별 게시물 목록 조회 API", description = "게시물 그룹에 해당되는 모든 게시물 목록을 조회합니다.")
@GetMapping("/post-groups/{postGroupId}/posts")
public ResponseEntity<GetPostGroupPostsResponse> getPostsByPostGroup(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.mainapp.domain.v1.post.controller.request;

import org.domainmodule.postgroup.entity.type.PostGroupStepType;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;

@Schema(description = "게시물 그룹 단계 수정 API 요청 본문")
public record UpdatePostGroupStepRequest(
@Schema(description = "게시물 예약일시 수정 정보 리스트")
@NotNull(message = "변경할 게시물 그룹 단계를 입력해주세요.")
@Valid
PostGroupStepType step
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package org.mainapp.domain.v1.post.controller.response;

import org.domainmodule.postgroup.entity.PostGroup;
import org.domainmodule.postgroup.entity.type.PostGroupStepType;

import io.swagger.v3.oas.annotations.media.Schema;

@Schema(description = "게시물 그룹 단계 조회 API 응답 본문")
public record GetPostGroupStepResponse(
@Schema(description = "게시물 그룹 단계", example = "EDITING")
PostGroupStepType step
) {

public static GetPostGroupStepResponse from(PostGroup postGroup) {
return new GetPostGroupStepResponse(postGroup.getStep());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,15 @@
import org.mainapp.domain.v1.post.controller.request.ReserveUploadTimeRequest;
import org.mainapp.domain.v1.post.controller.request.SinglePostUpdateRequest;
import org.mainapp.domain.v1.post.controller.request.UpdatePostContentRequest;
import org.mainapp.domain.v1.post.controller.request.UpdatePostGroupStepRequest;
import org.mainapp.domain.v1.post.controller.request.UpdatePostsMetadataRequest;
import org.mainapp.domain.v1.post.controller.request.UpdateReservedPostsRequest;
import org.mainapp.domain.v1.post.controller.request.type.UpdatePostsRequestItem;
import org.mainapp.domain.v1.post.controller.request.type.UpdateReservedPostsRequestItem;
import org.mainapp.domain.v1.post.controller.response.CreatePostsResponse;
import org.mainapp.domain.v1.post.controller.response.GetAgentReservedPostsResponse;
import org.mainapp.domain.v1.post.controller.response.GetPostGroupPostsResponse;
import org.mainapp.domain.v1.post.controller.response.GetPostGroupStepResponse;
import org.mainapp.domain.v1.post.controller.response.GetPostGroupTopicResponse;
import org.mainapp.domain.v1.post.controller.response.GetPostGroupsResponse;
import org.mainapp.domain.v1.post.controller.response.type.PostGroupResponse;
Expand Down Expand Up @@ -146,6 +148,28 @@ public GetPostGroupTopicResponse getPostGroupTopic(Long agentId, Long postGroupI
return new GetPostGroupTopicResponse(topic);
}

/**
* 게시물 그룹의 단계를 조회하는 메서드
*/
public GetPostGroupStepResponse getPostGroupStep(Long agentId, Long postGroupId) {
Long userId = SecurityUtil.getCurrentUserId();
PostGroup postGroup = postGroupRepository.findByUserIdAndAgentIdAndId(userId, agentId, postGroupId)
.orElseThrow(() -> new CustomException(PostErrorCode.POST_GROUP_NOT_FOUND));
return GetPostGroupStepResponse.from(postGroup);
}

/**
* 게시물 그룹의 단계를 수정하는 메서드
*/
public void updatePostGroupStep(Long agentId, Long postGroupId, UpdatePostGroupStepRequest request) {
Long userId = SecurityUtil.getCurrentUserId();
PostGroup postGroup = postGroupRepository.findByUserIdAndAgentIdAndId(userId, agentId, postGroupId)
.orElseThrow(() -> new CustomException(PostErrorCode.POST_GROUP_NOT_FOUND));

postGroup.updateStep(request.step());
postTransactionService.savePostGroup(postGroup);
}

/**
* postGroupId를 바탕으로 게시물 그룹 존재 여부를 확인하고, 해당 그룹의 게시물 목록을 반환하는 메서드
* 게시물 그룹 조회 실패 시 POST_GROUP_NOT_FOUND
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,6 @@ public void updatePostsMetadata(List<Post> posts, UpdatePostsMetadataRequest req
post.updateStatus(postRequest.getStatus());
}
if (postRequest.getUploadTime() != null) {
// 업로드 예약일시가 변경되는 경우는 업로드 예약 상태가 되는 경우만 존재
post.updateStatus(PostStatusType.UPLOAD_RESERVED);
post.updateUploadTime(postRequest.getUploadTime());
}
if (postRequest.getDisplayOrder() != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.domainmodule.postgroup.entity.type.PostGroupLengthType;
import org.domainmodule.postgroup.entity.type.PostGroupPurposeType;
import org.domainmodule.postgroup.entity.type.PostGroupReferenceType;
import org.domainmodule.postgroup.entity.type.PostGroupStepType;
import org.domainmodule.rssfeed.entity.RssFeed;

import jakarta.persistence.CascadeType;
Expand Down Expand Up @@ -67,16 +68,21 @@ public class PostGroup extends BaseTimeEntity {

private String thumbnailImage;

@Column(nullable = false)
@Enumerated(EnumType.STRING)
private PostGroupStepType step;

@OneToMany(mappedBy = "postGroup", cascade = CascadeType.REMOVE, orphanRemoval = true)
private List<PostGroupImage> postGroupImages = new ArrayList<>();
private final List<PostGroupImage> postGroupImages = new ArrayList<>();

@OneToOne(mappedBy = "postGroup", cascade = CascadeType.REMOVE, orphanRemoval = true)
private PostGroupRssCursor postGroupRssCursor;

@Builder(access = AccessLevel.PRIVATE)
private PostGroup(
Agent agent, RssFeed feed, String topic, PostGroupPurposeType purpose, PostGroupReferenceType reference,
PostGroupLengthType length, String content, Integer generationCount, String thumbnailImage
PostGroupLengthType length, String content, Integer generationCount, String thumbnailImage,
PostGroupStepType step
) {
this.agent = agent;
this.topic = topic;
Expand Down Expand Up @@ -110,13 +116,18 @@ public static PostGroup createPostGroup(
.content(content)
.generationCount(generationCount)
.thumbnailImage(thumbnailImage)
.step(PostGroupStepType.EDITING)
.build();
}

public void increaseGenerationCount() {
this.generationCount++;
}

public void updateStep(PostGroupStepType newStep) {
this.step = newStep;
}

@Override
public String toString() {
return feed + "\n"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package org.domainmodule.postgroup.entity.type;

public enum PostGroupStepType {
EDITING, RESERVING
}
Loading