pansen
2019-04-04 04c1775a64a1d358e3506a0e2735f868d73caafd
QiaoJiaSystem/DataManagerServer/http_configserver.cpp
@@ -34,7 +34,7 @@
using namespace std;
devHttpServer_c::devHttpServer_c()
    : _HttpSrvRetRecieve("0.0.0.0", 8083, 1), erlangDbTool(nullptr), m_SqliteFaceEncap("LocalDataDB"){
    : _HttpSrvRetRecieve("0.0.0.0", 8083, 1), erlangDbTool(nullptr), m_SqliteFaceEncap("LocalDataDB") {
    init();
}
@@ -1119,6 +1119,17 @@
    if (DEV_NO_TYPE == dev_type) {//add new camera
        db_c.updateConfigTableByDevType(DEV_CAMERA);
        {
            //#todo
//            std::string topic = "VideoToImageMulth";
//            std::string topic1 = "VideoAnalysFromHC";
//            Json::Value json_cfg;
//            json_cfg["cam_edit"] = content;
//            std::string msg = json_cfg.toStyledString();
//            DBG("msg:" << msg);
//            nsqMsgProducer->Publish(topic, (void *) (&msg));
//            nsqMsgProducer->Publish(topic1, (void *) (&msg));
        }
        runAllApp();
    }
        //edit camera's sdks
@@ -1126,9 +1137,20 @@
             (rec_sdk_old.str_det_thr != rec_sdk.str_det_thr) ||
             (rec_sdk_old.str_cmp_thr != rec_sdk.str_cmp_thr)) */
    {
        killVideoAnalysFromHCApp();
        sleep(1);
        runAllApp();
        //#todo sendMessage To haikang&VideoToImage
        {
            std::string topic = "VideoToImageMulth";
            std::string topic1 = "VideoAnalysFromHC";
            Json::Value json_cfg;
            json_cfg["cam_edit"] = content;
            std::string msg = json_cfg.toStyledString();
            DBG("msg:" << msg);
            nsqMsgProducer->Publish(topic, (void *) (&msg));
            nsqMsgProducer->Publish(topic1, (void *) (&msg));
        }
//        killVideoAnalysFromHCApp();
//        sleep(1);
//        runAllApp();
    }
    Json::Value value_out;
@@ -1272,6 +1294,7 @@
            if (m_rtmp[ip].userCounter == 0) {
                m_rtmp[ip].appPC->stop();
                m_rtmp[ip].appPC->wait();
                delete m_rtmp[ip].appPC;
                m_rtmp.erase(ip);
            }
        }
@@ -1296,28 +1319,41 @@
    }
    Json::Value value;
    if (value_reader.isMember("id")) {
        if (value_reader["id"].isNull()) return "{\"ret_status\": \"id内容有误,请检查!\"}";
        value["connect_status"] = "True";
        std::string rtmp_url = appConfig.getStringProperty("srsAddr");
        rtmp_url.append("cam").append(value_reader["id"].asCString());
        value["video_url"] = rtmp_url;
        out = value.toStyledString();
    } else {
        //TODO
        //调用rtsp流rtsp://admin:a1234567@192.168.1.215:554/h264/ch1/main/av_stream
        if (value_reader["id"].isNull()) {
            //本地视频源 第一次测试连接
            //TODO
            //调用rtsp流rtsp://admin:a1234567@192.168.1.215:554/h264/ch1/main/av_stream
//    std::string rtsp_url = "rtsp://" + username + ":" + passwd + "@" + ip + ":"  + std::to_string(port) + "/h264/ch1/main/av_stream";
        bool ret = cam_connect_video_start(value_reader["str_ip"].asString(), value_reader["n_port"].asInt(), \
            bool ret = cam_connect_video_start(value_reader["str_ip"].asString(), value_reader["n_port"].asInt(), \
                            value_reader["str_username"].asString(), value_reader["str_password"].asString(), \
                            value_reader["str_brand"].asString());
        if (!ret) {
            if (!ret) {
                return "{\"ret_status\": \"内容有误,请检查!\"}";
            }
            std::string rtmp_url = m_rtmp[value_reader["str_ip"].asCString()].appPC->getRtmp();
            value["connect_status"] = "True";
            value["video_url"] = rtmp_url;
            out = value.toStyledString();
        } else if (!value_reader["type"].isNull()) {
            value["connect_status"] = "True";
            std::string rtmp_url = appConfig.getStringProperty("srsAddr");
            rtmp_url.append("cam").append(value_reader["id"].asCString());
            value["video_url"] = rtmp_url;
            out = value.toStyledString();
            {
                std::string topic = "VideoToImageMulth";
                Json::Value json_cfg;
                json_cfg["cam_startPublish"] = content;
                std::string msg = json_cfg.toStyledString();
                DBG("msg:" << msg);
                nsqMsgProducer->Publish(topic, (void *) (&msg));
            }
        } else {
            return "{\"ret_status\": \"内容有误,请检查!\"}";
        }
        std::string rtmp_url = m_rtmp[value_reader["str_ip"].asCString()].appPC->getRtmp();
        value["connect_status"] = "True";
        value["video_url"] = rtmp_url;
        out = value.toStyledString();
    } else {
        return "{\"ret_status\": \"内容有误,请检查!\"}";
    }
    return out;
@@ -1335,19 +1371,32 @@
    if (!reader.parse(content, value_reader)) {
        return "{\"ret_status\": \"传输错误,请检查!\"}";
    }
    //TODO
    //调用rtsp流rtsp://admin:a1234567@192.168.1.215:554/h264/ch1/main/av_stream
//    std::string rtsp_url = "rtsp://" + username + ":" + passwd + "@" + ip + ":"  + std::to_string(port) + "/h264/ch1/main/av_stream";
    DBG("cam_connect_video_stop begin");
    bool ret = cam_connect_video_stop(value_reader["str_ip"].asString());
    if (!ret) {
        return "{\"ret_status\": \"传输错误,请检查!\"}";
    }
    DBG("cam_connect_video_stop end");
    Json::Value value;
    value["ret_status"] = "ok_ack";
    if (value_reader.isMember("id")) {
        value["ret_status"] = "ok_ack";
        cam_connect_video_stop(value_reader["str_ip"].asString());
        {
            std::string topic = "VideoToImageMulth";
            Json::Value json_cfg;
            json_cfg["cam_stopPublish"] = content;
            std::string msg = json_cfg.toStyledString();
            DBG("msg:" << msg);
            nsqMsgProducer->Publish(topic, (void *) (&msg));
        }
    } else {
        //TODO
        //调用rtsp流rtsp://admin:a1234567@192.168.1.215:554/h264/ch1/main/av_stream
//    std::string rtsp_url = "rtsp://" + username + ":" + passwd + "@" + ip + ":"  + std::to_string(port) + "/h264/ch1/main/av_stream";
        DBG("cam_connect_video_stop begin");
        bool ret = cam_connect_video_stop(value_reader["str_ip"].asString());
        if (!ret) {
            return "{\"ret_status\": \"传输错误,请检查!\"}";
        }
        DBG("cam_connect_video_stop end");
        value["ret_status"] = "ok_ack";
    }
    std::string out = value.toStyledString();
@@ -1408,12 +1457,22 @@
        QString cam_id = QString::fromStdString(value_reader["str_cam_dev_id"].asString());
        int ret = db_c.deleteCamDevandSdkByCamID(cam_id);
        if (ret) {
            killVideoAnalysFromHCApp();
//            killVideoAnalysFromHCApp();
            int dev_record = db_c.searchCamDevNumber();
            if (dev_record == 0) {
                db_c.updateConfigTableByDevType(DEV_NO_TYPE);
            } else {
                runAllApp();
//                runAllApp();
            }
            {
                std::string topic = "VideoToImageMulth";
                std::string topic1 = "VideoAnalysFromHC";
                Json::Value json_cfg;
                json_cfg["cam_del"] = content;
                std::string msg = json_cfg.toStyledString();
                DBG("msg:" << msg);
                nsqMsgProducer->Publish(topic, (void *) (&msg));
                nsqMsgProducer->Publish(topic1, (void *) (&msg));
            }
            return "{\"ret_status\": \"ok_ack\"}";
        } else {
@@ -1534,10 +1593,12 @@
    }
    if (ret) {
        //todo
        //todo VideoToImageMulth
        {
            std::string topic = "cut_dura_edit";
            std::string msg = content;
            std::string topic = "VideoToImageMulth";
            Json::Value json_cfg;
            json_cfg["cut_dura_edit"] = content;
            std::string msg = json_cfg.toStyledString();
            DBG("msg:" << msg);
            nsqMsgProducer->Publish(topic, (void *) (&msg));
        }
@@ -3275,11 +3336,19 @@
        if (db_c.updateSdkRule(rule)) {
//            if(rule.nIsRun==1)
            killVideoAnalysFromHCApp();
            sleep(1);
            runAllApp();
//            killVideoAnalysFromHCApp();
//            sleep(1);
//            runAllApp();
            {
                std::string topic = "VideoAnalysFromHC";
                Json::Value json_cfg;
                json_cfg["editSdkRule"] = content;
                std::string msg = json_cfg.toStyledString();
                DBG("msg:" << msg);
                usleep(1000);
                nsqMsgProducer->Publish(topic, (void *) (&msg));
            }
            return "{\"ret_status\": \"ok_ack\"}";
        } else {
            return "{\"ret_status\":\"内容有误,请检查!\"}";