|
3 | 3 | import lombok.AllArgsConstructor; |
4 | 4 | import lombok.extern.slf4j.Slf4j; |
5 | 5 | import org.myteam.server.chat.domain.Ban; |
| 6 | +import org.myteam.server.chat.domain.BanReason; |
6 | 7 | import org.myteam.server.chat.dto.request.BanRequest; |
7 | 8 | import org.myteam.server.chat.dto.response.BanResponse; |
8 | 9 | import org.myteam.server.chat.repository.BanRepository; |
9 | 10 | import org.myteam.server.global.exception.ErrorCode; |
10 | 11 | import org.myteam.server.global.exception.PlayHiveException; |
| 12 | +import org.myteam.server.util.slack.service.SlackService; |
11 | 13 | import org.springframework.stereotype.Service; |
12 | 14 |
|
13 | 15 | import java.time.format.DateTimeFormatter; |
| 16 | +import java.util.stream.Collectors; |
14 | 17 |
|
15 | 18 | @Slf4j |
16 | 19 | @Service |
17 | 20 | @AllArgsConstructor |
18 | 21 | public class BanService { |
19 | 22 |
|
20 | 23 | private final BanRepository banRepository; |
| 24 | + private final SlackService slackService; |
21 | 25 |
|
22 | 26 | /** |
23 | | - * TODO: 슬랙 알람 서비스 적용해야함. |
24 | 27 | * 유저 밴 적용 |
25 | 28 | */ |
26 | 29 | public BanResponse banUser(BanRequest request) { |
27 | | - log.info("This user: {} has received a blocking request.", request.getUsername()); |
| 30 | + String username = request.getUsername(); |
| 31 | + log.info("This user: {} has received a blocking request.", username); |
28 | 32 | // 이미 밴된 유저인지 확인 |
29 | | - if (banRepository.existsByUsername(request.getUsername())) { |
| 33 | + if (banRepository.existsByUsername(username)) { |
30 | 34 | throw new PlayHiveException(ErrorCode.BAN_ALREADY_EXISTS); |
31 | 35 | } |
32 | 36 |
|
33 | | - Ban ban = Ban.createBan(request.getUsername(), request.getReasons(), request.getMessage()); |
| 37 | + Ban ban = Ban.createBan(username, request.getReasons(), request.getMessage()); |
34 | 38 | Ban savedBan = banRepository.save(ban); |
35 | 39 |
|
| 40 | + String reasons = request.getReasons() |
| 41 | + .stream() |
| 42 | + .map(BanReason::getReason) |
| 43 | + .collect(Collectors.joining(", ")); |
| 44 | + String message = String.format("%s (차단 사유: %s)", username, reasons); |
| 45 | + slackService.sendSlackNotification(message); |
| 46 | + |
36 | 47 | return toBanResponse(savedBan); |
37 | 48 | } |
38 | 49 |
|
|
0 commit comments