lawrencehj
2021-02-05 a8603075d4bfb6ebc3248e6662eb700261c0fa56
去除冗余代码,修正编译报警项
42个文件已修改
331 ■■■■■ 已修改文件
src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/conf/VManagerConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/auth/DigestServerAuthenticationHelper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/bean/RecordInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/bean/WvpSipDate.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/event/alarm/AlarmEvent.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/OfflineEvent.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEvent.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorFactory.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/RequestMessage.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/NotifyRequestProcessor.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/utils/NumericUtil.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHTTPProxyController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookSubscribe.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceConfig.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceQuery.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/vmanager/playback/PlaybackController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/vmanager/service/IPlayService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/vmanager/service/impl/PlayServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/web/ApiControlController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/web/ApiController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/web/ApiDeviceController.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/web/AuthController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
@@ -3,7 +3,6 @@
import java.util.logging.LogManager;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
@@ -1,7 +1,7 @@
package com.genersoft.iot.vmp.common;
/**    
 * @Description:TODO(这里用一句话描述这个类的作用)
 * @Description: 定义常量
 * @author: swwheihei
 * @date:   2019年5月30日 下午3:04:04   
 *   
src/main/java/com/genersoft/iot/vmp/conf/VManagerConfig.java
@@ -4,7 +4,7 @@
import org.springframework.context.annotation.Configuration;
/**    
 * @Description:TODO(这里用一句话描述这个类的作用)
 * @Description: 获取数据库配置
 * @author: swwheihei
 * @date:   2020年5月6日 下午2:46:00     
 */
src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
@@ -149,8 +149,6 @@
                    }
                }
            }
        // } else if (status == Response.TRYING) {
            // trying不会回复
        } else if ((status >= 100) && (status < 200)) {
            // 增加其它无需回复的响应,如101、180等
        } else {
src/main/java/com/genersoft/iot/vmp/gb28181/auth/DigestServerAuthenticationHelper.java
@@ -91,8 +91,10 @@
        long time = date.getTime();
        Random rand = new Random();
        long pad = rand.nextLong();
        String nonceString = (new Long(time)).toString()
                + (new Long(pad)).toString();
        // String nonceString = (new Long(time)).toString()
        //         + (new Long(pad)).toString();
        String nonceString = Long.valueOf(time).toString()
                + Long.valueOf(pad).toString();
        byte mdbytes[] = messageDigest.digest(nonceString.getBytes());
        // Convert the mdbytes array into a hex string.
        return toHexString(mdbytes);
@@ -191,7 +193,7 @@
        // 客户端随机数,这是一个不透明的字符串值,由客户端提供,并且客户端和服务器都会使用,以避免用明文文本。
        // 这使得双方都可以查验对方的身份,并对消息的完整性提供一些保护
        String cNonce = authHeader.getCNonce();
        //String cNonce = authHeader.getCNonce();
        // nonce计数器,是一个16进制的数值,表示同一nonce下客户端发送出请求的数量
        int nc = authHeader.getNonceCount();
src/main/java/com/genersoft/iot/vmp/gb28181/bean/RecordInfo.java
@@ -1,7 +1,7 @@
package com.genersoft.iot.vmp.gb28181.bean;
import gov.nist.javax.sip.header.SIPDate;
//import gov.nist.javax.sip.header.SIPDate;
import java.util.List;
src/main/java/com/genersoft/iot/vmp/gb28181/bean/WvpSipDate.java
@@ -10,6 +10,11 @@
 */
public class WvpSipDate extends SIPDate {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    private Calendar javaCal;
    public WvpSipDate(long timeMillis) {
src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java
@@ -1,21 +1,13 @@
package com.genersoft.iot.vmp.gb28181.event;
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.media.zlm.ZLMHttpHookSubscribe;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.sip.ResponseEvent;
import javax.sip.message.Request;
import java.util.EventObject;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@Component
public class SipSubscribe {
    private final static Logger logger = LoggerFactory.getLogger(SipSubscribe.class);
    private Map<String, SipSubscribe.Event> errorSubscribes = new ConcurrentHashMap<>();
src/main/java/com/genersoft/iot/vmp/gb28181/event/alarm/AlarmEvent.java
@@ -10,6 +10,11 @@
 */
public class AlarmEvent extends ApplicationEvent {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    public AlarmEvent(Object source) {
        super(source);
    }
src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/OfflineEvent.java
@@ -3,18 +3,17 @@
import org.springframework.context.ApplicationEvent;
/**    
 * @Description:TODO(这里用一句话描述这个类的作用)
 * @Description: 离线事件类
 * @author: swwheihei
 * @date:   2020年5月6日 上午11:33:13     
 */
public class OfflineEvent extends ApplicationEvent {
    
    /**
     * @Title:  OutlineEvent
     * @Description:    TODO(这里用一句话描述这个方法的作用)
     * @param:  @param source
     * @throws
     */
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    public OfflineEvent(Object source) {
        super(source);
    }
src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEvent.java
@@ -3,18 +3,17 @@
import org.springframework.context.ApplicationEvent;
/**    
 * @Description:TODO(这里用一句话描述这个类的作用)
 * @Description: 在线事件类
 * @author: swwheihei
 * @date:   2020年5月6日 上午11:32:56     
 */
public class OnlineEvent extends ApplicationEvent {
    /**
     * @Title:  OnlineEvent
     * @Description:    TODO(这里用一句话描述这个方法的作用)
     * @param:  @param source
     * @throws
     */
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    public OnlineEvent(Object source) {
        super(source);
    }
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorFactory.java
@@ -8,10 +8,9 @@
import javax.sip.message.Response;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
// import org.slf4j.Logger;
// import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import com.genersoft.iot.vmp.conf.SipConfig;
@@ -40,14 +39,14 @@
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
/**    
 * @Description:TODO(这里用一句话描述这个类的作用)
 * @Description: SIP信令处理分配
 * @author: swwheihei
 * @date:   2020年5月3日 下午4:24:37     
 */
@Component
public class SIPProcessorFactory {
    
    private final static Logger logger = LoggerFactory.getLogger(SIPProcessorFactory.class);
    // private final static Logger logger = LoggerFactory.getLogger(SIPProcessorFactory.class);
    
    @Autowired
    private SipConfig sipConfig;
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java
@@ -1,6 +1,5 @@
package com.genersoft.iot.vmp.gb28181.transmit.callback;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -10,10 +9,11 @@
import org.springframework.web.context.request.async.DeferredResult;
/**    
 * @Description:TODO(这里用一句话描述这个类的作用)
 * @Description: 异步请求处理
 * @author: swwheihei
 * @date:   2020年5月8日 下午7:59:05     
 */
@SuppressWarnings(value = {"rawtypes", "unchecked"})
@Component
public class DeferredResultHolder {
    
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/RequestMessage.java
@@ -1,7 +1,7 @@
package com.genersoft.iot.vmp.gb28181.transmit.callback;
/**    
 * @Description:TODO(这里用一句话描述这个类的作用)
 * @Description: 请求信息定义
 * @author: swwheihei
 * @date:   2020年5月8日 下午1:09:18     
 */
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
@@ -1,6 +1,5 @@
package com.genersoft.iot.vmp.gb28181.transmit.cmd;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
import com.genersoft.iot.vmp.media.zlm.ZLMHttpHookSubscribe;
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java
@@ -18,7 +18,6 @@
import com.genersoft.iot.vmp.conf.SipConfig;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.Host;
/**
 * @Description:摄像头命令request创造器 TODO 冗余代码太多待优化
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -1,21 +1,18 @@
package com.genersoft.iot.vmp.gb28181.transmit.cmd.impl;
import java.text.ParseException;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.sip.*;
import javax.sip.address.SipURI;
import javax.sip.header.CallIdHeader;
import javax.sip.header.Header;
import javax.sip.header.ViaHeader;
import javax.sip.message.Request;
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.conf.MediaServerConfig;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
import com.genersoft.iot.vmp.media.zlm.ZLMHttpHookSubscribe;
import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/NotifyRequestProcessor.java
@@ -50,17 +50,11 @@
    private final static Logger logger = LoggerFactory.getLogger(MessageRequestProcessor.class);
    private SIPCommander cmder;
    private IVideoManagerStorager storager;
    private IRedisCatchStorage redisCatchStorage;
    private EventPublisher publisher;
    private RedisUtil redis;
    private DeferredResultHolder deferredResultHolder;
    private DeviceOffLineDetector offLineDetector;
@@ -68,8 +62,8 @@
    private static final String NOTIFY_ALARM = "Alarm";
    private static final String NOTIFY_MOBILE_POSITION = "MobilePosition";
    @Override
    public void process(RequestEvent evt) {
    @Override
    public void process(RequestEvent evt) {
        try {
            Element rootElement = getRootElement(evt);
            String cmd = XmlUtil.getText(rootElement, "CmdType");
@@ -87,18 +81,19 @@
                logger.info("接收到消息:" + cmd);
                response200Ok(evt);
            }
        } catch (DocumentException | SipException |InvalidArgumentException | ParseException e) {
        } catch (DocumentException | SipException | InvalidArgumentException | ParseException e) {
            e.printStackTrace();
        }
    }
    }
    /**
     * 处理MobilePosition移动位置Notify
     *
     * @param evt
     */
    private void processNotifyMobilePosition(RequestEvent evt) {
        try {
            //回复 200 OK
            // 回复 200 OK
            Element rootElement = getRootElement(evt);
            MobilePosition mobilePosition = new MobilePosition();
            Element deviceIdElement = rootElement.element("DeviceID");
@@ -112,8 +107,8 @@
            mobilePosition.setDeviceId(XmlUtil.getText(rootElement, "DeviceID"));
            mobilePosition.setTime(XmlUtil.getText(rootElement, "Time"));
            mobilePosition.setLongitude(Double.parseDouble(XmlUtil.getText(rootElement, "Longitude")));
            mobilePosition.setLatitude(Double.parseDouble(XmlUtil.getText(rootElement, "Latitude")));
            if (NumericUtil.isDouble(XmlUtil.getText(rootElement, "Speed"))) {
            mobilePosition.setLatitude(Double.parseDouble(XmlUtil.getText(rootElement, "Latitude")));
            if (NumericUtil.isDouble(XmlUtil.getText(rootElement, "Speed"))) {
                mobilePosition.setSpeed(Double.parseDouble(XmlUtil.getText(rootElement, "Speed")));
            } else {
                mobilePosition.setSpeed(0.0);
@@ -147,6 +142,7 @@
    /***
     * 处理alarm设备报警Notify
     *
     * @param evt
     */
    private void processNotifyAlarm(RequestEvent evt) {
@@ -180,7 +176,7 @@
                deviceAlarm.setLatitude(0.00);
            }
            if ( deviceAlarm.getAlarmMethod().equals("4")) {
            if (deviceAlarm.getAlarmMethod().equals("4")) {
                MobilePosition mobilePosition = new MobilePosition();
                mobilePosition.setDeviceId(deviceAlarm.getDeviceId());
                mobilePosition.setTime(deviceAlarm.getAlarmTime());
@@ -245,7 +241,7 @@
                    DeviceChannel deviceChannel = new DeviceChannel();
                    deviceChannel.setName(channelName);
                    deviceChannel.setChannelId(channelDeviceId);
                    // ONLINE OFFLINE  HIKVISION DS-7716N-E4 NVR的兼容性处理
                    // ONLINE OFFLINE HIKVISION DS-7716N-E4 NVR的兼容性处理
                    if (status.equals("ON") || status.equals("On") || status.equals("ONLINE")) {
                        deviceChannel.setStatus(1);
                    }
@@ -259,29 +255,34 @@
                    deviceChannel.setCivilCode(XmlUtil.getText(itemDevice, "CivilCode"));
                    deviceChannel.setBlock(XmlUtil.getText(itemDevice, "Block"));
                    deviceChannel.setAddress(XmlUtil.getText(itemDevice, "Address"));
                    if (XmlUtil.getText(itemDevice, "Parental") == null || XmlUtil.getText(itemDevice, "Parental") == "") {
                    if (XmlUtil.getText(itemDevice, "Parental") == null
                            || XmlUtil.getText(itemDevice, "Parental") == "") {
                        deviceChannel.setParental(0);
                    } else {
                        deviceChannel.setParental(Integer.parseInt(XmlUtil.getText(itemDevice, "Parental")));
                    }
                    }
                    deviceChannel.setParentId(XmlUtil.getText(itemDevice, "ParentID"));
                    if (XmlUtil.getText(itemDevice, "SafetyWay") == null || XmlUtil.getText(itemDevice, "SafetyWay")== "") {
                    if (XmlUtil.getText(itemDevice, "SafetyWay") == null
                            || XmlUtil.getText(itemDevice, "SafetyWay") == "") {
                        deviceChannel.setSafetyWay(0);
                    } else {
                        deviceChannel.setSafetyWay(Integer.parseInt(XmlUtil.getText(itemDevice, "SafetyWay")));
                    }
                    if (XmlUtil.getText(itemDevice, "RegisterWay") == null || XmlUtil.getText(itemDevice, "RegisterWay") =="") {
                    if (XmlUtil.getText(itemDevice, "RegisterWay") == null
                            || XmlUtil.getText(itemDevice, "RegisterWay") == "") {
                        deviceChannel.setRegisterWay(1);
                    } else {
                        deviceChannel.setRegisterWay(Integer.parseInt(XmlUtil.getText(itemDevice, "RegisterWay")));
                    }
                    deviceChannel.setCertNum(XmlUtil.getText(itemDevice, "CertNum"));
                    if (XmlUtil.getText(itemDevice, "Certifiable") == null || XmlUtil.getText(itemDevice, "Certifiable") == "") {
                    if (XmlUtil.getText(itemDevice, "Certifiable") == null
                            || XmlUtil.getText(itemDevice, "Certifiable") == "") {
                        deviceChannel.setCertifiable(0);
                    } else {
                        deviceChannel.setCertifiable(Integer.parseInt(XmlUtil.getText(itemDevice, "Certifiable")));
                    }
                    if (XmlUtil.getText(itemDevice, "ErrCode") == null || XmlUtil.getText(itemDevice, "ErrCode") == "") {
                    if (XmlUtil.getText(itemDevice, "ErrCode") == null
                            || XmlUtil.getText(itemDevice, "ErrCode") == "") {
                        deviceChannel.setErrCode(0);
                    } else {
                        deviceChannel.setErrCode(Integer.parseInt(XmlUtil.getText(itemDevice, "ErrCode")));
@@ -289,7 +290,7 @@
                    deviceChannel.setEndTime(XmlUtil.getText(itemDevice, "EndTime"));
                    deviceChannel.setSecrecy(XmlUtil.getText(itemDevice, "Secrecy"));
                    deviceChannel.setIpAddress(XmlUtil.getText(itemDevice, "IPAddress"));
                    if (XmlUtil.getText(itemDevice, "Port") == null || XmlUtil.getText(itemDevice, "Port") =="") {
                    if (XmlUtil.getText(itemDevice, "Port") == null || XmlUtil.getText(itemDevice, "Port") == "") {
                        deviceChannel.setPort(0);
                    } else {
                        deviceChannel.setPort(Integer.parseInt(XmlUtil.getText(itemDevice, "Port")));
@@ -305,7 +306,8 @@
                    } else {
                        deviceChannel.setLatitude(0.00);
                    }
                    if (XmlUtil.getText(itemDevice, "PTZType") == null || XmlUtil.getText(itemDevice, "PTZType") == "") {
                    if (XmlUtil.getText(itemDevice, "PTZType") == null
                            || XmlUtil.getText(itemDevice, "PTZType") == "") {
                        deviceChannel.setPTZType(0);
                    } else {
                        deviceChannel.setPTZType(Integer.parseInt(XmlUtil.getText(itemDevice, "PTZType")));
@@ -330,9 +332,9 @@
        }
    }
    /***
    /***
     * 回复200 OK
     *
     * @param evt
     * @throws SipException
     * @throws InvalidArgumentException
@@ -343,7 +345,7 @@
        getServerTransaction(evt).sendResponse(response);
    }
    private Element getRootElement(RequestEvent evt) throws DocumentException {
    private Element getRootElement(RequestEvent evt) throws DocumentException {
        Request request = evt.getRequest();
        SAXReader reader = new SAXReader();
        reader.setEncoding("gbk");
@@ -352,7 +354,6 @@
    }
    public void setCmder(SIPCommander cmder) {
        this.cmder = cmder;
    }
    public void setStorager(IVideoManagerStorager storager) {
@@ -364,11 +365,9 @@
    }
    public void setRedis(RedisUtil redis) {
        this.redis = redis;
    }
    public void setDeferredResultHolder(DeferredResultHolder deferredResultHolder) {
        this.deferredResultHolder = deferredResultHolder;
    }
    public void setOffLineDetector(DeviceOffLineDetector offLineDetector) {
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
@@ -145,7 +145,7 @@
            // 下发catelog查询目录
            if (registerFlag == 1 && device != null) {
                logger.info("注册成功! deviceId:" + device.getDeviceId());
                boolean exists = storager.exists(device.getDeviceId());
                // boolean exists = storager.exists(device.getDeviceId());
                device.setRegisterTimeMillis(System.currentTimeMillis());
                storager.updateDevice(device);
                publisher.onlineEventPublish(device.getDeviceId(), VideoManagerConstants.EVENT_ONLINE_REGISTER);
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java
@@ -12,14 +12,12 @@
import javax.sip.message.Request;
import javax.sip.message.Response;
import gov.nist.javax.sip.header.CSeq;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
// import org.slf4j.Logger;
// import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import com.genersoft.iot.vmp.conf.SipConfig;
import com.genersoft.iot.vmp.gb28181.SipLayer;
import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorFactory;
import com.genersoft.iot.vmp.gb28181.transmit.response.ISIPResponseProcessor;
@@ -31,7 +29,7 @@
@Component
public class InviteResponseProcessor implements ISIPResponseProcessor {
    private final static Logger logger = LoggerFactory.getLogger(InviteResponseProcessor.class);
    // private final static Logger logger = LoggerFactory.getLogger(InviteResponseProcessor.class);
    /**
     * 处理invite响应
src/main/java/com/genersoft/iot/vmp/gb28181/utils/NumericUtil.java
@@ -15,10 +15,10 @@
    public static boolean isDouble(String str) {
        try { 
            Double num2 = Double.valueOf(str); 
            System.out.println(num2 + " Is an Integer!");
            System.out.println(num2 + " is a valid numeric string!");
            return true;
        } catch (Exception e) { 
            System.out.println(str + " Is not an Integer!");
            System.out.println(str + " is an invalid numeric string!");
            return false;
        }
    }
@@ -31,10 +31,10 @@
    public static boolean isInteger(String str) {
        try { 
            int num2 = Integer.valueOf(str); 
            System.out.println(num2 + " Is Number!");
            System.out.println(num2 + " is an integer!");
            return true;
        } catch (Exception e) { 
            System.out.println(str + " Is not Number!");
            System.out.println(str + " is not an integer!");
            return false;
        }
    }
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHTTPProxyController.java
@@ -1,34 +1,28 @@
package com.genersoft.iot.vmp.media.zlm;
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.conf.MediaServerConfig;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
// import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
// import org.slf4j.Logger;
// import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpRequest;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Enumeration;
@RestController
@RequestMapping("/zlm")
public class ZLMHTTPProxyController {
    private final static Logger logger = LoggerFactory.getLogger(ZLMHTTPProxyController.class);
    // private final static Logger logger = LoggerFactory.getLogger(ZLMHTTPProxyController.class);
    @Autowired
    private IVideoManagerStorager storager;
    // @Autowired
    // private IVideoManagerStorager storager;
    @Autowired
    private IRedisCatchStorage redisCatchStorage;
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -1,19 +1,13 @@
package com.genersoft.iot.vmp.media.zlm;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.conf.MediaServerConfig;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
import com.genersoft.iot.vmp.utils.IpUtil;
import com.genersoft.iot.vmp.vmanager.service.IPlayService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -57,8 +51,8 @@
    @Autowired
    private IRedisCatchStorage redisCatchStorage;
    @Autowired
    private ZLMRESTfulUtils zlmresTfulUtils;
    // @Autowired
    // private ZLMRESTfulUtils zlmresTfulUtils;
    @Autowired
    private ZLMHttpHookSubscribe subscribe;
@@ -86,9 +80,6 @@
        if (logger.isDebugEnabled()) {
            logger.debug("ZLM HOOK on_flow_report API调用,参数:" + json.toString());
        }
        // TODO Auto-generated method stub
        JSONObject ret = new JSONObject();
        ret.put("code", 0);
        ret.put("msg", "success");
@@ -106,8 +97,6 @@
        if (logger.isDebugEnabled()) {
            logger.debug("ZLM HOOK on_http_access API 调用,参数:" + json.toString());
        }
        // TODO Auto-generated method stub
        JSONObject ret = new JSONObject();
        ret.put("code", 0);
        ret.put("err", "");
@@ -127,8 +116,6 @@
        if (logger.isDebugEnabled()) {
            logger.debug("ZLM HOOK on_play API调用,参数:" + json.toString());
        }
        // TODO Auto-generated method stub
        JSONObject ret = new JSONObject();
        ret.put("code", 0);
        ret.put("msg", "success");
@@ -146,15 +133,12 @@
        if (logger.isDebugEnabled()) {
            logger.debug("ZLM HOOK on_publish API调用,参数:" + json.toString());
        }
        String app = json.getString("app");
        String streamId = json.getString("id");
        // String app = json.getString("app");
        // String streamId = json.getString("id");
        ZLMHttpHookSubscribe.Event subscribe = this.subscribe.getSubscribe(ZLMHttpHookSubscribe.HookType.on_publish, json);
        if (subscribe != null) subscribe.response(json);
        // TODO Auto-generated method stub
        JSONObject ret = new JSONObject();
        ret.put("code", 0);
        ret.put("msg", "success");
@@ -175,8 +159,6 @@
        if (logger.isDebugEnabled()) {
            logger.debug("ZLM HOOK on_record_mp4 API调用,参数:" + json.toString());
        }
        // TODO Auto-generated method stub
        JSONObject ret = new JSONObject();
        ret.put("code", 0);
        ret.put("msg", "success");
@@ -194,8 +176,6 @@
        if (logger.isDebugEnabled()) {
            logger.debug("ZLM HOOK on_rtsp_realm API调用,参数:" + json.toString());
        }
        // TODO Auto-generated method stub
        JSONObject ret = new JSONObject();
        ret.put("code", 0);
        ret.put("realm", "");
@@ -214,8 +194,6 @@
        if (logger.isDebugEnabled()) {
            logger.debug("ZLM HOOK on_rtsp_auth API调用,参数:" + json.toString());
        }
        // TODO Auto-generated method stub
        JSONObject ret = new JSONObject();
        ret.put("code", 0);
        ret.put("encrypted", false);
@@ -234,8 +212,6 @@
        if (logger.isDebugEnabled()) {
            logger.debug("ZLM HOOK on_shell_login API调用,参数:" + json.toString());
        }
        // TODO Auto-generated method stub
        JSONObject ret = new JSONObject();
        ret.put("code", 0);
        ret.put("msg", "success");
@@ -267,8 +243,6 @@
                redisCatchStorage.stopPlayback(streamInfo);
            }
        }
        JSONObject ret = new JSONObject();
        ret.put("code", 0);
        ret.put("msg", "success");
@@ -316,8 +290,6 @@
        if (logger.isDebugEnabled()) {
            logger.debug("ZLM HOOK on_stream_not_found API调用,参数:" + json.toString());
        }
        // TODO Auto-generated method stub
        if (autoApplyPlay) {
            String app = json.getString("app");
            String streamId = json.getString("stream");
@@ -367,8 +339,6 @@
        mediaServerConfig.setWanIp(StringUtils.isEmpty(mediaWanIp)? mediaIp: mediaWanIp);
        mediaServerConfig.setLocalIP(mediaIp);
        redisCatchStorage.updateMediaInfo(mediaServerConfig);
        // TODO Auto-generated method stub
        JSONObject ret = new JSONObject();
        ret.put("code", 0);
        ret.put("msg", "success");
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookSubscribe.java
@@ -1,24 +1,8 @@
package com.genersoft.iot.vmp.media.zlm;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.conf.MediaServerConfig;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.util.ConcurrentReferenceHashMap;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -30,8 +14,6 @@
 */
@Component
public class ZLMHttpHookSubscribe {
    private final static Logger logger = LoggerFactory.getLogger(ZLMHttpHookSubscribe.class);
    public enum HookType{
        on_flow_report,
@@ -72,8 +54,6 @@
        for (JSONObject key : eventMap.keySet()) {
            Boolean result = null;
            for (String s : key.keySet()) {
                String string = hookResponse.getString(s);
                String string1 = key.getString(s);
                if (result == null) {
                    result = key.getString(s).equals(hookResponse.getString(s));
                }else {
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java
@@ -11,7 +11,6 @@
import java.io.IOException;
import java.net.ConnectException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@Component
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
@@ -5,8 +5,7 @@
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.conf.MediaServerConfig;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
import okhttp3.*;
//import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,9 +15,6 @@
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
@@ -28,8 +24,8 @@
    private final static Logger logger = LoggerFactory.getLogger(ZLMRunner.class);
    @Autowired
    private IVideoManagerStorager storager;
    // @Autowired
    // private IVideoManagerStorager storager;
    @Autowired
    private IRedisCatchStorage redisCatchStorage;
src/main/java/com/genersoft/iot/vmp/storager/IVideoManagerStorager.java
@@ -12,6 +12,7 @@
 * @author: swwheihei
 * @date:   2020年5月6日 下午2:14:31     
 */
@SuppressWarnings("rawtypes")
public interface IVideoManagerStorager {
    /**   
src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
@@ -11,7 +11,6 @@
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -144,9 +143,9 @@
    @Override
    public StreamInfo queryPlaybackByDevice(String deviceId, String code) {
        String format = String.format("%S_*_%s_%s", VideoManagerConstants.PLAY_BLACK_PREFIX,
                deviceId,
                code);
        // String format = String.format("%S_*_%s_%s", VideoManagerConstants.PLAY_BLACK_PREFIX,
        //         deviceId,
        //         code);
        List<Object> playLeys = redis.scan(String.format("%S_*_%s_%s", VideoManagerConstants.PLAY_BLACK_PREFIX,
                deviceId,
                code));
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
@@ -9,19 +9,18 @@
import com.genersoft.iot.vmp.storager.dao.DeviceMobilePositionMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
import org.springframework.util.StringUtils;
/**    
 * @Description:视频设备数据存储-jdbc实现
 * @author: swwheihei
 * @date:   2020年5月6日 下午2:31:42
 */
@SuppressWarnings("rawtypes")
@Component
public class VideoManagerStoragerImpl implements IVideoManagerStorager {
@@ -183,11 +182,11 @@
    @Override
    public synchronized boolean online(String deviceId) {
        Device device = deviceMapper.getDeviceByDeviceId(deviceId);
        device.setOnline(1);
        System.out.println("更新设备在线");
        if (device == null) {
            return false;
        }
        device.setOnline(1);
        System.out.println("更新设备在线");
        return deviceMapper.update(device) > 0;
    }
@@ -211,7 +210,7 @@
     */
    @Override
    public void cleanChannelsForDevice(String deviceId) {
        int result = deviceChannelMapper.cleanChannelsByDeviceId(deviceId);
        deviceChannelMapper.cleanChannelsByDeviceId(deviceId);
    }
    /**
src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java
@@ -4,8 +4,6 @@
import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.*;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
@@ -16,6 +14,7 @@
 * @date:   2020年5月6日 下午8:27:29     
 */
@Component
@SuppressWarnings(value = {"rawtypes", "unchecked"})
public class RedisUtil {
    @Autowired
src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceConfig.java
@@ -20,7 +20,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.async.DeferredResult;
src/main/java/com/genersoft/iot/vmp/vmanager/device/DeviceQuery.java
@@ -17,11 +17,11 @@
import com.genersoft.iot.vmp.gb28181.event.DeviceOffLineDetector;
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
import javax.sip.message.Response;
@SuppressWarnings("rawtypes")
@CrossOrigin
@RestController
@RequestMapping("/api")
src/main/java/com/genersoft/iot/vmp/vmanager/play/PlayController.java
@@ -1,20 +1,16 @@
package com.genersoft.iot.vmp.vmanager.play;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.conf.MediaServerConfig;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.vmanager.service.IPlayService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
@@ -31,7 +27,6 @@
import org.springframework.web.context.request.async.DeferredResult;
import javax.sip.message.Response;
import java.text.DecimalFormat;
import java.util.UUID;
@CrossOrigin
@@ -145,7 +140,7 @@
                storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId());
                RequestMessage msg = new RequestMessage();
                msg.setId(DeferredResultHolder.CALLBACK_CMD_STOP + uuid);
                Response response = event.getResponse();
                //Response response = event.getResponse();
                msg.setData(String.format("success"));
                resultHolder.invokeResult(msg);
            }
src/main/java/com/genersoft/iot/vmp/vmanager/playback/PlaybackController.java
@@ -1,24 +1,19 @@
package com.genersoft.iot.vmp.vmanager.playback;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
//import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.vmanager.service.IPlayService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -47,8 +42,8 @@
    @Autowired
    private IRedisCatchStorage redisCatchStorage;
    @Autowired
    private ZLMRESTfulUtils zlmresTfulUtils;
    // @Autowired
    // private ZLMRESTfulUtils zlmresTfulUtils;
    @Autowired
    private IPlayService playService;
src/main/java/com/genersoft/iot/vmp/vmanager/service/IPlayService.java
@@ -1,7 +1,6 @@
package com.genersoft.iot.vmp.vmanager.service;
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.common.StreamInfo;
/**
 * 点播处理
src/main/java/com/genersoft/iot/vmp/vmanager/service/impl/PlayServiceImpl.java
@@ -9,14 +9,11 @@
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
import com.genersoft.iot.vmp.vmanager.play.PlayController;
import com.genersoft.iot.vmp.vmanager.service.IPlayService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
@Service
public class PlayServiceImpl implements IPlayService {
src/main/java/com/genersoft/iot/vmp/vmanager/user/UserController.java
@@ -1,8 +1,5 @@
package com.genersoft.iot.vmp.vmanager.user;
import com.genersoft.iot.vmp.vmanager.play.PlayController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.CrossOrigin;
@@ -13,9 +10,6 @@
@RestController
@RequestMapping("/api")
public class UserController {
    private final static Logger logger = LoggerFactory.getLogger(UserController.class);
    @Value("${auth.username}")
    private String usernameConfig;
src/main/java/com/genersoft/iot/vmp/web/ApiControlController.java
@@ -4,12 +4,9 @@
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
import com.genersoft.iot.vmp.vmanager.ptz.PtzController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
/**
src/main/java/com/genersoft/iot/vmp/web/ApiController.java
@@ -5,11 +5,9 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
/**
src/main/java/com/genersoft/iot/vmp/web/ApiDeviceController.java
@@ -4,9 +4,9 @@
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.event.DeviceOffLineDetector;
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
// import com.genersoft.iot.vmp.gb28181.event.DeviceOffLineDetector;
// import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
// import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
import com.github.pagehelper.PageInfo;
import org.slf4j.Logger;
@@ -19,6 +19,7 @@
/**
 * 兼容LiveGBS的API:设备信息
 */
@SuppressWarnings("unchecked")
@CrossOrigin
@RestController
@RequestMapping(value = "/api/v1/device")
@@ -29,14 +30,14 @@
    @Autowired
    private IVideoManagerStorager storager;
    @Autowired
    private SIPCommander cmder;
    // @Autowired
    // private SIPCommander cmder;
    @Autowired
    private DeferredResultHolder resultHolder;
    // @Autowired
    // private DeferredResultHolder resultHolder;
    @Autowired
    private DeviceOffLineDetector offLineDetector;
    // @Autowired
    // private DeviceOffLineDetector offLineDetector;
    /**
     * 分页获取设备列表 TODO 现在直接返回,尚未实现分页
src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java
@@ -1,21 +1,18 @@
package com.genersoft.iot.vmp.web;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
// import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
import com.genersoft.iot.vmp.vmanager.play.PlayController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.async.DeferredResult;
@@ -23,6 +20,7 @@
/**
 * 兼容LiveGBS的API:实时直播
 */
@SuppressWarnings(value = {"rawtypes", "unchecked"})
@CrossOrigin
@RestController
@RequestMapping(value = "/api/v1/stream")
@@ -40,8 +38,8 @@
    private IRedisCatchStorage redisCatchStorage;
    @Autowired
    private ZLMRESTfulUtils zlmresTfulUtils;
    // @Autowired
    // private ZLMRESTfulUtils zlmresTfulUtils;
    @Autowired
src/main/java/com/genersoft/iot/vmp/web/AuthController.java
@@ -1,9 +1,6 @@
package com.genersoft.iot.vmp.web;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;