Skip to content

Commit e6328a9

Browse files
committed
Spring Application v3
1 parent db900bd commit e6328a9

4 files changed

Lines changed: 55 additions & 12 deletions

File tree

heroes/src/main/java/ru/mifi/practice/voln/entity/UserEntity.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
import lombok.Builder;
44
import lombok.EqualsAndHashCode;
5+
import lombok.Getter;
56
import org.springframework.util.StringUtils;
67

78
import java.util.UUID;
89

910
@Builder(toBuilder = true)
11+
@Getter
1012
@EqualsAndHashCode(of = "id")
1113
public class UserEntity {
1214
private UUID id;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package ru.mifi.practice.voln.repository;
2+
3+
import reactor.core.publisher.Mono;
4+
5+
import java.util.UUID;
6+
7+
public interface MessageRepository {
8+
Mono<Void> receivedMessage(UUID userId, String text);
9+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package ru.mifi.practice.voln.repository.implementation;
2+
3+
import org.springframework.stereotype.Service;
4+
import reactor.core.publisher.Mono;
5+
import ru.mifi.practice.voln.repository.MessageRepository;
6+
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
import java.util.Map;
10+
import java.util.UUID;
11+
import java.util.concurrent.ConcurrentHashMap;
12+
13+
@Service
14+
public class MessageRepositoryPostgres implements MessageRepository {
15+
private final Map<UUID, List<String>> telegramUserMessages = new ConcurrentHashMap<>();
16+
17+
@Override
18+
public Mono<Void> receivedMessage(UUID userId, String text) {
19+
telegramUserMessages.computeIfAbsent(userId, (k) -> new ArrayList<>()).add(text);
20+
return Mono.empty();
21+
}
22+
}

heroes/src/main/java/ru/mifi/practice/voln/service/TelegramHandlerService.java

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import reactor.core.scheduler.Scheduler;
1818
import ru.mifi.practice.voln.api.TelegramHandler;
1919
import ru.mifi.practice.voln.entity.UserEntity;
20+
import ru.mifi.practice.voln.repository.MessageRepository;
2021
import ru.mifi.practice.voln.repository.UserRepository;
2122

2223
import java.util.List;
@@ -26,8 +27,23 @@
2627
@Service("TelegramHandler.Default")
2728
public class TelegramHandlerService implements TelegramHandler {
2829
private final UserRepository userRepository;
30+
private final MessageRepository messageRepository;
2931
private final Scheduler telegramScheduler;
3032

33+
private static void sendContactPermissions(TelegramLongPollingBot bot, Long chatId) {
34+
ReplyKeyboardMarkup markup = new ReplyKeyboardMarkup(List.of(
35+
new KeyboardRow(List.of(KeyboardButton.builder().text("Отправить карточку").requestContact(true).build()))
36+
));
37+
try {
38+
bot.execute(SendMessage.builder().chatId(chatId)
39+
.text("Для регистрации отправьте свою персональную карточку").replyMarkup(markup).build());
40+
} catch (TelegramApiException e) {
41+
if (log.isErrorEnabled()) {
42+
log.error("", e);
43+
}
44+
}
45+
}
46+
3147
@Override
3248
public void received(TelegramLongPollingBot bot, Update update) {
3349
processing(bot, update)
@@ -67,26 +83,20 @@ private Mono<Void> processing(TelegramLongPollingBot bot, Update update) {
6783
if (entity.isTelegramRegistered()) {
6884
sink.next(entity);
6985
} else {
70-
ReplyKeyboardMarkup markup = new ReplyKeyboardMarkup(List.of(
71-
new KeyboardRow(List.of(KeyboardButton.builder().text("Отправить карточку").requestContact(true).build()))
72-
));
73-
try {
74-
bot.execute(SendMessage.builder().chatId(chatId)
75-
.text("Для регистрации отправьте свою персональную карточку").replyMarkup(markup).build());
76-
} catch (TelegramApiException e) {
77-
if (log.isErrorEnabled()) {
78-
log.error("", e);
79-
}
80-
}
86+
sendContactPermissions(bot, chatId);
8187
sink.complete();
8288
}
8389
})
8490
.map(entity -> processing(bot, update, entity))
91+
.switchIfEmpty(Mono.fromCallable(() -> {
92+
sendContactPermissions(bot, chatId);
93+
return Mono.empty();
94+
}))
8595
.then();
8696
}
8797

8898
@SuppressWarnings("PMD.UnusedFormalParameter")
8999
private Mono<Void> processing(TelegramLongPollingBot bot, Update update, UserEntity entity) {
90-
return Mono.empty();
100+
return messageRepository.receivedMessage(entity.getId(), update.toString());
91101
}
92102
}

0 commit comments

Comments
 (0)