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
37 changes: 37 additions & 0 deletions src/docs/asciidoc/post-api.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -226,3 +226,40 @@ include::{snippetsDir}/loadTrendingMan/1/response-fields.adoc[]

---



=== **7. 게시글 해시태그 목록 조회**

게시글 전용 해시태그 목록을 조회하는 api 입니다. +
카테고리 별 해시태그 목록을 응답합니다. +
게시글 생성/수정 요청의 hashtags 리스트에 해당 api의 data.results[].hashtags[].name 값을 전달해주세요.

==== Request
include::{snippetsDir}/loadPostHashTags/1/http-request.adoc[]

==== 성공 Response
include::{snippetsDir}/loadPostHashTags/1/http-response.adoc[]

==== Response Body Fields
include::{snippetsDir}/loadPostHashTags/1/response-fields.adoc[]

---



=== **8. 게시글 상품 해시태그 목록 조회**

게시글 상품 전용 해시태그 목록을 조회하는 api 입니다. +
카테고리 별 해시태그 목록을 응답합니다. +
상품 생성/수정 요청의 hashtags 리스트에 해당 api의 data.results[].hashtags[].name 값을 전달해주세요.

==== Request
include::{snippetsDir}/loadPostProductHashTags/1/http-request.adoc[]

==== 성공 Response
include::{snippetsDir}/loadPostProductHashTags/1/http-response.adoc[]

==== Response Body Fields
include::{snippetsDir}/loadPostProductHashTags/1/response-fields.adoc[]

---
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.ftm.server.adapter.in.web.post.controller;

import com.ftm.server.adapter.in.web.post.dto.response.LoadPostHashTagsResponse;
import com.ftm.server.application.port.in.post.LoadPostHashTagsUseCase;
import com.ftm.server.application.vo.post.PostHashTagDetailVo;
import com.ftm.server.common.response.ApiResponse;
import com.ftm.server.common.response.enums.SuccessResponseCode;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
public class LoadPostHashTagsController {

private final LoadPostHashTagsUseCase loadPostHashTagsUseCase;

@GetMapping("/api/posts/hashtags")
public ResponseEntity<ApiResponse<LoadPostHashTagsResponse>> loadPostHashTags() {
List<PostHashTagDetailVo> vos = loadPostHashTagsUseCase.execute();

return ResponseEntity.status(HttpStatus.OK)
.body(
ApiResponse.success(
SuccessResponseCode.OK, LoadPostHashTagsResponse.of(vos)));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.ftm.server.adapter.in.web.post.controller;

import com.ftm.server.adapter.in.web.post.dto.response.LoadPostProductHashTagsResponse;
import com.ftm.server.application.port.in.post.LoadPostProductHashTagsUseCase;
import com.ftm.server.application.vo.post.PostProductHashTagDetailVo;
import com.ftm.server.common.response.ApiResponse;
import com.ftm.server.common.response.enums.SuccessResponseCode;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
public class LoadPostProductHashTagsController {

private final LoadPostProductHashTagsUseCase loadPostProductHashTagsUseCase;

@GetMapping("/api/posts/products/hashtags")
public ResponseEntity<ApiResponse<?>> loadProductHashTags() {
List<PostProductHashTagDetailVo> vos = loadPostProductHashTagsUseCase.execute();

return ResponseEntity.status(HttpStatus.OK)
.body(
ApiResponse.success(
SuccessResponseCode.OK, LoadPostProductHashTagsResponse.of(vos)));
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.ftm.server.adapter.in.web.post.dto.request;

import com.ftm.server.domain.enums.HashTag;
import com.ftm.server.domain.enums.ProductHashtag;
import jakarta.validation.constraints.NotEmpty;
import java.util.List;
import lombok.AllArgsConstructor;
Expand All @@ -13,5 +13,5 @@ public class SavePostProductRequest {
private int imageIndex;
@NotEmpty private String name;
private String brand;
private List<HashTag> hashtags;
private List<ProductHashtag> hashtags;
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.ftm.server.adapter.in.web.post.dto.request;

import com.ftm.server.domain.enums.GroomingCategory;
import com.ftm.server.domain.enums.HashTag;
import com.ftm.server.domain.enums.PostHashtag;
import jakarta.validation.constraints.NotEmpty;
import java.util.List;
import lombok.AllArgsConstructor;
Expand All @@ -12,8 +11,7 @@
public class SavePostRequest {

@NotEmpty private String title;
private GroomingCategory groomingCategory;
private List<HashTag> hashtags;
private List<PostHashtag> hashtags;
@NotEmpty private String content;
private List<SavePostProductRequest> products;
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.ftm.server.adapter.in.web.post.dto.request;

import com.ftm.server.domain.enums.HashTag;
import com.ftm.server.domain.enums.ProductHashtag;
import java.util.List;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -12,22 +12,22 @@ public class UpdatePostProductRequest {
private final Long id;
private final String name;
private final String brand;
private final List<HashTag> hashTags;
private final List<ProductHashtag> hashtags;
private final Long deleteProductImageId;
private final int imageIndex;

public static UpdatePostProductRequest of(
Long id,
String name,
String brand,
List<HashTag> hashTags,
List<ProductHashtag> hashtags,
Long deleteProductImageId,
int imageIndex) {
return UpdatePostProductRequest.builder()
.id(id)
.name(name)
.brand(brand)
.hashTags(hashTags)
.hashtags(hashtags)
.deleteProductImageId(deleteProductImageId)
.imageIndex(imageIndex)
.build();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.ftm.server.adapter.in.web.post.dto.request;

import com.ftm.server.domain.enums.GroomingCategory;
import com.ftm.server.domain.enums.HashTag;
import com.ftm.server.domain.enums.PostHashtag;
import java.util.List;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -11,8 +10,7 @@
public class UpdatePostRequest {

private final String title;
private final GroomingCategory groomingCategory;
private final List<HashTag> hashTags;
private final List<PostHashtag> hashtags;
private final String content;
private final List<Long> deletePostImageIds; // 삭제할 게시글 이미지 ID 목록

Expand All @@ -22,17 +20,15 @@ public class UpdatePostRequest {

public static UpdatePostRequest of(
String title,
GroomingCategory groomingCategory,
List<HashTag> hashTags,
List<PostHashtag> hashtags,
String content,
List<Long> deletePostImageIds,
List<Long> deleteProductIds,
List<SavePostProductRequest> addProducts,
List<UpdatePostProductRequest> updateProducts) {
return UpdatePostRequest.builder()
.title(title)
.groomingCategory(groomingCategory)
.hashTags(hashTags)
.hashtags(hashtags)
.content(content)
.deletePostImageIds(deletePostImageIds)
.deleteProductIds(deleteProductIds)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ftm.server.application.vo.post.PostDetailVo;
import com.ftm.server.domain.enums.GroomingCategory;
import com.ftm.server.domain.enums.HashTag;
import com.ftm.server.domain.enums.PostHashtag;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
Expand All @@ -15,8 +14,7 @@ public class LoadPostDetailResponse {
private final Long postId;
private final String title;
private final String content;
private final GroomingCategory groomingCategory;
private final List<String> hashTags;
private final List<String> hashtags;
private final Integer viewCount;
private final Integer likeCount;

Expand All @@ -34,8 +32,7 @@ private LoadPostDetailResponse(PostDetailVo postDetailVo) {
this.postId = postDetailVo.getPostId();
this.title = postDetailVo.getTitle();
this.content = postDetailVo.getContent();
this.groomingCategory = postDetailVo.getGroomingCategory();
this.hashTags = Arrays.stream(postDetailVo.getHashTags()).map(HashTag::getValue).toList();
this.hashtags = Arrays.stream(postDetailVo.getHashtags()).map(PostHashtag::getTag).toList();
this.viewCount = postDetailVo.getViewCount();
this.likeCount = postDetailVo.getLikeCount();
this.createdAt = postDetailVo.getCreatedAt();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.ftm.server.adapter.in.web.post.dto.response;

import com.ftm.server.application.vo.post.PostHashTagDetailVo;
import java.util.List;
import lombok.Getter;

@Getter
public class LoadPostHashTagsResponse {

private final List<PostHashTagDetailVo> results;

private LoadPostHashTagsResponse(List<PostHashTagDetailVo> results) {
this.results = results;
}

public static LoadPostHashTagsResponse of(List<PostHashTagDetailVo> results) {
return new LoadPostHashTagsResponse(results);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.ftm.server.adapter.in.web.post.dto.response;

import com.ftm.server.application.vo.post.PostProductHashTagDetailVo;
import java.util.List;
import lombok.Getter;

@Getter
public class LoadPostProductHashTagsResponse {

private final List<PostProductHashTagDetailVo> results;

private LoadPostProductHashTagsResponse(List<PostProductHashTagDetailVo> results) {
this.results = results;
}

public static LoadPostProductHashTagsResponse of(List<PostProductHashTagDetailVo> results) {
return new LoadPostProductHashTagsResponse(results);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.ftm.server.adapter.in.web.post.dto.response;

import com.ftm.server.application.vo.post.PostProductDetailVo;
import com.ftm.server.domain.enums.HashTag;
import com.ftm.server.domain.enums.ProductHashtag;
import java.util.Arrays;
import java.util.List;
import lombok.Getter;
Expand All @@ -12,15 +12,17 @@ public class PostProductResponse {
private final Long postProductId;
private final String name;
private final String brand;
private final List<String> hashTags;
private final List<String> hashtags;
private final PostProductImageResponse postProductImage;

private PostProductResponse(PostProductDetailVo postProductDetailVo) {
this.postProductId = postProductDetailVo.getPostProductId();
this.name = postProductDetailVo.getName();
this.brand = postProductDetailVo.getBrand();
this.hashTags =
Arrays.stream(postProductDetailVo.getHashTags()).map(HashTag::getValue).toList();
this.hashtags =
Arrays.stream(postProductDetailVo.getHashtags())
.map(ProductHashtag::getTag)
.toList();
this.postProductImage =
PostProductImageResponse.from(postProductDetailVo.getPostProductImage());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.ftm.server.adapter.in.web.user.dto.request;

import com.ftm.server.domain.enums.AgeGroup;
import com.ftm.server.domain.enums.HashTag;
import com.ftm.server.domain.enums.HashtagCategory;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import java.util.List;
Expand All @@ -22,5 +22,5 @@ public class GeneralUserSignupRequest {

@NotNull private final AgeGroup age;

private final List<HashTag> hashtags;
private final List<HashtagCategory> hashtags;
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.ftm.server.adapter.in.web.user.dto.request;

import com.ftm.server.domain.enums.AgeGroup;
import com.ftm.server.domain.enums.HashTag;
import com.ftm.server.domain.enums.HashtagCategory;
import jakarta.validation.constraints.NotNull;
import java.util.List;
import lombok.Data;
Expand All @@ -10,5 +10,5 @@
public class SocialUserSignupRequest {
@NotNull private final AgeGroup age;

private final List<HashTag> hashtags;
private final List<HashtagCategory> hashtags;
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.ftm.server.adapter.in.web.user.dto.request;

import com.ftm.server.domain.enums.AgeGroup;
import com.ftm.server.domain.enums.HashTag;
import com.ftm.server.domain.enums.HashtagCategory;
import lombok.Data;

@Data
public class UpdateUserInfoRequest {
private final String nickname;
private final AgeGroup age;
private final HashTag[] hashtags;
private final HashtagCategory[] hashtags;
private final String imageAction;
}
Loading
Loading