SHA256
Аватары: общий компонент, кэш txId и avatar.ar в графе связей
This commit is contained in:
+26
-2
@@ -21,8 +21,11 @@ import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class Net_GetUserConnectionsGraph_Handler implements JsonMessageHandler {
|
||||
private static final Pattern AR_TX_ID_PATTERN = Pattern.compile("^[A-Za-z0-9_-]{43}$");
|
||||
|
||||
@Override
|
||||
public Net_Response handle(Net_Request baseRequest, ConnectionContext ctx) throws Exception {
|
||||
Net_GetUserConnectionsGraph_Request req = (Net_GetUserConnectionsGraph_Request) baseRequest;
|
||||
@@ -139,11 +142,12 @@ public class Net_GetUserConnectionsGraph_Handler implements JsonMessageHandler {
|
||||
su.login AS login,
|
||||
MAX(CASE WHEN up.param = 'gender' THEN up.value END) AS gender_value,
|
||||
MAX(CASE WHEN up.param = 'official' THEN up.value END) AS official_value,
|
||||
MAX(CASE WHEN up.param = 'shine' THEN up.value END) AS shine_value
|
||||
MAX(CASE WHEN up.param = 'shine' THEN up.value END) AS shine_value,
|
||||
MAX(CASE WHEN up.param = 'ava' THEN up.value END) AS avatar_value
|
||||
FROM solana_users su
|
||||
LEFT JOIN users_params up
|
||||
ON up.login = su.login COLLATE NOCASE
|
||||
AND up.param IN ('gender', 'official', 'shine')
|
||||
AND up.param IN ('gender', 'official', 'shine', 'ava')
|
||||
WHERE su.login COLLATE NOCASE IN (%s)
|
||||
GROUP BY su.login
|
||||
ORDER BY su.login
|
||||
@@ -163,6 +167,7 @@ public class Net_GetUserConnectionsGraph_Handler implements JsonMessageHandler {
|
||||
meta.gender = normalizeGender(rs.getString("gender_value"));
|
||||
meta.official = parseToggle(rs.getString("official_value"));
|
||||
meta.shine = parseToggle(rs.getString("shine_value"));
|
||||
meta.avatarAr = extractArAvatarTxId(rs.getString("avatar_value"));
|
||||
out.put(normKey(login), meta);
|
||||
}
|
||||
}
|
||||
@@ -188,6 +193,22 @@ public class Net_GetUserConnectionsGraph_Handler implements JsonMessageHandler {
|
||||
return "не указан";
|
||||
}
|
||||
|
||||
private String extractArAvatarTxId(String rawValue) {
|
||||
String value = String.valueOf(rawValue == null ? "" : rawValue).trim();
|
||||
if (!value.startsWith("AR:")) return null;
|
||||
String txId = value.substring(3).trim();
|
||||
if (!AR_TX_ID_PATTERN.matcher(txId).matches()) return null;
|
||||
return txId;
|
||||
}
|
||||
|
||||
private Net_GetUserConnectionsGraph_Response.AvatarItem makeAvatarItem(String avatarAr) {
|
||||
String txId = String.valueOf(avatarAr == null ? "" : avatarAr).trim();
|
||||
if (txId.isEmpty()) return null;
|
||||
Net_GetUserConnectionsGraph_Response.AvatarItem avatar = new Net_GetUserConnectionsGraph_Response.AvatarItem();
|
||||
avatar.setAr(txId);
|
||||
return avatar;
|
||||
}
|
||||
|
||||
private List<Net_GetUserConnectionsGraph_Response.RelativeItem> toRelativeItems(
|
||||
List<String> logins,
|
||||
Map<String, UserMeta> metaByLogin
|
||||
@@ -204,6 +225,7 @@ public class Net_GetUserConnectionsGraph_Handler implements JsonMessageHandler {
|
||||
it.setLogin(clean);
|
||||
it.setGender(gender);
|
||||
it.setGenderLabel(genderLabel(gender));
|
||||
it.setAvatar(makeAvatarItem(meta == null ? null : meta.avatarAr));
|
||||
items.add(it);
|
||||
}
|
||||
return items;
|
||||
@@ -230,6 +252,7 @@ public class Net_GetUserConnectionsGraph_Handler implements JsonMessageHandler {
|
||||
it.setShine(shine);
|
||||
it.setOfficialLabel(official ? "официальный" : "неофициальный");
|
||||
it.setShineLabel(shine ? "сияющий" : "несияющий");
|
||||
it.setAvatar(makeAvatarItem(meta == null ? null : meta.avatarAr));
|
||||
items.add(it);
|
||||
}
|
||||
return items;
|
||||
@@ -239,5 +262,6 @@ public class Net_GetUserConnectionsGraph_Handler implements JsonMessageHandler {
|
||||
private String gender = "unknown";
|
||||
private boolean official = false;
|
||||
private boolean shine = false;
|
||||
private String avatarAr = null;
|
||||
}
|
||||
}
|
||||
|
||||
+13
@@ -24,10 +24,18 @@ public class Net_GetUserConnectionsGraph_Response extends Net_Response {
|
||||
private List<RelativeItem> siblings = new ArrayList<>();
|
||||
private List<UserMarkItem> allUsers = new ArrayList<>();
|
||||
|
||||
public static class AvatarItem {
|
||||
private String ar;
|
||||
|
||||
public String getAr() { return ar; }
|
||||
public void setAr(String ar) { this.ar = ar; }
|
||||
}
|
||||
|
||||
public static class RelativeItem {
|
||||
private String login;
|
||||
private String gender;
|
||||
private String genderLabel;
|
||||
private AvatarItem avatar;
|
||||
|
||||
public String getLogin() { return login; }
|
||||
public void setLogin(String login) { this.login = login; }
|
||||
@@ -35,6 +43,8 @@ public class Net_GetUserConnectionsGraph_Response extends Net_Response {
|
||||
public void setGender(String gender) { this.gender = gender; }
|
||||
public String getGenderLabel() { return genderLabel; }
|
||||
public void setGenderLabel(String genderLabel) { this.genderLabel = genderLabel; }
|
||||
public AvatarItem getAvatar() { return avatar; }
|
||||
public void setAvatar(AvatarItem avatar) { this.avatar = avatar; }
|
||||
}
|
||||
|
||||
public static class UserMarkItem {
|
||||
@@ -43,6 +53,7 @@ public class Net_GetUserConnectionsGraph_Response extends Net_Response {
|
||||
private boolean shine;
|
||||
private String officialLabel;
|
||||
private String shineLabel;
|
||||
private AvatarItem avatar;
|
||||
|
||||
public String getLogin() { return login; }
|
||||
public void setLogin(String login) { this.login = login; }
|
||||
@@ -54,6 +65,8 @@ public class Net_GetUserConnectionsGraph_Response extends Net_Response {
|
||||
public void setOfficialLabel(String officialLabel) { this.officialLabel = officialLabel; }
|
||||
public String getShineLabel() { return shineLabel; }
|
||||
public void setShineLabel(String shineLabel) { this.shineLabel = shineLabel; }
|
||||
public AvatarItem getAvatar() { return avatar; }
|
||||
public void setAvatar(AvatarItem avatar) { this.avatar = avatar; }
|
||||
}
|
||||
|
||||
public String getLogin() { return login; }
|
||||
|
||||
Reference in New Issue
Block a user