From 10e083b4be56ba3820eee242dc42f841f86adace Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=A4=80?= <sanbonai06@naver.com>
Date: Mon, 23 Jan 2023 00:28:50 +0900
Subject: [PATCH 1/4] =?UTF-8?q?feat(domain)=20:=20=EB=B0=9C=EA=B8=89=20?=
 =?UTF-8?q?=ED=8B=B0=EC=BC=93=20=EC=83=81=ED=83=9C=20=EB=B3=80=EA=B2=BD=20?=
 =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=EB=A9=94=EC=84=9C=EB=93=9C=EB=93=A4=20?=
 =?UTF-8?q?=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../adaptor/IssuedTicketAdaptor.java          |  2 +-
 .../issuedTicket/domain/IssuedTicket.java     | 59 ++++++++++++++++++-
 .../CanNotCancelEntranceException.java        | 12 ++++
 .../exception/CanNotCancelException.java      | 13 ++++
 .../exception/CanNotEntranceException.java    | 13 ++++
 .../exception/IssuedTicketErrorCode.java      |  5 +-
 6 files changed, 99 insertions(+), 5 deletions(-)
 create mode 100644 DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelEntranceException.java
 create mode 100644 DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelException.java
 create mode 100644 DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotEntranceException.java

diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/adaptor/IssuedTicketAdaptor.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/adaptor/IssuedTicketAdaptor.java
index 4e20525a..89cbe3e2 100644
--- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/adaptor/IssuedTicketAdaptor.java
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/adaptor/IssuedTicketAdaptor.java
@@ -50,7 +50,7 @@ public Page<IssuedTicket> searchIssuedTicket(Long page, IssuedTicketCondition co
     }
 
     public void delete(IssuedTicket issuedTicket) {
-        issuedTicket.cancelIssuedTicket();
+        issuedTicket.cancel();
     }
 
     public List<IssuedTicket> findAllByOrderUuid(String orderUuid) {
diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicket.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicket.java
index fbe7f012..9647694e 100644
--- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicket.java
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicket.java
@@ -8,6 +8,9 @@
 import band.gosrock.domain.domains.event.domain.Event;
 import band.gosrock.domain.domains.issuedTicket.dto.request.CreateIssuedTicketDTO;
 import band.gosrock.domain.domains.issuedTicket.dto.response.CreateIssuedTicketResponse;
+import band.gosrock.domain.domains.issuedTicket.exception.CanNotCancelEntranceException;
+import band.gosrock.domain.domains.issuedTicket.exception.CanNotCancelException;
+import band.gosrock.domain.domains.issuedTicket.exception.CanNotEntranceException;
 import band.gosrock.domain.domains.ticket_item.domain.TicketItem;
 import band.gosrock.domain.domains.user.domain.User;
 import java.util.ArrayList;
@@ -57,7 +60,6 @@ public class IssuedTicket extends BaseTimeEntity {
 
     /*
     발급 티켓의 주문 행 (단방향)
-    Todo: 발급 티켓이 굳이 order line 을 알아야 할까? -찬진 OrderResponse 에서 필요함! 연관관계는 따로안짓고 레지스터리에서 불러올게용ㄴ
      */
     private Long orderLineId;
 
@@ -98,7 +100,7 @@ public void addOptionAnswers(List<IssuedTicketOptionAnswer> answers) {
     private Money price;
 
     /*
-    상태
+    발급 티켓 상태
      */
     @Enumerated(EnumType.STRING)
     private IssuedTicketStatus issuedTicketStatus = IssuedTicketStatus.ENTRANCE_INCOMPLETE;
@@ -127,6 +129,11 @@ public IssuedTicket(
         this.issuedTicketOptionAnswers.addAll(issuedTicketOptionAnswers);
     }
 
+    /** ---------------------------- 생성 관련 메서드 ---------------------------------- */
+
+    /*
+    개발 및 테스트 용도로 사용되는 티켓 발급 정적 메서드
+     */
     public static IssuedTicket createForDev(
             Event event,
             User user,
@@ -149,16 +156,25 @@ public static IssuedTicket createForDev(
         return createIssuedTicket;
     }
 
+    /*
+    issuedTicket 생성하면서 UUID 생성
+     */
     @PrePersist
     public void createUUID() {
         this.uuid = UUID.randomUUID().toString();
     }
 
+    /*
+    issuedTicket 생성하면서 티켓 넘버 부여
+     */
     @PostPersist
     public void createIssuedTicketNo() {
         this.issuedTicketNo = "T" + Long.sum(NO_START_NUMBER, this.id);
     }
 
+    /*
+    발급 티켓 옵션들 합 계산
+     */
     public Money sumOptionPrice() {
         return issuedTicketOptionAnswers.stream()
                 .map(
@@ -167,10 +183,16 @@ public Money sumOptionPrice() {
                 .reduce(Money.ZERO, Money::plus);
     }
 
+    /*
+    issuedTicket VO 변환 메서드
+     */
     public IssuedTicketInfoVo toIssuedTicketInfoVo() {
         return IssuedTicketInfoVo.from(this);
     }
 
+    /*
+    orderLine -> issuedTicket 생성 메서드
+     */
     public static CreateIssuedTicketResponse orderLineItemToIssuedTickets(
             CreateIssuedTicketDTO dto) {
         long quantity = dto.getOrderLineItem().getQuantity();
@@ -196,7 +218,38 @@ public static CreateIssuedTicketResponse orderLineItemToIssuedTickets(
         return new CreateIssuedTicketResponse(createIssuedTickets, issuedTicketOptionAnswers);
     }
 
-    public void cancelIssuedTicket() {
+    /** ---------------------------- 상태 변환 관련 메서드 ---------------------------------- */
+
+    /*
+    발급 티켓 취소 메서드
+    티켓이 입장 미완료 상태가 아니면 취소 할 수 없음
+     */
+    public void cancel() {
+        if (this.issuedTicketStatus != IssuedTicketStatus.ENTRANCE_INCOMPLETE) {
+            throw CanNotCancelException.EXCEPTION;
+        }
         this.issuedTicketStatus = IssuedTicketStatus.CANCELED;
     }
+
+    /*
+    발급 티켓으로 입장 시 상태 변환 메서드
+    티켓이 입장 미완료 상태가 아니면 입장 할 수 없음
+     */
+    public void entrance() {
+        if (this.issuedTicketStatus != IssuedTicketStatus.ENTRANCE_INCOMPLETE) {
+            throw CanNotEntranceException.EXCEPTION;
+        }
+        this.issuedTicketStatus = IssuedTicketStatus.ENTRANCE_COMPLETED;
+    }
+
+    /*
+    입장 처리 취소 메서드
+    티켓이 입장 완료 상태가 아니면 입장 취소 할 수 없음
+     */
+    public void entranceCancel() {
+        if (this.issuedTicketStatus != IssuedTicketStatus.ENTRANCE_COMPLETED) {
+            throw CanNotCancelEntranceException.EXCEPTION;
+        }
+        this.issuedTicketStatus = IssuedTicketStatus.ENTRANCE_INCOMPLETE;
+    }
 }
diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelEntranceException.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelEntranceException.java
new file mode 100644
index 00000000..b5752d7c
--- /dev/null
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelEntranceException.java
@@ -0,0 +1,12 @@
+package band.gosrock.domain.domains.issuedTicket.exception;
+
+import band.gosrock.common.exception.DuDoongCodeException;
+
+public class CanNotCancelEntranceException extends DuDoongCodeException {
+
+    public static final DuDoongCodeException EXCEPTION = new CanNotCancelEntranceException();
+
+    private CanNotCancelEntranceException() {
+        super(IssuedTicketErrorCode.CAN_NOT_CANCEL_ENTRANCE);
+    }
+}
diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelException.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelException.java
new file mode 100644
index 00000000..07c5c545
--- /dev/null
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelException.java
@@ -0,0 +1,13 @@
+package band.gosrock.domain.domains.issuedTicket.exception;
+
+import band.gosrock.common.exception.DuDoongCodeException;
+
+public class CanNotCancelException extends DuDoongCodeException {
+
+    public static final DuDoongCodeException EXCEPTION = new CanNotCancelException();
+
+    private CanNotCancelException() {
+        super(IssuedTicketErrorCode.CAN_NOT_CANCEL);
+    }
+
+}
diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotEntranceException.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotEntranceException.java
new file mode 100644
index 00000000..0dad2a63
--- /dev/null
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotEntranceException.java
@@ -0,0 +1,13 @@
+package band.gosrock.domain.domains.issuedTicket.exception;
+
+import band.gosrock.common.exception.DuDoongCodeException;
+
+public class CanNotEntranceException extends DuDoongCodeException {
+
+    public static final DuDoongCodeException EXCEPTION = new CanNotEntranceException();
+
+    private CanNotEntranceException() {
+        super(IssuedTicketErrorCode.CAN_NOT_ENTRANCE);
+    }
+
+}
diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/IssuedTicketErrorCode.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/IssuedTicketErrorCode.java
index 42b8e774..c563e58e 100644
--- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/IssuedTicketErrorCode.java
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/IssuedTicketErrorCode.java
@@ -16,7 +16,10 @@
 public enum IssuedTicketErrorCode implements BaseErrorCode {
     ISSUED_TICKET_NOT_FOUND(NOT_FOUND, "IssuedTicket_404_1", "IssuedTicket Not Found"),
     ISSUED_TICKET_NOT_MATCHED_USER(
-            BAD_REQUEST, "IssuedTicket_400_1", "IssuedTicket User Not Matched");
+            BAD_REQUEST, "IssuedTicket_400_1", "IssuedTicket User Not Matched"),
+    CAN_NOT_CANCEL(BAD_REQUEST, "IssuedTicket_400_2", "티켓을 취소 할 수 있는 상태가 아닙니다."),
+    CAN_NOT_CANCEL_ENTRANCE(BAD_REQUEST, "IssuedTicket_400_3", "티켓이 입장 취소 할 수 있는 상태가 아닙니다."),
+    CAN_NOT_ENTRANCE(BAD_REQUEST, "IssuedTicket_400_5", "티켓이 입장 할 수 있는 상태가 아닙니다.");
 
     private Integer status;
     private String code;

From df91343352bec62750537b28a63cf916837b749e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=A4=80?= <sanbonai06@naver.com>
Date: Mon, 23 Jan 2023 17:36:30 +0900
Subject: [PATCH 2/4] =?UTF-8?q?feat(api)=20:=20=EB=B0=9C=EA=B8=89=20?=
 =?UTF-8?q?=ED=8B=B0=EC=BC=93=20=EC=9E=85=EC=9E=A5=20=EC=B2=98=EB=A6=AC=20?=
 =?UTF-8?q?API=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../AdminIssuedTicketController.java          | 12 +++++++++
 .../mapper/IssuedTicketMapper.java            |  2 +-
 .../service/EntranceIssuedTicketUseCase.java  | 26 +++++++++++++++++++
 .../adaptor/IssuedTicketAdaptor.java          |  8 +++++-
 .../issuedTicket/domain/IssuedTicket.java     |  6 ++++-
 .../CanNotCancelEntranceException.java        |  1 +
 .../exception/CanNotCancelException.java      |  2 +-
 .../exception/CanNotEntranceException.java    |  2 +-
 .../IssuedTicketAlreadyEntranceException.java | 13 ++++++++++
 .../exception/IssuedTicketErrorCode.java      |  3 ++-
 .../service/IssuedTicketDomainService.java    | 14 ++++++++++
 11 files changed, 83 insertions(+), 6 deletions(-)
 create mode 100644 DuDoong-Api/src/main/java/band/gosrock/api/issuedTicket/service/EntranceIssuedTicketUseCase.java
 create mode 100644 DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/IssuedTicketAlreadyEntranceException.java

diff --git a/DuDoong-Api/src/main/java/band/gosrock/api/issuedTicket/controller/AdminIssuedTicketController.java b/DuDoong-Api/src/main/java/band/gosrock/api/issuedTicket/controller/AdminIssuedTicketController.java
index 986bea6a..2e2192ed 100644
--- a/DuDoong-Api/src/main/java/band/gosrock/api/issuedTicket/controller/AdminIssuedTicketController.java
+++ b/DuDoong-Api/src/main/java/band/gosrock/api/issuedTicket/controller/AdminIssuedTicketController.java
@@ -2,12 +2,16 @@
 
 
 import band.gosrock.api.issuedTicket.dto.response.RetrieveIssuedTicketListResponse;
+import band.gosrock.api.issuedTicket.service.EntranceIssuedTicketUseCase;
 import band.gosrock.api.issuedTicket.service.ReadIssuedTicketsUseCase;
+import band.gosrock.domain.common.vo.IssuedTicketInfoVo;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.security.SecurityRequirement;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PatchMapping;
+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;
@@ -21,6 +25,8 @@ public class AdminIssuedTicketController {
 
     private final ReadIssuedTicketsUseCase readIssuedTicketsUseCase;
 
+    private final EntranceIssuedTicketUseCase entranceIssuedTicketUseCase;
+
     @Operation(summary = "[어드민 기능] 발급 티켓 리스트 가져오기 API 입니다.")
     @GetMapping
     public RetrieveIssuedTicketListResponse getIssuedTickets(
@@ -30,4 +36,10 @@ public RetrieveIssuedTicketListResponse getIssuedTickets(
             @RequestParam(required = false) String phoneNumber) {
         return readIssuedTicketsUseCase.execute(page, eventId, userName, phoneNumber);
     }
+
+    @Operation(summary = "[어드민 기능] 발급 티켓 입장 처리 API 입니다.")
+    @PatchMapping(value = "/{issuedTicketId}")
+    public IssuedTicketInfoVo patchIssuedTicketStatus(@PathVariable Long issuedTicketId) {
+        return entranceIssuedTicketUseCase.execute(issuedTicketId);
+    }
 }
diff --git a/DuDoong-Api/src/main/java/band/gosrock/api/issuedTicket/mapper/IssuedTicketMapper.java b/DuDoong-Api/src/main/java/band/gosrock/api/issuedTicket/mapper/IssuedTicketMapper.java
index 478da676..67fbe519 100644
--- a/DuDoong-Api/src/main/java/band/gosrock/api/issuedTicket/mapper/IssuedTicketMapper.java
+++ b/DuDoong-Api/src/main/java/band/gosrock/api/issuedTicket/mapper/IssuedTicketMapper.java
@@ -26,6 +26,6 @@ public RetrieveIssuedTicketListResponse toIssuedTicketPageResponse(
     public RetrieveIssuedTicketDetailResponse toIssuedTicketDetailResponse(
             Long currentUserId, Long issuedTicketId) {
         return RetrieveIssuedTicketDetailResponse.of(
-                issuedTicketAdaptor.find(currentUserId, issuedTicketId));
+                issuedTicketAdaptor.findForUser(currentUserId, issuedTicketId));
     }
 }
diff --git a/DuDoong-Api/src/main/java/band/gosrock/api/issuedTicket/service/EntranceIssuedTicketUseCase.java b/DuDoong-Api/src/main/java/band/gosrock/api/issuedTicket/service/EntranceIssuedTicketUseCase.java
new file mode 100644
index 00000000..cc682e7b
--- /dev/null
+++ b/DuDoong-Api/src/main/java/band/gosrock/api/issuedTicket/service/EntranceIssuedTicketUseCase.java
@@ -0,0 +1,26 @@
+package band.gosrock.api.issuedTicket.service;
+
+
+import band.gosrock.api.common.UserUtils;
+import band.gosrock.api.issuedTicket.mapper.IssuedTicketMapper;
+import band.gosrock.common.annotation.UseCase;
+import band.gosrock.domain.common.vo.IssuedTicketInfoVo;
+import band.gosrock.domain.domains.issuedTicket.service.IssuedTicketDomainService;
+import lombok.RequiredArgsConstructor;
+
+@UseCase
+@RequiredArgsConstructor
+public class EntranceIssuedTicketUseCase {
+
+    private final IssuedTicketDomainService issuedTicketDomainService;
+
+    private final IssuedTicketMapper issuedTicketMapper;
+
+    private final UserUtils userUtils;
+
+    public IssuedTicketInfoVo execute(Long issuedTicketId) {
+        Long currentUserId = userUtils.getCurrentUserId();
+        return issuedTicketDomainService.processingEntranceIssuedTicket(
+                currentUserId, issuedTicketId);
+    }
+}
diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/adaptor/IssuedTicketAdaptor.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/adaptor/IssuedTicketAdaptor.java
index 89cbe3e2..0053d06f 100644
--- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/adaptor/IssuedTicketAdaptor.java
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/adaptor/IssuedTicketAdaptor.java
@@ -32,7 +32,7 @@ public List<IssuedTicket> findAllByOrderLineId(Long orderLineId) {
         return issuedTicketRepository.findAllByOrderLineId(orderLineId);
     }
 
-    public IssuedTicket find(Long currentUserId, Long issuedTicketId) {
+    public IssuedTicket findForUser(Long currentUserId, Long issuedTicketId) {
         IssuedTicket issuedTicket =
                 issuedTicketRepository
                         .find(issuedTicketId)
@@ -43,6 +43,12 @@ public IssuedTicket find(Long currentUserId, Long issuedTicketId) {
         return issuedTicket;
     }
 
+    public IssuedTicket find(Long issuedTicketId) {
+        return issuedTicketRepository
+                .find(issuedTicketId)
+                .orElseThrow(() -> IssuedTicketNotFoundException.EXCEPTION);
+    }
+
     public Page<IssuedTicket> searchIssuedTicket(Long page, IssuedTicketCondition condition) {
         PageRequest pageRequest =
                 PageRequest.of(Math.toIntExact(page), 10, Sort.by("id").descending());
diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicket.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicket.java
index 9647694e..7a1499f7 100644
--- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicket.java
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/domain/IssuedTicket.java
@@ -11,6 +11,7 @@
 import band.gosrock.domain.domains.issuedTicket.exception.CanNotCancelEntranceException;
 import band.gosrock.domain.domains.issuedTicket.exception.CanNotCancelException;
 import band.gosrock.domain.domains.issuedTicket.exception.CanNotEntranceException;
+import band.gosrock.domain.domains.issuedTicket.exception.IssuedTicketAlreadyEntranceException;
 import band.gosrock.domain.domains.ticket_item.domain.TicketItem;
 import band.gosrock.domain.domains.user.domain.User;
 import java.util.ArrayList;
@@ -236,9 +237,12 @@ public void cancel() {
     티켓이 입장 미완료 상태가 아니면 입장 할 수 없음
      */
     public void entrance() {
-        if (this.issuedTicketStatus != IssuedTicketStatus.ENTRANCE_INCOMPLETE) {
+        if (this.issuedTicketStatus == IssuedTicketStatus.CANCELED) {
             throw CanNotEntranceException.EXCEPTION;
         }
+        if (this.issuedTicketStatus == IssuedTicketStatus.ENTRANCE_COMPLETED) {
+            throw IssuedTicketAlreadyEntranceException.EXCEPTION;
+        }
         this.issuedTicketStatus = IssuedTicketStatus.ENTRANCE_COMPLETED;
     }
 
diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelEntranceException.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelEntranceException.java
index b5752d7c..5f4afd9c 100644
--- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelEntranceException.java
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelEntranceException.java
@@ -1,5 +1,6 @@
 package band.gosrock.domain.domains.issuedTicket.exception;
 
+
 import band.gosrock.common.exception.DuDoongCodeException;
 
 public class CanNotCancelEntranceException extends DuDoongCodeException {
diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelException.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelException.java
index 07c5c545..9e9a8c42 100644
--- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelException.java
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotCancelException.java
@@ -1,5 +1,6 @@
 package band.gosrock.domain.domains.issuedTicket.exception;
 
+
 import band.gosrock.common.exception.DuDoongCodeException;
 
 public class CanNotCancelException extends DuDoongCodeException {
@@ -9,5 +10,4 @@ public class CanNotCancelException extends DuDoongCodeException {
     private CanNotCancelException() {
         super(IssuedTicketErrorCode.CAN_NOT_CANCEL);
     }
-
 }
diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotEntranceException.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotEntranceException.java
index 0dad2a63..074e4dad 100644
--- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotEntranceException.java
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/CanNotEntranceException.java
@@ -1,5 +1,6 @@
 package band.gosrock.domain.domains.issuedTicket.exception;
 
+
 import band.gosrock.common.exception.DuDoongCodeException;
 
 public class CanNotEntranceException extends DuDoongCodeException {
@@ -9,5 +10,4 @@ public class CanNotEntranceException extends DuDoongCodeException {
     private CanNotEntranceException() {
         super(IssuedTicketErrorCode.CAN_NOT_ENTRANCE);
     }
-
 }
diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/IssuedTicketAlreadyEntranceException.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/IssuedTicketAlreadyEntranceException.java
new file mode 100644
index 00000000..93422df1
--- /dev/null
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/IssuedTicketAlreadyEntranceException.java
@@ -0,0 +1,13 @@
+package band.gosrock.domain.domains.issuedTicket.exception;
+
+
+import band.gosrock.common.exception.DuDoongCodeException;
+
+public class IssuedTicketAlreadyEntranceException extends DuDoongCodeException {
+
+    public static final DuDoongCodeException EXCEPTION = new IssuedTicketAlreadyEntranceException();
+
+    private IssuedTicketAlreadyEntranceException() {
+        super(IssuedTicketErrorCode.ISSUED_TICKET_ALREADY_ENTRANCE);
+    }
+}
diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/IssuedTicketErrorCode.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/IssuedTicketErrorCode.java
index c563e58e..9925ec1c 100644
--- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/IssuedTicketErrorCode.java
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/exception/IssuedTicketErrorCode.java
@@ -19,7 +19,8 @@ public enum IssuedTicketErrorCode implements BaseErrorCode {
             BAD_REQUEST, "IssuedTicket_400_1", "IssuedTicket User Not Matched"),
     CAN_NOT_CANCEL(BAD_REQUEST, "IssuedTicket_400_2", "티켓을 취소 할 수 있는 상태가 아닙니다."),
     CAN_NOT_CANCEL_ENTRANCE(BAD_REQUEST, "IssuedTicket_400_3", "티켓이 입장 취소 할 수 있는 상태가 아닙니다."),
-    CAN_NOT_ENTRANCE(BAD_REQUEST, "IssuedTicket_400_5", "티켓이 입장 할 수 있는 상태가 아닙니다.");
+    CAN_NOT_ENTRANCE(BAD_REQUEST, "IssuedTicket_400_4", "티켓이 입장 할 수 있는 상태가 아닙니다."),
+    ISSUED_TICKET_ALREADY_ENTRANCE(BAD_REQUEST, "IssuedTicket_400_5", "이미 입장 처리된 티켓입니다.");
 
     private Integer status;
     private String code;
diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/service/IssuedTicketDomainService.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/service/IssuedTicketDomainService.java
index f8bc8c8e..16385c30 100644
--- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/service/IssuedTicketDomainService.java
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/service/IssuedTicketDomainService.java
@@ -3,7 +3,9 @@
 
 import band.gosrock.common.annotation.DomainService;
 import band.gosrock.domain.common.aop.redissonLock.RedissonLock;
+import band.gosrock.domain.common.vo.IssuedTicketInfoVo;
 import band.gosrock.domain.domains.event.adaptor.EventAdaptor;
+import band.gosrock.domain.domains.event.exception.HostNotAuthEventException;
 import band.gosrock.domain.domains.issuedTicket.adaptor.IssuedTicketAdaptor;
 import band.gosrock.domain.domains.issuedTicket.adaptor.IssuedTicketOptionAnswerAdaptor;
 import band.gosrock.domain.domains.issuedTicket.domain.IssuedTicket;
@@ -12,6 +14,7 @@
 import band.gosrock.domain.domains.issuedTicket.repository.IssuedTicketRepository;
 import band.gosrock.domain.domains.ticket_item.domain.TicketItem;
 import java.util.List;
+import java.util.Objects;
 import lombok.RequiredArgsConstructor;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -54,4 +57,15 @@ public void withDrawIssuedTicket(TicketItem ticketItem, List<IssuedTicket> issue
                     issuedTicketAdaptor.delete(issuedTicket);
                 });
     }
+
+    @Transactional
+    public IssuedTicketInfoVo processingEntranceIssuedTicket(
+            Long currentUserId, Long issuedTicketId) {
+        IssuedTicket issuedTicket = issuedTicketAdaptor.find(issuedTicketId);
+        if (!Objects.equals(issuedTicket.getEvent().getHostId(), currentUserId)) {
+            throw HostNotAuthEventException.EXCEPTION;
+        }
+        issuedTicket.entrance();
+        return issuedTicket.toIssuedTicketInfoVo();
+    }
 }

From 783dea12f5012e2c553986128653f39c9cae27bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=A4=80?= <sanbonai06@naver.com>
Date: Mon, 23 Jan 2023 17:37:28 +0900
Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=ED=8B=B0=EC=BC=93=20=EC=9E=AC?=
 =?UTF-8?q?=EA=B3=A0=EA=B4=80=EB=A6=AC=20RedissonLock=20=ED=8A=B8=EB=9E=9C?=
 =?UTF-8?q?=EC=9E=AD=EC=85=98=20=EC=83=88=EB=A1=9C=20=EC=B6=94=EA=B0=80?=
 =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=98=B5=EC=85=98=20=EC=88=98?=
 =?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../service/IssuedTicketDomainService.java           | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/service/IssuedTicketDomainService.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/service/IssuedTicketDomainService.java
index 16385c30..befb290c 100644
--- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/service/IssuedTicketDomainService.java
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/service/IssuedTicketDomainService.java
@@ -28,11 +28,7 @@ public class IssuedTicketDomainService {
     private final IssuedTicketOptionAnswerAdaptor issuedTicketOptionAnswerAdaptor;
     private final EventAdaptor eventAdaptor;
 
-    @RedissonLock(
-            LockName = "티켓재고관리",
-            paramClassType = TicketItem.class,
-            identifier = "id",
-            needSameTransaction = true)
+    @RedissonLock(LockName = "티켓재고관리", paramClassType = TicketItem.class, identifier = "id")
     @Transactional
     public void createIssuedTicket(
             TicketItem ticketItem, List<CreateIssuedTicketDTO> createIssuedTicketDTOs) {
@@ -44,11 +40,7 @@ public void createIssuedTicket(
                 });
     }
 
-    @RedissonLock(
-            LockName = "티켓재고관리",
-            paramClassType = TicketItem.class,
-            identifier = "id",
-            needSameTransaction = true)
+    @RedissonLock(LockName = "티켓재고관리", paramClassType = TicketItem.class, identifier = "id")
     @Transactional
     public void withDrawIssuedTicket(TicketItem ticketItem, List<IssuedTicket> issuedTickets) {
         issuedTickets.forEach(

From 9acbe7a64356d6c2227c7cfda15499283f87e27b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=A4=80?= <sanbonai06@naver.com>
Date: Mon, 23 Jan 2023 21:06:47 +0900
Subject: [PATCH 4/4] =?UTF-8?q?fix:=20delete=20->=20cancel=EB=A1=9C=20?=
 =?UTF-8?q?=EB=A9=94=EC=84=9C=EB=93=9C=20=EB=AA=85=20=ED=86=B5=EC=9D=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../domains/issuedTicket/adaptor/IssuedTicketAdaptor.java       | 2 +-
 .../domains/issuedTicket/service/IssuedTicketDomainService.java | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/adaptor/IssuedTicketAdaptor.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/adaptor/IssuedTicketAdaptor.java
index 0053d06f..daf8bfff 100644
--- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/adaptor/IssuedTicketAdaptor.java
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/adaptor/IssuedTicketAdaptor.java
@@ -55,7 +55,7 @@ public Page<IssuedTicket> searchIssuedTicket(Long page, IssuedTicketCondition co
         return issuedTicketRepository.searchToPage(condition, pageRequest);
     }
 
-    public void delete(IssuedTicket issuedTicket) {
+    public void cancel(IssuedTicket issuedTicket) {
         issuedTicket.cancel();
     }
 
diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/service/IssuedTicketDomainService.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/service/IssuedTicketDomainService.java
index befb290c..ce2776ce 100644
--- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/service/IssuedTicketDomainService.java
+++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/issuedTicket/service/IssuedTicketDomainService.java
@@ -46,7 +46,7 @@ public void withDrawIssuedTicket(TicketItem ticketItem, List<IssuedTicket> issue
         issuedTickets.forEach(
                 issuedTicket -> {
                     issuedTicket.getTicketItem().increaseQuantity(1L);
-                    issuedTicketAdaptor.delete(issuedTicket);
+                    issuedTicketAdaptor.cancel(issuedTicket);
                 });
     }