diff --git a/src/main/java/com/backend/domain/benefit/entity/BenefitType.java b/src/main/java/com/backend/domain/benefit/entity/BenefitType.java index e24c9a6..77e59bf 100644 --- a/src/main/java/com/backend/domain/benefit/entity/BenefitType.java +++ b/src/main/java/com/backend/domain/benefit/entity/BenefitType.java @@ -2,6 +2,6 @@ public enum BenefitType { - FIX, RATE, MENU, COUPON, STAMP + FIX, RATE, MENU } diff --git a/src/main/java/com/backend/domain/event/controller/EventController.java b/src/main/java/com/backend/domain/event/controller/EventController.java index eea6e45..39ff09c 100644 --- a/src/main/java/com/backend/domain/event/controller/EventController.java +++ b/src/main/java/com/backend/domain/event/controller/EventController.java @@ -4,16 +4,18 @@ import com.backend.domain.auth.dto.Login; import com.backend.domain.auth.dto.LoginUser; import com.backend.domain.event.dto.*; +import com.backend.domain.event.entity.EventType; import com.backend.domain.event.service.EventService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequiredArgsConstructor @RequestMapping("/event") @@ -64,4 +66,10 @@ public ResponseEntity deleteEvent(@Parameter(hidden = true) @Login LoginUs return ResponseDto.ok(); } + @DeleteMapping + public ResponseEntity deleteEvent(@Parameter(hidden = true) @Login LoginUser loginUser, @RequestParam(name = "type") EventType type, @RequestParam(name = "ids") List ids) { + eventService.deleteEvents(loginUser, type, ids); + return ResponseDto.ok(); + } + } diff --git a/src/main/java/com/backend/domain/event/dto/CreateEventRequest.java b/src/main/java/com/backend/domain/event/dto/CreateEventRequest.java index 99be442..37da145 100644 --- a/src/main/java/com/backend/domain/event/dto/CreateEventRequest.java +++ b/src/main/java/com/backend/domain/event/dto/CreateEventRequest.java @@ -1,8 +1,8 @@ package com.backend.domain.event.dto; -import com.backend.domain.benefit.entity.BenefitType; import com.backend.domain.event.entity.Condition; import com.backend.domain.event.entity.Event; +import com.backend.domain.event.entity.EventType; import com.backend.domain.popup.domain.EndDateType; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; @@ -24,7 +24,7 @@ public class CreateEventRequest { @Schema(example = "COUPON") @NotEmpty - private BenefitType type; + private EventType type; @Schema(example = "5000원 할인 쿠폰") @NotEmpty @@ -63,7 +63,7 @@ public Event toEntity() { } private void validateDuration() { - if (type.equals(BenefitType.STAMP)) { + if (type.equals(EventType.STAMP)) { if (duration == null) { throw new RuntimeException(); } @@ -77,7 +77,7 @@ public void validateQuantity() { } private int createDiscount() { - if (type.equals(BenefitType.STAMP)) { + if (type.equals(EventType.STAMP)) { return 0; } return discount; diff --git a/src/main/java/com/backend/domain/event/dto/ReadEventDto.java b/src/main/java/com/backend/domain/event/dto/ReadEventDto.java index 9d66d29..c5bfa48 100644 --- a/src/main/java/com/backend/domain/event/dto/ReadEventDto.java +++ b/src/main/java/com/backend/domain/event/dto/ReadEventDto.java @@ -1,8 +1,8 @@ package com.backend.domain.event.dto; -import com.backend.domain.benefit.entity.BenefitType; import com.backend.domain.event.entity.Condition; import com.backend.domain.event.entity.Event; +import com.backend.domain.event.entity.EventType; import com.backend.domain.store.dto.StoreDto; import com.backend.domain.store.entity.Store; import lombok.AllArgsConstructor; @@ -22,7 +22,7 @@ public class ReadEventDto { private Long eventId; - private BenefitType eventType; + private EventType eventType; private String eventName; diff --git a/src/main/java/com/backend/domain/event/dto/ReadEventsRequest.java b/src/main/java/com/backend/domain/event/dto/ReadEventsRequest.java index 328cd72..4bf2222 100644 --- a/src/main/java/com/backend/domain/event/dto/ReadEventsRequest.java +++ b/src/main/java/com/backend/domain/event/dto/ReadEventsRequest.java @@ -1,6 +1,6 @@ package com.backend.domain.event.dto; -import com.backend.domain.benefit.entity.BenefitType; +import com.backend.domain.event.entity.EventType; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; @@ -13,7 +13,7 @@ public class ReadEventsRequest { @Schema(example = "COUPON") - private BenefitType type; + private EventType type; @Schema(example = "40") private int pageSize; @@ -24,7 +24,7 @@ public class ReadEventsRequest { { pageSize = 40; pageNumber = 0; - type = BenefitType.COUPON; + type = EventType.COUPON; } @Schema(hidden = true) diff --git a/src/main/java/com/backend/domain/event/entity/Event.java b/src/main/java/com/backend/domain/event/entity/Event.java index 2a7abf9..b4e542d 100644 --- a/src/main/java/com/backend/domain/event/entity/Event.java +++ b/src/main/java/com/backend/domain/event/entity/Event.java @@ -1,7 +1,6 @@ package com.backend.domain.event.entity; import com.backend.common.domain.BaseEntity; -import com.backend.domain.benefit.entity.BenefitType; import com.backend.domain.contract.entity.Contract; import com.backend.domain.event.dto.UpdateEventRequest; import jakarta.persistence.*; @@ -25,7 +24,7 @@ public class Event extends BaseEntity { private String name; @Enumerated(EnumType.STRING) - private BenefitType type; + private EventType type; @OneToMany(mappedBy = "event", cascade = CascadeType.PERSIST, orphanRemoval = true) private List conditions = new ArrayList<>(); @@ -43,7 +42,7 @@ public class Event extends BaseEntity { private Contract contract; @Builder - public Event(BenefitType type, String name, int discount, int quantity, LocalDate startDate, LocalDate endDate, Contract contract) { + public Event(EventType type, String name, int discount, int quantity, LocalDate startDate, LocalDate endDate, Contract contract) { this.type = type; this.name = name; this.discount = discount; @@ -68,7 +67,7 @@ public void addAll(List conditions) { } public void setDate(Contract contract) { - if (type.equals(BenefitType.COUPON)) { + if (type.equals(EventType.COUPON)) { this.startDate = contract.getStartDate(); this.endDate = contract.getEndDate(); } @@ -82,7 +81,7 @@ public void update(UpdateEventRequest request) { name = request.getName(); discount = request.getDiscount(); quantity = request.getQuantity(); - if (type.equals(BenefitType.STAMP)) { + if (type.equals(EventType.STAMP)) { startDate = request.getStartDate(); endDate = startDate.plusDays(request.getDuration().getPlusDate()); } diff --git a/src/main/java/com/backend/domain/event/entity/EventType.java b/src/main/java/com/backend/domain/event/entity/EventType.java new file mode 100644 index 0000000..0718884 --- /dev/null +++ b/src/main/java/com/backend/domain/event/entity/EventType.java @@ -0,0 +1,10 @@ +package com.backend.domain.event.entity; + +import lombok.Getter; + +@Getter +public enum EventType { + + COUPON, STAMP + +} diff --git a/src/main/java/com/backend/domain/event/repository/EventRepository.java b/src/main/java/com/backend/domain/event/repository/EventRepository.java index e9c6633..5ed0a92 100644 --- a/src/main/java/com/backend/domain/event/repository/EventRepository.java +++ b/src/main/java/com/backend/domain/event/repository/EventRepository.java @@ -1,8 +1,8 @@ package com.backend.domain.event.repository; -import com.backend.domain.benefit.entity.BenefitType; import com.backend.domain.contract.entity.Contract; import com.backend.domain.event.entity.Event; +import com.backend.domain.event.entity.EventType; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.jpa.repository.JpaRepository; @@ -19,6 +19,8 @@ public interface EventRepository extends JpaRepository { " from Event e" + " where e.type = :type and e.contract in :contracts and :now between e.startDate and e.endDate" ) - Page findAllByTypeAndContractIn(@Param(value = "type") BenefitType type, @Param(value = "contracts") List contracts, @Param(value = "now") LocalDate now, PageRequest page); + Page findAllByTypeAndContractIn(@Param(value = "type") EventType type, @Param(value = "contracts") List contracts, @Param(value = "now") LocalDate now, PageRequest page); + + List findAllByEventIdInAndType(List ids, EventType type); } diff --git a/src/main/java/com/backend/domain/event/service/EventService.java b/src/main/java/com/backend/domain/event/service/EventService.java index fa8cdff..c1bc202 100644 --- a/src/main/java/com/backend/domain/event/service/EventService.java +++ b/src/main/java/com/backend/domain/event/service/EventService.java @@ -5,6 +5,7 @@ import com.backend.domain.contract.repository.ContractRepository; import com.backend.domain.event.dto.*; import com.backend.domain.event.entity.Event; +import com.backend.domain.event.entity.EventType; import com.backend.domain.event.repository.EventRepository; import com.backend.domain.store.entity.Store; import com.backend.domain.store.repository.StoreRepository; @@ -73,4 +74,9 @@ public void validateAuthority(User user, Event event) { } } + public void deleteEvents(LoginUser loginUser, EventType type, List ids) { + User user = userRepository.findByEmail(loginUser.getEmail()).orElseThrow(RuntimeException::new); + eventRepository.findAllByEventIdInAndType(ids, type).forEach(Event::expire); + } + }