Skip to content

Commit

Permalink
Merge pull request #112 from Yanabada/feature/109
Browse files Browse the repository at this point in the history
알림 서비스 적용 및 Security 적용
  • Loading branch information
Programmer-may authored Jan 20, 2024
2 parents 7954367 + 7675fd9 commit 1ab2a5a
Show file tree
Hide file tree
Showing 7 changed files with 120 additions and 52 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,22 @@
import java.util.Map;
import kr.co.fastcampus.yanabada.common.exception.JsonProcessFailedException;
import kr.co.fastcampus.yanabada.domain.member.entity.Member;
import lombok.Builder;

@Builder
public record TradeNotificationDto(
Member receiver,
String accommodationName
) {
public static TradeNotificationDto from(
Member receiver,
String accommodationName
) {
return TradeNotificationDto.builder()
.receiver(receiver)
.accommodationName(accommodationName)
.build();
}

public String convertMapToJsonStr(ObjectMapper objectMapper) {
Map<String, String> contentMap = new HashMap<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,100 +89,100 @@ public void sendChatCreated(ChatNotificationDto chatDto) {
}

@Transactional
public void sendTradeRequest(TradeNotificationDto tradeApprovalDto) {
public void sendTradeRequest(TradeNotificationDto tradeNotificationDto) {
Notification notification = Notification.builder()
.title(TRADE_REQUEST_TITLE)
.body(
getShortPhrase(tradeApprovalDto.accommodationName())
getShortPhrase(tradeNotificationDto.accommodationName())
+ TRADE_REQUEST_CONTENT_POSTFIX
)
.build();

Data data = Data.builder().notificationType(TRADE_REQUEST.name()).build();

fcmService.sendToMessage(tradeApprovalDto.receiver().getFcmToken(), notification, data);
fcmService.sendToMessage(tradeNotificationDto.receiver().getFcmToken(), notification, data);

NotificationHistory notificationHistory
= NotificationHistory.builder()
.receiver(tradeApprovalDto.receiver())
.receiver(tradeNotificationDto.receiver())
.notificationType(TRADE_REQUEST)
.content(tradeApprovalDto.convertMapToJsonStr(objectMapper))
.content(tradeNotificationDto.convertMapToJsonStr(objectMapper))
.image(TRADE_REQUEST.name().toLowerCase() + ".png")
.build();
notificationHistoryRepository.save(notificationHistory);

}

@Transactional
public void sendTradeCanceled(TradeNotificationDto tradeApprovalDto) {
public void sendTradeCanceled(TradeNotificationDto tradeNotificationDto) {
Notification notification = Notification.builder()
.title(TRADE_CANCELED_TITLE)
.body(
TRADE_CANCELED_CONTENT_PREFIX
+ getShortPhrase(tradeApprovalDto.accommodationName())
+ getShortPhrase(tradeNotificationDto.accommodationName())
+ TRADE_CANCELED_CONTENT_POSTFIX
)
.build();

Data data = Data.builder().notificationType(TRADE_CANCELED.name()).build();

fcmService.sendToMessage(tradeApprovalDto.receiver().getFcmToken(), notification, data);
fcmService.sendToMessage(tradeNotificationDto.receiver().getFcmToken(), notification, data);

NotificationHistory notificationHistory
= NotificationHistory.builder()
.receiver(tradeApprovalDto.receiver())
.receiver(tradeNotificationDto.receiver())
.notificationType(TRADE_CANCELED)
.content(tradeApprovalDto.convertMapToJsonStr(objectMapper))
.content(tradeNotificationDto.convertMapToJsonStr(objectMapper))
.image(TRADE_CANCELED.name().toLowerCase() + ".png") //todo: png 상수처리?
.build();
notificationHistoryRepository.save(notificationHistory);

}

@Transactional
public void sendTradeApproval(TradeNotificationDto tradeApprovalDto) {
public void sendTradeApproval(TradeNotificationDto tradeNotificationDto) {
Notification notification = Notification.builder()
.title(TRADE_APPROVAL_TITLE)
.body(
getShortPhrase(tradeApprovalDto.accommodationName())
getShortPhrase(tradeNotificationDto.accommodationName())
+ TRADE_APPROVAL_CONTENT_POSTFIX
)
.build();

Data data = Data.builder().notificationType(TRADE_APPROVAL.name()).build();

fcmService.sendToMessage(tradeApprovalDto.receiver().getFcmToken(), notification, data);
fcmService.sendToMessage(tradeNotificationDto.receiver().getFcmToken(), notification, data);

NotificationHistory notificationHistory
= NotificationHistory.builder()
.receiver(tradeApprovalDto.receiver())
.receiver(tradeNotificationDto.receiver())
.notificationType(TRADE_APPROVAL)
.content(tradeApprovalDto.convertMapToJsonStr(objectMapper))
.content(tradeNotificationDto.convertMapToJsonStr(objectMapper))
.image(TRADE_APPROVAL.name().toLowerCase() + ".png")
.build();
notificationHistoryRepository.save(notificationHistory);

}

@Transactional
public void sendTradeRejected(TradeNotificationDto tradeApprovalDto) {
public void sendTradeRejected(TradeNotificationDto tradeNotificationDto) {
Notification notification = Notification.builder()
.title(TRADE_REJECTED_TITLE)
.body(
getShortPhrase(tradeApprovalDto.accommodationName())
getShortPhrase(tradeNotificationDto.accommodationName())
+ TRADE_REJECTED_CONTENT_POSTFIX
)
.build();

Data data = Data.builder().notificationType(TRADE_REJECTED.name()).build();

fcmService.sendToMessage(tradeApprovalDto.receiver().getFcmToken(), notification, data);
fcmService.sendToMessage(tradeNotificationDto.receiver().getFcmToken(), notification, data);

NotificationHistory notificationHistory
= NotificationHistory.builder()
.receiver(tradeApprovalDto.receiver())
.receiver(tradeNotificationDto.receiver())
.notificationType(TRADE_REJECTED)
.content(tradeApprovalDto.convertMapToJsonStr(objectMapper))
.content(tradeNotificationDto.convertMapToJsonStr(objectMapper))
.image(TRADE_REJECTED.name().toLowerCase() + ".png")
.build();
notificationHistoryRepository.save(notificationHistory);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,25 @@

import java.util.List;
import kr.co.fastcampus.yanabada.common.response.ResponseBody;
import kr.co.fastcampus.yanabada.common.security.PrincipalDetails;
import kr.co.fastcampus.yanabada.domain.order.dto.request.OrderSaveRequest;
import kr.co.fastcampus.yanabada.domain.order.dto.response.OrderInfoResponse;
import kr.co.fastcampus.yanabada.domain.order.dto.response.OrderSummaryResponse;
import kr.co.fastcampus.yanabada.domain.order.service.OrderService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("orders")
@RequestMapping("/orders")
public class OrderController {

private final OrderService orderService;
Expand All @@ -31,17 +32,19 @@ public ResponseBody<Void> addOrder(@RequestBody OrderSaveRequest request) {
}

@GetMapping("/can-sell")
public ResponseBody<List<OrderSummaryResponse>> getSellableOrders() {
public ResponseBody<List<OrderSummaryResponse>> getSellableOrders(
@AuthenticationPrincipal PrincipalDetails principalDetails
) {
return ResponseBody.ok(
orderService.getSellableOrders(1L)
orderService.getSellableOrders(principalDetails.id())
);
}

@GetMapping("/{orderId}")
public ResponseBody<OrderInfoResponse> getOrderInfo(
@PathVariable Long orderId,
@RequestParam Long currentUserId
@AuthenticationPrincipal PrincipalDetails principalDetails
) {
return ResponseBody.ok(orderService.getOrderInfo(orderId, currentUserId));
return ResponseBody.ok(orderService.getOrderInfo(orderId, principalDetails.id()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import jakarta.validation.Valid;
import kr.co.fastcampus.yanabada.common.response.ResponseBody;
import kr.co.fastcampus.yanabada.common.security.PrincipalDetails;
import kr.co.fastcampus.yanabada.domain.payment.dto.request.YanoljaPayAmountRequest;
import kr.co.fastcampus.yanabada.domain.payment.dto.request.YanoljaPayHistorySearchRequest;
import kr.co.fastcampus.yanabada.domain.payment.dto.request.YanoljaPaySaveRequest;
Expand All @@ -13,6 +14,7 @@
import kr.co.fastcampus.yanabada.domain.payment.dto.response.YanoljaPaySummaryResponse;
import kr.co.fastcampus.yanabada.domain.payment.service.PaymentService;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
Expand All @@ -28,60 +30,69 @@ public class PaymentController {
private final PaymentService paymentService;

@GetMapping("/summary")
public ResponseBody<YanoljaPaySummaryResponse> getYanoljaPaySummary() {
return ResponseBody.ok(paymentService.getYanoljaPaySummary(2L));
public ResponseBody<YanoljaPaySummaryResponse> getYanoljaPaySummary(
@AuthenticationPrincipal PrincipalDetails principalDetails
) {
return ResponseBody.ok(paymentService.getYanoljaPaySummary(principalDetails.id()));
}

@GetMapping
public ResponseBody<YanoljaPayInfoResponse> getYanoljaPay() {
return ResponseBody.ok(paymentService.getYanoljaPay(2L));
public ResponseBody<YanoljaPayInfoResponse> getYanoljaPay(
@AuthenticationPrincipal PrincipalDetails principalDetails
) {
return ResponseBody.ok(paymentService.getYanoljaPay(principalDetails.id()));
}

@PostMapping
public ResponseBody<Void> saveYanoljaPay(
@AuthenticationPrincipal PrincipalDetails principalDetails,
@RequestBody @Valid YanoljaPaySaveRequest request
) {
paymentService.saveYanoljaPay(2L, request);
paymentService.saveYanoljaPay(principalDetails.id(), request);
return ResponseBody.ok();
}

@PostMapping("/charge")
public ResponseBody<YanoljaPayHistoryIdResponse> chargeYanoljaPay(
@AuthenticationPrincipal PrincipalDetails principalDetails,
@RequestBody @Valid YanoljaPayAmountRequest request
) {
return ResponseBody.ok(
paymentService.chargeYanoljaPay(2L, request)
paymentService.chargeYanoljaPay(principalDetails.id(), request)
);
}

@PostMapping("/disburse")
public ResponseBody<YanoljaPayHistoryIdResponse> disburseYanoljaPay(
@AuthenticationPrincipal PrincipalDetails principalDetails,
@RequestBody @Valid YanoljaPayAmountRequest request
) {
return ResponseBody.ok(
paymentService.disburseYanoljaPay(2L, request)
paymentService.disburseYanoljaPay(principalDetails.id(), request)
);
}

@GetMapping("/histories")
public ResponseBody<YanoljaPayHistorySummaryPageResponse> getYanoljaPayHistories(
@AuthenticationPrincipal PrincipalDetails principalDetails,
YanoljaPayHistorySearchRequest request
) {
return ResponseBody.ok(
paymentService.getYanoljaPayHistoriesBySearchRequest(
2L,
principalDetails.id(),
request
)
);
}

@GetMapping("/histories/{historyId}")
public ResponseBody<YanoljaPayHistoryInfoResponse> getYanoljaPayHistory(
@AuthenticationPrincipal PrincipalDetails principalDetails,
@PathVariable("historyId") Long historyId
) {
return ResponseBody.ok(
paymentService.getYanoljaPayHistory(
2L,
principalDetails.id(),
historyId
)
);
Expand Down
Loading

0 comments on commit 1ab2a5a

Please sign in to comment.