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;