From 933a585242ae862c4e67d7be6437c72bcd2082b1 Mon Sep 17 00:00:00 2001 From: 16337 <1633794139@qq.com> Date: Wed, 25 Feb 2026 13:50:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(stream-proxy):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E5=90=8D=E4=BF=AE=E6=94=B9=E6=97=B6=E7=9A=84?= =?UTF-8?q?=E5=94=AF=E4=B8=80=E6=80=A7=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改内容: - update() 方法中添加 app+stream 唯一性检查 - 检测用户是否修改了 app 或 stream 字段 - 如果修改后与其他记录冲突,抛出友好的错误提示 - 错误消息:"应用名 [xxx] 下的流ID [yyy] 已存在" 场景示例: 原记录:大堂/001 用户修改为:停车场/001 系统检查:停车场下是否已有 001 - 如果已存在 → 抛出错误提示 - 如果不存在 → 允许修改 防止问题: - 避免修改应用名后产生重复的 app+stream 组合 - 保持数据库唯一约束的完整性 - 提供清晰的用户反馈 --- .../service/impl/StreamProxyServiceImpl.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/com/genersoft/iot/vmp/streamProxy/service/impl/StreamProxyServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/streamProxy/service/impl/StreamProxyServiceImpl.java index a37b4b471..c36daf78c 100755 --- a/src/main/java/com/genersoft/iot/vmp/streamProxy/service/impl/StreamProxyServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/streamProxy/service/impl/StreamProxyServiceImpl.java @@ -235,6 +235,18 @@ public class StreamProxyServiceImpl implements IStreamProxyService { if (streamProxyInDb == null) { throw new ControllerException(ErrorCode.ERROR100.getCode(), "代理不存在"); } + + // 检查 app+stream 唯一性(如果修改了app或stream) + if (!streamProxyInDb.getApp().equals(streamProxy.getApp()) || + !streamProxyInDb.getStream().equals(streamProxy.getStream())) { + StreamProxy duplicate = streamProxyMapper.selectOneByAppAndStream( + streamProxy.getApp(), streamProxy.getStream()); + if (duplicate != null && !duplicate.getId().equals(streamProxy.getId())) { + throw new ControllerException(ErrorCode.ERROR100.getCode(), + "应用名 [" + streamProxy.getApp() + "] 下的流ID [" + streamProxy.getStream() + "] 已存在"); + } + } + int updateResult = streamProxyMapper.update(streamProxy); if (updateResult > 0 && !ObjectUtils.isEmpty(streamProxy.getGbDeviceId())) { if (streamProxy.getGbId() > 0) {