From bb96e3ac93f3ff7b8002ba9beaa70b501ce0facc Mon Sep 17 00:00:00 2001 From: backdev-1 Date: Wed, 22 Apr 2026 12:16:37 +0700 Subject: [PATCH] dev add new action --- .../nocopy/dto/complaint/LawCaseResponse.java | 22 +++++++++++++++++++ .../dto/violation/ViolationNotionRequest.java | 10 +++++++++ .../nocopy/handler/ViolationHandler.java | 13 ++++++++++- .../service/violation/ViolationService.java | 4 ++++ 4 files changed, 48 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/soune/nocopy/dto/complaint/LawCaseResponse.java b/src/main/java/ru/soune/nocopy/dto/complaint/LawCaseResponse.java index af3f066..bee3ef9 100644 --- a/src/main/java/ru/soune/nocopy/dto/complaint/LawCaseResponse.java +++ b/src/main/java/ru/soune/nocopy/dto/complaint/LawCaseResponse.java @@ -1,5 +1,6 @@ package ru.soune.nocopy.dto.complaint; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Builder; import lombok.Data; import ru.soune.nocopy.entity.complaint.LawCase; @@ -14,19 +15,40 @@ import java.util.List; @Builder public class LawCaseResponse { private Long id; + private String name; + private String description; + private BigDecimal amount; + private LawCasePriority priority; + private LawCaseType type; + private String lawyer; + + @JsonProperty("created_at") private LocalDateTime createdAt; + + @JsonProperty("updated_at") private LocalDateTime updatedAt; + + @JsonProperty("page_number") private int pageNumber; + + @JsonProperty("page_size") private int pageSize; + + @JsonProperty("total_elements") private long totalElements; + + @JsonProperty("total_pages") private int totalPages; + + @JsonProperty("violation_id") private long violationId; + private List content; public static LawCaseResponse fromEntity(LawCase lawCase) { diff --git a/src/main/java/ru/soune/nocopy/dto/violation/ViolationNotionRequest.java b/src/main/java/ru/soune/nocopy/dto/violation/ViolationNotionRequest.java index e431730..bc39acd 100644 --- a/src/main/java/ru/soune/nocopy/dto/violation/ViolationNotionRequest.java +++ b/src/main/java/ru/soune/nocopy/dto/violation/ViolationNotionRequest.java @@ -1,12 +1,22 @@ package ru.soune.nocopy.dto.violation; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; @Data public class ViolationNotionRequest { + @JsonProperty("token") private String token; + + @JsonProperty("action") private String action; + + @JsonProperty("violation_id") private Long violationId; + + @JsonProperty("notion_id") private Long notionId; + + @JsonProperty("message") private String message; } diff --git a/src/main/java/ru/soune/nocopy/handler/ViolationHandler.java b/src/main/java/ru/soune/nocopy/handler/ViolationHandler.java index 5344fd2..49ade98 100644 --- a/src/main/java/ru/soune/nocopy/handler/ViolationHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/ViolationHandler.java @@ -25,6 +25,7 @@ import java.time.format.DateTimeParseException; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; @Component @Slf4j @@ -115,11 +116,21 @@ public class ViolationHandler implements RequestHandler { violationRequest.getPage(), violationRequest.getSize(), violationRequest.getSortDirection() ); } - + ViolationResponse.ViolationDto firstShowViolation = null; List content = violationPage.getContent(); List violationDtos = new ArrayList<>(); + if ("getByViolationId".equals(violationRequest.getAction())) { + Violation violation = violationService.getById(violationRequest.getViolationId()); + if (violation != null) { + firstShowViolation = ViolationResponse.ViolationDto.fromEntity(violation); + violationDtos.add(firstShowViolation); + } + } + for (Violation violation : content) { + if (firstShowViolation != null && Objects.equals(firstShowViolation.getId(), violation.getId())) continue; + ViolationResponse.ViolationDto violationDto = ViolationResponse.ViolationDto.fromEntity(violation); violationDto.setCountry(geoCountryService.getCountryName(violation.getPageUrl())); violationDto.setCountryCode(geoCountryService.getCountryCode(violation.getPageUrl())); diff --git a/src/main/java/ru/soune/nocopy/service/violation/ViolationService.java b/src/main/java/ru/soune/nocopy/service/violation/ViolationService.java index 65fc559..8654b68 100644 --- a/src/main/java/ru/soune/nocopy/service/violation/ViolationService.java +++ b/src/main/java/ru/soune/nocopy/service/violation/ViolationService.java @@ -56,6 +56,10 @@ public class ViolationService { } } + public Violation getById(Long violationId) { + return violationRepository.findById(violationId).orElse(null); + } + public List getFileViolationsSummary(Long userId) { List userFiles = fileEntityService.getAllUserFiles(userId); List violations = violationRepository.findByFileEntityIn(userFiles);