From 83411ad1277f8d4dfbc95aff2f15900150e84db3 Mon Sep 17 00:00:00 2001 From: 64850858 <648540858@qq.com> Date: 星期一, 07 六月 2021 15:11:53 +0800 Subject: [PATCH] 设备信息增加最近注册时间和最近心跳时间,心跳超时时间变为可配置 --- src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEventListener.java | 44 +++++++---- web_src/src/components/DeviceList.vue | 30 ++++--- src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java | 33 +++++-- src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java | 1 src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java | 6 + src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/NotifyRequestProcessor.java | 4 src/main/resources/wvp.sqlite | 0 src/main/resources/all-application.yml | 4 src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java | 4 src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java | 5 src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java | 9 ++ src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEvent.java | 13 +- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java | 28 ++++-- sql/mysql.sql | 4 src/main/resources/application-dev.yml | 2 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java | 13 +- 16 files changed, 130 insertions(+), 70 deletions(-) diff --git a/sql/mysql.sql b/sql/mysql.sql index 3f3b876..71e651a 100644 --- a/sql/mysql.sql +++ b/sql/mysql.sql @@ -12,9 +12,11 @@ transport varchar(50) null, streamMode varchar(50) null, online varchar(50) null, - registerTimeMillis int null, + registerTime varchar(50) null, + keepaliveTime varchar(50) null, ip varchar(50) not null, port int not null, + expires int not null, hostAddress varchar(50) not null ); diff --git a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java index 7b74990..2d92658 100644 --- a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java +++ b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java @@ -23,4 +23,5 @@ VManageBootstrap.context = SpringApplication.run(VManageBootstrap.class, args); } + } diff --git a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java index 8af9956..6d8f45d 100644 --- a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java +++ b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java @@ -39,7 +39,9 @@ public static final String EVENT_ONLINE_REGISTER = "1"; public static final String EVENT_ONLINE_KEEPLIVE = "2"; - + + public static final String EVENT_ONLINE_MESSAGE = "3"; + public static final String EVENT_OUTLINE_UNREGISTER = "1"; public static final String EVENT_OUTLINE_TIMEOUT = "2"; diff --git a/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java index 32352c7..4fc28bc 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java @@ -31,6 +31,9 @@ @Value("${sip.ptz.speed:50}") Integer speed; + @Value("${sip.keepaliveTimeOut:180}") + Integer keepaliveTimeOut; + public String getMonitorIp() { return monitorIp; } @@ -63,4 +66,7 @@ return speed; } + public Integer getKeepaliveTimeOut() { + return keepaliveTimeOut; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java index f587e75..a9185e0 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java @@ -66,18 +66,23 @@ /** * 娉ㄥ唽鏃堕棿 */ - private Long registerTimeMillis; + private String registerTime; /** * 蹇冭烦鏃堕棿 */ - private Long KeepaliveTimeMillis; + private String keepaliveTime; /** * 閫氶亾涓暟 */ private int channelCount; + + /** + * 娉ㄥ唽鏈夋晥鏈� + */ + private int expires; public String getDeviceId() { return deviceId; @@ -175,19 +180,27 @@ this.channelCount = channelCount; } - public Long getRegisterTimeMillis() { - return registerTimeMillis; + public String getRegisterTime() { + return registerTime; } - public void setRegisterTimeMillis(Long registerTimeMillis) { - this.registerTimeMillis = registerTimeMillis; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } - public Long getKeepaliveTimeMillis() { - return KeepaliveTimeMillis; + public String getKeepaliveTime() { + return keepaliveTime; } - public void setKeepaliveTimeMillis(Long keepaliveTimeMillis) { - KeepaliveTimeMillis = keepaliveTimeMillis; + public void setKeepaliveTime(String keepaliveTime) { + this.keepaliveTime = keepaliveTime; + } + + public int getExpires() { + return expires; + } + + public void setExpires(int expires) { + this.expires = expires; } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java index 58b03dd..0422962 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java @@ -1,5 +1,6 @@ package com.genersoft.iot.vmp.gb28181.event; +import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.event.platformKeepaliveExpire.PlatformKeepaliveExpireEvent; import com.genersoft.iot.vmp.gb28181.event.platformNotRegister.PlatformNotRegisterEvent; import org.springframework.beans.factory.annotation.Autowired; @@ -22,9 +23,9 @@ @Autowired private ApplicationEventPublisher applicationEventPublisher; - public void onlineEventPublish(String deviceId, String from) { + public void onlineEventPublish(Device device, String from) { OnlineEvent onEvent = new OnlineEvent(this); - onEvent.setDeviceId(deviceId); + onEvent.setDevice(device); onEvent.setFrom(from); applicationEventPublisher.publishEvent(onEvent); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEvent.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEvent.java index e077cb9..1e01956 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEvent.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEvent.java @@ -1,5 +1,6 @@ package com.genersoft.iot.vmp.gb28181.event.online; +import com.genersoft.iot.vmp.gb28181.bean.Device; import org.springframework.context.ApplicationEvent; /** @@ -18,18 +19,18 @@ super(source); } - private String deviceId; + private Device device; private String from; - public String getDeviceId() { - return deviceId; + public Device getDevice() { + return device; } - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; + public void setDevice(Device device) { + this.device = device; } - + public String getFrom() { return from; } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEventListener.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEventListener.java index b9bb5b1..acdf272 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEventListener.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEventListener.java @@ -1,5 +1,7 @@ package com.genersoft.iot.vmp.gb28181.event.online; +import com.genersoft.iot.vmp.conf.SipConfig; +import com.genersoft.iot.vmp.gb28181.bean.Device; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -9,6 +11,9 @@ import com.genersoft.iot.vmp.common.VideoManagerConstants; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; import com.genersoft.iot.vmp.utils.redis.RedisUtil; + +import java.text.SimpleDateFormat; +import java.util.Date; /** * @Description: 鍦ㄧ嚎浜嬩欢鐩戝惉鍣紝鐩戝惉鍒扮绾垮悗锛屼慨鏀硅澶囩鍦ㄧ嚎鐘舵�併�� 璁惧鍦ㄧ嚎鏈変袱涓潵婧愶細 @@ -28,39 +33,46 @@ @Autowired private RedisUtil redis; + @Autowired + private SipConfig sipConfig; + + private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + @Override public void onApplicationEvent(OnlineEvent event) { if (logger.isDebugEnabled()) { - logger.debug("璁惧涓婄嚎浜嬩欢瑙﹀彂锛宒eviceId锛�" + event.getDeviceId() + ",from:" + event.getFrom()); + logger.debug("璁惧涓婄嚎浜嬩欢瑙﹀彂锛宒eviceId锛�" + event.getDevice().getDeviceId() + ",from:" + event.getFrom()); } - - String key = VideoManagerConstants.KEEPLIVEKEY_PREFIX + event.getDeviceId(); - boolean needUpdateStorager = false; + Device device = event.getDevice(); + String key = VideoManagerConstants.KEEPLIVEKEY_PREFIX + event.getDevice().getDeviceId(); switch (event.getFrom()) { // 娉ㄥ唽鏃惰Е鍙戠殑鍦ㄧ嚎浜嬩欢锛屽厛鍦╮edis涓鍔犺秴鏃惰秴鏃剁洃鍚� case VideoManagerConstants.EVENT_ONLINE_REGISTER: - // TODO 瓒呮椂鏃堕棿鏆傛椂鍐欐涓�180绉� - redis.set(key, event.getDeviceId(), 180); - needUpdateStorager = true; + // 瓒呮椂鏃堕棿 + redis.set(key, event.getDevice().getDeviceId(), sipConfig.getKeepaliveTimeOut()); + device.setRegisterTime(format.format(new Date(System.currentTimeMillis()))); break; - // 璁惧涓诲姩鍙戦�佸績璺宠Е鍙戠殑绂荤嚎浜嬩欢 + // 璁惧涓诲姩鍙戦�佸績璺宠Е鍙戠殑鍦ㄧ嚎浜嬩欢 case VideoManagerConstants.EVENT_ONLINE_KEEPLIVE: boolean exist = redis.hasKey(key); // 鍏堝垽鏂槸鍚﹁繕瀛樺湪锛屽綋璁惧鍏堝績璺宠秴鏃跺悗鍙堝彂閫佸績璺虫椂锛宺edis娌℃湁鐩戝惉锛岄渶瑕佸鍔� if (!exist) { - needUpdateStorager = true; - redis.set(key, event.getDeviceId(), 180); + redis.set(key, event.getDevice().getDeviceId(), sipConfig.getKeepaliveTimeOut()); } else { - redis.expire(key, 180); + redis.expire(key, sipConfig.getKeepaliveTimeOut()); } + device.setKeepaliveTime(format.format(new Date(System.currentTimeMillis()))); + break; + // 璁惧涓诲姩鍙戦�佹秷鎭Е鍙戠殑鍦ㄧ嚎浜嬩欢 + case VideoManagerConstants.EVENT_ONLINE_MESSAGE: + break; } - - if (needUpdateStorager) { - // 澶勭悊绂荤嚎鐩戝惉 - storager.online(event.getDeviceId()); - } + + device.setOnline(1); + // 澶勭悊涓婄嚎鐩戝惉 + storager.updateDevice(device); } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java index 114ffd4..1842efe 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java @@ -2,6 +2,7 @@ import java.io.ByteArrayInputStream; import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.*; import javax.sip.address.SipURI; @@ -226,7 +227,7 @@ String name = rootElement.getName(); Element deviceIdElement = rootElement.element("DeviceID"); String deviceId = deviceIdElement.getText(); - + Device device = storager.queryVideoDevice(deviceId); if (name.equalsIgnoreCase("Query")) { // 鍖哄垎鏄疪esponse鈥斺�旀煡璇㈠搷搴旓紝杩樻槸Query鈥斺�旀煡璇㈣姹� logger.info("鎺ユ敹鍒癉eviceStatus鏌ヨ娑堟伅"); FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME); @@ -259,7 +260,7 @@ deferredResultHolder.invokeResult(msg); if (offLineDetector.isOnline(deviceId)) { - publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE); + publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_MESSAGE); } else { } } @@ -452,6 +453,7 @@ String requestName = rootElement.getName(); Element deviceIdElement = rootElement.element("DeviceID"); String deviceId = deviceIdElement.getTextTrim().toString(); + Device device = storager.queryVideoDevice(deviceId); if (requestName.equals("Query")) { logger.info("鎺ユ敹鍒癉eviceInfo鏌ヨ娑堟伅"); FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME); @@ -468,7 +470,6 @@ } } else { logger.debug("鎺ユ敹鍒癉eviceInfo搴旂瓟娑堟伅"); - Device device = storager.queryVideoDevice(deviceId); if (device == null) { return; } @@ -489,7 +490,7 @@ // 鍥炲200 OK responseAck(evt); if (offLineDetector.isOnline(deviceId)) { - publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE); + publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_MESSAGE); } } } catch (DocumentException | SipException | InvalidArgumentException | ParseException e) { @@ -669,7 +670,7 @@ // 鍥炲200 OK responseAck(evt); if (offLineDetector.isOnline(deviceId)) { - publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE); + publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_MESSAGE); } } } @@ -776,7 +777,7 @@ // 鍥炲200 OK responseAck(evt); if (offLineDetector.isOnline(deviceId)) { - publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE); + publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE); } else { } }else { diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/NotifyRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/NotifyRequestProcessor.java index 897b6ab..2d669eb 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/NotifyRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/NotifyRequestProcessor.java @@ -216,13 +216,13 @@ Element rootElement = getRootElement(evt); Element deviceIdElement = rootElement.element("DeviceID"); String deviceId = deviceIdElement.getText(); + Device device = storager.queryVideoDevice(deviceId); Element deviceListElement = rootElement.element("DeviceList"); if (deviceListElement == null) { return; } Iterator<Element> deviceListIterator = deviceListElement.elementIterator(); if (deviceListIterator != null) { - Device device = storager.queryVideoDevice(deviceId); if (device == null) { return; } @@ -324,7 +324,7 @@ // 鍥炲200 OK response200Ok(evt); if (offLineDetector.isOnline(deviceId)) { - publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE); + publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_MESSAGE); } } } catch (DocumentException | SipException | InvalidArgumentException | ParseException e) { diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java index 574f9c7..64be7ef 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java @@ -2,7 +2,10 @@ import java.security.NoSuchAlgorithmException; import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; import java.util.Calendar; +import java.util.Date; import java.util.Locale; import javax.sip.InvalidArgumentException; @@ -70,7 +73,11 @@ boolean passwordCorrect = false; // 娉ㄥ唽鏍囧織 0锛氭湭鎼哄甫鎺堟潈澶存垨鑰呭瘑鐮侀敊璇� 1锛氭敞鍐屾垚鍔� 2锛氭敞閿�鎴愬姛 int registerFlag = 0; - Device device = null; + FromHeader fromHeader = (FromHeader) request.getHeader(FromHeader.NAME); + AddressImpl address = (AddressImpl) fromHeader.getAddress(); + SipUri uri = (SipUri) address.getURI(); + String deviceId = uri.getUser(); + Device device = storager.queryVideoDevice(deviceId); AuthorizationHeader authorhead = (AuthorizationHeader) request.getHeader(AuthorizationHeader.NAME); // 鏍¢獙瀵嗙爜鏄惁姝g‘ if (authorhead != null) { @@ -103,13 +110,17 @@ response.addHeader(dateHeader); ExpiresHeader expiresHeader = (ExpiresHeader) request.getHeader(Expires.NAME); + if (expiresHeader == null) { + response = getMessageFactory().createResponse(Response.BAD_REQUEST, request); + getServerTransaction(evt).sendResponse(response); + return; + } // 娣诲姞Contact澶� response.addHeader(request.getHeader(ContactHeader.NAME)); // 娣诲姞Expires澶� response.addHeader(request.getExpires()); // 鑾峰彇鍒伴�氫俊鍦板潃绛変俊鎭� - FromHeader fromHeader = (FromHeader) request.getHeader(FromHeader.NAME); ViaHeader viaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME); String received = viaHeader.getReceived(); int rPort = viaHeader.getRPort(); @@ -119,10 +130,7 @@ rPort = viaHeader.getPort(); } // - AddressImpl address = (AddressImpl) fromHeader.getAddress(); - SipUri uri = (SipUri) address.getURI(); - String deviceId = uri.getUser(); - device = storager.queryVideoDevice(deviceId); + if (device == null) { device = new Device(); device.setStreamMode("UDP"); @@ -132,11 +140,12 @@ device.setPort(rPort); device.setHostAddress(received.concat(":").concat(String.valueOf(rPort))); // 娉ㄩ攢鎴愬姛 - if (expiresHeader != null && expiresHeader.getExpires() == 0) { + if (expiresHeader.getExpires() == 0) { registerFlag = 2; } // 娉ㄥ唽鎴愬姛 else { + device.setExpires(expiresHeader.getExpires()); registerFlag = 1; // 鍒ゆ柇TCP杩樻槸UDP boolean isTcp = false; @@ -154,10 +163,7 @@ // 涓嬪彂catelog鏌ヨ鐩綍 if (registerFlag == 1 ) { logger.info("[{}] 娉ㄥ唽鎴愬姛! deviceId:" + device.getDeviceId(), requestAddress); - device.setRegisterTimeMillis(System.currentTimeMillis()); - storager.updateDevice(device); - publisher.onlineEventPublish(device.getDeviceId(), VideoManagerConstants.EVENT_ONLINE_REGISTER); - + publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_REGISTER); // 閲嶆柊娉ㄥ唽鏇存柊璁惧鍜岄�氶亾锛屼互鍏嶈澶囨浛鎹㈡垨鏇存柊鍚庝俊鎭棤娉曟洿鏂� handler.onRegister(device); } else if (registerFlag == 2) { diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java index bcc33de..d597f35 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java @@ -27,6 +27,9 @@ "ip," + "port," + "hostAddress," + + "expires," + + "registerTime," + + "keepaliveTime," + "online" + ") VALUES (" + "#{deviceId}," + @@ -39,6 +42,9 @@ "#{ip}," + "#{port}," + "#{hostAddress}," + + "#{expires}," + + "#{registerTime}," + + "#{keepaliveTime}," + "#{online}" + ")") int add(Device device); @@ -56,6 +62,9 @@ "<if test=\"port != null\">, port=${port}</if>" + "<if test=\"hostAddress != null\">, hostAddress='${hostAddress}'</if>" + "<if test=\"online != null\">, online=${online}</if>" + + "<if test=\"registerTime != null\">, registerTime='${registerTime}'</if>" + + "<if test=\"keepaliveTime != null\">, keepaliveTime='${keepaliveTime}'</if>" + + "<if test=\"expires != null\">, expires=${expires}</if>" + "WHERE deviceId='${deviceId}'"+ " </script>"}) int update(Device device); diff --git a/src/main/resources/all-application.yml b/src/main/resources/all-application.yml index 10667be..6923d97 100644 --- a/src/main/resources/all-application.yml +++ b/src/main/resources/all-application.yml @@ -63,8 +63,10 @@ domain: 4401020049 # [鍙�塢 id: 44010200492000000001 - # [鍙�塢 榛樿璁惧璁よ瘉瀵嗙爜锛屽悗缁墿灞曚娇鐢ㄨ澶囧崟鐙瘑鐮� + # [鍙�塢 榛樿璁惧璁よ瘉瀵嗙爜锛屽悗缁墿灞曚娇鐢ㄨ澶囧崟鐙瘑鐮�, 绉婚櫎瀵嗙爜灏嗕笉杩涜鏍¢獙 password: admin123 + # [鍙�塢 蹇冭烦瓒呮椂鏃堕棿锛� 寤鸿璁剧疆涓哄績璺冲懆鏈熺殑涓夊�� + keepaliveTimeOut: 180 #zlm鏈嶅姟鍣ㄩ厤缃� media: diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index b494769..b70bce4 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -39,7 +39,7 @@ domain: 4401020049 # [鍙�塢 id: 44010200492000000001 - # [鍙�塢 榛樿璁惧璁よ瘉瀵嗙爜锛屽悗缁墿灞曚娇鐢ㄨ澶囧崟鐙瘑鐮� + # [鍙�塢 榛樿璁惧璁よ瘉瀵嗙爜锛屽悗缁墿灞曚娇鐢ㄨ澶囧崟鐙瘑鐮�, 绉婚櫎瀵嗙爜灏嗕笉杩涜鏍¢獙 password: admin123 #zlm鏈嶅姟鍣ㄩ厤缃� diff --git a/src/main/resources/wvp.sqlite b/src/main/resources/wvp.sqlite index 5def77b..3131c0f 100644 --- a/src/main/resources/wvp.sqlite +++ b/src/main/resources/wvp.sqlite Binary files differ diff --git a/web_src/src/components/DeviceList.vue b/web_src/src/components/DeviceList.vue index 38a063e..e05855f 100644 --- a/web_src/src/components/DeviceList.vue +++ b/web_src/src/components/DeviceList.vue @@ -14,22 +14,16 @@ <!-- <devicePlayer ref="devicePlayer"></devicePlayer> --> <!--璁惧鍒楄〃--> <el-table :data="deviceList" border style="width: 100%" :height="winHeight"> - <el-table-column prop="name" label="鍚嶇О" width="180" align="center"> + <el-table-column prop="name" label="鍚嶇О" align="center"> </el-table-column> - <el-table-column prop="deviceId" label="璁惧缂栧彿" width="240" align="center"> + <el-table-column prop="deviceId" label="璁惧缂栧彿" width="180" align="center"> </el-table-column> - <el-table-column label="鍦板潃" width="180" align="center"> - <template slot-scope="scope"> - <div slot="reference" class="name-wrapper"> - <el-tag size="medium">{{ scope.row.hostAddress }}</el-tag> - </div> - </template> - </el-table-column> + <el-table-column prop="manufacturer" label="鍘傚" align="center"> </el-table-column> - <el-table-column prop="model" label="鍥轰欢鐗堟湰" align="center"> + <el-table-column prop="model" label="鍥轰欢鐗堟湰" align="center" width="120"> </el-table-column> - <el-table-column label="娴佷紶杈撴ā寮�" align="center" width="160"> + <el-table-column label="娴佷紶杈撴ā寮�" align="center" width="120"> <template slot-scope="scope"> <el-select size="mini" @change="transportChange(scope.row)" v-model="scope.row.streamMode" placeholder="璇烽�夋嫨"> <el-option key="UDP" label="UDP" value="UDP"></el-option> @@ -40,7 +34,7 @@ </el-table-column> <el-table-column prop="channelCount" label="閫氶亾鏁�" align="center"> </el-table-column> - <el-table-column label="鐘舵��" width="80" align="center"> + <el-table-column label="鐘舵��" width="120" align="center"> <template slot-scope="scope"> <div slot="reference" class="name-wrapper"> <el-tag size="medium" v-if="scope.row.online == 1">鍦ㄧ嚎</el-tag> @@ -48,7 +42,17 @@ </div> </template> </el-table-column> - + <el-table-column prop="keepaliveTime" label="鏈�杩戝績璺�" align="center" width="140"> + </el-table-column> + <el-table-column prop="registerTime" label="鏈�杩戞敞鍐�" align="center" width="140"> + </el-table-column> + <el-table-column label="鍦板潃" width="180" align="center"> + <template slot-scope="scope"> + <div slot="reference" class="name-wrapper"> + <el-tag size="medium">{{ scope.row.hostAddress }}</el-tag> + </div> + </template> + </el-table-column> <el-table-column label="鎿嶄綔" width="360" align="center" fixed="right"> <template slot-scope="scope"> <el-button size="mini" :ref="scope.row.deviceId + 'refbtn' " v-if="scope.row.online!=0" icon="el-icon-refresh" @click="refDevice(scope.row)">鍒锋柊</el-button> -- Gitblit v1.8.0