Skip to content

Commit

Permalink
Api-v0.1.7-2
Browse files Browse the repository at this point in the history
Api-v0.1.7-2
  • Loading branch information
ImNM authored Feb 23, 2023
2 parents d6014e8 + adfd2e3 commit d9e945d
Show file tree
Hide file tree
Showing 22 changed files with 382 additions and 76 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
.permitAll()
.mvcMatchers(HttpMethod.GET, "/v1/events/{eventId:[0-9]*$}/comments/**")
.permitAll()
.mvcMatchers(HttpMethod.GET, "/v1/events/search")
.permitAll()
.mvcMatchers(HttpMethod.POST, "/v1/coupons/campaigns")
.hasRole("SUPER_ADMIN")
.anyRequest()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
public class EventController {

private final ReadUserEventProfilesUseCase readUserHostEventListUseCase;
private final ReadOpenEventsUseCase readOpenEventsUseCase;
private final ReadEventDetailUseCase readEventDetailUseCase;
private final ReadEventChecklistUseCase readEventChecklistUseCase;
private final SearchEventsUseCase searchEventsUseCase;
Expand All @@ -48,17 +47,11 @@ public SliceResponse<EventProfileResponse> getAllEventByUser(
return readUserHostEventListUseCase.execute(pageable);
}

@Operation(summary = "오픈된 이벤트 리스트를 최신순으로 가져옵니다.")
@GetMapping("/list")
public SliceResponse<EventResponse> getAllOpenEventByUser(
@ParameterObject @PageableDefault(size = 10) Pageable pageable) {
return readOpenEventsUseCase.execute(pageable);
}

@Operation(summary = "이벤트 이름을 키워드로 검색하여 최신순으로 가져옵니다.")
@DisableSwaggerSecurity
@GetMapping("/search")
public SliceResponse<EventResponse> getAllOpenEventByUser(
@RequestParam String keyword,
@RequestParam(required = false) String keyword,
@ParameterObject @PageableDefault(size = 10) Pageable pageable) {
return searchEventsUseCase.execute(keyword, pageable);
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
import band.gosrock.domain.domains.host.domain.Host;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.HashSet;
import java.util.Set;
import java.util.ArrayList;
import java.util.List;
import lombok.Builder;
import lombok.Getter;

Expand All @@ -22,19 +22,17 @@ public class HostDetailResponse {
private final HostUserVo masterUser;

@Schema(description = "호스트 유저 정보")
private final Set<HostUserVo> hostUsers;
private final List<HostUserVo> hostUsers;

@Schema(description = "슬랙 알람 url")
private final String slackUrl;

@Schema(description = "파트너쉽 여부")
private final boolean partner;

// todo:: 이벤트 정보도 묶어서 내보내기

public static HostDetailResponse of(Host host, Set<HostUserVo> hostUserVoSet) {
public static HostDetailResponse of(Host host, List<HostUserVo> hostUserVoSet) {
HostDetailResponseBuilder builder = HostDetailResponse.builder();
Set<HostUserVo> hostUserVoList = new HashSet<>();
List<HostUserVo> hostUserVoList = new ArrayList<>();
hostUserVoSet.forEach(
hostUserVo -> {
if (hostUserVo.getUserInfoVo().getUserId().equals(host.getMasterUserId())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@
import band.gosrock.domain.domains.host.exception.AlreadyJoinedHostException;
import band.gosrock.domain.domains.user.adaptor.UserAdaptor;
import band.gosrock.domain.domains.user.domain.User;
import java.util.HashSet;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;
Expand Down Expand Up @@ -85,22 +84,22 @@ public HostDetailResponse toHostDetailResponse(Host host) {
}

private HostDetailResponse toHostDetailResponseExecute(Host host) {
Set<Long> userIdList = new HashSet<>();
host.getHostUsers().forEach(hostUser -> userIdList.add(hostUser.getUserId()));
final Set<UserInfoVo> userInfoVoSet =
userAdaptor.queryUserListByIdIn(userIdList).stream()
.map(User::toUserInfoVo)
.collect(Collectors.toSet());
final List<Long> userIds = host.getHostUser_UserIds();
final List<User> userList = userAdaptor.queryUserListByIdIn(userIds);
final Map<Long, User> userMap =
userList.stream().collect(Collectors.toMap(User::getId, user -> user));
final List<HostUserVo> hostUserVoList = new ArrayList<>();

final Set<HostUserVo> hostUserVoSet =
userInfoVoSet.stream()
.map(
userInfoVo ->
HostUserVo.from(
userInfoVo,
host.getHostUserByUserId(userInfoVo.getUserId())))
.collect(Collectors.toSet());
for (Long userId : userIds) {
final User user = userMap.get(userId);
if (user != null) {
final UserInfoVo userInfoVo = user.toUserInfoVo();
final HostUser hostUser = host.getHostUserByUserId(userId);
final HostUserVo hostUserVo = HostUserVo.from(userInfoVo, hostUser);
hostUserVoList.add(hostUserVo);
}
}

return HostDetailResponse.of(host, hostUserVoSet);
return HostDetailResponse.of(host, hostUserVoList);
}
}
Original file line number Diff line number Diff line change
@@ -1,25 +1,19 @@
package band.gosrock.api.host.service;


import band.gosrock.api.common.UserUtils;
import band.gosrock.api.host.model.dto.response.HostDetailResponse;
import band.gosrock.api.host.model.mapper.HostMapper;
import band.gosrock.common.annotation.UseCase;
import band.gosrock.domain.domains.user.domain.User;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

@UseCase
@RequiredArgsConstructor
public class ReadHostUseCase {
private final UserUtils userUtils;
private final HostMapper hostMapper;

@Transactional(readOnly = true)
public HostDetailResponse execute(Long hostId) {
final User user = userUtils.getCurrentUser();
final Long userId = user.getId();

return hostMapper.toHostDetailResponse(hostId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package band.gosrock.api.slack.handler.order;


import band.gosrock.domain.common.alarm.HostSlackAlarm;
import band.gosrock.domain.common.events.order.WithDrawOrderEvent;
import band.gosrock.domain.domains.event.adaptor.EventAdaptor;
import band.gosrock.domain.domains.event.domain.Event;
import band.gosrock.domain.domains.host.adaptor.HostAdaptor;
import band.gosrock.domain.domains.host.domain.Host;
import band.gosrock.domain.domains.order.adaptor.OrderAdaptor;
import band.gosrock.domain.domains.order.domain.Order;
import band.gosrock.infrastructure.config.slack.SlackMessageProvider;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.event.TransactionPhase;
import org.springframework.transaction.event.TransactionalEventListener;

@Component
@RequiredArgsConstructor
@Slf4j
public class DudoongTicketCancelOrderEventHandler {
private final EventAdaptor eventAdaptor;

private final HostAdaptor hostAdaptor;
private final OrderAdaptor orderAdaptor;
private final SlackMessageProvider slackMessageProvider;

@Async
@TransactionalEventListener(
classes = WithDrawOrderEvent.class,
phase = TransactionPhase.AFTER_COMMIT)
@Transactional(readOnly = true)
public void handle(WithDrawOrderEvent withDrawOrderEvent) {
log.info("두둥 티켓 취소 전송되는 알림");
if (!withDrawOrderEvent.getIsDudoongTicketOrder()) return;
if (withDrawOrderEvent.getIsRefund()) return;
Order order = orderAdaptor.findByOrderUuid(withDrawOrderEvent.getOrderUuid());
Event event = eventAdaptor.findById(order.getEventId());
Host host = hostAdaptor.findById(event.getHostId());
String message = HostSlackAlarm.dudoongOrderCancel(event, order);
slackMessageProvider.sendMessage(host.getSlackUrl(), message);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package band.gosrock.api.slack.handler.order;


import band.gosrock.domain.common.alarm.HostSlackAlarm;
import band.gosrock.domain.common.events.order.WithDrawOrderEvent;
import band.gosrock.domain.domains.event.adaptor.EventAdaptor;
import band.gosrock.domain.domains.event.domain.Event;
import band.gosrock.domain.domains.host.adaptor.HostAdaptor;
import band.gosrock.domain.domains.host.domain.Host;
import band.gosrock.domain.domains.order.adaptor.OrderAdaptor;
import band.gosrock.domain.domains.order.domain.Order;
import band.gosrock.infrastructure.config.slack.SlackMessageProvider;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.event.TransactionPhase;
import org.springframework.transaction.event.TransactionalEventListener;

@Component
@RequiredArgsConstructor
@Slf4j
public class DudoongTicketRefundOrderEventHandler {
private final EventAdaptor eventAdaptor;

private final HostAdaptor hostAdaptor;
private final OrderAdaptor orderAdaptor;
private final SlackMessageProvider slackMessageProvider;

@Async
@TransactionalEventListener(
classes = WithDrawOrderEvent.class,
phase = TransactionPhase.AFTER_COMMIT)
@Transactional(readOnly = true)
public void handle(WithDrawOrderEvent withDrawOrderEvent) {
log.info("두둥 티켓 환불시 전송되는 알림");
if (!withDrawOrderEvent.getIsDudoongTicketOrder()) return;
if (!withDrawOrderEvent.getIsRefund()) return;
Order order = orderAdaptor.findByOrderUuid(withDrawOrderEvent.getOrderUuid());
Event event = eventAdaptor.findById(order.getEventId());
Host host = hostAdaptor.findById(event.getHostId());
String message = HostSlackAlarm.dudoongOrderRefund(event, order);
slackMessageProvider.sendMessage(host.getSlackUrl(), message);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package band.gosrock.api.slack.handler.order;


import band.gosrock.domain.common.alarm.HostSlackAlarm;
import band.gosrock.domain.common.events.order.CreateOrderEvent;
import band.gosrock.domain.domains.event.adaptor.EventAdaptor;
import band.gosrock.domain.domains.event.domain.Event;
import band.gosrock.domain.domains.host.adaptor.HostAdaptor;
import band.gosrock.domain.domains.host.domain.Host;
import band.gosrock.domain.domains.order.adaptor.OrderAdaptor;
import band.gosrock.domain.domains.order.domain.Order;
import band.gosrock.infrastructure.config.slack.SlackMessageProvider;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.event.TransactionPhase;
import org.springframework.transaction.event.TransactionalEventListener;

@Component
@RequiredArgsConstructor
@Slf4j
public class NewApproveOrderAlarmEventHandler {
private final EventAdaptor eventAdaptor;

private final HostAdaptor hostAdaptor;
private final OrderAdaptor orderAdaptor;
private final SlackMessageProvider slackMessageProvider;

@Async
@TransactionalEventListener(
classes = CreateOrderEvent.class,
phase = TransactionPhase.AFTER_COMMIT)
@Transactional(readOnly = true)
public void handle(CreateOrderEvent createOrderEvent) {
// 승인 방식의 결제만 알림 발송 대상.
if (createOrderEvent.getOrderMethod().isPayment()) return;
log.info("승인 방식 요청 알림 전송");
Order order = orderAdaptor.findByOrderUuid(createOrderEvent.getOrderUuid());
Event event = eventAdaptor.findById(order.getEventId());
Host host = hostAdaptor.findById(event.getHostId());
String message = HostSlackAlarm.newApproveOrder(event, order);
slackMessageProvider.sendMessage(host.getSlackUrl(), message);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package band.gosrock.api.slack.handler.order;


import band.gosrock.domain.common.alarm.HostSlackAlarm;
import band.gosrock.domain.common.events.order.DoneOrderEvent;
import band.gosrock.domain.domains.event.adaptor.EventAdaptor;
import band.gosrock.domain.domains.event.domain.Event;
import band.gosrock.domain.domains.host.adaptor.HostAdaptor;
import band.gosrock.domain.domains.host.domain.Host;
import band.gosrock.domain.domains.order.adaptor.OrderAdaptor;
import band.gosrock.domain.domains.order.domain.Order;
import band.gosrock.infrastructure.config.slack.SlackMessageProvider;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.event.TransactionPhase;
import org.springframework.transaction.event.TransactionalEventListener;

@Component
@RequiredArgsConstructor
@Slf4j
public class NewConfirmOrderAlarmEventHandler {
private final EventAdaptor eventAdaptor;

private final HostAdaptor hostAdaptor;
private final OrderAdaptor orderAdaptor;
private final SlackMessageProvider slackMessageProvider;

@Async
@TransactionalEventListener(
classes = DoneOrderEvent.class,
phase = TransactionPhase.AFTER_COMMIT)
@Transactional(readOnly = true)
public void handle(DoneOrderEvent doneOrderEvent) {
// 선착순 방식의 결제만 알림 발송 대상.
if (!doneOrderEvent.getOrderMethod().isPayment()) return;
log.info("선착순 방식의 결제만 알림 발송 대상 알림 전송");
Order order = orderAdaptor.findByOrderUuid(doneOrderEvent.getOrderUuid());
Event event = eventAdaptor.findById(order.getEventId());
Host host = hostAdaptor.findById(event.getHostId());
String message = HostSlackAlarm.newConfirmOrder(event, order);
slackMessageProvider.sendMessage(host.getSlackUrl(), message);
}
}
Loading

0 comments on commit d9e945d

Please sign in to comment.