Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
97 changes: 97 additions & 0 deletions src/docs/asciidoc/_store.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@

== 상점(Store) API

=== 1. 상점 생성
`POST /stores`

요청 본문:
include::{snippets}/store-create/request-fields.adoc[]

응답:
include::{snippets}/store-create/http-response.adoc[]
==== 상점 생성 실패: 유효성 검사

* `상점명 누락`
include::{snippets}/store-create-fail-blank-name/http-response.adoc[]
include::{snippets}/store-create-fail-blank-name/response-fields.adoc[]

* `연락처 누락`
include::{snippets}/store-create-fail-blank-contact/http-response.adoc[]
include::{snippets}/store-create-fail-blank-contact/response-fields.adoc[]

* `주소 누락`
include::{snippets}/store-create-fail-blank-address/http-response.adoc[]
include::{snippets}/store-create-fail-blank-address/response-fields.adoc[]

* `사업자등록번호 누락`
include::{snippets}/store-create-fail-blank-business-number/http-response.adoc[]
include::{snippets}/store-create-fail-blank-business-number/response-fields.adoc[]

* `통신판매업번호 누락`
include::{snippets}/store-create-fail-blank-telemarketing-number/http-response.adoc[]
include::{snippets}/store-create-fail-blank-telemarketing-number/response-fields.adoc[]



=== 2. 상점 수정
`PATCH /stores/{storeId}`

경로 파라미터 (Path Parameters):
include::{snippets}/store-update/path-parameters.adoc[]

요청 본문:
include::{snippets}/store-update/request-fields.adoc[]

응답:
include::{snippets}/store-update/http-response.adoc[]

=== 3. 상점 삭제
`DELETE /stores/{storeId}`

경로 파라미터 (Path Parameters):
include::{snippets}/store-delete/path-parameters.adoc[]

응답:
include::{snippets}/store-delete/http-response.adoc[]

=== 4. 상점 목록 조회
`GET /stores`

응답 본문:
include::{snippets}/store-list/response-fields.adoc[]

응답:
include::{snippets}/store-list/http-response.adoc[]

=== 5. 상점 상세 조회
`GET /stores/{storeId}`

경로 파라미터 (Path Parameters):
include::{snippets}/store-detail/path-parameters.adoc[]

응답 본문:
include::{snippets}/store-detail/response-fields.adoc[]

응답:
include::{snippets}/store-detail/http-response.adoc[]

=== 6. 내 상점 상품 목록 조회
`GET /stores/products`

응답 본문:
include::{snippets}/store-my-products/response-fields.adoc[]

응답:
include::{snippets}/store-my-products/http-response.adoc[]

=== 7. 특정 상점 상품 목록 조회
`GET /stores/{storeId}/products`

경로 파라미터 (Path Parameters):
include::{snippets}/store-products/path-parameters.adoc[]

응답 본문:
include::{snippets}/store-products/response-fields.adoc[]

응답:
include::{snippets}/store-products/http-response.adoc[]
2 changes: 1 addition & 1 deletion src/docs/asciidoc/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@

include::_member.adoc[]
include::_manager.adoc[]

include::_store.adoc[]
// include::_product.adoc[]

Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.irum.come2us.domain.store.domain.repository.StoreRepository;
import com.irum.come2us.domain.store.presentation.dto.request.StoreCreateRequest;
import com.irum.come2us.domain.store.presentation.dto.request.StoreUpdateRequest;
import com.irum.come2us.domain.store.presentation.dto.response.StoreCreateResponse;
import com.irum.come2us.domain.store.presentation.dto.response.StoreInfoResponse;
import com.irum.come2us.domain.store.presentation.dto.response.StoreListResponse;
import com.irum.come2us.global.presentation.advice.exception.CommonException;
Expand All @@ -30,12 +31,12 @@ public class StoreService {
private final MemberValidator memberValidator;
private final MemberUtil memberUtil;

public UUID createStore(StoreCreateRequest request) {
public StoreCreateResponse createStore(StoreCreateRequest request) {
Member member = memberUtil.getCurrentMember();

validateMemberHasNoStore(member); // 1인 1상점 제한
validateBusinessNumber(request.businessRegistrationNumber()); // 사업자번호 중복 체크
validateTelemarketingNumber(request.telemarketingRegistrationNumber()); // 통신판매번호 중복 체크
validateMemberHasNoStore(member);
validateBusinessNumber(request.businessRegistrationNumber());
validateTelemarketingNumber(request.telemarketingRegistrationNumber());

Store store =
Store.createStore(
Expand All @@ -47,7 +48,8 @@ public UUID createStore(StoreCreateRequest request) {
member);

storeRepository.save(store);
return store.getId();

return new StoreCreateResponse(store.getId());
}

public void changeStore(UUID storeId, StoreUpdateRequest request) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import java.util.UUID;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

Expand All @@ -24,11 +25,10 @@ public class StoreController {
private final StoreService storeService;

@PostMapping
public ResponseEntity<StoreCreateResponse> registerStore(
@Valid @RequestBody StoreCreateRequest request) {
@ResponseStatus(HttpStatus.CREATED)
Comment thread
isak-kang marked this conversation as resolved.
Outdated
public StoreCreateResponse createStore(@Valid @RequestBody StoreCreateRequest request) {
log.info("상점 생성 요청: {}", request);
UUID storeId = storeService.createStore(request);
return ResponseEntity.ok(new StoreCreateResponse(storeId));
return storeService.createStore(request);
}

@PatchMapping("/{storeId}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ public enum StoreErrorCode implements BaseErrorCode {
TELEMARKETING_NUMBER_DUPLICATED(HttpStatus.CONFLICT, "통신판매업번호가 이미 존재합니다."),
INVALID_BUSINESS_REGISTRATION_NUMBER(HttpStatus.BAD_REQUEST, "유효하지 않은 사업자등록번호 형식입니다."),
INVALID_TELEMARKETING_REGISTRATION_NUMBER(HttpStatus.BAD_REQUEST, "유효하지 않은 통신판매업번호 형식입니다."),
INVALID_DELIVERY_FEE(HttpStatus.BAD_REQUEST, "배달비는 0원 이상이어야 합니다."),
INVALID_CONTACT(HttpStatus.BAD_REQUEST, "유효하지 않은 연락처 형식입니다."),
STORE_NOT_FOUND(HttpStatus.NOT_FOUND, "해당 상점을 찾을 수 없습니다."),
UNAUTHORIZED_STORE_ACCESS(HttpStatus.FORBIDDEN, "본인의 상점이 아닙니다.");
Expand Down
Loading