From c376c42efe5278c550c121cb3a4016bee4a8168f Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Wed, 25 Feb 2026 18:37:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=8C=87=E7=BA=B9=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E4=B8=BA=E5=90=8CIP=E6=AE=B5+=E6=89=8B=E6=9C=BA?= =?UTF-8?q?=E5=9E=8B=E5=8F=B7=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/LatestMobileDeviceService.java | 2 +- .../impl/LatestMobileDeviceServiceImpl.java | 35 ++++++++----------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/user/device/LatestMobileDeviceService.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/user/device/LatestMobileDeviceService.java index 75b7529b..11385c49 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/user/device/LatestMobileDeviceService.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/user/device/LatestMobileDeviceService.java @@ -118,7 +118,7 @@ public interface LatestMobileDeviceService extends BaseService 192.168.1) - * IPv6: 取前4段(如 2a0d:5600:24:449:xxx -> 2a0d:5600:24:449) + * 获取IP前缀段 + * IPv4: 取前2段(如 192.168.1.100 -> 192.168) + * IPv6: 取前2段(如 2402:ad80:130:d1a2::1 -> 2402:ad80) */ private String getIpPrefix(String ip) { if (StringUtils.isBlank(ip)) { return ""; } - if (ip.contains(":")) { - String[] parts = ip.split(":"); - if (parts.length >= 4) { - return parts[0] + ":" + parts[1] + ":" + parts[2] + ":" + parts[3]; - } - return ip; - } else { - String[] parts = ip.split("\\."); - if (parts.length >= 3) { - return parts[0] + "." + parts[1] + "." + parts[2]; - } - return ip; + String separator = ip.contains(":") ? ":" : "\\."; + String joinChar = ip.contains(":") ? ":" : "."; + + String[] parts = ip.split(separator); + if (parts.length >= 2) { + return parts[0] + joinChar + parts[1]; } + return ip; } @Override @@ -387,13 +380,13 @@ public class LatestMobileDeviceServiceImpl extends String requestClient = parts[0]; String phoneModel = parts[1]; - String ip = parts[2]; + String ipPrefix = parts[2]; return Optional.ofNullable(query() .select(LatestMobileDevice::getUserId) .eq(LatestMobileDevice::getRequestClient, requestClient) .eq(LatestMobileDevice::getPhoneModel, phoneModel) - .eq(LatestMobileDevice::getIp, ip) + .likeRight(LatestMobileDevice::getIp, ipPrefix) // 前缀匹配 .eq(LatestMobileDevice::getSysOrigin, sysOrigin) .last(PageConstant.formatLimit(500)) .list())