From 92f969af9a18db76b7a44d41d7e7603d1a72edee Mon Sep 17 00:00:00 2001 From: gsd Date: Sun, 21 Jun 2026 23:15:52 +0300 Subject: [PATCH] minifixes --- src/main/java/app/entities/report/ReportBody.java | 4 ++++ src/main/java/app/services/ProfileService.java | 12 +++++++----- .../java/app/services/db/DiscordAuthService.java | 9 ++++++++- src/main/java/app/services/db/ReportService.java | 3 ++- src/main/java/app/services/db/UsertimeService.java | 2 +- .../db/exceptions/PlayerOnServerMissing.java | 4 ++++ .../java/app/websocket/handlers/ServersHandler.java | 3 ++- 7 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 src/main/java/app/services/db/exceptions/PlayerOnServerMissing.java diff --git a/src/main/java/app/entities/report/ReportBody.java b/src/main/java/app/entities/report/ReportBody.java index 7a0916f..5892dc2 100644 --- a/src/main/java/app/entities/report/ReportBody.java +++ b/src/main/java/app/entities/report/ReportBody.java @@ -7,4 +7,8 @@ public class ReportBody { private String author_steam64; private String reported_steam64 = null; private String reason; + + public String getReason() { + return reason == null ? "" : reason; + } } \ No newline at end of file diff --git a/src/main/java/app/services/ProfileService.java b/src/main/java/app/services/ProfileService.java index 324d1db..77877b2 100644 --- a/src/main/java/app/services/ProfileService.java +++ b/src/main/java/app/services/ProfileService.java @@ -307,11 +307,13 @@ public class ProfileService { } public SteamID GetSteamIDFromAnyData(String any) { + if (any == null || any.isEmpty()) return null; + SteamID result; //Проверить что это дискорд ид if (any.startsWith("<@") && any.endsWith(">")) { String discord_id = any.split("<@", 2)[1].split(">", 2)[0]; - result = discordAuthService.getSteamIDofDiscordID(discord_id); + result = discordAuthService.getSteamIDofDiscordID(discord_id.trim()); if (result != null) return result; } //Проверить не играет ли чел с таким именем на сервере @@ -320,19 +322,19 @@ public class ProfileService { //Проверить возможно что это ид бана if (any.startsWith("#")) { String[] splitted = any.split("#", 2); - int ban_id = Integer.parseInt(splitted[1]); + int ban_id = Integer.parseInt(splitted[1].trim()); Ban ban = banService.getBan(ban_id); if(ban != null) result = SteamIDConverter.getSteamID(ban.getSteam_id()); if (result != null) return result; } //Проверить что это инвайт в друзья - result = SteamInviteConverter.getSteamID(any); + result = SteamInviteConverter.getSteamID(any.trim()); if (result != null) return result; //Проверить что возможно это ссылка на стим профиль с именем - result = steamWebApi.getSteamID(any); + result = steamWebApi.getSteamID(any.trim()); if (result != null) return result; //Проверить что возможно это стим ид в любой интрапретации - result = SteamIDConverter.getSteamID(any); + result = SteamIDConverter.getSteamID(any.trim()); if (result != null) return result; //Проверить что вводное это имя и проверить в БД result = usertimeService.getSteamOnUsername(any); diff --git a/src/main/java/app/services/db/DiscordAuthService.java b/src/main/java/app/services/db/DiscordAuthService.java index 80ad4ed..65f642c 100644 --- a/src/main/java/app/services/db/DiscordAuthService.java +++ b/src/main/java/app/services/db/DiscordAuthService.java @@ -20,8 +20,15 @@ public class DiscordAuthService { private HashMap> processing_accounts = new HashMap<>(); public SteamID getSteamIDofDiscordID(String discord_id) { + Long discordId; + try { + discordId = Long.parseLong(discord_id); + } catch (NumberFormatException nfe) { + return null; + } + return jdbcTemplate.query("SELECT steam_id FROM steam2discord WHERE discord_id = ? AND active = 1 LIMIT 1", - new Object[]{ Long.parseLong(discord_id) }, + new Object[]{ discordId }, (rs, n) -> SteamIDConverter.getSteamID(rs.getString("steam_id"))) .stream().findFirst().orElse(null); } diff --git a/src/main/java/app/services/db/ReportService.java b/src/main/java/app/services/db/ReportService.java index 9028a5c..fea3bce 100644 --- a/src/main/java/app/services/db/ReportService.java +++ b/src/main/java/app/services/db/ReportService.java @@ -11,6 +11,7 @@ import app.entities.server.players.RCONPlayer; import app.entities.server.request.PlayerOnServer; import app.services.ProfileService; import app.services.StatsService; +import app.services.db.exceptions.PlayerOnServerMissing; import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -67,8 +68,8 @@ public class ReportService { PlayerOnServer reported_player = (PlayerOnServer) statsService.searchPlayer(reported_user); long utime = Instant.now().getEpochSecond(); - int player_count = stats.getServers().get(reported_user==null?current_user.getPlay_on().getServer_id():reported_user.getPlay_on().getServer_id()).getPlayer_count(); String server_id = reported_user==null?current_user.getPlay_on().getServer_id():reported_user.getPlay_on().getServer_id(); + int player_count = stats.getServers().get(server_id).getPlayer_count(); jdbcTemplate_rw.update("INSERT INTO user_reports (a_nickname, a_steam2, a_permition, a_kills, a_deads, a_seconds, " + "r_nickname, r_steam2, r_permition, r_kills, r_deads, r_seconds, " + diff --git a/src/main/java/app/services/db/UsertimeService.java b/src/main/java/app/services/db/UsertimeService.java index f69314e..d5e1bb5 100644 --- a/src/main/java/app/services/db/UsertimeService.java +++ b/src/main/java/app/services/db/UsertimeService.java @@ -115,7 +115,7 @@ public class UsertimeService { } public SteamID getSteamOnUsername(String username) { - return jdbcTemplate.query("SELECT account_id FROM user_connections WHERE player_name LIKE ? ORDER BY id DESC LIMIT 1", + return jdbcTemplate.query("SELECT account_id FROM user_connections WHERE player_name = ? ORDER BY id DESC LIMIT 1", new Object[]{ username }, (rs, n) -> SteamIDConverter.getSteamID("[U:1:%d]".formatted(rs.getInt("account_id")))) .stream().findFirst().orElse(null); diff --git a/src/main/java/app/services/db/exceptions/PlayerOnServerMissing.java b/src/main/java/app/services/db/exceptions/PlayerOnServerMissing.java new file mode 100644 index 0000000..194bc15 --- /dev/null +++ b/src/main/java/app/services/db/exceptions/PlayerOnServerMissing.java @@ -0,0 +1,4 @@ +package app.services.db.exceptions; + +public class PlayerOnServerMissing extends RuntimeException { +} diff --git a/src/main/java/app/websocket/handlers/ServersHandler.java b/src/main/java/app/websocket/handlers/ServersHandler.java index a1a623a..f77b8e4 100644 --- a/src/main/java/app/websocket/handlers/ServersHandler.java +++ b/src/main/java/app/websocket/handlers/ServersHandler.java @@ -19,11 +19,12 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; @Component public class ServersHandler extends TextWebSocketHandler implements BaseWebsocketHandler { private final Logger logger = LoggerFactory.getLogger(getClass()); - private final Map activeSessions = new HashMap<>(); + private final Map activeSessions = new ConcurrentHashMap<>(); private ObjectMapper objectMapper = new ObjectMapper(); private Stats stats;