diff --git a/pom.xml b/pom.xml index c078dc8..9474dd4 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,6 @@ 0.6.3-SNAPSHOT 0.5.13-FORK - 1.2.17 @@ -36,12 +35,6 @@ ${vksdk.ver} - - log4j - log4j - ${log4j.ver} - - org.sadtech.social social-core diff --git a/src/main/java/org/sadtech/vkbot/core/convert/MessageMailConvert.java b/src/main/java/org/sadtech/vkbot/core/convert/MessageMailConvert.java index 1cd3d60..ef928a3 100644 --- a/src/main/java/org/sadtech/vkbot/core/convert/MessageMailConvert.java +++ b/src/main/java/org/sadtech/vkbot/core/convert/MessageMailConvert.java @@ -1,5 +1,6 @@ package org.sadtech.vkbot.core.convert; +import com.vk.api.sdk.objects.messages.ForeignMessage; import com.vk.api.sdk.objects.messages.Message; import com.vk.api.sdk.objects.messages.MessageAttachment; import org.sadtech.social.core.domain.content.Mail; @@ -9,6 +10,7 @@ import org.sadtech.social.core.domain.content.attachment.Geo; import java.time.Instant; import java.time.LocalDateTime; +import java.util.List; import java.util.TimeZone; import java.util.stream.Collectors; @@ -21,13 +23,62 @@ public class MessageMailConvert implements Convert { mail.setCreateDate(LocalDateTime.ofInstant(Instant.ofEpochSecond(message.getDate()), TimeZone.getDefault().toZoneId())); mail.setId(message.getId()); mail.setPersonId(message.getPeerId()); - mail.setAttachments(message.getAttachments() - .stream() - .map(this::convertAttachment) - .collect(Collectors.toList())); - if (message.getGeo() != null) { - mail.getAttachments().add(convertGeo(message.getGeo())); + List attachments = message.getAttachments(); + + if (attachments != null && !attachments.isEmpty()) { + mail.setAttachments( + attachments.stream() + .map(this::convertAttachment) + .collect(Collectors.toList()) + ); } + + com.vk.api.sdk.objects.base.Geo messageGeo = message.getGeo(); + if (messageGeo != null) { + mail.getAttachments().add(convertGeo(messageGeo)); + } + + List fwdMessages = message.getFwdMessages(); + if (fwdMessages != null && !fwdMessages.isEmpty()) { + mail.setForwardMail( + fwdMessages.stream() + .map(this::convertFwdMessage) + .collect(Collectors.toList()) + ); + } + mail.setAddDate(LocalDateTime.now()); + return mail; + } + + private Mail convertFwdMessage(ForeignMessage foreignMessage) { + Mail mail = new Mail(); + mail.setText(foreignMessage.getText()); + mail.setCreateDate(LocalDateTime.ofInstant(Instant.ofEpochSecond(foreignMessage.getDate()), TimeZone.getDefault().toZoneId())); + mail.setId(foreignMessage.getId()); + mail.setPersonId(foreignMessage.getPeerId()); + + List attachments = foreignMessage.getAttachments(); + if (attachments != null && !attachments.isEmpty()) { + mail.setAttachments( + attachments.stream() + .map(this::convertAttachment) + .collect(Collectors.toList()) + ); + } + + com.vk.api.sdk.objects.base.Geo messageGeo = foreignMessage.getGeo(); + if (messageGeo != null) { + mail.getAttachments().add(convertGeo(messageGeo)); + } + + List fwdMessages = foreignMessage.getFwdMessages(); + if (fwdMessages != null && !fwdMessages.isEmpty()) + mail.setForwardMail( + fwdMessages.stream() + .map(this::convertFwdMessage) + .collect(Collectors.toList()) + ); + mail.setAddDate(LocalDateTime.now()); return mail; } diff --git a/src/main/java/org/sadtech/vkbot/core/distribution/subscriber/AccountSubscribe.java b/src/main/java/org/sadtech/vkbot/core/distribution/subscriber/AccountSubscribe.java index de6b979..53f6521 100644 --- a/src/main/java/org/sadtech/vkbot/core/distribution/subscriber/AccountSubscribe.java +++ b/src/main/java/org/sadtech/vkbot/core/distribution/subscriber/AccountSubscribe.java @@ -2,26 +2,21 @@ package org.sadtech.vkbot.core.distribution.subscriber; import com.vk.api.sdk.objects.messages.Message; import com.vk.api.sdk.objects.messages.MessageAttachmentType; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.sadtech.social.core.domain.BoxAnswer; import org.sadtech.social.core.exception.PaymentException; import org.sadtech.social.core.service.AccountService; -import org.sadtech.social.core.service.sender.Sent; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.sadtech.social.core.service.sender.Sending; +@Slf4j +@RequiredArgsConstructor public class AccountSubscribe extends AbstractBasketSubscribe { - private static final Logger log = LoggerFactory.getLogger(AccountSubscribe.class); - private final AccountService accountService; - private final Sent sent; + private final Sending sending; private BoxAnswer answerSuccessfulPayment; - public AccountSubscribe(AccountService accountService, Sent sent) { - this.accountService = accountService; - this.sent = sent; - } - @Override public boolean check(Message userMessage) { return userMessage.getAttachments().size() > 0 @@ -35,11 +30,11 @@ public class AccountSubscribe extends AbstractBasketSubscribe try { Integer valueSum = Integer.valueOf(message.getAttachments().get(0).getLink().getTitle().split(" ")[0]); if (accountService.pay(Integer.valueOf(message.getText()), message.getPeerId(), valueSum) && answerSuccessfulPayment != null) { - sent.send(message.getPeerId(), answerSuccessfulPayment); + sending.send(message.getPeerId(), answerSuccessfulPayment); } } catch (PaymentException e) { log.error(e.getMessage()); - sent.send(message.getPeerId(), BoxAnswer.builder().message(e.getDescription()).build()); + sending.send(message.getPeerId(), BoxAnswer.builder().message(e.getDescription()).build()); } } } diff --git a/src/main/java/org/sadtech/vkbot/core/domain/jpa/JsonObjectId.java b/src/main/java/org/sadtech/vkbot/core/domain/jpa/JsonObjectId.java index 5a22708..0adbae7 100644 --- a/src/main/java/org/sadtech/vkbot/core/domain/jpa/JsonObjectId.java +++ b/src/main/java/org/sadtech/vkbot/core/domain/jpa/JsonObjectId.java @@ -21,7 +21,7 @@ import javax.persistence.Table; @NoArgsConstructor public class JsonObjectId extends BasicEntity { - @Column(name = "json", length = 500) + @Column(name = "json", length = 3000) private String json; public JsonObjectId(String json) { diff --git a/src/main/java/org/sadtech/vkbot/core/listener/EventListenerVk.java b/src/main/java/org/sadtech/vkbot/core/listener/EventListenerVk.java index f5abb29..5499c96 100644 --- a/src/main/java/org/sadtech/vkbot/core/listener/EventListenerVk.java +++ b/src/main/java/org/sadtech/vkbot/core/listener/EventListenerVk.java @@ -50,7 +50,7 @@ public class EventListenerVk implements Runnable { } private LongPollServer getLongPollServer() throws ClientException, ApiException { - log.info("LongPoll сервер инициализирован"); + log.debug("LongPoll сервер инициализирован"); if (actor != null) { return vk.groups().getLongPollServer(actor, actor.getGroupId()).execute(); } else { diff --git a/src/main/java/org/sadtech/vkbot/core/repository/impl/RawEventRepositorySet.java b/src/main/java/org/sadtech/vkbot/core/repository/impl/RawEventRepositorySet.java index 41b0f6b..a3d271a 100644 --- a/src/main/java/org/sadtech/vkbot/core/repository/impl/RawEventRepositorySet.java +++ b/src/main/java/org/sadtech/vkbot/core/repository/impl/RawEventRepositorySet.java @@ -20,7 +20,10 @@ public class RawEventRepositorySet implements RawEventRepository { jsonObjects.clear(); } + @Override public Set findNewEvent() { - return jsonObjects; + Set copy = new HashSet<>(jsonObjects); + jsonObjects.removeAll(copy); + return copy; } } diff --git a/src/main/java/org/sadtech/vkbot/core/sender/BoardCommentSenderVk.java b/src/main/java/org/sadtech/vkbot/core/sender/BoardCommentSenderVk.java index e615ea2..078450f 100644 --- a/src/main/java/org/sadtech/vkbot/core/sender/BoardCommentSenderVk.java +++ b/src/main/java/org/sadtech/vkbot/core/sender/BoardCommentSenderVk.java @@ -10,11 +10,12 @@ import org.sadtech.social.core.domain.keyboard.KeyBoardButton; import org.sadtech.social.core.domain.keyboard.KeyBoardLine; import org.sadtech.social.core.domain.keyboard.button.KeyBoardButtonText; import org.sadtech.social.core.exception.MailSendException; -import org.sadtech.social.core.service.sender.Sent; +import org.sadtech.social.core.service.sender.SendType; +import org.sadtech.social.core.service.sender.Sending; import org.sadtech.vkbot.core.config.VkConnect; import org.sadtech.vkbot.core.utils.VkInsertData; -public class BoardCommentSenderVk implements Sent { +public class BoardCommentSenderVk implements Sending { private final VkApiClient vkApiClient; private final GroupActor groupActor; @@ -56,4 +57,9 @@ public class BoardCommentSenderVk implements Sent { e.printStackTrace(); } } + + @Override + public SendType getType() { + return SendType.PUBLIC; + } } diff --git a/src/main/java/org/sadtech/vkbot/core/sender/MailSenderVk.java b/src/main/java/org/sadtech/vkbot/core/sender/MailSenderVk.java index c99b130..cf975ab 100644 --- a/src/main/java/org/sadtech/vkbot/core/sender/MailSenderVk.java +++ b/src/main/java/org/sadtech/vkbot/core/sender/MailSenderVk.java @@ -6,10 +6,11 @@ import com.vk.api.sdk.exceptions.ApiException; import com.vk.api.sdk.exceptions.ClientException; import com.vk.api.sdk.objects.messages.Keyboard; import com.vk.api.sdk.queries.messages.MessagesSendQuery; -import org.apache.log4j.Logger; +import lombok.extern.slf4j.Slf4j; import org.sadtech.social.core.domain.BoxAnswer; import org.sadtech.social.core.domain.keyboard.KeyBoard; -import org.sadtech.social.core.service.sender.Sent; +import org.sadtech.social.core.service.sender.SendType; +import org.sadtech.social.core.service.sender.Sending; import org.sadtech.vkbot.core.config.VkConnect; import org.sadtech.vkbot.core.convert.KeyBoardConvert; import org.sadtech.vkbot.core.utils.VkInsertData; @@ -17,9 +18,8 @@ import org.sadtech.vkbot.core.utils.VkInsertData; import java.util.Collections; import java.util.concurrent.ThreadLocalRandom; -public class MailSenderVk implements Sent { - - private static final Logger log = Logger.getLogger(MailSenderVk.class); +@Slf4j +public class MailSenderVk implements Sending { private final VkApiClient vkApiClient; private final GroupActor groupActor; @@ -75,7 +75,7 @@ public class MailSenderVk implements Sent { try { messages.execute(); } catch (ApiException | ClientException e) { - log.error(e); + log.error(e.getMessage()); } } @@ -84,4 +84,9 @@ public class MailSenderVk implements Sent { } + @Override + public SendType getType() { + return SendType.PRIVATE; + } + } diff --git a/src/main/java/org/sadtech/vkbot/core/utils/VkApi.java b/src/main/java/org/sadtech/vkbot/core/utils/VkApi.java index 19a4423..1549c90 100644 --- a/src/main/java/org/sadtech/vkbot/core/utils/VkApi.java +++ b/src/main/java/org/sadtech/vkbot/core/utils/VkApi.java @@ -10,15 +10,14 @@ import com.vk.api.sdk.exceptions.ClientException; import com.vk.api.sdk.objects.users.Fields; import com.vk.api.sdk.objects.users.UserMin; import com.vk.api.sdk.objects.users.UserXtrCounters; -import org.apache.log4j.Logger; +import lombok.extern.slf4j.Slf4j; import org.sadtech.vkbot.core.config.VkConnect; import java.util.List; +@Slf4j public class VkApi { - private static final Logger log = Logger.getLogger(String.valueOf(VkApi.class)); - private final VkApiClient vk; private final ServiceActor actor; @@ -36,7 +35,7 @@ public class VkApi { JsonObject object = parser.parse(temp.get(0).toString()).getAsJsonObject(); userMin = gson.fromJson(object, UserMin.class); } catch (ApiException | ClientException e) { - log.error(e); + log.error(e.getMessage()); } return userMin; } @@ -46,7 +45,7 @@ public class VkApi { try { temp = vk.users().get(actor).userIds(String.valueOf(id)).fields(Fields.UNIVERSITIES).execute(); } catch (ApiException | ClientException e) { - log.error(e); + log.error(e.getMessage()); } return temp != null ? temp.get(0).getUniversities().get(0).getName() : null; } @@ -56,7 +55,7 @@ public class VkApi { try { temp = vk.users().get(actor).userIds(String.valueOf(id)).fields(Fields.CITY).execute(); } catch (ApiException | ClientException e) { - log.error(e); + log.error(e.getMessage()); } if (temp != null && checkCity(temp)) { return temp.get(0).getCity().getTitle();