From d1a91fec1a7520e3515b8a3dea01f76fe71d4595 Mon Sep 17 00:00:00 2001 From: backdev-1 Date: Fri, 17 Apr 2026 22:00:33 +0700 Subject: [PATCH] dev add user_id for find all complaints --- .../dto/complaint/ComplaintRequest.java | 3 ++ .../handler/ComplaintEntityHandler.java | 33 +++++++++++++++++-- .../repository/ComplaintEntityRepository.java | 4 +++ .../nocopy/repository/UserRepository.java | 3 ++ .../complaint/ComplaintEntityService.java | 6 ++++ .../nocopy/service/user/UserService.java | 6 ++++ 6 files changed, 52 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/soune/nocopy/dto/complaint/ComplaintRequest.java b/src/main/java/ru/soune/nocopy/dto/complaint/ComplaintRequest.java index 0de3cce..899538a 100644 --- a/src/main/java/ru/soune/nocopy/dto/complaint/ComplaintRequest.java +++ b/src/main/java/ru/soune/nocopy/dto/complaint/ComplaintRequest.java @@ -35,4 +35,7 @@ public class ComplaintRequest { @JsonProperty("sort_direction") private String sortDirection; + + @JsonProperty("token") + private String token; } diff --git a/src/main/java/ru/soune/nocopy/handler/ComplaintEntityHandler.java b/src/main/java/ru/soune/nocopy/handler/ComplaintEntityHandler.java index 1ec55e8..2cfdc7f 100644 --- a/src/main/java/ru/soune/nocopy/handler/ComplaintEntityHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/ComplaintEntityHandler.java @@ -13,8 +13,14 @@ import ru.soune.nocopy.dto.MessageCode; import ru.soune.nocopy.dto.complaint.ComplaintRequest; import ru.soune.nocopy.dto.complaint.ComplaintResponse; import ru.soune.nocopy.entity.complaint.ComplaintStatus; +import ru.soune.nocopy.entity.user.User; +import ru.soune.nocopy.repository.UserRepository; import ru.soune.nocopy.service.complaint.ComplaintEntityService; +import ru.soune.nocopy.service.register.AuthService; +import ru.soune.nocopy.service.user.UserService; + import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -25,11 +31,31 @@ public class ComplaintEntityHandler implements RequestHandler { private final ObjectMapper objectMapper; + private final UserRepository userRepository; + + private final UserService userService; + + private final AuthService authService; + @Override public BaseResponse handle(BaseRequest request) throws Exception { Integer msgId = request.getMsgId(); ComplaintRequest complaintRequest = objectMapper.convertValue(request.getMessageBody(), ComplaintRequest.class); String action = complaintRequest.getAction(); + String token = complaintRequest.getToken(); + Long userId = authService.useUserAuthToken(token); + User user = userRepository.findById(userId).orElse(null); + + if (user == null) { + return new BaseResponse( + request.getMsgId(), + MessageCode.USER_NOT_FOUND.getCode(), + MessageCode.USER_NOT_FOUND.getDescription(), + Map.of("token: ", token)); + } + + List emails = user.getCompany() == null ? List.of(user.getEmail()): + userService.getUsersCompanyEmails(user.getCompany().getId()); try { switch (action.toLowerCase()) { @@ -38,7 +64,7 @@ public class ComplaintEntityHandler implements RequestHandler { case "get": return handleGet(msgId, complaintRequest); case "get_all": - return handleGetAll(msgId, complaintRequest); + return handleGetAll(msgId, complaintRequest, emails); case "get_by_violation": return handleGetByViolation(msgId, complaintRequest); case "update_status": @@ -74,14 +100,15 @@ public class ComplaintEntityHandler implements RequestHandler { return successResponse(msgId, "Complaint retrieved successfully", response); } - private BaseResponse handleGetAll(Integer msgId, ComplaintRequest req) { + private BaseResponse handleGetAll(Integer msgId, ComplaintRequest req, List emails) { Pageable pageable = PageRequest.of( req.getPage() != null ? req.getPage() : 0, req.getSize() != null ? req.getSize() : 5, Sort.by(Sort.Direction.fromString(req.getSortDirection() != null ? req.getSortDirection() : "desc"), req.getSortBy() != null ? req.getSortBy() : "updatedAt")); - var page = complaintService.getAllComplaints(pageable); + var page = complaintService.getAllComplaintsByEmail(pageable, emails); + Map data = new HashMap<>(); data.put("content", page.getContent()); data.put("page", page.getNumber()); diff --git a/src/main/java/ru/soune/nocopy/repository/ComplaintEntityRepository.java b/src/main/java/ru/soune/nocopy/repository/ComplaintEntityRepository.java index 3a31d59..ffde784 100644 --- a/src/main/java/ru/soune/nocopy/repository/ComplaintEntityRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/ComplaintEntityRepository.java @@ -5,6 +5,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import ru.soune.nocopy.entity.complaint.ComplaintEntity; @@ -37,4 +38,7 @@ public interface ComplaintEntityRepository extends JpaRepository getComplaintsByUserEmails(@Param("emails") List emails, Pageable pageable); } diff --git a/src/main/java/ru/soune/nocopy/repository/UserRepository.java b/src/main/java/ru/soune/nocopy/repository/UserRepository.java index df28e66..93b646d 100644 --- a/src/main/java/ru/soune/nocopy/repository/UserRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/UserRepository.java @@ -45,4 +45,7 @@ public interface UserRepository extends JpaRepository { @Query("SELECT u FROM User u WHERE u.personalTariffInfo.id = :tariffInfoId") Optional findByPersonalTariffInfoId(@Param("tariffInfoId") String tariffInfoId); + + @Query("SELECT u.email FROM User u WHERE u.company = :company") + List emailsByCompany(@Param("company") String company); } 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 a87f27a..812afbb 100644 --- a/src/main/java/ru/soune/nocopy/service/complaint/ComplaintEntityService.java +++ b/src/main/java/ru/soune/nocopy/service/complaint/ComplaintEntityService.java @@ -62,6 +62,12 @@ public class ComplaintEntityService { return mapToResponse(complaintRepository.save(complaint)); } + @Transactional(readOnly = true) + public Page getAllComplaintsByEmail(Pageable pageable, List emails) { + return complaintRepository.getComplaintsByUserEmails(emails, pageable) + .map(this::mapToResponse); + } + @Transactional(readOnly = true) public ComplaintResponse getComplaintById(Long id) { return complaintRepository.findById(id) diff --git a/src/main/java/ru/soune/nocopy/service/user/UserService.java b/src/main/java/ru/soune/nocopy/service/user/UserService.java index c118aab..3f01a02 100644 --- a/src/main/java/ru/soune/nocopy/service/user/UserService.java +++ b/src/main/java/ru/soune/nocopy/service/user/UserService.java @@ -13,6 +13,7 @@ import ru.soune.nocopy.exception.NotValidationPasswordException; import ru.soune.nocopy.exception.UserNotFoundException; import ru.soune.nocopy.repository.UserRepository; +import java.util.List; import java.util.Optional; @Service @@ -46,6 +47,11 @@ public class UserService { return mapToDTO(updatedUser); } + @Transactional + public List getUsersCompanyEmails(String company) { + return userRepository.emailsByCompany(company); + } + @Transactional public User activateAndVerifyUser(long userId) { Optional users = userRepository.findById(userId);