diff --git a/src/main/java/ru/soune/nocopy/dto/violation/ViolationRequest.java b/src/main/java/ru/soune/nocopy/dto/violation/ViolationRequest.java index 5c7a2d5..1edf968 100644 --- a/src/main/java/ru/soune/nocopy/dto/violation/ViolationRequest.java +++ b/src/main/java/ru/soune/nocopy/dto/violation/ViolationRequest.java @@ -10,6 +10,9 @@ public class ViolationRequest { @JsonProperty("file_id") private String fileId; + @JsonProperty("violation_id") + private Long violationId; + @JsonProperty("page") private Integer page = 0; diff --git a/src/main/java/ru/soune/nocopy/entity/complaint/ComplaintStatus.java b/src/main/java/ru/soune/nocopy/entity/complaint/ComplaintStatus.java index ca5deed..7be6b2e 100644 --- a/src/main/java/ru/soune/nocopy/entity/complaint/ComplaintStatus.java +++ b/src/main/java/ru/soune/nocopy/entity/complaint/ComplaintStatus.java @@ -1,6 +1,5 @@ package ru.soune.nocopy.entity.complaint; public enum ComplaintStatus { - //NEW , SHOWED, LEGAL_IN_WORK, ЖАЛОБА, 3 + 4 , САНКЦАНИРОВАННОЕ ИСПОЛЬЗОВАНИЕ CREATED, SHOWED, IN_WORK, COMPLETED, CANCELLED } diff --git a/src/main/java/ru/soune/nocopy/handler/ViolationHandler.java b/src/main/java/ru/soune/nocopy/handler/ViolationHandler.java index 9bff5a2..8b658b4 100644 --- a/src/main/java/ru/soune/nocopy/handler/ViolationHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/ViolationHandler.java @@ -15,6 +15,7 @@ import ru.soune.nocopy.repository.FileEntityRepository; import ru.soune.nocopy.service.file.FileEntityService; import ru.soune.nocopy.service.register.AuthService; import ru.soune.nocopy.service.violation.ViolationService; +import ru.soune.nocopy.service.violation.ViolationStatus; import java.io.FileNotFoundException; import java.time.LocalDateTime; @@ -66,6 +67,18 @@ public class ViolationHandler implements RequestHandler { endDate = parseDate(violationRequest.getEndDate()); } + if ("updateStatus".equals(violationRequest.getAction())) { + String status = violationRequest.getStatus(); + Long violationId = violationRequest.getViolationId(); + + violationService.changeStatus(ViolationStatus.valueOf(status), violationId); + + return BaseResponse.builder() + .msgId(request.getMsgId()) + .messageBody(Map.of("status", status)) + .build(); + } + if ("group".equalsIgnoreCase(violationRequest.getAction())) { Map groupedData = violationService.getGroupedViolations( targetFiles, diff --git a/src/main/java/ru/soune/nocopy/service/complaint/ComplaintEntityService.java b/src/main/java/ru/soune/nocopy/service/complaint/ComplaintEntityService.java index bf6f509..3287a0b 100644 --- a/src/main/java/ru/soune/nocopy/service/complaint/ComplaintEntityService.java +++ b/src/main/java/ru/soune/nocopy/service/complaint/ComplaintEntityService.java @@ -19,6 +19,8 @@ import ru.soune.nocopy.exception.DuplicateComplaintException; import ru.soune.nocopy.exception.ViolationNotFoundException; import ru.soune.nocopy.repository.ComplaintEntityRepository; import ru.soune.nocopy.repository.ViolationRepository; +import ru.soune.nocopy.service.violation.ViolationService; +import ru.soune.nocopy.service.violation.ViolationStatus; import java.time.format.DateTimeFormatter; import java.util.List; @@ -33,6 +35,8 @@ public class ComplaintEntityService { private final ViolationRepository violationRepository; + private final ViolationService violationService; + private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); public ComplaintResponse createComplaint(ComplaintRequest request) { @@ -51,6 +55,8 @@ public class ComplaintEntityService { .not_moderated_file(violation.getFileEntity().getStatus().equals(FileStatus.MODERATION)) .build(); + violationService.changeStatus(ViolationStatus.COMPLAINT_IN_WORK, request.getViolationId()); + return mapToResponse(complaintRepository.save(complaint)); } @@ -95,6 +101,7 @@ public class ComplaintEntityService { } if (request.getComplaintText() != null) complaint.setComplaintText(request.getComplaintText()); if (request.getEmail() != null) complaint.setEmail(request.getEmail()); + if (request.getStatus() != null) complaint.setStatus(ComplaintStatus.valueOf(request.getStatus())); return mapToResponse(complaintRepository.save(complaint)); } 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 6174d01..57f9af5 100644 --- a/src/main/java/ru/soune/nocopy/service/violation/ViolationService.java +++ b/src/main/java/ru/soune/nocopy/service/violation/ViolationService.java @@ -7,6 +7,7 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import ru.soune.nocopy.dto.file.YandexSearchResponse; import ru.soune.nocopy.dto.violation.FileViolationSummaryDTO; import ru.soune.nocopy.dto.violation.ViolationInfoDTO; @@ -51,7 +52,7 @@ public class ViolationService { violation.setPageUrl(imageResult.getPageUrl()); violation.setPageTitle(imageResult.getPageTitle()); violation.setFileEntity(file); - violation.setStatus("CREATED"); + violation.setStatus(ViolationStatus.NEW.name()); violationRepository.save(violation); } @@ -94,6 +95,14 @@ public class ViolationService { .collect(Collectors.toList()); } + @Transactional + public void changeStatus(ViolationStatus status, Long violationId) { + Violation violation = violationRepository.findById(violationId).orElseThrow(); + violation.setStatus(status.name()); + + violationRepository.save(violation); + } + public Page getViolationsByFiles(List files, int page, int size, String sortDirection) { Sort sort = Sort.by(sortDirection.equalsIgnoreCase("desc") ? Sort.Direction.DESC : Sort.Direction.ASC, "createdDate"); Pageable pageable = PageRequest.of(page, size, sort); diff --git a/src/main/java/ru/soune/nocopy/service/violation/ViolationStatus.java b/src/main/java/ru/soune/nocopy/service/violation/ViolationStatus.java new file mode 100644 index 0000000..6deac03 --- /dev/null +++ b/src/main/java/ru/soune/nocopy/service/violation/ViolationStatus.java @@ -0,0 +1,5 @@ +package ru.soune.nocopy.service.violation; + +public enum ViolationStatus { + NEW , SHOWED, LEGAL_IN_WORK, COMPLAINT_IN_WORK, COMPLAINT_AND_LEGAL_IN_WORK , AUTHORIZED_USE +}