From e634f49a3b619017a3d040d1bdf68aebad07ae4f Mon Sep 17 00:00:00 2001
From: pansen <pansen626@sina.com>
Date: 星期二, 05 三月 2019 09:26:54 +0800
Subject: [PATCH] Merge branch 'yw.1.2.fixbug' of ssh://192.168.1.226:29418/development/c++ into yw.1.2

---
 QiaoJiaSystem/DataManagerServer/vss/controller/VssLocalSettingTblController.h |    7 
 QiaoJiaSystem/DataManagerServer/vss/dao/VssLocalSettingTblSqliteDao.h         |   67 ---
 QiaoJiaSystem/DataManagerServer/vss/model/CamDevBuilder.h                     |   76 ++++
 QiaoJiaSystem/DataManagerServer/vss/model/CamDev.h                            |   62 +++
 QiaoJiaSystem/DataManagerServer/vss/test/CamDevSqliteDaoTest.h                |   74 ++++
 QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.h                                |    1 
 QiaoJiaSystem/DataManagerServer/vss/dao/BaseSqliteDao.h                       |   28 +
 QiaoJiaSystem/DataManagerServer/vss/controller/CamDevController.h             |  412 ++++++++++++++++++++++++
 QiaoJiaSystem/build/DataWebServer                                             |    0 
 QiaoJiaSystem/DataManagerServer/http_configserver.cpp                         |   11 
 QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp                              |   37 ++
 QiaoJiaSystem/build/config.db                                                 |    0 
 QiaoJiaSystem/DataManagerServer/vss/dao/CamDevSqliteDao.h                     |  212 ++++++++++++
 13 files changed, 916 insertions(+), 71 deletions(-)

diff --git a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
index d07d06a..f93e4e0 100644
--- a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
+++ b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
@@ -23,13 +23,12 @@
 #include <dirent.h>
 #include "basic/pipe_element/ffmpeg/basic_struct_for_video_image.h"
 
-#ifdef  MYSQLRET
 #include "vss/controller/VssDevTblController.h"
 #include "vss/controller/VssChannelTblController.h"
 #include "vss/controller/VssDomainUnitTblController.h"
 #include "vss/controller/VssLocalSettingTblController.h"
 #include "vss/controller/VssUpperSvrTblController.h"
-#endif
+#include "vss/controller/CamDevController.h"
 
 using namespace std;
 
@@ -250,15 +249,17 @@
                                          std::placeholders::_1, std::placeholders::_2,
                                          std::placeholders::_3, std::placeholders::_4));
 
-#ifdef  MYSQLRET
+
     BaseDao::initConnection();
-    VssLocalSettingTblSqliteDao::instance()->setLDBTool(&db_c);
+    BaseSqliteDao::setLDBTool(&db_c);
     VssDevTblController::instance()->registerHttpServices(_HttpSrvRetRecieve);
     VssChannelTblController::instance()->registerHttpServices(_HttpSrvRetRecieve);
     VssDomainUnitTblController::instance()->registerHttpServices(_HttpSrvRetRecieve);
     VssLocalSettingTblController::instance()->registerHttpServices(_HttpSrvRetRecieve);
+    CamDevController::instance()->registerHttpServices(_HttpSrvRetRecieve);
     VssUpperSvrTblController::instance()->registerHttpServices(_HttpSrvRetRecieve);
-#endif
+
+
     _HttpSrvRetRecieve.start();
     _HttpSrvRetRecieve.waitForShutDown();
 }
diff --git a/QiaoJiaSystem/DataManagerServer/vss/controller/CamDevController.h b/QiaoJiaSystem/DataManagerServer/vss/controller/CamDevController.h
new file mode 100755
index 0000000..a8675c4
--- /dev/null
+++ b/QiaoJiaSystem/DataManagerServer/vss/controller/CamDevController.h
@@ -0,0 +1,412 @@
+#ifndef CAMDEV_CONTROLLER_H
+#define CAMDEV_CONTROLLER_H
+
+#include <string>
+#include <DataManagerServer/http_configserver.h>
+#include "vss/dao/CamDevSqliteDao.h"
+#include "vss/model/CamDevBuilder.h"
+#include "vss/model/CamDev.h"
+#include "VssBaseController.h"
+#include <mysql++.h>
+
+using namespace std;
+
+/**
+ * 鎽勫儚澶磋澶�
+ */
+class CamDevController : public VssBaseController {
+private:
+    /** 鎽勫儚澶磋澶囨瀯閫犲嚱鏁� */
+    CamDevController() {}
+public:
+    /** 鎽勫儚澶磋澶囧崟渚嬫ā寮� */
+    static CamDevController* instance() {
+        static CamDevController instance;
+        return &instance;
+    }
+public:
+    /** 娉ㄥ唽{label}http鏈嶅姟 */
+    void registerHttpServices(HttpSrvRetRecieve& _HttpSrvRetRecieve) {
+
+        _HttpSrvRetRecieve.setInfo("^/addCamDev$", "POST",
+                                   std::bind(&CamDevController::addCamDev, this,
+                                             std::placeholders::_1, std::placeholders::_2,
+                                             std::placeholders::_3, std::placeholders::_4));
+
+        _HttpSrvRetRecieve.setInfo("^/delCamDev$", "POST",
+                                   std::bind(&CamDevController::delCamDev, this,
+                                             std::placeholders::_1, std::placeholders::_2,
+                                             std::placeholders::_3, std::placeholders::_4));
+
+        _HttpSrvRetRecieve.setInfo("^/updateCamDev$", "POST",
+                                   std::bind(&CamDevController::updateCamDev, this,
+                                             std::placeholders::_1, std::placeholders::_2,
+                                             std::placeholders::_3, std::placeholders::_4));
+
+        _HttpSrvRetRecieve.setInfo("^/findCamDev$", "POST",
+                                   std::bind(&CamDevController::findCamDev, this,
+                                             std::placeholders::_1, std::placeholders::_2,
+                                             std::placeholders::_3, std::placeholders::_4));
+
+        _HttpSrvRetRecieve.setInfo("^/findCamDevList$", "POST",
+                                   std::bind(&CamDevController::findCamDevList, this,
+                                             std::placeholders::_1, std::placeholders::_2,
+                                             std::placeholders::_3, std::placeholders::_4));
+
+    }
+public:
+    /** 娣诲姞鎽勫儚澶磋澶� */
+    std::string addCamDev(std::string ip, unsigned int port, std::string content, PResponse &response) {
+        Json::Reader requestJsonReader;
+        Json::Value requestJsonValue;
+        Json::Value responseJsonValue;
+        responseJsonValue["message"] = "娣诲姞澶辫触锛�";
+        responseJsonValue["success"] = "false";
+        if (requestJsonReader.parse(content, requestJsonValue)) {
+            CamDevBuilder camDevBuilder;
+
+            Json::Value idJsonValue = requestJsonValue[CamDev_id];
+            if (idJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addid(std::stoi((idJsonValue.asString())));
+            }
+
+            Json::Value cam_dev_idJsonValue = requestJsonValue[CamDev_cam_dev_id];
+            if (cam_dev_idJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addcam_dev_id((cam_dev_idJsonValue.asString()));
+            }
+
+            Json::Value nameJsonValue = requestJsonValue[CamDev_name];
+            if (nameJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addname((nameJsonValue.asString()));
+            }
+
+            Json::Value addrJsonValue = requestJsonValue[CamDev_addr];
+            if (addrJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addaddr((addrJsonValue.asString()));
+            }
+
+            Json::Value longitudeJsonValue = requestJsonValue[CamDev_longitude];
+            if (longitudeJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addlongitude((longitudeJsonValue.asString()));
+            }
+
+            Json::Value latitudeJsonValue = requestJsonValue[CamDev_latitude];
+            if (latitudeJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addlatitude((latitudeJsonValue.asString()));
+            }
+
+            Json::Value ipJsonValue = requestJsonValue[CamDev_ip];
+            if (ipJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addip((ipJsonValue.asString()));
+            }
+
+            Json::Value portJsonValue = requestJsonValue[CamDev_port];
+            if (portJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addport(std::stoi((portJsonValue.asString())));
+            }
+
+            Json::Value usernameJsonValue = requestJsonValue[CamDev_username];
+            if (usernameJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addusername((usernameJsonValue.asString()));
+            }
+
+            Json::Value passwordJsonValue = requestJsonValue[CamDev_password];
+            if (passwordJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addpassword((passwordJsonValue.asString()));
+            }
+
+            Json::Value brandJsonValue = requestJsonValue[CamDev_brand];
+            if (brandJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addbrand((brandJsonValue.asString()));
+            }
+
+            Json::Value reservedJsonValue = requestJsonValue[CamDev_reserved];
+            if (reservedJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addreserved((reservedJsonValue.asString()));
+            }
+
+            Json::Value typeJsonValue = requestJsonValue[CamDev_type];
+            if (typeJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addtype((typeJsonValue.asString()));
+            }
+            auto keyValuesToAdd = camDevBuilder.buildCamDevMap();
+            if (keyValuesToAdd.size() > 0) {
+                responseJsonValue = CamDevSqliteDao::instance()->addCamDev(keyValuesToAdd);
+            }
+        }
+        return responseJsonValue.toStyledString();
+    }
+
+    /** 鍒犻櫎鎽勫儚澶磋澶� */
+    std::string delCamDev(std::string ip, unsigned int port, std::string content, PResponse &response) {
+        Json::Reader requestJsonReader;
+        Json::Value requestJsonValue;
+        Json::Value responseJsonValue;
+        responseJsonValue["message"] = "鍒犻櫎澶辫触锛�";
+        responseJsonValue["success"] = "false";
+        if (requestJsonReader.parse(content, requestJsonValue)) {
+            Json::Value iDJsonValue = requestJsonValue["id"];
+            if (iDJsonValue.type() != Json::ValueType::nullValue) {
+                string iDValue = iDJsonValue.asString();
+                responseJsonValue = CamDevSqliteDao::instance()->deleteByColumn("id", iDValue);
+            }
+
+        }
+        return responseJsonValue.toStyledString();
+    }
+
+    /** 鏇存柊鎽勫儚澶磋澶� */
+    std::string updateCamDev(std::string ip, unsigned int port, std::string content, PResponse &response) {
+        Json::Reader requestJsonReader;
+        Json::Value requestJsonValue;
+        Json::Value responseJsonValue;
+        responseJsonValue["message"] = "鏇存柊澶辫触锛�";
+        responseJsonValue["success"] = "false";
+        if (requestJsonReader.parse(content, requestJsonValue)) {
+            CamDevBuilder camDevBuilder;
+
+            Json::Value idJsonValue = requestJsonValue[CamDev_id];
+            if (idJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addid(std::stoi((idJsonValue.asString())));
+            }
+
+            Json::Value cam_dev_idJsonValue = requestJsonValue[CamDev_cam_dev_id];
+            if (cam_dev_idJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addcam_dev_id((cam_dev_idJsonValue.asString()));
+            }
+
+            Json::Value nameJsonValue = requestJsonValue[CamDev_name];
+            if (nameJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addname((nameJsonValue.asString()));
+            }
+
+            Json::Value addrJsonValue = requestJsonValue[CamDev_addr];
+            if (addrJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addaddr((addrJsonValue.asString()));
+            }
+
+            Json::Value longitudeJsonValue = requestJsonValue[CamDev_longitude];
+            if (longitudeJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addlongitude((longitudeJsonValue.asString()));
+            }
+
+            Json::Value latitudeJsonValue = requestJsonValue[CamDev_latitude];
+            if (latitudeJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addlatitude((latitudeJsonValue.asString()));
+            }
+
+            Json::Value ipJsonValue = requestJsonValue[CamDev_ip];
+            if (ipJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addip((ipJsonValue.asString()));
+            }
+
+            Json::Value portJsonValue = requestJsonValue[CamDev_port];
+            if (portJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addport(std::stoi((portJsonValue.asString())));
+            }
+
+            Json::Value usernameJsonValue = requestJsonValue[CamDev_username];
+            if (usernameJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addusername((usernameJsonValue.asString()));
+            }
+
+            Json::Value passwordJsonValue = requestJsonValue[CamDev_password];
+            if (passwordJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addpassword((passwordJsonValue.asString()));
+            }
+
+            Json::Value brandJsonValue = requestJsonValue[CamDev_brand];
+            if (brandJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addbrand((brandJsonValue.asString()));
+            }
+
+            Json::Value reservedJsonValue = requestJsonValue[CamDev_reserved];
+            if (reservedJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addreserved((reservedJsonValue.asString()));
+            }
+
+            Json::Value typeJsonValue = requestJsonValue[CamDev_type];
+            if (typeJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addtype((typeJsonValue.asString()));
+            }
+            if (idJsonValue.type() != Json::ValueType::nullValue) {
+                responseJsonValue = CamDevSqliteDao::instance()->updateCamDev(camDevBuilder.buildCamDevMap(), "id", idJsonValue.asString());
+            }
+        }
+        return responseJsonValue.toStyledString();
+    }
+
+    /** 鏌ユ壘鍗曚釜鎽勫儚澶磋澶� */
+    std::string findCamDev(std::string ip, unsigned int port, std::string content, PResponse &response) {
+        Json::Reader requestJsonReader;
+        Json::Value requestJsonValue;
+        Json::Value responseJsonValue;
+        responseJsonValue["message"] = "鏌ヨ澶辫触锛�";
+        responseJsonValue["success"] = "false";
+        if (requestJsonReader.parse(content, requestJsonValue)) {
+            CamDevBuilder camDevBuilder;
+
+            Json::Value idJsonValue = requestJsonValue[CamDev_id];
+            if (idJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addid(std::stoi((idJsonValue.asString())));
+            }
+
+            Json::Value cam_dev_idJsonValue = requestJsonValue[CamDev_cam_dev_id];
+            if (cam_dev_idJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addcam_dev_id((cam_dev_idJsonValue.asString()));
+            }
+
+            Json::Value nameJsonValue = requestJsonValue[CamDev_name];
+            if (nameJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addname((nameJsonValue.asString()));
+            }
+
+            Json::Value addrJsonValue = requestJsonValue[CamDev_addr];
+            if (addrJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addaddr((addrJsonValue.asString()));
+            }
+
+            Json::Value longitudeJsonValue = requestJsonValue[CamDev_longitude];
+            if (longitudeJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addlongitude((longitudeJsonValue.asString()));
+            }
+
+            Json::Value latitudeJsonValue = requestJsonValue[CamDev_latitude];
+            if (latitudeJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addlatitude((latitudeJsonValue.asString()));
+            }
+
+            Json::Value ipJsonValue = requestJsonValue[CamDev_ip];
+            if (ipJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addip((ipJsonValue.asString()));
+            }
+
+            Json::Value portJsonValue = requestJsonValue[CamDev_port];
+            if (portJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addport(std::stoi((portJsonValue.asString())));
+            }
+
+            Json::Value usernameJsonValue = requestJsonValue[CamDev_username];
+            if (usernameJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addusername((usernameJsonValue.asString()));
+            }
+
+            Json::Value passwordJsonValue = requestJsonValue[CamDev_password];
+            if (passwordJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addpassword((passwordJsonValue.asString()));
+            }
+
+            Json::Value brandJsonValue = requestJsonValue[CamDev_brand];
+            if (brandJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addbrand((brandJsonValue.asString()));
+            }
+
+            Json::Value reservedJsonValue = requestJsonValue[CamDev_reserved];
+            if (reservedJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addreserved((reservedJsonValue.asString()));
+            }
+
+            Json::Value typeJsonValue = requestJsonValue[CamDev_type];
+            if (typeJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addtype((typeJsonValue.asString()));
+            }
+            responseJsonValue["message"] = "鏌ヨ鎴愬姛锛�";
+            responseJsonValue["success"] = "true";
+            responseJsonValue = CamDevSqliteDao::instance()->findCamDevList(camDevBuilder.buildCamDevMap());
+        }
+        return responseJsonValue.toStyledString();
+    }
+
+    /** 鏌ユ壘鎽勫儚澶磋澶囧垪琛� */
+    std::string findCamDevList(std::string ip, unsigned int port, std::string content, PResponse &response) {
+        Json::Reader requestJsonReader;
+        Json::Value requestJsonValue;
+        Json::Value responseJsonValue;
+        responseJsonValue["message"] = "鏌ヨ澶辫触锛�";
+        responseJsonValue["success"] = "false";
+        if (content == "" || requestJsonReader.parse(content, requestJsonValue)) {
+            CamDevBuilder camDevBuilder;
+
+            Json::Value idJsonValue = requestJsonValue[CamDev_id];
+            if (idJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addid(std::stoi((idJsonValue.asString())));
+            }
+
+            Json::Value cam_dev_idJsonValue = requestJsonValue[CamDev_cam_dev_id];
+            if (cam_dev_idJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addcam_dev_id((cam_dev_idJsonValue.asString()));
+            }
+
+            Json::Value nameJsonValue = requestJsonValue[CamDev_name];
+            if (nameJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addname((nameJsonValue.asString()));
+            }
+
+            Json::Value addrJsonValue = requestJsonValue[CamDev_addr];
+            if (addrJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addaddr((addrJsonValue.asString()));
+            }
+
+            Json::Value longitudeJsonValue = requestJsonValue[CamDev_longitude];
+            if (longitudeJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addlongitude((longitudeJsonValue.asString()));
+            }
+
+            Json::Value latitudeJsonValue = requestJsonValue[CamDev_latitude];
+            if (latitudeJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addlatitude((latitudeJsonValue.asString()));
+            }
+
+            Json::Value ipJsonValue = requestJsonValue[CamDev_ip];
+            if (ipJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addip((ipJsonValue.asString()));
+            }
+
+            Json::Value portJsonValue = requestJsonValue[CamDev_port];
+            if (portJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addport(std::stoi((portJsonValue.asString())));
+            }
+
+            Json::Value usernameJsonValue = requestJsonValue[CamDev_username];
+            if (usernameJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addusername((usernameJsonValue.asString()));
+            }
+
+            Json::Value passwordJsonValue = requestJsonValue[CamDev_password];
+            if (passwordJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addpassword((passwordJsonValue.asString()));
+            }
+
+            Json::Value brandJsonValue = requestJsonValue[CamDev_brand];
+            if (brandJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addbrand((brandJsonValue.asString()));
+            }
+
+            Json::Value reservedJsonValue = requestJsonValue[CamDev_reserved];
+            if (reservedJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addreserved((reservedJsonValue.asString()));
+            }
+
+            Json::Value typeJsonValue = requestJsonValue[CamDev_type];
+            if (typeJsonValue.type() != Json::ValueType::nullValue) {
+                camDevBuilder.addtype((typeJsonValue.asString()));
+            }
+            responseJsonValue["message"] = "鏌ヨ鎴愬姛锛�";
+            responseJsonValue["success"] = "true";
+            responseJsonValue = CamDevSqliteDao::instance()->findCamDevList(camDevBuilder.buildCamDevMap());
+
+        }
+        return responseJsonValue.toStyledString();
+    }
+};
+
+
+
+
+
+
+#endif //CAMDEV_CONTROLLER_H
+
+
+
+
diff --git a/QiaoJiaSystem/DataManagerServer/vss/controller/VssLocalSettingTblController.h b/QiaoJiaSystem/DataManagerServer/vss/controller/VssLocalSettingTblController.h
index 589e536..13c8d09 100755
--- a/QiaoJiaSystem/DataManagerServer/vss/controller/VssLocalSettingTblController.h
+++ b/QiaoJiaSystem/DataManagerServer/vss/controller/VssLocalSettingTblController.h
@@ -172,10 +172,7 @@
             }
         	if (iDJsonValue.type() != Json::ValueType::nullValue) {
         		string iDValue = iDJsonValue.asString();
-                if (iDValue.size() > 0 && VssLocalSettingTblSqliteDao::instance()->updateVssLocalSettingTbl(vssLocalSettingTblBuilder.buildVssLocalSettingTblMap(), "ID", iDValue)) {
-        			responseJsonValue["success"] = "true";
-        			responseJsonValue["message"] = "鏇存柊鎴愬姛锛�";
-	            }
+                responseJsonValue = VssLocalSettingTblSqliteDao::instance()->updateVssLocalSettingTbl(vssLocalSettingTblBuilder.buildVssLocalSettingTblMap(), "ID", iDValue);
             }
         }
         return responseJsonValue.toStyledString();
@@ -227,7 +224,7 @@
             }
 	        responseJsonValue["message"] = "鏌ヨ鎴愬姛锛�";
 	        responseJsonValue["success"] = "true";
-	    	responseJsonValue["data"] = VssLocalSettingTblSqliteDao::instance()->findJsonArray(string("select * from ") + VSSLocalSettingTbl_TABLE_NAME + " where 1 = 1 limit 1");
+            responseJsonValue = VssLocalSettingTblSqliteDao::instance()->findVssLocalSettingTblList(vssLocalSettingTblBuilder.buildVssLocalSettingTblMap());
         }
         return responseJsonValue.toStyledString();
     }
diff --git a/QiaoJiaSystem/DataManagerServer/vss/dao/BaseSqliteDao.h b/QiaoJiaSystem/DataManagerServer/vss/dao/BaseSqliteDao.h
new file mode 100644
index 0000000..88ae76a
--- /dev/null
+++ b/QiaoJiaSystem/DataManagerServer/vss/dao/BaseSqliteDao.h
@@ -0,0 +1,28 @@
+#ifndef QIAOJIASYSTEM_BASESQLITEDAO_H
+#define QIAOJIASYSTEM_BASESQLITEDAO_H
+
+
+
+class BaseSqliteDao {
+protected:
+public:
+
+    static LDBTool* lDBTool;
+
+    static QSqlDatabase* m_db;
+    static QSqlTableModel *m_pModel;
+    static QMutex* m_mutexVisit;
+    static void setLDBTool(LDBTool* lDBTool) {
+        BaseSqliteDao::lDBTool = lDBTool;
+        BaseSqliteDao::m_db = lDBTool->get_m_db();
+        BaseSqliteDao::m_pModel = lDBTool->get_m_pModel();
+        BaseSqliteDao::m_mutexVisit = lDBTool->get_m_mutexVisit();
+    }
+};
+
+LDBTool* BaseSqliteDao::lDBTool = nullptr;
+QSqlDatabase* BaseSqliteDao::m_db = nullptr;
+QSqlTableModel *BaseSqliteDao::m_pModel = nullptr;
+QMutex* BaseSqliteDao::m_mutexVisit = nullptr;
+
+#endif //QIAOJIASYSTEM_BASESQLITEDAO_H
diff --git a/QiaoJiaSystem/DataManagerServer/vss/dao/CamDevSqliteDao.h b/QiaoJiaSystem/DataManagerServer/vss/dao/CamDevSqliteDao.h
new file mode 100755
index 0000000..b7f3873
--- /dev/null
+++ b/QiaoJiaSystem/DataManagerServer/vss/dao/CamDevSqliteDao.h
@@ -0,0 +1,212 @@
+
+#ifndef CAMDEV_MANAGER_H
+#define CAMDEV_MANAGER_H
+
+#include "../model/CamDev.h"
+#include "BaseSqliteDao.h"
+
+#define CamDev_TABLE_NAME "cam_dev"
+
+/**
+ * 鎽勫儚澶磋澶囩鐞嗙被
+ */
+class CamDevSqliteDao : public BaseSqliteDao {
+private:
+    /** 鎽勫儚澶磋澶囨瀯閫犲嚱鏁� */
+    CamDevSqliteDao() {}
+public:
+    /** 鎽勫儚澶磋澶囧崟渚嬫ā寮� */
+    static CamDevSqliteDao* instance() {
+        static CamDevSqliteDao instance;
+        return &instance;
+    }
+
+    /** 娣诲姞鎽勫儚澶磋澶� keyValuesToAdd 闇�瑕佹坊鍔犵殑鍒楀悕鍜屽垪鍊煎map*/
+    Json::Value addCamDev(std::map<std::string, std::string>& keyValuesToAdd) {
+        Json::Value responseJsonValue;
+        responseJsonValue["message"] = "娣诲姞澶辫触锛�";
+        responseJsonValue["success"] = "false";
+        QMutexLocker mutexLocker(m_mutexVisit);//TODO
+        QSqlTableModel pModel(NULL, *m_db);
+
+        pModel.setTable(CamDev_TABLE_NAME);
+        pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);
+
+        QSqlRecord rec = pModel.record();
+        for (auto keyValueToAdd : keyValuesToAdd) {
+            rec.setValue(QString::fromUtf8(keyValueToAdd.first.c_str()), QString::fromUtf8(keyValueToAdd.second.c_str()));
+        }
+        rec.setGenerated("id", false);
+
+        pModel.insertRecord(-1, rec);//TODO
+
+        m_db->transaction();//寮�濮嬩簨鍔℃搷浣�
+
+        if (pModel.submitAll()) {
+            m_db->commit();//鎻愪氦
+            responseJsonValue["success"] = "true";
+            responseJsonValue["message"] = "娣诲姞鎴愬姛锛�";
+        } else {
+            m_db->rollback();//鍥炴粴
+            ERR("addCamDev err ,Database Error: " << pModel.lastError().text().toStdString());
+        }
+        return responseJsonValue;
+    }
+
+    /** 鍒犻櫎鏈湴鍥芥爣閰嶇疆 whereKey 鍒楀悕锛泈hereValue 鍒楀�� */
+    Json::Value deleteByColumn(string whereKey, string whereValue) {
+
+
+        std::map<std::string, std::string> whereKeyValues;
+        whereKeyValues[whereKey] = whereValue;
+        return deleteCamDev(whereKeyValues);
+    }
+
+    /** 鍒犻櫎鎽勫儚澶磋澶� whereKey 鍒楀悕锛泈hereValue 鍒楀�� */
+    Json::Value deleteCamDev(std::map<std::string, std::string>& whereKeyValues) {
+
+        Json::Value responseJsonValue;
+        responseJsonValue["message"] = "鍒犻櫎澶辫触锛�";
+        responseJsonValue["success"] = "false";
+        QMutexLocker mutexLocker(m_mutexVisit);//TODO
+        QSqlTableModel pModel(NULL, *m_db);
+        pModel.setTable(CamDev_TABLE_NAME);
+        for (auto whereKeyValue : whereKeyValues ) {
+            pModel.setFilter(QObject::tr((string(whereKeyValue.first)+" = '%1'").c_str()).arg(QString::fromUtf8(whereKeyValue.second.c_str())));
+        }
+        pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
+        pModel.select();
+
+        int rowCount = pModel.rowCount();
+
+        if (rowCount >= 1) {
+            for (int i = 0; i < rowCount; i++) {
+                pModel.removeRow(i);//TODO
+            }
+        } else {
+            return responseJsonValue;
+        }
+
+        m_db->transaction();//寮�濮嬩簨鍔℃搷浣�
+
+        if (pModel.submitAll()) {
+            m_db->commit();//鎻愪氦
+            responseJsonValue["success"] = "true";
+            responseJsonValue["message"] = "鍒犻櫎鎴愬姛锛�";
+        } else {
+            m_db->rollback();//鍥炴粴
+            ERR("deleteLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString());
+        }
+
+        return responseJsonValue;
+    }
+
+    /** 鏇存柊鏈湴鍥芥爣閰嶇疆 keyValuesToUpdate 闇�瑕佹洿鏂扮殑鍒楀悕鍜屽垪鍊煎锛� whereKeyValues 鍒楀悕鍜屽垪鍊兼潯浠� */
+    Json::Value updateCamDev(std::map<std::string, std::string>& keyValuesToUpdate,
+                             std::map<std::string, std::string>& whereKeyValues) {
+        Json::Value responseJsonValue;
+        responseJsonValue["message"] = "鏇存柊澶辫触锛�";
+        responseJsonValue["success"] = "false";
+        QMutexLocker mutexLocker(m_mutexVisit);//TODO
+        QSqlTableModel pModel(NULL, *m_db);
+        pModel.setTable(CamDev_TABLE_NAME);
+        for (auto whereKeyValue : whereKeyValues) {
+            pModel.setFilter(QObject::tr((whereKeyValue.first + " = '%1'").c_str()).arg(QString::fromStdString(whereKeyValue.second)));
+        }
+        pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
+        pModel.select();
+
+        /*QSqlRecord rec =  pModel.record();
+        rec.setValue("dst_path",QString::fromStdString(dst_path));
+        rec.setValue("total",total);
+        rec.setValue("finish_flag",1);
+        rec.setValue("update_time",QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));*/
+
+        int rowCount = pModel.rowCount();
+        if (rowCount > 0) {
+            QSqlRecord rec = pModel.record(0);
+            for (auto keyValueToUpdate : keyValuesToUpdate) {
+                rec.setValue(keyValueToUpdate.first.c_str(), keyValueToUpdate.second.c_str());
+            }
+//            rec.setValue("dst_path", QString::fromStdString(dst_path));
+//            rec.setValue("total", total);
+//            rec.setValue("finish_flag", 1);
+            rec.setValue("UpdateTime", QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
+
+            pModel.setRecord(0, rec);
+        } else {
+            return responseJsonValue;
+        }
+
+        m_db->transaction();//寮�濮嬩簨鍔℃搷浣�
+
+        if (pModel.submitAll()) {
+            m_db->commit();//鎻愪氦
+            responseJsonValue["success"] = "true";
+            responseJsonValue["message"] = "鏇存柊鎴愬姛锛�";
+        } else {
+            m_db->rollback();//鍥炴粴
+            ERR("updateLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString());
+        }
+        return responseJsonValue;
+    }
+
+    /** 鏇存柊鎽勫儚澶磋澶� keyValuesToUpdate 闇�瑕佹洿鏂扮殑鍒楀悕鍜屽垪鍊煎锛� whereKeyValues 鍒楀悕鍜屽垪鍊兼潯浠� */
+    Json::Value updateCamDev(std::map<std::string, std::string>& keyValuesToUpdate,
+                             string whereKey,
+                             string whereValue) {
+        std::map<std::string, std::string> whereKeyValues;
+        whereKeyValues[whereKey] = whereValue;
+        return updateCamDev(keyValuesToUpdate, whereKeyValues);
+    }
+
+    /**鏌ヨ鎽勫儚澶磋澶囧垪琛� whereKeyValues 鍒楀悕鍜屽垪鍊煎鏉′欢 */
+    Json::Value findCamDevList(std::map<std::string, std::string>& whereKeyValues) {
+
+        Json::Value responseJsonValue;
+        responseJsonValue["message"] = "鏌ヨ澶辫触锛�";
+        responseJsonValue["success"] = "false";
+        responseJsonValue["data"] = Json::arrayValue;
+
+        QMutexLocker mutexLocker(m_mutexVisit);//TODO
+        std::list<Record_Cut_Video_info> lst;
+        QSqlTableModel pModel(NULL, *m_db);
+        pModel.setTable(CamDev_TABLE_NAME);;
+        for (auto whereKeyValue : whereKeyValues ) {
+            pModel.setFilter(QObject::tr((string(whereKeyValue.first)+" = '%1'").c_str()).arg(QString::fromUtf8(whereKeyValue.second.c_str())));
+        }
+        pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
+        pModel.select();
+
+        int rowCount = pModel.rowCount();
+        if (rowCount > 0) {
+            Json::Value rowDataList = Json::arrayValue;
+            for (int i = 0; i < rowCount; ++i) {
+                Json::Value rowData = Json::objectValue;
+                Record_Cut_Video_info lRec;
+                QSqlRecord rec = pModel.record(i);
+                for (int i = 0; i < rec.count(); i++) {
+                    QSqlField field = rec.field(i);
+                    rowData[field.name().toStdString()] = field.value().toString().toStdString();
+                }
+                rowDataList.append(rowData);
+            }
+            responseJsonValue["data"] = rowDataList;
+        }
+
+        responseJsonValue["message"] = "鏌ヨ鎴愬姛锛�";
+        responseJsonValue["success"] = "true";
+        return responseJsonValue;
+    }
+
+    /**鏌ヨ鎵�鏈夋湰鍦板浗鏍囬厤缃垪琛� */
+    Json::Value findAllCamDevList() {
+        std::map<std::string, std::string> whereKeyValues;
+        return findCamDevList(whereKeyValues);
+    }
+
+};
+
+
+#endif //CAMDEV_MANAGER_H
+
diff --git a/QiaoJiaSystem/DataManagerServer/vss/dao/VssLocalSettingTblSqliteDao.h b/QiaoJiaSystem/DataManagerServer/vss/dao/VssLocalSettingTblSqliteDao.h
index 7592a5a..4096fa0 100755
--- a/QiaoJiaSystem/DataManagerServer/vss/dao/VssLocalSettingTblSqliteDao.h
+++ b/QiaoJiaSystem/DataManagerServer/vss/dao/VssLocalSettingTblSqliteDao.h
@@ -3,7 +3,7 @@
 #define VSSLOCALSETTINGTBL_Sqlite_MANAGER_H
 
 #include "../model/VssLocalSettingTbl.h"
-#include "BaseDao.h"
+#include "BaseSqliteDao.h"
 
 #define VSSLocalSettingTbl_Sqlite_TABLE_NAME "VSSLocalSettingTbl"
 
@@ -11,23 +11,11 @@
 /**
  * 鏈湴鍥芥爣閰嶇疆绠$悊绫�
  */
-class VssLocalSettingTblSqliteDao : public BaseDao {
+class VssLocalSettingTblSqliteDao : public BaseSqliteDao {
 private:
 	/** 鏈湴鍥芥爣閰嶇疆鏋勯�犲嚱鏁� */
 	VssLocalSettingTblSqliteDao() {}
-private:
-    LDBTool* lDBTool;
 
-    QSqlDatabase* m_db;
-    QSqlTableModel *m_pModel;
-    QMutex* m_mutexVisit;
-public:
-    void setLDBTool(LDBTool* lDBTool) {
-	    this->lDBTool = lDBTool;
-	    this->m_db = lDBTool->get_m_db();
-	    this->m_pModel = lDBTool->get_m_pModel();
-	    this->m_mutexVisit = lDBTool->get_m_mutexVisit();
-	}
 public:
 	/** 鏈湴鍥芥爣閰嶇疆鍗曚緥妯″紡 */
     static VssLocalSettingTblSqliteDao* instance() {
@@ -119,7 +107,7 @@
     Json::Value updateVssLocalSettingTbl(std::map<std::string, std::string>& keyValuesToUpdate,
 									std::map<std::string, std::string>& whereKeyValues) {
         Json::Value responseJsonValue;
-        responseJsonValue["message"] = "鍒犻櫎澶辫触锛�";
+        responseJsonValue["message"] = "鏇存柊澶辫触锛�";
         responseJsonValue["success"] = "false";
         QMutexLocker mutexLocker(m_mutexVisit);//TODO
         QSqlTableModel pModel(NULL, *m_db);
@@ -157,7 +145,7 @@
         if (pModel.submitAll()) {
             m_db->commit();//鎻愪氦
             responseJsonValue["success"] = "true";
-            responseJsonValue["message"] = "鍒犻櫎鎴愬姛锛�";
+            responseJsonValue["message"] = "鏇存柊鎴愬姛锛�";
         } else {
             m_db->rollback();//鍥炴粴
             ERR("updateLDeviceTable ,pModel_load Error: " << pModel.lastError().text().toStdString());
@@ -166,12 +154,12 @@
 	}
 
     /** 鏇存柊鍒涘缓浜岀骇璁惧琛� keyValuesToUpdate 闇�瑕佹洿鏂扮殑鍒楀悕鍜屽垪鍊煎锛� whereKeyValues 鍒楀悕鍜屽垪鍊兼潯浠� */
-    bool updateVssLocalSettingTbl(std::map<std::string, std::string>& keyValuesToUpdate,
+    Json::Value updateVssLocalSettingTbl(std::map<std::string, std::string>& keyValuesToUpdate,
                              string whereKey,
                              string whereValue) {
         std::map<std::string, std::string> whereKeyValues;
         whereKeyValues[whereKey] = whereValue;
-        return update(keyValuesToUpdate, VSSLocalSettingTbl_TABLE_NAME, whereKeyValues);
+        return updateVssLocalSettingTbl(keyValuesToUpdate, whereKeyValues);
     }
 
 	/** 鏌ヨ鏈湴鍥芥爣閰嶇疆鍒楄〃  querySql 瑕佹煡璇㈢殑sql璇彞 */
@@ -219,49 +207,6 @@
         return findVssLocalSettingTblList(whereKeyValues);
     }
 
-	/** 鏌ヨmap鍒楄〃 querySql 瑕佹煡璇㈢殑sql璇彞 */
-	vector<map<string, string>> findMapList(string querySql) {
-		return findList(querySql);
-	}
-
-    /** 鎵цsql璇彞 */
-    bool execute(string sql) {
-        return exec(move(sql));
-    }
-
-    /** map杞琺odel绫� */
-    VssLocalSettingTbl mapToModel(map<string, string>& rowData) {
-        VssLocalSettingTbl vssLocalSettingTbl;
-        string IDValue = rowData[VssLocalSettingTbl_ID];
-        if (IDValue.length() != 0 && IDValue != "NULL") {
-            vssLocalSettingTbl.ID = std::stoi(IDValue);
-        }
-        string ServerIpValue = rowData[VssLocalSettingTbl_ServerIp];
-        if (ServerIpValue.length() != 0 && ServerIpValue != "NULL") {
-            vssLocalSettingTbl.ServerIp = ServerIpValue;
-        }
-        string ServerPortValue = rowData[VssLocalSettingTbl_ServerPort];
-        if (ServerPortValue.length() != 0 && ServerPortValue != "NULL") {
-            vssLocalSettingTbl.ServerPort = ServerPortValue;
-        }
-        string ServerIdValue = rowData[VssLocalSettingTbl_ServerId];
-        if (ServerIdValue.length() != 0 && ServerIdValue != "NULL") {
-            vssLocalSettingTbl.ServerId = ServerIdValue;
-        }
-        string UserAuthIdValue = rowData[VssLocalSettingTbl_UserAuthId];
-        if (UserAuthIdValue.length() != 0 && UserAuthIdValue != "NULL") {
-            vssLocalSettingTbl.UserAuthId = UserAuthIdValue;
-        }
-        string PasswordValue = rowData[VssLocalSettingTbl_Password];
-        if (PasswordValue.length() != 0 && PasswordValue != "NULL") {
-            vssLocalSettingTbl.Password = PasswordValue;
-        }
-        string UpdateTimeValue = rowData[VssLocalSettingTbl_UpdateTime];
-        if (UpdateTimeValue.length() != 0 && UpdateTimeValue != "NULL") {
-            vssLocalSettingTbl.UpdateTime = UpdateTimeValue;
-        }
-        return vssLocalSettingTbl;
-    }
 
 };
 
diff --git a/QiaoJiaSystem/DataManagerServer/vss/model/CamDev.h b/QiaoJiaSystem/DataManagerServer/vss/model/CamDev.h
new file mode 100755
index 0000000..dad8374
--- /dev/null
+++ b/QiaoJiaSystem/DataManagerServer/vss/model/CamDev.h
@@ -0,0 +1,62 @@
+
+#ifndef CAMDEV_H
+#define CAMDEV_H
+#include <mysql++.h>
+#include <string>
+using std::string;
+
+#define CamDev_id "id"
+#define CamDev_cam_dev_id "cam_dev_id"
+#define CamDev_name "name"
+#define CamDev_addr "addr"
+#define CamDev_longitude "longitude"
+#define CamDev_latitude "latitude"
+#define CamDev_ip "ip"
+#define CamDev_port "port"
+#define CamDev_username "username"
+#define CamDev_password "password"
+#define CamDev_brand "brand"
+#define CamDev_reserved "reserved"
+#define CamDev_type "type"
+
+/**
+ * 鎽勫儚澶磋澶�
+ */
+class CamDev {
+public:
+	int id                   ; 
+	std::string cam_dev_id   ; 
+	std::string name         ; 
+	std::string addr         ; 
+	std::string longitude    ; 
+	std::string latitude     ; 
+	std::string ip           ; 
+	int port                 ; 
+	std::string username     ; 
+	std::string password     ; 
+	std::string brand        ; 
+	std::string reserved     ; 
+	std::string type         ; 
+public:
+	/** 鎽勫儚澶磋澶� 鏋勯�犲嚱鏁�*/
+	CamDev() {
+		id = 0                   ;
+		cam_dev_id = ""          ;
+		name = ""                ;
+		addr = ""                ;
+		longitude = ""           ;
+		latitude = ""            ;
+		ip = ""                  ;
+		port = 0                 ;
+		username = ""            ;
+		password = ""            ;
+		brand = ""               ;
+		reserved = ""            ;
+		type = ""                ;
+	}
+};
+
+
+#endif //CAMDEV_H
+
+
diff --git a/QiaoJiaSystem/DataManagerServer/vss/model/CamDevBuilder.h b/QiaoJiaSystem/DataManagerServer/vss/model/CamDevBuilder.h
new file mode 100755
index 0000000..0f2e33d
--- /dev/null
+++ b/QiaoJiaSystem/DataManagerServer/vss/model/CamDevBuilder.h
@@ -0,0 +1,76 @@
+
+#ifndef CAMDEV_BUILDER_H
+#define CAMDEV_BUILDER_H
+#include <string>
+#include <vector>
+#include "CamDev.h"
+using namespace std;
+
+/**
+ * 鎽勫儚澶磋澶囨瀯寤哄櫒
+ */
+class CamDevBuilder {
+public:
+    CamDevBuilder& addid(int id) {
+        camDevMap[CamDev_id] = to_string(id);
+        return *this;
+    }
+    CamDevBuilder& addcam_dev_id(std::string cam_dev_id) {
+        camDevMap[CamDev_cam_dev_id] = cam_dev_id;
+        return *this;
+    }
+    CamDevBuilder& addname(std::string name) {
+        camDevMap[CamDev_name] = name;
+        return *this;
+    }
+    CamDevBuilder& addaddr(std::string addr) {
+        camDevMap[CamDev_addr] = addr;
+        return *this;
+    }
+    CamDevBuilder& addlongitude(std::string longitude) {
+        camDevMap[CamDev_longitude] = longitude;
+        return *this;
+    }
+    CamDevBuilder& addlatitude(std::string latitude) {
+        camDevMap[CamDev_latitude] = latitude;
+        return *this;
+    }
+    CamDevBuilder& addip(std::string ip) {
+        camDevMap[CamDev_ip] = ip;
+        return *this;
+    }
+    CamDevBuilder& addport(int port) {
+        camDevMap[CamDev_port] = to_string(port);
+        return *this;
+    }
+    CamDevBuilder& addusername(std::string username) {
+        camDevMap[CamDev_username] = username;
+        return *this;
+    }
+    CamDevBuilder& addpassword(std::string password) {
+        camDevMap[CamDev_password] = password;
+        return *this;
+    }
+    CamDevBuilder& addbrand(std::string brand) {
+        camDevMap[CamDev_brand] = brand;
+        return *this;
+    }
+    CamDevBuilder& addreserved(std::string reserved) {
+        camDevMap[CamDev_reserved] = reserved;
+        return *this;
+    }
+    CamDevBuilder& addtype(std::string type) {
+        camDevMap[CamDev_type] = type;
+        return *this;
+    }
+	/** 鎽勫儚澶磋澶� map */
+	std::map<std::string, std::string>& buildCamDevMap() {
+		return camDevMap;
+	}
+public:
+    std::map<std::string, std::string> camDevMap;
+};
+
+#endif //CAMDEV_BUILDER_H
+
+
diff --git a/QiaoJiaSystem/DataManagerServer/vss/test/CamDevSqliteDaoTest.h b/QiaoJiaSystem/DataManagerServer/vss/test/CamDevSqliteDaoTest.h
new file mode 100755
index 0000000..e146886
--- /dev/null
+++ b/QiaoJiaSystem/DataManagerServer/vss/test/CamDevSqliteDaoTest.h
@@ -0,0 +1,74 @@
+
+#ifndef CAMDEV_MANAGER_TEST_H
+#define CAMDEV_MANAGER_TEST_H
+
+#include "../model/CamDev.h"
+#include "../model/CamDevBuilder.h"
+#include "../dao/CamDevSqliteDao.h"
+#include <basic/debug/Debug.h>
+
+/**
+ * 娴嬭瘯鎽勫儚澶磋澶囩鐞嗙被
+ */
+class CamDevSqliteDaoTest {
+private:
+	/** 鎽勫儚澶磋澶嘢qliteDaoTest鏋勯�犲嚱鏁� */
+	CamDevSqliteDaoTest() {}
+public:
+	/** 鎽勫儚澶磋澶嘢qliteDaoTest鍗曚緥妯″紡 */
+    static CamDevSqliteDaoTest* instance() {
+        static CamDevSqliteDaoTest instance;
+        return &instance;
+    }
+
+	/** 娴嬭瘯娣诲姞鎽勫儚澶磋澶� */
+    void testAddCamDev() {
+        CamDevBuilder camDevBuilder;
+    	camDevBuilder.addid(0);
+    	camDevBuilder.addcam_dev_id("");
+    	camDevBuilder.addname("");
+    	camDevBuilder.addaddr("");
+    	camDevBuilder.addlongitude("");
+    	camDevBuilder.addlatitude("");
+    	camDevBuilder.addip("");
+    	camDevBuilder.addport(0);
+    	camDevBuilder.addusername("");
+    	camDevBuilder.addpassword("");
+    	camDevBuilder.addbrand("");
+    	camDevBuilder.addreserved("");
+    	camDevBuilder.addtype("");
+        CamDevSqliteDao::instance()->addCamDev(camDevBuilder.buildCamDevMap());
+    }
+    
+    /** 娴嬭瘯鏇存柊鎽勫儚澶磋澶� */
+    void testUpdateCamDev() {
+        CamDevBuilder camDevBuilder;
+    	camDevBuilder.addid(0);
+    	camDevBuilder.addcam_dev_id("");
+    	camDevBuilder.addname("");
+    	camDevBuilder.addaddr("");
+    	camDevBuilder.addlongitude("");
+    	camDevBuilder.addlatitude("");
+    	camDevBuilder.addip("");
+    	camDevBuilder.addport(0);
+    	camDevBuilder.addusername("");
+    	camDevBuilder.addpassword("");
+    	camDevBuilder.addbrand("");
+    	camDevBuilder.addreserved("");
+    	camDevBuilder.addtype("");
+    
+        CamDevSqliteDao::instance()->updateCamDev(camDevBuilder.buildCamDevMap(),
+                                                  camDevBuilder.buildCamDevMap());
+    }
+    
+    /** 娴嬭瘯鏌ヨ鎽勫儚澶磋澶囧垪琛�*/
+    void testFindCamDevList() {
+        vector<CamDev> camDevVec = CamDevSqliteDao::instance()->findAllCamDevList();
+    }
+    
+private:
+	
+};
+
+#endif //CAMDEV_MANAGER_TEST_H
+
diff --git a/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp b/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp
index 8b8a3e1..42f22eb 100644
--- a/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp
+++ b/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp
@@ -2732,3 +2732,40 @@
 
     return ruleMap;
 }
+
+
+/**
+ * type 0 rtsp, 1 gb28181
+ */
+std::list<Record_Cam_Dev> LDBTool::searchCamDevTableByType(int type) {
+    QMutexLocker mutexLocker(&m_mutexVisit);//TODO
+    std::list<Record_Cam_Dev> lst;
+    QSqlTableModel pModel(NULL, m_db);
+    pModel.setTable("cam_dev");
+    pModel.setFilter(QObject::tr((string("cam_dev_id != '' and cam_dev_id is not null and type='")+to_string(type)+"'").c_str()));
+    pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
+    pModel.select();
+
+    int rowCount = pModel.rowCount();
+    if (rowCount > 0) {
+        for (int i = 0; i < rowCount; ++i) {
+            Record_Cam_Dev lChannelRec;
+            QSqlRecord rec = pModel.record(i);
+            lChannelRec.n_id = rec.value("id").toInt();
+            lChannelRec.str_cam_dev_id = rec.value("cam_dev_id").toString();
+            lChannelRec.str_name = rec.value("name").toString();
+            lChannelRec.str_addr = rec.value("addr").toString();
+            lChannelRec.str_longitude = rec.value("longitude").toString();
+            lChannelRec.str_latitude = rec.value("latitude").toString();
+            lChannelRec.str_ip = rec.value("ip").toString();
+            lChannelRec.n_port = rec.value("port").toInt();
+            lChannelRec.str_username = rec.value("username").toString();
+            lChannelRec.str_password = rec.value("password").toString();
+            lChannelRec.str_brand = rec.value("brand").toString();
+            lChannelRec.str_reserved = rec.value("reserved").toString();
+            lst.push_back(lChannelRec);
+        }
+    }
+
+    return lst;
+}
\ No newline at end of file
diff --git a/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.h b/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.h
index d4c26bd..eb53d1c 100644
--- a/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.h
+++ b/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.h
@@ -50,6 +50,7 @@
     bool deleteCamDevandSdkByCamID(QString strCamId);
     bool updateCamDevTable(Record_Cam_Dev camRec);
     std::list<Record_Cam_Dev> searchCamDevTableAll(void);
+    std::list<Record_Cam_Dev> searchCamDevTableByType(int type);
     int searchCamDevNumber(void);
     bool searchCamDevByCamId(QString strCamId);
     bool updateCamDevSnapshot(const QString& strIp ,const QString& imgUrl);
diff --git a/QiaoJiaSystem/build/DataWebServer b/QiaoJiaSystem/build/DataWebServer
index 0179432..d9d47cd 100755
--- a/QiaoJiaSystem/build/DataWebServer
+++ b/QiaoJiaSystem/build/DataWebServer
Binary files differ
diff --git a/QiaoJiaSystem/build/config.db b/QiaoJiaSystem/build/config.db
index 2366125..942ed4d 100755
--- a/QiaoJiaSystem/build/config.db
+++ b/QiaoJiaSystem/build/config.db
Binary files differ

--
Gitblit v1.8.0