From d029fb7adb8324b7900accdb918f6fc447809d79 Mon Sep 17 00:00:00 2001 From: lin <648540858@qq.com> Date: Fri, 24 Oct 2025 16:23:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gb28181/dao/CommonGBChannelMapper.java | 3 ++ .../gb28181/dao/provider/ChannelProvider.java | 40 +++++++++---------- .../service/IStreamProxyService.java | 1 + .../web/custom/CameraChannelController.java | 14 +++++++ .../custom/conf/SignAuthenticationFilter.java | 12 ++++-- .../custom/service/CameraChannelService.java | 8 ++++ web/src/views/channel/group/index.vue | 3 +- 7 files changed, 57 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java index 5bcd98d4a..efd390b23 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java @@ -665,4 +665,7 @@ public interface CommonGBChannelMapper { @SelectProvider(type = ChannelProvider.class, method = "queryOldChanelListByChannels") List queryOldChanelListByChannels(List channelList); + + @SelectProvider(type = ChannelProvider.class, method = "queryMeetingChannelList") + List queryMeetingChannelList(String business); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java index dfbeb15d5..c06500add 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java @@ -567,13 +567,14 @@ public class ChannelProvider { public String queryListForSy(Map params ){ StringBuilder sqlBuild = new StringBuilder(); sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE); - sqlBuild.append(" where wdc.channel_type = 0 AND (wdc.gb_ptz_type is null || wdc.gb_ptz_type != 99) AND coalesce(wdc.gb_parent_id, wdc.parent_id) = #{groupDeviceId}"); + sqlBuild.append(" where wdc.channel_type != 0 AND (wdc.gb_ptz_type is null || ( wdc.gb_ptz_type != 98 && wdc.gb_ptz_type != 99)) AND coalesce(wdc.gb_parent_id, wdc.parent_id) = #{groupDeviceId}"); if (params.get("online") != null && (Boolean)params.get("online")) { sqlBuild.append(" AND coalesce(wdc.gb_status, wdc.status) = 'ON'"); } if (params.get("online") != null && !(Boolean)params.get("online")) { sqlBuild.append(" AND coalesce(wdc.gb_status, wdc.status) = 'OFF'"); } + sqlBuild.append(" order by coalesce(wdc.gb_status, wdc.status) desc"); return sqlBuild.toString(); } @@ -581,7 +582,7 @@ public class ChannelProvider { public String queryListWithChildForSy(Map params ){ StringBuilder sqlBuild = new StringBuilder(); sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE); - sqlBuild.append(" where wdc.channel_type = 0 AND (wdc.gb_ptz_type is null || wdc.gb_ptz_type != 99) " + + sqlBuild.append(" where wdc.channel_type != 1 AND (wdc.gb_ptz_type is null || ( wdc.gb_ptz_type != 98 && wdc.gb_ptz_type != 99)) " + " AND coalesce(wdc.gb_parent_id, wdc.parent_id) in ("); sqlBuild.append(" "); @@ -654,7 +655,7 @@ public class ChannelProvider { public String queryListInBox(Map params ){ StringBuilder sqlBuild = new StringBuilder(); sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE); - sqlBuild.append(" where wdc.channel_type = 0 AND (wdc.gb_ptz_type is null || wdc.gb_ptz_type != 99) " + + sqlBuild.append(" where wdc.channel_type != 1 AND (wdc.gb_ptz_type is null || ( wdc.gb_ptz_type != 98 && wdc.gb_ptz_type != 99)) " + " AND coalesce(wdc.gb_parent_id, wdc.parent_id) in ("); sqlBuild.append(" "); @@ -682,7 +683,7 @@ public class ChannelProvider { public String queryListInCircleForMysql(Map params ){ StringBuilder sqlBuild = new StringBuilder(); sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE); - sqlBuild.append(" where wdc.channel_type = 0 AND (wdc.gb_ptz_type is null || wdc.gb_ptz_type != 99) " + + sqlBuild.append(" where wdc.channel_type != 1 AND (wdc.gb_ptz_type is null || ( wdc.gb_ptz_type != 98 && wdc.gb_ptz_type != 99)) " + " AND coalesce(wdc.gb_parent_id, wdc.parent_id) in ("); sqlBuild.append(" "); @@ -711,7 +712,7 @@ public class ChannelProvider { public String queryListInCircleForKingBase(Map params ){ StringBuilder sqlBuild = new StringBuilder(); sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE); - sqlBuild.append(" where wdc.channel_type = 0 AND (wdc.gb_ptz_type is null || wdc.gb_ptz_type != 99) " + + sqlBuild.append(" where wdc.channel_type != 1 AND (wdc.gb_ptz_type is null || ( wdc.gb_ptz_type != 98 && wdc.gb_ptz_type != 99)) " + " AND coalesce(wdc.gb_parent_id, wdc.parent_id) in ("); sqlBuild.append(" "); @@ -740,7 +741,7 @@ public class ChannelProvider { public String queryListInPolygonForMysql(Map params ){ StringBuilder sqlBuild = new StringBuilder(); sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE); - sqlBuild.append(" where wdc.channel_type = 0 AND (wdc.gb_ptz_type is null || wdc.gb_ptz_type != 99) " + + sqlBuild.append(" where wdc.channel_type != 1 AND (wdc.gb_ptz_type is null || ( wdc.gb_ptz_type != 98 && wdc.gb_ptz_type != 99)) " + " AND coalesce(wdc.gb_parent_id, wdc.parent_id) in ("); sqlBuild.append(" "); @@ -778,7 +779,7 @@ public class ChannelProvider { public String queryListInPolygonForKingBase(Map params ){ StringBuilder sqlBuild = new StringBuilder(); sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE); - sqlBuild.append(" where wdc.channel_type = 0 AND (wdc.gb_ptz_type is null || wdc.gb_ptz_type != 99) " + + sqlBuild.append(" where wdc.channel_type != 1 AND (wdc.gb_ptz_type is null || ( wdc.gb_ptz_type != 98 && wdc.gb_ptz_type != 99)) " + " AND coalesce(wdc.gb_parent_id, wdc.parent_id) in ("); sqlBuild.append(" "); @@ -836,19 +837,11 @@ public class ChannelProvider { public String queryListByDeviceIds(Map params ){ StringBuilder sqlBuild = new StringBuilder(); + sqlBuild.append(""); return sqlBuild.toString() ; } @@ -873,13 +866,20 @@ public class ChannelProvider { public String queryListForSyMobile(Map params ){ StringBuilder sqlBuild = new StringBuilder(); sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE); - sqlBuild.append(" WHERE wdc.gb_ptz_type = 99 "); + sqlBuild.append(" WHERE wdc.gb_ptz_type = 99 and wdc.channel_type != 1 "); if (params.get("business") != null) { sqlBuild.append(" AND coalesce(gb_business_group_id, business_group_id) = #{business}"); } return sqlBuild.toString(); } + public String queryMeetingChannelList(Map params ){ + StringBuilder sqlBuild = new StringBuilder(); + sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE); + sqlBuild.append(" WHERE wdc.channel_type = 2 and wdc.gb_ptz_type = 98 and coalesce(gb_business_group_id, business_group_id) = #{business}"); + return sqlBuild.toString(); + } + public String queryCameraChannelById(Map params ){ return BASE_SQL_FOR_CAMERA_DEVICE + " where wdc.id = #{gbId}"; diff --git a/src/main/java/com/genersoft/iot/vmp/streamProxy/service/IStreamProxyService.java b/src/main/java/com/genersoft/iot/vmp/streamProxy/service/IStreamProxyService.java index 3b0cdbe0d..183067c2f 100755 --- a/src/main/java/com/genersoft/iot/vmp/streamProxy/service/IStreamProxyService.java +++ b/src/main/java/com/genersoft/iot/vmp/streamProxy/service/IStreamProxyService.java @@ -93,4 +93,5 @@ public interface IStreamProxyService { StreamProxy getStreamProxy(int id); void delete(int id); + } diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java b/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java index bd1e850b3..706c18cbb 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java @@ -13,6 +13,7 @@ import com.genersoft.iot.vmp.service.bean.CloudRecordItem; import com.genersoft.iot.vmp.service.bean.ErrorCallback; import com.genersoft.iot.vmp.service.bean.InviteErrorCode; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; +import com.genersoft.iot.vmp.streamProxy.service.IStreamProxyService; import com.genersoft.iot.vmp.streamPush.service.IStreamPushPlayService; import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.utils.HttpUtils; @@ -70,6 +71,9 @@ public class CameraChannelController { @Autowired private IStreamPushPlayService streamPushPlayService; + @Autowired + private IStreamProxyService streamProxyService; + @GetMapping(value = "/camera/list") @ResponseBody @@ -550,4 +554,14 @@ public class CameraChannelController { public void stop(String app, String stream){ streamPushPlayService.stop(app, stream); } + + @GetMapping(value = "/camera/meeting/list") + @ResponseBody + @Operation(summary = "查询拉流代理", security = @SecurityRequirement(name = JwtUtils.HEADER)) + @Parameter(name = "topGroupAlias", description = "分组别名") + public List queryMeetingChannelList(String topGroupAlias){ + return channelService.queryMeetingChannelList(topGroupAlias); + } + + } diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/conf/SignAuthenticationFilter.java b/src/main/java/com/genersoft/iot/vmp/web/custom/conf/SignAuthenticationFilter.java index f4b4b1446..b751687f1 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/conf/SignAuthenticationFilter.java +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/conf/SignAuthenticationFilter.java @@ -45,6 +45,10 @@ public class SignAuthenticationFilter extends OncePerRequestFilter { chain.doFilter(request, response); return; } +// if (request.getParameter("ccerty") != null) { +// chain.doFilter(request, response); +// return; +// } // 设置响应内容类型 response.setContentType("application/json;charset=UTF-8"); @@ -150,9 +154,11 @@ public class SignAuthenticationFilter extends OncePerRequestFilter { }catch (Exception e) { log.info("[SY-接口验签] 读取body失败, 请求地址: {} ", requestURI, e); response.setStatus(Response.OK); - PrintWriter out = response.getWriter(); - out.println(getErrorResult(6017, "接口鉴权异常")); - out.close(); + if (!response.isCommitted()) { + PrintWriter out = response.getWriter(); + out.println(getErrorResult(6017, "接口鉴权异常")); + out.close(); + } return; } chain.doFilter(request, response); diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java b/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java index 3aa89501b..4dc5d0a40 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java @@ -635,4 +635,12 @@ public class CameraChannelService implements CommandLineRunner { } + public List queryMeetingChannelList(String topGroupAlias) { + CameraGroup cameraGroup = groupMapper.queryGroupByAlias(topGroupAlias); + Assert.notNull(cameraGroup, "域不存在"); + String business = cameraGroup.getDeviceId(); + Assert.notNull(business, "域不存在"); + + return channelMapper.queryMeetingChannelList(business); + } } diff --git a/web/src/views/channel/group/index.vue b/web/src/views/channel/group/index.vue index a61503a98..286a268f8 100755 --- a/web/src/views/channel/group/index.vue +++ b/web/src/views/channel/group/index.vue @@ -132,7 +132,7 @@ export default { data() { return { channelList: [], - tableHeight: `calc(100vh - ${this.$refs.queryForm.offsetHeight}px)`, + tableHeight: `calc(100vh - 190px)`, searchStr: '', channelType: '', online: '', @@ -152,6 +152,7 @@ export default { created() { this.initData() + this.tableHeight = `calc(100vh - ${this.$refs.queryForm.offsetHeight}px)` }, destroyed() { },