Уведомление об обновлении пр
This commit is contained in:
parent
ea0cc8897a
commit
31f59fc0d5
@ -19,6 +19,4 @@ public interface NoteService extends SimpleManagerService<Note, Long> {
|
|||||||
|
|
||||||
Note convert(@NonNull Task task);
|
Note convert(@NonNull Task task);
|
||||||
|
|
||||||
Set<Long> existsById(@NonNull Set<Long> ids);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,8 +11,8 @@ import org.sadtech.bot.gitlab.context.domain.filter.PullRequestFilter;
|
|||||||
import org.sadtech.bot.gitlab.context.domain.notify.pullrequest.ConflictPrNotify;
|
import org.sadtech.bot.gitlab.context.domain.notify.pullrequest.ConflictPrNotify;
|
||||||
import org.sadtech.bot.gitlab.context.domain.notify.pullrequest.NewPrNotify;
|
import org.sadtech.bot.gitlab.context.domain.notify.pullrequest.NewPrNotify;
|
||||||
import org.sadtech.bot.gitlab.context.domain.notify.pullrequest.StatusPrNotify;
|
import org.sadtech.bot.gitlab.context.domain.notify.pullrequest.StatusPrNotify;
|
||||||
|
import org.sadtech.bot.gitlab.context.domain.notify.pullrequest.UpdatePrNotify;
|
||||||
import org.sadtech.bot.gitlab.context.repository.MergeRequestRepository;
|
import org.sadtech.bot.gitlab.context.repository.MergeRequestRepository;
|
||||||
import org.sadtech.bot.gitlab.context.service.AppSettingService;
|
|
||||||
import org.sadtech.bot.gitlab.context.service.MergeRequestsService;
|
import org.sadtech.bot.gitlab.context.service.MergeRequestsService;
|
||||||
import org.sadtech.bot.gitlab.context.service.NotifyService;
|
import org.sadtech.bot.gitlab.context.service.NotifyService;
|
||||||
import org.sadtech.bot.gitlab.context.service.PersonService;
|
import org.sadtech.bot.gitlab.context.service.PersonService;
|
||||||
@ -37,7 +37,6 @@ public class MergeRequestsServiceImpl extends AbstractSimpleManagerService<Merge
|
|||||||
private final PersonService personService;
|
private final PersonService personService;
|
||||||
private final FilterService<MergeRequest, PullRequestFilter> filterService;
|
private final FilterService<MergeRequest, PullRequestFilter> filterService;
|
||||||
private final ProjectService projectService;
|
private final ProjectService projectService;
|
||||||
private final AppSettingService settingService;
|
|
||||||
|
|
||||||
private final PersonInformation personInformation;
|
private final PersonInformation personInformation;
|
||||||
|
|
||||||
@ -47,7 +46,6 @@ public class MergeRequestsServiceImpl extends AbstractSimpleManagerService<Merge
|
|||||||
PersonService personService,
|
PersonService personService,
|
||||||
@Qualifier("mergeRequestFilterService") FilterService<MergeRequest, PullRequestFilter> filterService,
|
@Qualifier("mergeRequestFilterService") FilterService<MergeRequest, PullRequestFilter> filterService,
|
||||||
ProjectService projectService,
|
ProjectService projectService,
|
||||||
AppSettingService settingService,
|
|
||||||
PersonInformation personInformation
|
PersonInformation personInformation
|
||||||
) {
|
) {
|
||||||
super(mergeRequestRepository);
|
super(mergeRequestRepository);
|
||||||
@ -56,7 +54,6 @@ public class MergeRequestsServiceImpl extends AbstractSimpleManagerService<Merge
|
|||||||
this.personService = personService;
|
this.personService = personService;
|
||||||
this.filterService = filterService;
|
this.filterService = filterService;
|
||||||
this.projectService = projectService;
|
this.projectService = projectService;
|
||||||
this.settingService = settingService;
|
|
||||||
this.personInformation = personInformation;
|
this.personInformation = personInformation;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,7 +65,7 @@ public class MergeRequestsServiceImpl extends AbstractSimpleManagerService<Merge
|
|||||||
final MergeRequest newMergeRequest = mergeRequestRepository.save(mergeRequest);
|
final MergeRequest newMergeRequest = mergeRequestRepository.save(mergeRequest);
|
||||||
|
|
||||||
// if (!settingService.isFirstStart()) {
|
// if (!settingService.isFirstStart()) {
|
||||||
notifyNewPr(newMergeRequest);
|
notifyNewPr(newMergeRequest);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
return newMergeRequest;
|
return newMergeRequest;
|
||||||
@ -101,12 +98,30 @@ public class MergeRequestsServiceImpl extends AbstractSimpleManagerService<Merge
|
|||||||
|
|
||||||
// forgottenNotification(oldMergeRequest);
|
// forgottenNotification(oldMergeRequest);
|
||||||
|
|
||||||
final Project project = projectService.getById(mergeRequest.getProjectId())
|
if (!oldMergeRequest.getUpdatedDate().equals(mergeRequest.getUpdatedDate())) {
|
||||||
.orElseThrow(() -> new NotFoundException("Проект не найден"));
|
final Project project = projectService.getById(mergeRequest.getProjectId())
|
||||||
notifyStatus(oldMergeRequest, mergeRequest, project);
|
.orElseThrow(() -> new NotFoundException("Проект не найден"));
|
||||||
notifyConflict(oldMergeRequest, mergeRequest, project);
|
|
||||||
|
|
||||||
return mergeRequestRepository.save(mergeRequest);
|
notifyStatus(oldMergeRequest, mergeRequest, project);
|
||||||
|
notifyConflict(oldMergeRequest, mergeRequest, project);
|
||||||
|
notifyUpdate(oldMergeRequest, mergeRequest, project);
|
||||||
|
|
||||||
|
return mergeRequestRepository.save(mergeRequest);
|
||||||
|
}
|
||||||
|
return oldMergeRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void notifyUpdate(MergeRequest oldMergeRequest, MergeRequest mergeRequest, Project project) {
|
||||||
|
if (!personInformation.getId().equals(mergeRequest.getAuthor().getId())) {
|
||||||
|
notifyService.send(
|
||||||
|
UpdatePrNotify.builder()
|
||||||
|
.author(oldMergeRequest.getAuthor().getName())
|
||||||
|
.name(oldMergeRequest.getTitle())
|
||||||
|
.projectKey(project.getName())
|
||||||
|
.url(oldMergeRequest.getWebUrl())
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void forgottenNotification(MergeRequest mergeRequest) {
|
protected void forgottenNotification(MergeRequest mergeRequest) {
|
||||||
|
@ -13,6 +13,7 @@ import org.sadtech.haiti.context.domain.ExistsContainer;
|
|||||||
import org.sadtech.haiti.core.service.AbstractSimpleManagerService;
|
import org.sadtech.haiti.core.service.AbstractSimpleManagerService;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.core.convert.ConversionService;
|
import org.springframework.core.convert.ConversionService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@ -22,7 +23,7 @@ import java.util.Set;
|
|||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
//@Service
|
@Service
|
||||||
public class NoteServiceImpl extends AbstractSimpleManagerService<Note, Long> implements NoteService {
|
public class NoteServiceImpl extends AbstractSimpleManagerService<Note, Long> implements NoteService {
|
||||||
|
|
||||||
private static final Pattern PATTERN = Pattern.compile("@[\\w]+");
|
private static final Pattern PATTERN = Pattern.compile("@[\\w]+");
|
||||||
|
@ -2,19 +2,24 @@ package org.sadtech.bot.gitlab.core.service.parser;
|
|||||||
|
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
import org.sadtech.bot.gitlab.context.domain.entity.MergeRequest;
|
import org.sadtech.bot.gitlab.context.domain.entity.MergeRequest;
|
||||||
|
import org.sadtech.bot.gitlab.context.domain.entity.Note;
|
||||||
import org.sadtech.bot.gitlab.context.service.MergeRequestsService;
|
import org.sadtech.bot.gitlab.context.service.MergeRequestsService;
|
||||||
|
import org.sadtech.bot.gitlab.context.service.NoteService;
|
||||||
import org.sadtech.bot.gitlab.context.service.ProjectService;
|
import org.sadtech.bot.gitlab.context.service.ProjectService;
|
||||||
import org.sadtech.bot.gitlab.core.config.properties.GitlabProperty;
|
import org.sadtech.bot.gitlab.core.config.properties.GitlabProperty;
|
||||||
import org.sadtech.bot.gitlab.core.config.properties.InitProperty;
|
import org.sadtech.bot.gitlab.core.config.properties.InitProperty;
|
||||||
import org.sadtech.bot.gitlab.core.config.properties.PersonProperty;
|
import org.sadtech.bot.gitlab.core.config.properties.PersonProperty;
|
||||||
import org.sadtech.bot.gitlab.sdk.domain.NoteJson;
|
import org.sadtech.bot.gitlab.sdk.domain.NoteJson;
|
||||||
|
import org.sadtech.haiti.context.domain.ExistsContainer;
|
||||||
import org.sadtech.haiti.context.page.Sheet;
|
import org.sadtech.haiti.context.page.Sheet;
|
||||||
import org.sadtech.haiti.core.page.PaginationImpl;
|
import org.sadtech.haiti.core.page.PaginationImpl;
|
||||||
import org.sadtech.haiti.utils.network.HttpParse;
|
import org.sadtech.haiti.utils.network.HttpParse;
|
||||||
import org.springframework.core.convert.ConversionService;
|
import org.springframework.core.convert.ConversionService;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static org.sadtech.haiti.utils.network.HttpParse.ACCEPT;
|
import static org.sadtech.haiti.utils.network.HttpParse.ACCEPT;
|
||||||
@ -25,7 +30,7 @@ import static org.sadtech.haiti.utils.network.HttpParse.BEARER;
|
|||||||
* <p>Поиск новых комментариев и задач.</p>
|
* <p>Поиск новых комментариев и задач.</p>
|
||||||
* <p>К несчастью, у битбакета не очень удобный API, и у них таска это то же самое что и комментарий, только с флагом</p>
|
* <p>К несчастью, у битбакета не очень удобный API, и у них таска это то же самое что и комментарий, только с флагом</p>
|
||||||
*/
|
*/
|
||||||
//@Component
|
@Component
|
||||||
public class NoteParser {
|
public class NoteParser {
|
||||||
|
|
||||||
public static final int COUNT = 100;
|
public static final int COUNT = 100;
|
||||||
@ -37,23 +42,27 @@ public class NoteParser {
|
|||||||
private final GitlabProperty gitlabProperty;
|
private final GitlabProperty gitlabProperty;
|
||||||
private final InitProperty initProperty;
|
private final InitProperty initProperty;
|
||||||
private final PersonProperty personProperty;
|
private final PersonProperty personProperty;
|
||||||
|
private final NoteService noteService;
|
||||||
|
|
||||||
public NoteParser(
|
public NoteParser(
|
||||||
ProjectService projectService, MergeRequestsService mergeRequestsService,
|
ProjectService projectService, MergeRequestsService mergeRequestsService,
|
||||||
ConversionService conversionService,
|
ConversionService conversionService,
|
||||||
GitlabProperty gitlabProperty,
|
GitlabProperty gitlabProperty,
|
||||||
InitProperty initProperty,
|
InitProperty initProperty,
|
||||||
PersonProperty personProperty) {
|
PersonProperty personProperty,
|
||||||
|
NoteService noteService
|
||||||
|
) {
|
||||||
this.projectService = projectService;
|
this.projectService = projectService;
|
||||||
this.mergeRequestsService = mergeRequestsService;
|
this.mergeRequestsService = mergeRequestsService;
|
||||||
this.conversionService = conversionService;
|
this.conversionService = conversionService;
|
||||||
this.gitlabProperty = gitlabProperty;
|
this.gitlabProperty = gitlabProperty;
|
||||||
this.initProperty = initProperty;
|
this.initProperty = initProperty;
|
||||||
this.personProperty = personProperty;
|
this.personProperty = personProperty;
|
||||||
|
this.noteService = noteService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void scanNewCommentAndTask() {
|
public void scanNewCommentAndTask() {
|
||||||
int page = 0;
|
int page = 1;
|
||||||
Sheet<MergeRequest> mergeRequestSheet = mergeRequestsService.getAll(PaginationImpl.of(page, COUNT));
|
Sheet<MergeRequest> mergeRequestSheet = mergeRequestsService.getAll(PaginationImpl.of(page, COUNT));
|
||||||
|
|
||||||
while (mergeRequestSheet.hasContent()) {
|
while (mergeRequestSheet.hasContent()) {
|
||||||
@ -68,6 +77,9 @@ public class NoteParser {
|
|||||||
.filter(noteJson -> !noteJson.isSystem())
|
.filter(noteJson -> !noteJson.isSystem())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
createNewComment(noteJsons);
|
||||||
|
createNewTask(noteJsons);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mergeRequestSheet = mergeRequestsService.getAll(PaginationImpl.of(++page, COUNT));
|
mergeRequestSheet = mergeRequestsService.getAll(PaginationImpl.of(++page, COUNT));
|
||||||
@ -75,6 +87,28 @@ public class NoteParser {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void createNewComment(List<NoteJson> noteJsons) {
|
||||||
|
final List<NoteJson> newJsons = noteJsons.stream()
|
||||||
|
.filter(json -> json.getType() == null)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
final Set<Long> jsonIds = newJsons.stream()
|
||||||
|
.map(NoteJson::getId)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
final ExistsContainer<Note, Long> existsContainer = noteService.existsById(jsonIds);
|
||||||
|
|
||||||
|
if (!existsContainer.isAllFound()) {
|
||||||
|
final List<Note> newNotes = newJsons.stream()
|
||||||
|
.filter(json -> existsContainer.getIdNoFound().contains(json.getId()))
|
||||||
|
.map(json -> conversionService.convert(json, Note.class))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
noteService.createAll(newNotes);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// private List<DataScan> generatingLinksToPossibleComments(@NonNull Long commentId) {
|
// private List<DataScan> generatingLinksToPossibleComments(@NonNull Long commentId) {
|
||||||
// List<DataScan> commentUrls = new ArrayList<>();
|
// List<DataScan> commentUrls = new ArrayList<>();
|
||||||
// for (int i = 0; i < 5; i++) {
|
// for (int i = 0; i < 5; i++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user