From 99b8ac206ad8421dc11c682858107749fc2dcdd5 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 3 Feb 2026 14:43:34 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=89=B9=E9=87=8F=E5=88=86=E9=85=8D?= =?UTF-8?q?=E6=97=B6=E5=AF=B9=E8=AF=B7=E6=B1=82=E4=B8=AD=E7=9A=84=E9=87=8D?= =?UTF-8?q?=E5=A4=8DtunnelId=E8=BF=9B=E8=A1=8C=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 防止同一请求中包含重复tunnelId导致创建多条权限记录 --- .../admin/service/impl/UserTunnelServiceImpl.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/springboot-backend/src/main/java/com/admin/service/impl/UserTunnelServiceImpl.java b/springboot-backend/src/main/java/com/admin/service/impl/UserTunnelServiceImpl.java index d181424..6f8c29e 100644 --- a/springboot-backend/src/main/java/com/admin/service/impl/UserTunnelServiceImpl.java +++ b/springboot-backend/src/main/java/com/admin/service/impl/UserTunnelServiceImpl.java @@ -17,7 +17,9 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -64,20 +66,21 @@ public class UserTunnelServiceImpl extends ServiceImpl requestedTunnelIds = batchAssignDto.getTunnels().stream() - .map(UserTunnelBatchAssignDto.TunnelAssignItem::getTunnelId) - .collect(Collectors.toList()); + Map uniqueTunnels = new LinkedHashMap<>(); + for (UserTunnelBatchAssignDto.TunnelAssignItem item : batchAssignDto.getTunnels()) { + uniqueTunnels.putIfAbsent(item.getTunnelId(), item); + } Set existingTunnelIds = this.list( new QueryWrapper() .eq("user_id", batchAssignDto.getUserId()) - .in("tunnel_id", requestedTunnelIds) + .in("tunnel_id", uniqueTunnels.keySet()) ).stream().map(UserTunnel::getTunnelId).collect(Collectors.toSet()); List toSave = new ArrayList<>(); List skippedIds = new ArrayList<>(); - for (UserTunnelBatchAssignDto.TunnelAssignItem item : batchAssignDto.getTunnels()) { + for (UserTunnelBatchAssignDto.TunnelAssignItem item : uniqueTunnels.values()) { if (existingTunnelIds.contains(item.getTunnelId())) { skippedIds.add(item.getTunnelId()); continue;