Ver código fonte

Merge branch 'dev/优化模糊查询中的特殊符号'

648540858 11 meses atrás
pai
commit
36f79d798b
20 arquivos alterados com 81 adições e 25 exclusões
  1. 2 5
      src/main/java/com/genersoft/iot/vmp/gb28181/controller/MediaController.java
  2. 1 0
      src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java
  3. 5 1
      src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceMapper.java
  4. 1 1
      src/main/java/com/genersoft/iot/vmp/gb28181/dao/PlatformMapper.java
  5. 2 2
      src/main/java/com/genersoft/iot/vmp/gb28181/dao/RegionMapper.java
  6. 4 4
      src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java
  7. 2 2
      src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/DeviceChannelProvider.java
  8. 10 1
      src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/DeviceChannelServiceImpl.java
  9. 5 0
      src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/DeviceServiceImpl.java
  10. 10 0
      src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelServiceImpl.java
  11. 5 0
      src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlatformServiceImpl.java
  12. 10 0
      src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/RegionServiceImpl.java
  13. 5 0
      src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java
  14. 1 1
      src/main/java/com/genersoft/iot/vmp/storager/dao/CloudRecordServiceMapper.java
  15. 1 1
      src/main/java/com/genersoft/iot/vmp/streamProxy/controller/StreamProxyController.java
  16. 4 4
      src/main/java/com/genersoft/iot/vmp/streamProxy/dao/provider/StreamProxyProvider.java
  17. 5 0
      src/main/java/com/genersoft/iot/vmp/streamProxy/service/impl/StreamProxyServiceImpl.java
  18. 1 1
      src/main/java/com/genersoft/iot/vmp/streamPush/controller/StreamPushController.java
  19. 2 2
      src/main/java/com/genersoft/iot/vmp/streamPush/dao/StreamPushMapper.java
  20. 5 0
      src/main/java/com/genersoft/iot/vmp/streamPush/service/impl/StreamPushServiceImpl.java

+ 2 - 5
src/main/java/com/genersoft/iot/vmp/gb28181/controller/MediaController.java

@@ -18,16 +18,13 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 
 
 @Tag(name  = "媒体流相关")
-@Controller
+@RestController
 @Slf4j
 @RequestMapping(value = "/api/media")
 public class MediaController {

+ 1 - 0
src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java

@@ -119,6 +119,7 @@ public interface CommonGBChannelMapper {
             ", gb_block = #{gbBlock}" +
             ", gb_address = #{gbAddress}" +
             ", gb_parental = #{gbParental}" +
+            ", gb_parent_id = #{gbParentId}" +
             ", gb_safety_way = #{gbSafetyWay}" +
             ", gb_register_way = #{gbRegisterWay}" +
             ", gb_cert_num = #{gbCertNum}" +

+ 5 - 1
src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceMapper.java

@@ -330,7 +330,11 @@ public interface DeviceMapper {
             " FROM wvp_device de" +
             " where 1 = 1 "+
             " <if test='status != null'> AND de.on_line=${status}</if>"+
-            " <if test='query != null'> AND (coalesce(custom_name, name) LIKE '%${query}%' OR device_id LIKE '%${query}%' OR ip LIKE '%${query}%')</if> " +
+            " <if test='query != null'> AND (" +
+            " coalesce(custom_name, name) LIKE concat('%',#{query},'%') escape '/' " +
+            " OR device_id LIKE concat('%',#{query},'%') escape '/' " +
+            " OR ip LIKE concat('%',#{query},'%') escape '/')" +
+            "</if> " +
             " order by create_time desc "+
             " </script>")
     List<Device> getDeviceList(@Param("query") String query, @Param("status") Boolean status);

+ 1 - 1
src/main/java/com/genersoft/iot/vmp/gb28181/dao/PlatformMapper.java

@@ -71,7 +71,7 @@ public interface PlatformMapper {
             "    ) as channel_count" +
             " FROM wvp_platform pp where 1=1 " +
             " <if test='query != null'> " +
-            " AND (pp.name LIKE concat('%',#{query},'%') OR pp.server_gb_id  LIKE concat('%',#{query},'%') )</if> " +
+            " AND (pp.name LIKE concat('%',#{query},'%') escape '/' OR pp.server_gb_id  LIKE concat('%',#{query},'%') escape '/' )</if> " +
             " order by pp.id desc"+
             " </script>")
     List<Platform> queryList(@Param("query") String query);

+ 2 - 2
src/main/java/com/genersoft/iot/vmp/gb28181/dao/RegionMapper.java

@@ -26,7 +26,7 @@ public interface RegionMapper {
 
     @Select(value = {" <script>" +
             "SELECT *  from wvp_common_region WHERE 1=1 " +
-            " <if test='query != null'> AND (device_id LIKE concat('%',#{query},'%') OR name LIKE concat('%',#{query},'%'))</if> " +
+            " <if test='query != null'> AND (device_id LIKE concat('%',#{query},'%') escape '/' OR name LIKE concat('%',#{query},'%') escape '/')</if> " +
             " <if test='parentId != null'> AND parent_device_id = #{parentId}</if> " +
             "ORDER BY id " +
             " </script>"})
@@ -79,7 +79,7 @@ public interface RegionMapper {
             " where " +
             " <if test='parentId != null'> parent_id = #{parentId} </if> " +
             " <if test='parentId == null'> parent_id is null </if> " +
-            " <if test='query != null'> AND (device_id LIKE concat('%',#{query},'%') OR name LIKE concat('%',#{query},'%'))</if> " +
+            " <if test='query != null'> AND (device_id LIKE concat('%',#{query},'%') escape '/' OR name LIKE concat('%',#{query},'%') escape '/')</if> " +
             " </script>")
     List<RegionTree> queryForTree(@Param("query") String query, @Param("parentId") Integer parentId);
 

+ 4 - 4
src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java

@@ -122,8 +122,8 @@ public class ChannelProvider {
         sqlBuild.append(BASE_SQL);
         sqlBuild.append(" where channel_type = 0 ");
         if (params.get("query") != null) {
-            sqlBuild.append(" AND (coalesce(gb_device_id, device_id) LIKE concat('%',#{query},'%')" +
-                    " OR coalesce(gb_name, name) LIKE concat('%',#{query},'%') )")
+            sqlBuild.append(" AND (coalesce(gb_device_id, device_id) LIKE concat('%',#{query},'%') escape '/'" +
+                    " OR coalesce(gb_name, name) LIKE concat('%',#{query},'%') escape '/' )")
             ;
         }
         if (params.get("online") != null && (Boolean)params.get("online")) {
@@ -154,8 +154,8 @@ public class ChannelProvider {
         sqlBuild.append(BASE_SQL);
         sqlBuild.append(" where channel_type = 0 ");
         if (params.get("query") != null) {
-            sqlBuild.append(" AND (coalesce(gb_device_id, device_id) LIKE concat('%',#{query},'%')" +
-                    " OR coalesce(gb_name, name) LIKE concat('%',#{query},'%') )")
+            sqlBuild.append(" AND (coalesce(gb_device_id, device_id) LIKE concat('%',#{query},'%') escape '/'" +
+                    " OR coalesce(gb_name, name) LIKE concat('%',#{query},'%') escape '/' )")
             ;
         }
         if (params.get("online") != null && (Boolean)params.get("online")) {

+ 2 - 2
src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/DeviceChannelProvider.java

@@ -71,8 +71,8 @@ public class DeviceChannelProvider {
                     "OR (LENGTH(coalesce(dc.gb_device_id, dc.device_id))=LENGTH(#{civilCode}) + 2) AND coalesce(dc.gb_device_id, dc.device_id) LIKE concat(#{civilCode},'%'))");
         }
         if (params.get("query") != null && !ObjectUtils.isEmpty(params.get("query"))) {
-            sqlBuild.append(" AND (coalesce(dc.gb_device_id, dc.device_id) LIKE concat('%',#{query},'%')" +
-                    " OR coalesce(dc.gb_name, dc.name) LIKE concat('%',#{query},'%'))")
+            sqlBuild.append(" AND (coalesce(dc.gb_device_id, dc.device_id) LIKE concat('%',#{query},'%') escape '/'" +
+                    " OR coalesce(dc.gb_name, dc.name) LIKE concat('%',#{query},'%') escape '/')")
             ;
         }
         if (params.get("online") != null && (Boolean)params.get("online")) {

+ 10 - 1
src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/DeviceChannelServiceImpl.java

@@ -609,6 +609,11 @@ public class DeviceChannelServiceImpl implements IDeviceChannelService {
                 parentId = channelId;
             }
         }
+        if (query != null) {
+            query = query.replaceAll("/", "//")
+                    .replaceAll("%", "/%")
+                    .replaceAll("_", "/_");
+        }
         List<DeviceChannel> all = channelMapper.queryChannels(deviceDbId, civilCode, businessGroupId, parentId, query, channelType, online,null);
         return new PageInfo<>(all);
     }
@@ -624,7 +629,11 @@ public class DeviceChannelServiceImpl implements IDeviceChannelService {
         if (device == null) {
             throw new ControllerException(ErrorCode.ERROR100.getCode(), "未找到设备:" + deviceId);
         }
-        // 获取到所有正在播放的流
+        if (query != null) {
+            query = query.replaceAll("/", "//")
+                    .replaceAll("%", "/%")
+                    .replaceAll("_", "/_");
+        }
         PageHelper.startPage(page, count);
         List<DeviceChannel> all = channelMapper.queryChannels(device.getId(), null,null, null, query, hasSubChannel, online,null);
         return new PageInfo<>(all);

+ 5 - 0
src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/DeviceServiceImpl.java

@@ -519,6 +519,11 @@ public class DeviceServiceImpl implements IDeviceService {
     @Override
     public PageInfo<Device> getAll(int page, int count, String query, Boolean status) {
         PageHelper.startPage(page, count);
+        if (query != null) {
+            query = query.replaceAll("/", "//")
+                    .replaceAll("%", "/%")
+                    .replaceAll("_", "/_");
+        }
         List<Device> all = deviceMapper.getDeviceList(query, status);
         return new PageInfo<>(all);
     }

+ 10 - 0
src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelServiceImpl.java

@@ -390,6 +390,11 @@ public class GbChannelServiceImpl implements IGbChannelService {
     @Override
     public PageInfo<CommonGBChannel> queryListByCivilCode(int page, int count, String query, Boolean online, Integer channelType, String civilCode) {
         PageHelper.startPage(page, count);
+        if (query != null) {
+            query = query.replaceAll("/", "//")
+                    .replaceAll("%", "/%")
+                    .replaceAll("_", "/_");
+        }
         List<CommonGBChannel> all = commonGBChannelMapper.queryListByCivilCode(query, online, channelType, civilCode);
         return new PageInfo<>(all);
     }
@@ -397,6 +402,11 @@ public class GbChannelServiceImpl implements IGbChannelService {
     @Override
     public PageInfo<CommonGBChannel> queryListByParentId(int page, int count, String query, Boolean online, Integer channelType, String groupDeviceId) {
         PageHelper.startPage(page, count);
+        if (query != null) {
+            query = query.replaceAll("/", "//")
+                    .replaceAll("%", "/%")
+                    .replaceAll("_", "/_");
+        }
         List<CommonGBChannel> all = commonGBChannelMapper.queryListByParentId(query, online, channelType, groupDeviceId);
         return new PageInfo<>(all);
     }

+ 5 - 0
src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlatformServiceImpl.java

@@ -159,6 +159,11 @@ public class PlatformServiceImpl implements IPlatformService {
     @Override
     public PageInfo<Platform> queryPlatformList(int page, int count, String query) {
         PageHelper.startPage(page, count);
+        if (query != null) {
+            query = query.replaceAll("/", "//")
+                    .replaceAll("%", "/%")
+                    .replaceAll("_", "/_");
+        }
         List<Platform> all = platformMapper.queryList(query);
         return new PageInfo<>(all);
     }

+ 10 - 0
src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/RegionServiceImpl.java

@@ -97,6 +97,11 @@ public class RegionServiceImpl implements IRegionService {
     @Override
     public PageInfo<Region> query(String query, int page, int count) {
         PageHelper.startPage(page, count);
+        if (query != null) {
+            query = query.replaceAll("/", "//")
+                    .replaceAll("%", "/%")
+                    .replaceAll("_", "/_");
+        }
         List<Region> regionList =  regionMapper.query(query, null);
         return new PageInfo<>(regionList);
     }
@@ -140,6 +145,11 @@ public class RegionServiceImpl implements IRegionService {
 
     @Override
     public List<RegionTree> queryForTree(String query, Integer parent, Boolean hasChannel) {
+        if (query != null) {
+            query = query.replaceAll("/", "//")
+                    .replaceAll("%", "/%")
+                    .replaceAll("_", "/_");
+        }
         List<RegionTree> regionList = regionMapper.queryForTree(query, parent);
         if (parent != null && hasChannel != null && hasChannel) {
             Region parentRegion = regionMapper.queryOne(parent);

+ 5 - 0
src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java

@@ -71,6 +71,11 @@ public class CloudRecordServiceImpl implements ICloudRecordService {
 
         }
         PageHelper.startPage(page, count);
+        if (query != null) {
+            query = query.replaceAll("/", "//")
+                    .replaceAll("%", "/%")
+                    .replaceAll("_", "/_");
+        }
         List<CloudRecordItem> all = cloudRecordServiceMapper.getList(query, app, stream, startTimeStamp, endTimeStamp,
                 callId, mediaServerItems, null);
         return new PageInfo<>(all);

+ 1 - 1
src/main/java/com/genersoft/iot/vmp/storager/dao/CloudRecordServiceMapper.java

@@ -41,7 +41,7 @@ public interface CloudRecordServiceMapper {
             "select * " +
             " from wvp_cloud_record " +
             " where 0 = 0" +
-            " <if test='query != null'> AND (app LIKE concat('%',#{query},'%') OR stream LIKE concat('%',#{query},'%') )</if> " +
+            " <if test='query != null'> AND (app LIKE concat('%',#{query},'%') escape '/' OR stream LIKE concat('%',#{query},'%') escape '/' )</if> " +
             " <if test= 'app != null '> and app=#{app}</if>" +
             " <if test= 'stream != null '> and stream=#{stream}</if>" +
             " <if test= 'startTimeStamp != null '> and end_time &gt;= #{startTimeStamp}</if>" +

+ 1 - 1
src/main/java/com/genersoft/iot/vmp/streamProxy/controller/StreamProxyController.java

@@ -30,7 +30,7 @@ import java.util.Map;
  * 拉流代理接口
  */
 @Tag(name = "拉流代理", description = "")
-@Controller
+@RestController
 @Slf4j
 @RequestMapping(value = "/api/proxy")
 public class StreamProxyController {

+ 4 - 4
src/main/java/com/genersoft/iot/vmp/streamProxy/dao/provider/StreamProxyProvider.java

@@ -36,13 +36,13 @@ public class StreamProxyProvider {
         if (params.get("query") != null) {
             sqlBuild.append(" AND ")
                     .append(" (")
-                    .append(" st.app LIKE ").append("'%").append(params.get("query")).append("%'")
+                    .append(" st.app LIKE ").append("'%").append(params.get("query")).append("%' escape '/'")
                     .append(" OR")
-                    .append(" st.stream LIKE ").append("'%").append(params.get("query")).append("%'")
+                    .append(" st.stream LIKE ").append("'%").append(params.get("query")).append("%' escape '/'")
                     .append(" OR")
-                    .append(" wdc.gb_device_id LIKE ").append("'%").append(params.get("query")).append("%'")
+                    .append(" wdc.gb_device_id LIKE ").append("'%").append(params.get("query")).append("%' escape '/'")
                     .append(" OR")
-                    .append(" wdc.gb_name LIKE ").append("'%").append(params.get("query")).append("%'")
+                    .append(" wdc.gb_name LIKE ").append("'%").append(params.get("query")).append("%' escape '/'")
                     .append(" )")
             ;
         }

+ 5 - 0
src/main/java/com/genersoft/iot/vmp/streamProxy/service/impl/StreamProxyServiceImpl.java

@@ -246,6 +246,11 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
     @Override
     public PageInfo<StreamProxy> getAll(Integer page, Integer count, String query, Boolean pulling, String mediaServerId) {
         PageHelper.startPage(page, count);
+        if (query != null) {
+            query = query.replaceAll("/", "//")
+                    .replaceAll("%", "/%")
+                    .replaceAll("_", "/_");
+        }
         List<StreamProxy> all = streamProxyMapper.selectAll(query, pulling, mediaServerId);
         return new PageInfo<>(all);
     }

+ 1 - 1
src/main/java/com/genersoft/iot/vmp/streamPush/controller/StreamPushController.java

@@ -43,7 +43,7 @@ import java.util.Map;
 import java.util.UUID;
 
 @Tag(name  = "推流信息管理")
-@Controller
+@RestController
 @Slf4j
 @RequestMapping(value = "/api/push")
 public class StreamPushController {

+ 2 - 2
src/main/java/com/genersoft/iot/vmp/streamPush/dao/StreamPushMapper.java

@@ -48,8 +48,8 @@ public interface StreamPushMapper {
             " on st.id = wdc.stream_push_id " +
             " WHERE " +
             " 1=1 " +
-            " <if test='query != null'> AND (st.app LIKE concat('%',#{query},'%') OR st.stream LIKE concat('%',#{query},'%') " +
-            " OR wdc.gb_device_id LIKE concat('%',#{query},'%') OR wdc.gb_name LIKE concat('%',#{query},'%'))</if> " +
+            " <if test='query != null'> AND (st.app LIKE concat('%',#{query},'%') escape '/' OR st.stream LIKE concat('%',#{query},'%') escape '/' " +
+            " OR wdc.gb_device_id LIKE concat('%',#{query},'%') escape '/' OR wdc.gb_name LIKE concat('%',#{query},'%') escape '/')</if> " +
             " <if test='pushing == true' > AND st.pushing=1</if>" +
             " <if test='pushing == false' > AND st.pushing=0 </if>" +
             " <if test='mediaServerId != null' > AND st.media_server_id=#{mediaServerId} </if>" +

+ 5 - 0
src/main/java/com/genersoft/iot/vmp/streamPush/service/impl/StreamPushServiceImpl.java

@@ -175,6 +175,11 @@ public class StreamPushServiceImpl implements IStreamPushService {
     @Override
     public PageInfo<StreamPush> getPushList(Integer page, Integer count, String query, Boolean pushing, String mediaServerId) {
         PageHelper.startPage(page, count);
+        if (query != null) {
+            query = query.replaceAll("/", "//")
+                    .replaceAll("%", "/%")
+                    .replaceAll("_", "/_");
+        }
         List<StreamPush> all = streamPushMapper.selectAll(query, pushing, mediaServerId);
         return new PageInfo<>(all);
     }