Commit e1f3d0303fa0b6cfa7c2c6303a79733572be6e8a
1 parent
1319f362
添加配置 用于调度系统
Showing
11 changed files
with
283 additions
and
56 deletions
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
| ... | ... | @@ -33,6 +33,8 @@ import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; |
| 33 | 33 | import com.genersoft.iot.vmp.vmanager.bean.OtherPsSendInfo; |
| 34 | 34 | import com.genersoft.iot.vmp.vmanager.bean.OtherRtpSendInfo; |
| 35 | 35 | import com.genersoft.iot.vmp.vmanager.bean.StreamContent; |
| 36 | +import com.genersoft.iot.vmp.vmanager.jt1078.platform.Jt1078OfCarController; | |
| 37 | +import org.apache.commons.lang3.StringUtils; | |
| 36 | 38 | import org.slf4j.Logger; |
| 37 | 39 | import org.slf4j.LoggerFactory; |
| 38 | 40 | import org.springframework.beans.factory.annotation.Autowired; |
| ... | ... | @@ -130,6 +132,10 @@ public class ZLMHttpHookListener { |
| 130 | 132 | @Autowired |
| 131 | 133 | private RedisTemplate<Object, Object> redisTemplate; |
| 132 | 134 | |
| 135 | + @Autowired | |
| 136 | + private Jt1078OfCarController jt1078OfCarController; | |
| 137 | + | |
| 138 | + | |
| 133 | 139 | /** |
| 134 | 140 | * 服务器定时上报时间,上报间隔可配置,默认10s上报一次 |
| 135 | 141 | */ |
| ... | ... | @@ -558,6 +564,22 @@ public class ZLMHttpHookListener { |
| 558 | 564 | // 国标类型的流 |
| 559 | 565 | if ("rtp".equals(param.getApp())) { |
| 560 | 566 | ret.put("close", userSetting.getStreamOnDemand()); |
| 567 | + String stream = param.getStream(); | |
| 568 | + Object port = redisTemplate.opsForValue().get("tag:history:port:" + stream); | |
| 569 | + Object httpPort = redisTemplate.opsForValue().get("tag:history:httpPort:" + stream); | |
| 570 | + if (ObjectUtils.isEmpty(port)) { | |
| 571 | + port = -1; | |
| 572 | + } | |
| 573 | + | |
| 574 | + if (ObjectUtils.isEmpty(httpPort)) { | |
| 575 | + httpPort = -1; | |
| 576 | + } | |
| 577 | + | |
| 578 | + Map<String, Object> resl = jt1078OfCarController.sendIORequestStop(StringUtils.substringBefore(stream, "-"), StringUtils.substringAfter(stream, "-"), stream, (Integer) port, (Integer) httpPort); | |
| 579 | + if (!StringUtils.equals(String.valueOf(resl.get("code")), "1")) { | |
| 580 | + logger.info("停流失败,稍后再试:{},{},{}", stream, port, httpPort); | |
| 581 | + return ret; | |
| 582 | + } | |
| 561 | 583 | // 国标流, 点播/录像回放/录像下载 |
| 562 | 584 | InviteInfo inviteInfo = inviteStreamService.getInviteInfoByStream(null, param.getStream()); |
| 563 | 585 | // 点播 |
| ... | ... | @@ -838,7 +860,7 @@ public class ZLMHttpHookListener { |
| 838 | 860 | @ResponseBody |
| 839 | 861 | @PostMapping(value = "/on_rtp_server_timeout", produces = "application/json;charset=UTF-8") |
| 840 | 862 | public HookResult onRtpServerTimeout(@RequestBody OnRtpServerTimeoutHookParam |
| 841 | - param) { | |
| 863 | + param) { | |
| 842 | 864 | logger.info("[ZLM HOOK] rtpServer收流超时:{}->{}({})", param.getMediaServerId(), param.getStream_id(), param.getSsrc()); |
| 843 | 865 | |
| 844 | 866 | taskExecutor.execute(() -> { | ... | ... |
src/main/java/com/genersoft/iot/vmp/vmanager/jt1078/platform/Jt1078OfCarController.java
| ... | ... | @@ -91,25 +91,18 @@ public class Jt1078OfCarController { |
| 91 | 91 | public Map<String, Object> requestTreeOfCompany() { |
| 92 | 92 | Map<String, Object> resultMap = new HashMap<>(); |
| 93 | 93 | try { |
| 94 | - if (cookieTimeOut()) { | |
| 95 | - requestToken(); | |
| 96 | - } | |
| 94 | + resultMap.put("code", "1"); | |
| 95 | + | |
| 96 | + List<HashMap<String, Object>> compList = new ArrayList<>(); | |
| 97 | + compList.add(tuohuaConfigBean.combationTree("100", "company1", "100", false, "新城市公交", "100", false, "span><img src='/metronic_v4.5.4/layui/icon/company1.png' class ='imageIcon' /></span><span>新城市公交</span>", | |
| 98 | + "<span><img src='/metronic_v4.5.4/layui/icon/company1.png' class ='imageIcon' /></span><span>浦东公交</span>", 2)); | |
| 97 | 99 | |
| 98 | - HttpClientPostEntity clientPostEntity = httpClientUtil.doGet(tuohuaConfigBean.getCompanyURL(), jsessionid); | |
| 99 | - if (Objects.isNull(clientPostEntity)) { | |
| 100 | - resultMap.put("code", "-1"); | |
| 101 | - resultMap.put("message", "请求错误,请联系管理员"); | |
| 102 | - return resultMap; | |
| 103 | - } | |
| 104 | 100 | resultMap.put("code", "1"); |
| 105 | - log.info(jsessionid + ";" + clientPostEntity.getResultStr()); | |
| 106 | - HashMap<String, Object> hashMap = JSON.parseObject(clientPostEntity.getResultStr(), HashMap.class); | |
| 107 | - resultMap.put("result", hashMap.get("data")); | |
| 108 | - } catch (URISyntaxException | IOException | JSONException e) { | |
| 109 | - log.error("请求token异常", e); | |
| 101 | + resultMap.put("result", compList); | |
| 102 | + } catch (JSONException e) { | |
| 110 | 103 | resultMap.put("code", "-100"); |
| 111 | 104 | resultMap.put("message", "请求错误,请联系管理员"); |
| 112 | - jsessionid = null; | |
| 105 | + | |
| 113 | 106 | } |
| 114 | 107 | |
| 115 | 108 | return resultMap; |
| ... | ... | @@ -119,28 +112,12 @@ public class Jt1078OfCarController { |
| 119 | 112 | public Map<String, Object> requestTreeOfCarByCompanyId(@PathVariable String companyId) { |
| 120 | 113 | Map<String, Object> resultMap = new HashMap<>(); |
| 121 | 114 | try { |
| 122 | - if (cookieTimeOut()) { | |
| 123 | - requestToken(); | |
| 124 | - } | |
| 125 | - | |
| 126 | - String url = MessageFormat.format(tuohuaConfigBean.getCompanyOfCarURL(), companyId); | |
| 127 | - | |
| 128 | - HttpClientPostEntity clientPostEntity = httpClientUtil.doGet(url, jsessionid); | |
| 129 | - if (Objects.isNull(clientPostEntity)) { | |
| 130 | - resultMap.put("code", "-1"); | |
| 131 | - resultMap.put("message", "请求错误,请联系管理员"); | |
| 132 | - return resultMap; | |
| 133 | - } | |
| 134 | - | |
| 135 | - // HashMap<String,Object> hashMap = JSON.parseObject(clientPostEntity.getResultStr(),HashMap.class); | |
| 115 | + List<HashMap<String, Object>> linesCars = tuohuaConfigBean.requestOfLineAndCarAndCombationTree(httpClientUtil, companyId); | |
| 116 | + resultMap.put("result", linesCars); | |
| 136 | 117 | resultMap.put("code", "1"); |
| 137 | - //resultMap.put("result", hashMap.get("data")); | |
| 138 | - resultMap.put("result", JSON.parseArray(clientPostEntity.getResultStr(), HashMap.class)); | |
| 139 | - } catch (URISyntaxException | IOException | JSONException e) { | |
| 140 | - log.error("请求token异常", e); | |
| 118 | + } catch (Exception e) { | |
| 141 | 119 | resultMap.put("code", "-100"); |
| 142 | 120 | resultMap.put("message", "请求错误,请联系管理员"); |
| 143 | - jsessionid = null; | |
| 144 | 121 | } |
| 145 | 122 | |
| 146 | 123 | return resultMap; |
| ... | ... | @@ -212,9 +189,16 @@ public class Jt1078OfCarController { |
| 212 | 189 | resultMap.put("httpPort", entity.getHttpPort()); |
| 213 | 190 | resultMap.put("stream", stream); |
| 214 | 191 | |
| 192 | + redisTemplate.opsForValue().set("tag:history:port:"+stream, entity.getPort(), 2, TimeUnit.DAYS); | |
| 193 | + redisTemplate.opsForValue().set("tag:history:httpPort:"+stream, entity.getHttpPort(), 2, TimeUnit.DAYS); | |
| 194 | + | |
| 215 | 195 | msg = jt1078ConfigBean.formatMessageId(sim, channel, rtspConfigBean, entity.getPort() + 30000); |
| 216 | 196 | |
| 217 | 197 | entity = httpClientUtil.doPost(url, msg, null); |
| 198 | + Map<String, Object> resultMap1 = chooseEntity(entity); | |
| 199 | + if (Objects.nonNull(resultMap1)) { | |
| 200 | + return resultMap1; | |
| 201 | + } | |
| 218 | 202 | log.info(entity.getResultStr()); |
| 219 | 203 | |
| 220 | 204 | streamContent = getStreamContent(stream); |
| ... | ... | @@ -332,6 +316,7 @@ public class Jt1078OfCarController { |
| 332 | 316 | String msg = jt1078ConfigBean.formatMessageHistoryListRTSP(sim, channel, startTime, endTime); |
| 333 | 317 | |
| 334 | 318 | try { |
| 319 | + | |
| 335 | 320 | HttpClientPostEntity entity = httpClientUtil.doPost(url, msg, null); |
| 336 | 321 | |
| 337 | 322 | if (Objects.isNull(entity)) { |
| ... | ... | @@ -340,6 +325,11 @@ public class Jt1078OfCarController { |
| 340 | 325 | return resultMap; |
| 341 | 326 | } |
| 342 | 327 | |
| 328 | + Map<String, Object> resultMap1 = chooseEntity(entity); | |
| 329 | + if (Objects.nonNull(resultMap1)) { | |
| 330 | + return resultMap1; | |
| 331 | + } | |
| 332 | + | |
| 343 | 333 | HashMap<String, Object> hashMap = JSON.parseObject(entity.getResultStr(), HashMap.class); |
| 344 | 334 | resultMap.put("code", "1"); |
| 345 | 335 | resultMap.put("obj", hashMap); |
| ... | ... | @@ -411,10 +401,19 @@ public class Jt1078OfCarController { |
| 411 | 401 | resultMap.put("message", "新建链接错误,请稍后再试"); |
| 412 | 402 | return resultMap; |
| 413 | 403 | } |
| 404 | + | |
| 405 | + Map<String, Object> resultMap1 = chooseEntity(entity); | |
| 406 | + if (Objects.nonNull(resultMap1)) { | |
| 407 | + return resultMap1; | |
| 408 | + } | |
| 409 | + | |
| 414 | 410 | resultMap.put("stream", channelMapping); |
| 415 | 411 | resultMap.put("port", entity.getPort()); |
| 416 | 412 | resultMap.put("httpPort", entity.getHttpPort()); |
| 417 | 413 | |
| 414 | + redisTemplate.opsForValue().set("tag:history:port:"+channelMapping, entity.getPort(), 2, TimeUnit.DAYS); | |
| 415 | + redisTemplate.opsForValue().set("tag:history:httpPort:"+channelMapping, entity.getHttpPort(), 2, TimeUnit.DAYS); | |
| 416 | + | |
| 418 | 417 | msg = jt1078ConfigBean.formatMessageHistoryPlayRTSP(sim, channel, startTime, endTime, rtspConfigBean, entity.getPort() + 30000); |
| 419 | 418 | boolean flag = false; |
| 420 | 419 | |
| ... | ... | @@ -491,7 +490,7 @@ public class Jt1078OfCarController { |
| 491 | 490 | break; |
| 492 | 491 | } |
| 493 | 492 | Thread.sleep(100); |
| 494 | - } while (index < 1000); | |
| 493 | + } while (index < 600); | |
| 495 | 494 | |
| 496 | 495 | log.info("StreamContent:[{}]", streamContent); |
| 497 | 496 | return streamContent; |
| ... | ... | @@ -501,7 +500,7 @@ public class Jt1078OfCarController { |
| 501 | 500 | try { |
| 502 | 501 | return streamPushController.getPlayUrl("schedule", stream, mediaConfig.getId()); |
| 503 | 502 | } catch (com.genersoft.iot.vmp.conf.exception.ControllerException e) { |
| 504 | - log.info("获取播放地址失败:[{}],[{}]", stream, mediaConfig.getId()); | |
| 503 | + log.debug("获取播放地址失败:[{}],[{}]", stream, mediaConfig.getId()); | |
| 505 | 504 | } |
| 506 | 505 | return null; |
| 507 | 506 | } |
| ... | ... | @@ -635,4 +634,24 @@ public class Jt1078OfCarController { |
| 635 | 634 | |
| 636 | 635 | return httpClientPostEntity; |
| 637 | 636 | } |
| 637 | + | |
| 638 | + private Map<String, Object> chooseEntity(HttpClientPostEntity entity) { | |
| 639 | + Map<String, Object> result = new HashMap<>(); | |
| 640 | + if (Objects.isNull(entity)) { | |
| 641 | + result.put("code", "301"); | |
| 642 | + result.put("msg", "下发指令异常"); | |
| 643 | + return result; | |
| 644 | + } | |
| 645 | + Map<String,String> rsultMap = JSON.parseObject(entity.getResultStr(),HashMap.class); | |
| 646 | + if(Objects.equals(rsultMap.get("code"),"4000") || Objects.equals(rsultMap.get("code"),4000)){ | |
| 647 | + result.put("code", "304"); | |
| 648 | + result.put("msg", "离线的客户端(请检查设备是否注册或者鉴权"); | |
| 649 | + return result; | |
| 650 | + } | |
| 651 | + | |
| 652 | + return null; | |
| 653 | + | |
| 654 | + } | |
| 655 | + | |
| 656 | + | |
| 638 | 657 | } | ... | ... |
src/main/java/com/genersoft/iot/vmp/vmanager/jt1078/platform/config/TuohuaConfigBean.java
| 1 | 1 | package com.genersoft.iot.vmp.vmanager.jt1078.platform.config; |
| 2 | 2 | |
| 3 | +import com.alibaba.fastjson2.JSON; | |
| 4 | +import com.genersoft.iot.vmp.vmanager.jt1078.platform.ben.HttpClientPostEntity; | |
| 5 | +import com.genersoft.iot.vmp.vmanager.jt1078.platform.handler.HttpClientUtil; | |
| 6 | +import org.apache.commons.collections4.CollectionUtils; | |
| 7 | +import org.apache.commons.lang3.RandomUtils; | |
| 3 | 8 | import org.apache.commons.lang3.StringUtils; |
| 4 | 9 | import org.springframework.beans.factory.annotation.Value; |
| 5 | 10 | import org.springframework.stereotype.Component; |
| 6 | 11 | |
| 7 | -import java.util.Objects; | |
| 12 | +import java.security.MessageDigest; | |
| 13 | +import java.util.*; | |
| 14 | +import java.util.stream.Collectors; | |
| 8 | 15 | |
| 9 | 16 | /** |
| 10 | 17 | * @author liujun |
| ... | ... | @@ -32,6 +39,24 @@ public class TuohuaConfigBean { |
| 32 | 39 | @Value("${tuohua.bsth.tree.url.sim}") |
| 33 | 40 | private String simURL; |
| 34 | 41 | |
| 42 | + @Value("${tuohua.bsth.login.rest.baseURL}") | |
| 43 | + public String baseURL; | |
| 44 | + @Value("${tuohua.bsth.login.rest.password}") | |
| 45 | + private String restPassword; | |
| 46 | + | |
| 47 | + | |
| 48 | + public String getBaseURL() { | |
| 49 | + return baseURL; | |
| 50 | + } | |
| 51 | + | |
| 52 | + public String getRestPassword() { | |
| 53 | + return restPassword; | |
| 54 | + } | |
| 55 | + | |
| 56 | + public String getSimURL() { | |
| 57 | + return simURL; | |
| 58 | + } | |
| 59 | + | |
| 35 | 60 | |
| 36 | 61 | public String getUserName() { |
| 37 | 62 | return userName; |
| ... | ... | @@ -57,8 +82,165 @@ public class TuohuaConfigBean { |
| 57 | 82 | return companyOfCarURL; |
| 58 | 83 | } |
| 59 | 84 | |
| 60 | - public String getSimURL() { | |
| 61 | - return simURL; | |
| 85 | + | |
| 86 | + private final String LINE_URL = "/line/company/{companyId}?timestamp={timestamp}&nonce={nonce}&password={password}&sign={sign}"; | |
| 87 | +//private final String LINE_URL = "/line/all?timestamp={timestamp}&nonce={nonce}&password={password}&sign={sign}"; | |
| 88 | + private final String CAR_URL = "/car/company/{companyId}?timestamp={timestamp}&nonce={nonce}&password={password}&sign={sign}"; | |
| 89 | + | |
| 90 | + public String requestLine(HttpClientUtil httpClientUtil, String companyId) throws Exception { | |
| 91 | + String nonce = random(5); | |
| 92 | + String timestamp = String.valueOf(new Date().getTime()); | |
| 93 | + Map<String, String> map = new HashMap<>(); | |
| 94 | + map.put("timestamp", timestamp); | |
| 95 | + map.put("nonce", nonce); | |
| 96 | + map.put("password", getRestPassword()); | |
| 97 | + String sign = getSHA1(map); | |
| 98 | + | |
| 99 | + String url = StringUtils.join(getBaseURL(), formatURL(StringUtils.replace(LINE_URL, "{companyId}", companyId), map, sign)); | |
| 100 | + HttpClientPostEntity postEntity = httpClientUtil.doGet(url, null); | |
| 101 | + return Objects.isNull(postEntity) ? null : postEntity.getResultStr(); | |
| 102 | + } | |
| 103 | + | |
| 104 | + public String requestCars(HttpClientUtil httpClientUtil, String companyId) throws Exception { | |
| 105 | + String nonce = random(6); | |
| 106 | + String timestamp = String.valueOf(new Date().getTime()); | |
| 107 | + Map<String, String> map = new HashMap<>(); | |
| 108 | + map.put("timestamp", timestamp); | |
| 109 | + map.put("nonce", nonce); | |
| 110 | + map.put("password", getRestPassword()); | |
| 111 | + String sign = getSHA1(map); | |
| 112 | + String url = StringUtils.join(getBaseURL(), formatURL(StringUtils.replace(CAR_URL, "{companyId}", companyId), map, sign)); | |
| 113 | + HttpClientPostEntity postEntity = httpClientUtil.doGet(url, null); | |
| 114 | + return Objects.isNull(postEntity) ? null : postEntity.getResultStr(); | |
| 115 | + } | |
| 116 | + | |
| 117 | + public List<HashMap<String, Object>> requestOfLineAndCarAndCombationTree(HttpClientUtil httpClientUtil, String companyId) throws Exception { | |
| 118 | + String lineJson = requestLine(httpClientUtil, companyId); | |
| 119 | + String carJson = requestCars(httpClientUtil, companyId); | |
| 120 | + | |
| 121 | + | |
| 122 | + List<HashMap> linesJsonList = null; | |
| 123 | + int linesSize = 0; | |
| 124 | + if (StringUtils.isNoneBlank(lineJson)) { | |
| 125 | + linesJsonList = JSON.parseArray(lineJson, HashMap.class); | |
| 126 | + linesSize = CollectionUtils.size(linesJsonList); | |
| 127 | + } | |
| 128 | + | |
| 129 | + List<HashMap> carJsonList = null; | |
| 130 | + int carsJsonSize = 0; | |
| 131 | + if (StringUtils.isNoneBlank(carJson)) { | |
| 132 | + carJsonList = JSON.parseArray(carJson, HashMap.class); | |
| 133 | + carsJsonSize = CollectionUtils.size(carJsonList); | |
| 134 | + } | |
| 135 | + | |
| 136 | + int carsSize = carsJsonSize; | |
| 137 | + List<HashMap> carJsonListFinal = carJsonList; | |
| 138 | + | |
| 139 | + List<HashMap<String, Object>> returnData = new ArrayList<>(); | |
| 140 | + if (linesSize > 0) { | |
| 141 | + List<HashMap<String, Object>> lines = linesJsonList.stream().map(hashMap -> { | |
| 142 | + String code = convertStr(hashMap.get("lineCode")); | |
| 143 | + HashMap<String, Object> map = combationTree(code, convertStr(hashMap.get("line")), code, false, convertStr(hashMap.get("name")), code, false, | |
| 144 | + "<span><img src='/metronic_v4.5.4/layui/icon/line.png' class ='imageIcon' /></span><span>" + convertStr(hashMap.get("name")) + "</span>", | |
| 145 | + "<span><img src='/metronic_v4.5.4/layui/icon/line.png' class ='imageIcon' /></span><span>" + convertStr(hashMap.get("name")) + "</span>",201); | |
| 146 | + if (carsSize > 0) { | |
| 147 | + List<HashMap> carList = carJsonListFinal.stream().filter(c -> Objects.nonNull(c.get("lineCode")) && StringUtils.equals(convertStr(c.get("lineCode")), code)).map(ch -> { | |
| 148 | + ch.put("used", "1"); | |
| 149 | + return combatioinCarTree(ch); | |
| 150 | + }).collect(Collectors.toList()); | |
| 151 | + | |
| 152 | + map.put("children", carList); | |
| 153 | + } | |
| 154 | + | |
| 155 | + return map; | |
| 156 | + }).collect(Collectors.toList()); | |
| 157 | + returnData.addAll(lines); | |
| 158 | + } | |
| 159 | + | |
| 160 | + if (carsSize > 0) { | |
| 161 | + List<HashMap<String, Object>> cars = carJsonList.stream().filter(c -> !Objects.equals(convertStr(c.get("used")), "1")).map(c -> combatioinCarTree(c)).collect(Collectors.toList()); | |
| 162 | + returnData.addAll(cars); | |
| 163 | + } | |
| 164 | + return returnData; | |
| 165 | + } | |
| 166 | + | |
| 167 | + public static String getSHA1(Map<String, String> map) throws Exception { | |
| 168 | + try { | |
| 169 | + String[] array = new String[map.size()]; | |
| 170 | + map.values().toArray(array); | |
| 171 | + StringBuffer sb = new StringBuffer(); | |
| 172 | + // 字符串排序 | |
| 173 | + Arrays.sort(array); | |
| 174 | + for (int i = 0; i < array.length; i++) { | |
| 175 | + sb.append(array[i]); | |
| 176 | + } | |
| 177 | + String str = sb.toString(); | |
| 178 | + // SHA1签名生成 | |
| 179 | + MessageDigest md = MessageDigest.getInstance("SHA-1"); | |
| 180 | + md.update(str.getBytes()); | |
| 181 | + byte[] digest = md.digest(); | |
| 182 | + StringBuffer hexstr = new StringBuffer(); | |
| 183 | + String shaHex = ""; | |
| 184 | + for (int i = 0; i < digest.length; i++) { | |
| 185 | + shaHex = Integer.toHexString(digest[i] & 0xFF); | |
| 186 | + if (shaHex.length() < 2) { | |
| 187 | + hexstr.append(0); | |
| 188 | + } | |
| 189 | + hexstr.append(shaHex); | |
| 190 | + } | |
| 191 | + return hexstr.toString(); | |
| 192 | + } catch (Exception e) { | |
| 193 | + throw e; | |
| 194 | + } | |
| 195 | + | |
| 196 | + } | |
| 197 | + | |
| 198 | + public HashMap<String, Object> combationTree(String code, String icon, String id, boolean initChild, String name, String sourceId, | |
| 199 | + boolean spread, String text, String title,Integer type) { | |
| 200 | + HashMap<String, Object> result = new HashMap<>(); | |
| 201 | + result.put("code", code); | |
| 202 | + result.put("icon", icon); | |
| 203 | + result.put("id", id); | |
| 204 | + result.put("initChild", initChild); | |
| 205 | + result.put("name", name); | |
| 206 | + result.put("sourceId", sourceId); | |
| 207 | + result.put("spread", spread); | |
| 208 | + result.put("text", text); | |
| 209 | + result.put("title", title); | |
| 210 | + result.put("type",type); | |
| 211 | + return result; | |
| 212 | + } | |
| 213 | + | |
| 214 | + private HashMap<String, Object> combatioinCarTree(HashMap ch) { | |
| 215 | + String code = convertStr(ch.get("nbbm")); | |
| 216 | + HashMap<String, Object> hashMap = combationTree(code, "bus1", code, false, code, code, false, "<span><img src='/metronic_v4.5.4/layui/icon/bus1.png' class ='imageIcon' /></span><span>" + code + "</span>", | |
| 217 | + "<span><img src='/metronic_v4.5.4/layui/icon/bus1.png' class ='imageIcon' /></span><span>" + code + "</span>",301); | |
| 218 | + hashMap.put("sim",convertStr(ch.get("sim"))); | |
| 219 | +// hashMap.put("sim","122223333444"); | |
| 220 | + return hashMap; | |
| 221 | + } | |
| 222 | + | |
| 223 | + private String random(Integer count) { | |
| 224 | + StringBuilder builder = new StringBuilder(); | |
| 225 | + for (int i = 0; i < count; i++) { | |
| 226 | + Random random = new Random(); | |
| 227 | + char letter = (char) (random.nextInt(26) + 'a'); | |
| 228 | + builder.append(letter); | |
| 229 | + } | |
| 230 | + return builder.toString(); | |
| 231 | + } | |
| 232 | + | |
| 233 | + private String formatURL(String url, Map<String, String> map, String sign) { | |
| 234 | + for (Map.Entry<String, String> entry : map.entrySet()) { | |
| 235 | + String val = entry.getValue(); | |
| 236 | + url = StringUtils.replace(url, "{" + entry.getKey() + "}", val); | |
| 237 | + } | |
| 238 | + return StringUtils.replace(url, "{sign}", sign); | |
| 239 | + | |
| 240 | + } | |
| 241 | + | |
| 242 | + private String convertStr(Object object) { | |
| 243 | + return Objects.isNull(object) ? "" : object.toString(); | |
| 62 | 244 | } |
| 63 | 245 | |
| 64 | 246 | ... | ... |
src/main/resources/application-local.yml
| ... | ... | @@ -135,6 +135,9 @@ tuohua: |
| 135 | 135 | url: http://192.169.1.92:9088/user/login |
| 136 | 136 | userName: yuanxiaohu |
| 137 | 137 | password: Yxiaohu1.0 |
| 138 | + rest: | |
| 139 | + baseURL: http://10.10.2.20:9089/webservice/rest | |
| 140 | + password: bafb2b44a07a02e5e9912f42cd197423884116a8 | |
| 138 | 141 | tree: |
| 139 | 142 | url: |
| 140 | 143 | company: http://192.169.1.92:9088/video/tree |
| ... | ... | @@ -148,7 +151,7 @@ tuohua: |
| 148 | 151 | historyUdpPort: 9999 |
| 149 | 152 | ip : 61.169.120.202 |
| 150 | 153 | jt1078: |
| 151 | - ports: 9000,9500 | |
| 154 | + ports: 9100,9600 | |
| 152 | 155 | pushURL: http://192.169.1.92:3333/new/server/{pushKey}/{port}/{httpPort} |
| 153 | 156 | stopPushURL: http://192.169.1.92:3333/stop/channel/{pushKey}/{port}/{httpPort} |
| 154 | 157 | url: http://192.168.168.241:8100/device/{0} | ... | ... |
src/main/resources/application-localDev.yml
| ... | ... | @@ -133,7 +133,9 @@ tuohua: |
| 133 | 133 | url: http://192.169.1.92:9088/user/login |
| 134 | 134 | userName: yuanxiaohu |
| 135 | 135 | password: Yxiaohu1.0 |
| 136 | - | |
| 136 | + rest: | |
| 137 | + baseURL: http://10.10.2.20:9089/webservice/rest | |
| 138 | + password: bafb2b44a07a02e5e9912f42cd197423884116a8 | |
| 137 | 139 | tree: |
| 138 | 140 | url: |
| 139 | 141 | company: http://192.169.1.92:9088/video/tree | ... | ... |
web_src/config/index.js
| ... | ... | @@ -11,14 +11,14 @@ module.exports = { |
| 11 | 11 | assetsPublicPath: "/", |
| 12 | 12 | proxyTable: { |
| 13 | 13 | "/debug": { |
| 14 | - target: "http://192.169.1.92:28080", | |
| 14 | + target: "http://10.10.2.22:18089", | |
| 15 | 15 | changeOrigin: true, |
| 16 | 16 | pathRewrite: { |
| 17 | 17 | "^/debug": "/", |
| 18 | 18 | }, |
| 19 | 19 | }, |
| 20 | 20 | "/static/snap": { |
| 21 | - target: "http://192.168.169.100:28080", | |
| 21 | + target: "http://10.10.2.22:18089", | |
| 22 | 22 | changeOrigin: true, |
| 23 | 23 | // pathRewrite: { |
| 24 | 24 | // '^/static/snap': '/static/snap' | ... | ... |
web_src/index.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="utf-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width,initial-scale=1.0"> |
| 6 | - <title>国标28181</title> | |
| 6 | + <title>车载视频监控平台</title> | |
| 7 | 7 | <link rel="shortcut icon" href="static/favicon.ico" type="image/x-icon"> |
| 8 | 8 | <link rel="stylesheet" type="text/css" href="./static/css/iconfont.css"> |
| 9 | 9 | <link rel="stylesheet" type="text/css" href="./static/css/login.css"> | ... | ... |
web_src/src/components/Login.vue
web_src/src/components/live.vue
| ... | ... | @@ -137,8 +137,14 @@ export default { |
| 137 | 137 | method: 'get', |
| 138 | 138 | url: '/api/play/start/' + deviceId + '/' + channelId |
| 139 | 139 | }).then(function (res) { |
| 140 | + console.log("================================>"); | |
| 141 | + | |
| 142 | + console.log(res); | |
| 143 | + | |
| 140 | 144 | if (res.data.code === 0 && res.data.data) { |
| 141 | 145 | let videoUrl; |
| 146 | + | |
| 147 | + | |
| 142 | 148 | if (location.protocol === "https:") { |
| 143 | 149 | videoUrl = res.data.data.wss_flv; |
| 144 | 150 | } else { | ... | ... |
web_src/src/layout/UiHeader.vue
| ... | ... | @@ -5,16 +5,9 @@ |
| 5 | 5 | active-text-color="#1890ff" mode="horizontal"> |
| 6 | 6 | |
| 7 | 7 | <el-menu-item index="/console">控制台</el-menu-item> |
| 8 | - <el-menu-item index="/live">分屏监控</el-menu-item> | |
| 9 | - <el-menu-item index="/deviceList">国标设备</el-menu-item> | |
| 8 | + | |
| 10 | 9 | <el-menu-item index="/deviceList1078">1078设备</el-menu-item> |
| 11 | - <el-menu-item index="/map">电子地图</el-menu-item> | |
| 12 | - <el-menu-item index="/pushVideoList">推流列表</el-menu-item> | |
| 13 | - <el-menu-item index="/streamProxyList">拉流代理</el-menu-item> | |
| 14 | - <el-menu-item index="/cloudRecord">云端录像</el-menu-item> | |
| 15 | - <el-menu-item index="/mediaServerManger">节点管理</el-menu-item> | |
| 16 | - <el-menu-item index="/parentPlatformList/15/1">国标级联</el-menu-item> | |
| 17 | - <el-menu-item index="/minhang/deviceList">闵行设备</el-menu-item> | |
| 10 | + | |
| 18 | 11 | <el-menu-item v-if="editUser" index="/userManager">用户管理</el-menu-item> |
| 19 | 12 | |
| 20 | 13 | <!-- <el-submenu index="/setting">--> | ... | ... |