Уведомление об обновлении пр
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);
|
||||
|
||||
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.NewPrNotify;
|
||||
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.service.AppSettingService;
|
||||
import org.sadtech.bot.gitlab.context.service.MergeRequestsService;
|
||||
import org.sadtech.bot.gitlab.context.service.NotifyService;
|
||||
import org.sadtech.bot.gitlab.context.service.PersonService;
|
||||
@ -37,7 +37,6 @@ public class MergeRequestsServiceImpl extends AbstractSimpleManagerService<Merge
|
||||
private final PersonService personService;
|
||||
private final FilterService<MergeRequest, PullRequestFilter> filterService;
|
||||
private final ProjectService projectService;
|
||||
private final AppSettingService settingService;
|
||||
|
||||
private final PersonInformation personInformation;
|
||||
|
||||
@ -47,7 +46,6 @@ public class MergeRequestsServiceImpl extends AbstractSimpleManagerService<Merge
|
||||
PersonService personService,
|
||||
@Qualifier("mergeRequestFilterService") FilterService<MergeRequest, PullRequestFilter> filterService,
|
||||
ProjectService projectService,
|
||||
AppSettingService settingService,
|
||||
PersonInformation personInformation
|
||||
) {
|
||||
super(mergeRequestRepository);
|
||||
@ -56,7 +54,6 @@ public class MergeRequestsServiceImpl extends AbstractSimpleManagerService<Merge
|
||||
this.personService = personService;
|
||||
this.filterService = filterService;
|
||||
this.projectService = projectService;
|
||||
this.settingService = settingService;
|
||||
this.personInformation = personInformation;
|
||||
}
|
||||
|
||||
@ -68,7 +65,7 @@ public class MergeRequestsServiceImpl extends AbstractSimpleManagerService<Merge
|
||||
final MergeRequest newMergeRequest = mergeRequestRepository.save(mergeRequest);
|
||||
|
||||
// if (!settingService.isFirstStart()) {
|
||||
notifyNewPr(newMergeRequest);
|
||||
notifyNewPr(newMergeRequest);
|
||||
// }
|
||||
|
||||
return newMergeRequest;
|
||||
@ -101,12 +98,30 @@ public class MergeRequestsServiceImpl extends AbstractSimpleManagerService<Merge
|
||||
|
||||
// forgottenNotification(oldMergeRequest);
|
||||
|
||||
final Project project = projectService.getById(mergeRequest.getProjectId())
|
||||
.orElseThrow(() -> new NotFoundException("Проект не найден"));
|
||||
notifyStatus(oldMergeRequest, mergeRequest, project);
|
||||
notifyConflict(oldMergeRequest, mergeRequest, project);
|
||||
if (!oldMergeRequest.getUpdatedDate().equals(mergeRequest.getUpdatedDate())) {
|
||||
final Project project = projectService.getById(mergeRequest.getProjectId())
|
||||
.orElseThrow(() -> new NotFoundException("Проект не найден"));
|
||||
|
||||
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) {
|
||||
|
@ -13,6 +13,7 @@ import org.sadtech.haiti.context.domain.ExistsContainer;
|
||||
import org.sadtech.haiti.core.service.AbstractSimpleManagerService;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
@ -22,7 +23,7 @@ import java.util.Set;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
//@Service
|
||||
@Service
|
||||
public class NoteServiceImpl extends AbstractSimpleManagerService<Note, Long> implements NoteService {
|
||||
|
||||
private static final Pattern PATTERN = Pattern.compile("@[\\w]+");
|
||||
|
@ -2,19 +2,24 @@ package org.sadtech.bot.gitlab.core.service.parser;
|
||||
|
||||
import lombok.NonNull;
|
||||
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.NoteService;
|
||||
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.InitProperty;
|
||||
import org.sadtech.bot.gitlab.core.config.properties.PersonProperty;
|
||||
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.core.page.PaginationImpl;
|
||||
import org.sadtech.haiti.utils.network.HttpParse;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
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>К несчастью, у битбакета не очень удобный API, и у них таска это то же самое что и комментарий, только с флагом</p>
|
||||
*/
|
||||
//@Component
|
||||
@Component
|
||||
public class NoteParser {
|
||||
|
||||
public static final int COUNT = 100;
|
||||
@ -37,23 +42,27 @@ public class NoteParser {
|
||||
private final GitlabProperty gitlabProperty;
|
||||
private final InitProperty initProperty;
|
||||
private final PersonProperty personProperty;
|
||||
private final NoteService noteService;
|
||||
|
||||
public NoteParser(
|
||||
ProjectService projectService, MergeRequestsService mergeRequestsService,
|
||||
ConversionService conversionService,
|
||||
GitlabProperty gitlabProperty,
|
||||
InitProperty initProperty,
|
||||
PersonProperty personProperty) {
|
||||
PersonProperty personProperty,
|
||||
NoteService noteService
|
||||
) {
|
||||
this.projectService = projectService;
|
||||
this.mergeRequestsService = mergeRequestsService;
|
||||
this.conversionService = conversionService;
|
||||
this.gitlabProperty = gitlabProperty;
|
||||
this.initProperty = initProperty;
|
||||
this.personProperty = personProperty;
|
||||
this.noteService = noteService;
|
||||
}
|
||||
|
||||
public void scanNewCommentAndTask() {
|
||||
int page = 0;
|
||||
int page = 1;
|
||||
Sheet<MergeRequest> mergeRequestSheet = mergeRequestsService.getAll(PaginationImpl.of(page, COUNT));
|
||||
|
||||
while (mergeRequestSheet.hasContent()) {
|
||||
@ -68,6 +77,9 @@ public class NoteParser {
|
||||
.filter(noteJson -> !noteJson.isSystem())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
createNewComment(noteJsons);
|
||||
createNewTask(noteJsons);
|
||||
|
||||
}
|
||||
|
||||
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) {
|
||||
// List<DataScan> commentUrls = new ArrayList<>();
|
||||
// for (int i = 0; i < 5; i++) {
|
||||
|
Loading…
Reference in New Issue
Block a user