From e999e27236c712d4fe4813391434b997f528ffba Mon Sep 17 00:00:00 2001 From: gsd Date: Sun, 6 Apr 2025 20:22:26 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D0=BB=D1=8C=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=8C=20=D0=B0=D0=BF=D0=B4=D0=B5=D0=B9=D1=82=203.5.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 11 ++++++----- .../java/app/controllers/user/MessagesController.java | 7 ++++++- .../java/app/controllers/user/PublicController.java | 11 ++++++++--- src/main/java/app/entities/SearchFilter.java | 6 +++--- .../java/app/entities/db/ban/BanSearchFilter.java | 8 ++++---- src/main/java/app/repositories/BanRepository.java | 9 ++++++--- src/main/java/app/repositories/MessageRepository.java | 3 ++- 7 files changed, 35 insertions(+), 20 deletions(-) diff --git a/pom.xml b/pom.xml index aed25af..8127508 100644 --- a/pom.xml +++ b/pom.xml @@ -13,23 +13,24 @@ 18 18 UTF-8 + 3.0.2 org.springframework.boot spring-boot-starter-web - 3.0.2 + ${spring.version} org.springframework.boot spring-boot-starter - 3.0.2 + ${spring.version} org.springframework.boot spring-boot-starter-websocket - 3.0.2 + ${spring.version} com.fasterxml.jackson.core @@ -50,7 +51,7 @@ org.springframework.boot spring-boot-starter-data-jpa - 3.0.2 + ${spring.version} org.postgresql @@ -61,7 +62,7 @@ org.springframework.boot spring-boot-starter-actuator - 3.0.2 + ${spring.version} com.ibasco.agql diff --git a/src/main/java/app/controllers/user/MessagesController.java b/src/main/java/app/controllers/user/MessagesController.java index de31118..dc1bb11 100644 --- a/src/main/java/app/controllers/user/MessagesController.java +++ b/src/main/java/app/controllers/user/MessagesController.java @@ -21,6 +21,8 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * котроллер для пользователя, чтоб смотреть сообщения */ @@ -65,9 +67,12 @@ public class MessagesController { public Page getMessagesWithFilters(Pageable pageable, @RequestBody(required = false) MessageSearchFilter filter) { if (filter == null) filter = new MessageSearchFilter(); + List account_ids = filter.getAccounts(profileService); + Page messages = messageRepository.getMessages( pageable, - filter.getAccounts(profileService), + account_ids.isEmpty(), + account_ids, filter.getBeginUnixTime(), filter.getEndUnixTime(), filter.getMessage(), diff --git a/src/main/java/app/controllers/user/PublicController.java b/src/main/java/app/controllers/user/PublicController.java index 0c321bf..1a88d73 100644 --- a/src/main/java/app/controllers/user/PublicController.java +++ b/src/main/java/app/controllers/user/PublicController.java @@ -19,6 +19,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.HashMap; +import java.util.List; /** * контролллер для просмотра всякой хуйни, например банлиста (нахуя он отдельный, незнаю, захотел) @@ -64,14 +65,18 @@ public class PublicController { public ResponseEntity> getBanListWithFilters(Pageable pageable, @RequestBody(required = false) BanSearchFilter banSearchFilter) { if (banSearchFilter == null) banSearchFilter = new BanSearchFilter(); + List ban_ids = banSearchFilter.getBan_ids(); + List account_ids = banSearchFilter.getAccounts(profileService); + List admin_ids = banSearchFilter.getAdminIds(profileService); + return new ResponseEntity<>( banRepository.getBans(pageable, - banSearchFilter.getBan_ids(), - banSearchFilter.getAccounts(profileService), + ban_ids.isEmpty(), ban_ids, + account_ids.isEmpty(), account_ids, banSearchFilter.getBeginUnixTime(), banSearchFilter.getEndUnixTime(), banSearchFilter.getActive(), - banSearchFilter.getAdminIds(profileService)) + admin_ids.isEmpty(), admin_ids) , HttpStatus.OK); } } diff --git a/src/main/java/app/entities/SearchFilter.java b/src/main/java/app/entities/SearchFilter.java index 238b85a..b81d82b 100644 --- a/src/main/java/app/entities/SearchFilter.java +++ b/src/main/java/app/entities/SearchFilter.java @@ -6,6 +6,7 @@ import org.springframework.format.annotation.DateTimeFormat; import java.sql.Timestamp; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -19,14 +20,13 @@ public abstract class SearchFilter { private String serverId = null; public List getAccounts(ProfileService profileService) { - if (accounts == null || accounts.isEmpty()) return null; + if (accounts == null || accounts.isEmpty()) return new ArrayList<>(); - List filtered = accounts.stream() + return accounts.stream() .map(profileService::GetSteamIDFromAnyData) .filter(Objects::nonNull) .map(sId -> sId.account_id) .toList(); - return filtered.isEmpty()?null:filtered; } public Long getBeginUnixTime() { diff --git a/src/main/java/app/entities/db/ban/BanSearchFilter.java b/src/main/java/app/entities/db/ban/BanSearchFilter.java index 14cf98b..4547eb9 100644 --- a/src/main/java/app/entities/db/ban/BanSearchFilter.java +++ b/src/main/java/app/entities/db/ban/BanSearchFilter.java @@ -4,6 +4,7 @@ import app.entities.SearchFilter; import app.services.ProfileService; import lombok.Setter; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -17,7 +18,7 @@ public class BanSearchFilter extends SearchFilter { } public List getBan_ids() { - return ban_ids == null || ban_ids.isEmpty() ? null : ban_ids; + return ban_ids == null ? new ArrayList<>() : ban_ids; } public Boolean getActive() { @@ -25,13 +26,12 @@ public class BanSearchFilter extends SearchFilter { } public List getAdminIds(ProfileService profileService) { - if (admin_ids == null || admin_ids.isEmpty()) return null; + if (admin_ids == null || admin_ids.isEmpty()) return new ArrayList<>(); - List filtered = admin_ids.stream() + return admin_ids.stream() .map(profileService::GetSteamIDFromAnyData) .filter(Objects::nonNull) .map(sId -> sId.steam3) .toList(); - return filtered.isEmpty() ? null : filtered; } } diff --git a/src/main/java/app/repositories/BanRepository.java b/src/main/java/app/repositories/BanRepository.java index 75e5716..57109f9 100644 --- a/src/main/java/app/repositories/BanRepository.java +++ b/src/main/java/app/repositories/BanRepository.java @@ -13,17 +13,20 @@ import java.util.List; public interface BanRepository extends PagingAndSortingRepository { @Query(value = "select b from Ban b where " + - "(:ban_ids is null or b.id in :ban_ids) and " + - "(:account_ids is null or b.account_id in :account_ids) and " + + "(:ban_ids_non_exists = true or b.id in :ban_ids) and " + + "(:account_ids_non_exists = true or b.account_id in :account_ids) and " + "(:begin_date is null or DATE_PART('EPOCH', b.timestamp) >= :begin_date) and " + "(:end_date is null or :end_date <= DATE_PART('EPOCH', b.timestamp)) and " + "(:active is null or b.active = :active) and " + - "(:admin_ids is null or b.unbanned_by_id in :admin_ids) order by b.id desc") + "(:admin_ids_non_exists = true or b.unbanned_by_id in :admin_ids) order by b.id desc") Page getBans(Pageable pageable, + @Param(value = "ban_ids_non_exists") Boolean ban_ids_non_exists, @Param(value = "ban_ids") Iterable ban_ids, + @Param(value = "account_ids_non_exists") Boolean account_ids_non_exists, @Param(value = "account_ids") Iterable account_ids, @Param(value = "begin_date") Long begin_date, @Param(value = "end_date") Long end_date, @Param(value = "active") Boolean active, + @Param(value = "admin_ids_non_exists") Boolean admin_ids_non_exists, @Param(value = "admin_ids") Iterable admin_ids); } diff --git a/src/main/java/app/repositories/MessageRepository.java b/src/main/java/app/repositories/MessageRepository.java index 9f6d376..d60a022 100644 --- a/src/main/java/app/repositories/MessageRepository.java +++ b/src/main/java/app/repositories/MessageRepository.java @@ -10,12 +10,13 @@ import org.springframework.data.repository.query.Param; public interface MessageRepository extends PagingAndSortingRepository { @Query(value = "select m from Message m where " + - "(:account_ids is null or m.account_id in :account_ids) and " + + "(:account_ids_non_exists = true or m.account_id in :account_ids) and " + "(:begin_date is null or m.utime >= :begin_date) and " + "(:end_date is null or :end_date <= m.utime) and " + "(:message_contain is null or m.message like :message_contain) and " + "(:server_id is null or m.server_id like :server_id) order by m.id desc ") Page getMessages(Pageable pageable, + @Param(value = "account_ids_non_exists") Boolean account_ids_non_exists, @Param(value = "account_ids") Iterable account_ids, @Param(value = "begin_date") Long begin_date, @Param(value = "end_date") Long end_date,