| | |
| | | std::string Enabled = value["enabled"].asString(); |
| | | Enabled = Enabled.empty() ? "1" : Enabled; |
| | | |
| | | std::string createBy = value["createBy"].asString(); |
| | | |
| | | bool ret = false; |
| | | FieldValues fieldValues; |
| | | fieldValues.insert(std::make_pair("uuid", Uuid)); |
| | |
| | | return ""; |
| | | } |
| | | |
| | | { |
| | | // #todo ä¸ä¼ ãä»
é»ååã |
| | | // #TODO æ ¹æ®createBy夿æ¯å¦éè¦ä¸ä¼ |
| | | } |
| | | |
| | | erlangDbTool->sendMessage(); |
| | | std::string str_result = std::string("{\"result\":").append("\"" + std::to_string(ret) + "\"}"); |
| | |
| | | std::string TableName = value["TableName"].asString(); |
| | | int SyncType = atoi(value["SyncType"].asCString()); |
| | | |
| | | std::string createBy = value["createBy"].asString(); |
| | | |
| | | bool ret = false; |
| | | if (TableType == "person") { |
| | | if (SyncType == 1) { |
| | |
| | | return ""; |
| | | } |
| | | |
| | | { |
| | | // #todo ä¸ä¼ ãä»
é»ååã |
| | | // #TODO æ ¹æ®createBy夿æ¯å¦éè¦ä¸ä¼ |
| | | } |
| | | erlangDbTool->sendMessage(); |
| | | std::string str_result = std::string("{\"result\":").append("\"" + std::to_string(ret) + "\"}"); |
| | | return str_result; |
| | |
| | | subJson.append("\"IsSync\":\"" + item.uploadFlag + "\","); |
| | | subJson.append("\"threshold\":\"" + item.cmpThreshold + "\","); |
| | | subJson.append("\"create_by\":\"" + item.createBy + "\","); |
| | | subJson.append("\"enabled\":\"" + item.enabled + "\","); |
| | | subJson.append("\"enabled\":\"" + item.enabled + "\""); |
| | | subJson.append("},"); |
| | | json.append(subJson); |
| | | } |
| | |
| | | std::string SyncType = value["SyncType"].asString(); |
| | | std::string TableId = value["TableId"].asString(); |
| | | std::string BwType = value["BwType"].asString(); |
| | | std::string createBy = value["createBy"].asString(); |
| | | |
| | | std::string UploadFlag = "-1"; |
| | | if (SyncType == "1") { |
| | |
| | | |
| | | DBG("content: " << TableName << "," << img_url << "," << idcard << "," << strUUID << "," << UploadFlag << "," |
| | | << Enabled << "," << TableType << "," << SyncType << "," << TableId); |
| | | |
| | | cv::Mat image; |
| | | getMat(img_url, img_base64, image); |
| | | if (image.empty()) { |
| | | response->write(SimpleWeb::StatusCode::server_error_not_implemented, "{\"error\":\"not found img\"}"); |
| | | return ""; |
| | | // return "{\"error\":\"not found img\"}"; |
| | | } |
| | | |
| | | thread::id pid = std::this_thread::get_id(); |
| | |
| | | // usleep(100); |
| | | erlangDbTool->sendMessage(); |
| | | |
| | | if (UploadFlag == "1") { |
| | | if (createBy == "analyDev" && UploadFlag == "1") { |
| | | // #todo db queue upload to server |
| | | if (BwType == "0") { |
| | | UploadPersonToUserCenter(img_url, idcard, strUUID, feature_base64); |
| | | } else { |
| | | //todo send person to backServer |
| | | //#TODO é»ååä¸ä¼ |
| | | } else if (BwType == "1") { |
| | | UploadPersonToMonitorCenter(img_url, idcard, strUUID, feature_base64, TableId, Enabled); |
| | | } |
| | | |
| | | } else { |
| | | // ä¸ä¸ä¼ |
| | | } |
| | | return str_result; |
| | | } else { |
| | |
| | | // } else { |
| | | // //todo send person to backServer |
| | | ////#TODO é»ååä¸ä¼ |
| | | { |
| | | // #todo ä¸ä¼ ãä»
é»ååã |
| | | // #TODO æ ¹æ®createBy夿æ¯å¦éè¦ä¸ä¼ |
| | | } |
| | | // } |
| | | // } |
| | | return str_result; |
| | |
| | | devHttpServer_c::UploadPersonToUserCenter(string &img_url, string &idcard, string &strUUID, string &feature_base64) { |
| | | string str_serIp = GET_STR_CONFIG("mainServerIp"); |
| | | string str_serPort = GET_STR_CONFIG("mainServerPort"); |
| | | string str_serUrl = GET_STR_CONFIG("mainServerrUrl"); |
| | | |
| | | // string sendUrl = "192.168.1.203:3697/addPerson/uploadToTemporary"; |
| | | string sendUrl = str_serIp; |
| | | sendUrl.append(":").append(str_serPort).append("/addPerson/uploadToTemporary"); |
| | | sendUrl.append(":").append(str_serPort).append(str_serUrl); |
| | | |
| | | Json::Value perInfos; |
| | | Json::Value perInfo; |
| | |
| | | perInfo["photos"] = img_url; |
| | | perInfo["featureBase64"] = feature_base64; |
| | | perInfo["cardId"] = idcard;//å¾çæè¿° |
| | | perInfos.append(perInfo); |
| | | |
| | | thread sendPerson(uploadServer, this, sendUrl, perInfos.toStyledString()); |
| | | sendPerson.detach(); |
| | | } |
| | | |
| | | void |
| | | devHttpServer_c::UploadPersonToMonitorCenter(string &img_url, string &idcard, string &strUUID, string &feature_base64, |
| | | string &strTableId, string &strControl) { |
| | | |
| | | // string sendUrl = "192.168.1.203:3697/addPerson/uploadToTemporary"; |
| | | string sendUrl = GET_STR_CONFIG("addFromAnalyUrl"); |
| | | |
| | | if (sendUrl.empty()) { |
| | | ERR(""); |
| | | return; |
| | | } |
| | | |
| | | Json::Value perInfos; |
| | | Json::Value perInfo; |
| | | // #todo get string from config.json file |
| | | perInfo["id"] = strUUID; |
| | | perInfo["distributionIds"] = m_cluster_id; |
| | | perInfo["distributionNames"] = m_cluster_name; |
| | | auto rec = db_c.searchConfigTableWithinServerInfo(); |
| | | perInfo["deviceId"] = rec.dev_id.toStdString(); |
| | | perInfo["photos"] = img_url; |
| | | perInfo["featureBase64"] = feature_base64; |
| | | perInfo["cardId"] = idcard; // å¾çæè¿° |
| | | |
| | | perInfo["taskId"] = strTableId; // åºåºid |
| | | perInfo["isControl"] = strControl; // 叿§ç¶æï¼0为æªå¸æ§ï¼1ä¸ºå·²å¸æ§ï¼ |
| | | |
| | | perInfos.append(perInfo); |
| | | |
| | | thread sendPerson(uploadServer, this, sendUrl, perInfos.toStyledString()); |
| | |
| | | subJson.append("\"uuid\":\"" + item.second.uuid + "\","); |
| | | subJson.append("\"tableName\":\"" + TableName + "\","); |
| | | subJson.append("\"idcard\":\"" + t_faceInfoCache[item.second.uuid].idCard + "\","); |
| | | subJson.append("\"enable\":\"" + item.second.enable + "\","); |
| | | subJson.append("\"imgUrl\":\"" + item.second.faceurl + "\""); |
| | | // subJson.append("\"feature\":\"" + item.second.feature + "\","); |
| | | //#todo modifysvn upda svn comm |
| | |
| | | subJson.append("\"uuid\":\"" + item.second.id + "\","); |
| | | subJson.append("\"tableName\":\"" + TableName + "\","); |
| | | subJson.append("\"idcard\":\"" + item.second.idcard + "\","); |
| | | subJson.append("\"enable\":\"" + item.second.enable + "\","); |
| | | subJson.append("\"imgUrl\":\"" + item.second.img + "\""); |
| | | // subJson.append("\"feature\":\"" + item.second.feature + "\","); |
| | | //#todo modifysvn upda svn comm |
| | |
| | | std::string UploadFlag = value["IsSync"].asString(); |
| | | std::string CmpThreshold = value["threshold"].asString(); |
| | | std::string Enabled = value["enabled"].asString(); |
| | | Enabled = Enabled.empty() ? "1" : Enabled; |
| | | std::string createBy = value["createBy"].asString(); |
| | | |
| | | bool ret = false; |
| | | //#æ´æ°åºåºç®¡ç表 |
| | |
| | | return ""; |
| | | } |
| | | |
| | | { |
| | | // #todo ä¸ä¼ ãä»
é»ååã |
| | | // #TODO æ ¹æ®createBy夿æ¯å¦éè¦ä¸ä¼ |
| | | } |
| | | |
| | | erlangDbTool->sendMessage(); |
| | | std::string str_result = std::string("{\"result\":").append("\"" + std::to_string(ret) + "\"}"); |
| | |
| | | if (reader.parse(content, value)) { |
| | | std::string TableName = value["TableName"].asString(); |
| | | std::string strUUID = value["uuid"].asString(); |
| | | std::string createBy = value["createBy"].asString(); |
| | | |
| | | bool ret = false; |
| | | if (TableName.find("lt_") == 0) { |
| | |
| | | } else { |
| | | ret = erlangDbTool->delPerson(strUUID, TableName); |
| | | } |
| | | |
| | | { |
| | | // #todo ä¸ä¼ ãä»
é»ååã |
| | | // #TODO æ ¹æ®createBy夿æ¯å¦éè¦ä¸ä¼ |
| | | } |
| | | erlangDbTool->sendMessage(); |
| | | std::string str_result = std::string("{\"result\":").append("\"" + std::to_string(ret) + "\"}"); |
| | | return str_result; |
| | |
| | | void devHttpServer_c::UploadPersonToUserCenter(string &img_url, string &idcard, string &strUUID, |
| | | string &feature_base64); |
| | | |
| | | void devHttpServer_c::UploadPersonToMonitorCenter(string &img_url, string &idcard, string &strUUID, |
| | | string &feature_base64, string &strTableId, string &strControl); |
| | | |
| | | void |
| | | addPersonMToDB(const string &TableName, const string &img_url, const string &SyncType, const string &feature_base64, |
| | | const Features &faceResults, string &idcard, string &strUUID, bool &ret_addPerson) const; |
New file |
| | |
| | | |
| | | |
| | | ---- |
| | | |
| | | #1.è°ç¨åå»ºå¸æ§æ¥è¦åºåºä»»å¡ |
| | | |
| | | 192.168.1.184:3699/addTaskByNode |
| | | |
| | | |
| | | |
| | | { |
| | | "TableName": "test", //表å |
| | | "SyncType": "1", //åæ¥ç±»å 1忥/0æ¬å°åº |
| | | "StartTime": "2018-01-01 01:02:00", //å¼å§æ¶é´ |
| | | "EndTime": "2018-12-31 01:02:00" //ç»ææ¶é´ |
| | | "IsSync":"", // æ¯å¦åæ¥å°åå°ä¸´æ¶åº 1 æ¯ 0 䏿¯ |
| | | "threshold":0-100, // å¾çéå¼ 0-100 |
| | | "enabled":"1", // æ¯å¦å¯ç¨ 1å¯ç¨ 0æªå¯ç¨ |
| | | "uuid":"uuid-åºåºid", |
| | | "cluId":"", |
| | | "devId":"" |
| | | } |
| | | |
| | | |
| | | //表类å为 person çæ°æ®ç®åè°ç¨å¸æ§ "TableType": "person", |
| | | //é»ç½åå 1é»åå "BwType": "1", 叿§åªè¦é»åå |
| | | ---- |
| | | |
| | | #2.è°ç¨ä¸ä¼ 叿§äººåæ¥å£ |
| | | åæè®¾å¤ä¸ä¼ 叿§äººå |
| | | |
| | | pathï¼ip:3699/data/api-c/taskUser/addFromAnaly |
| | | åæ°ï¼ |
| | | userId 人åID(å¿
é) |
| | | userName å§å ï¼å¯ç©ºï¼ |
| | | idCard 身份è¯å·ï¼å¯ä»¥ä¸åï¼ |
| | | sex (0为女ï¼1为ç·) æ§å«ï¼å¯ç©ºï¼ |
| | | mobile ææºå·ï¼å¯ç©ºï¼ |
| | | taskId åºåºid |
| | | imgUrl å¾ççfstdfsè·¯å¾ï¼å¿
éï¼ |
| | | featureBase64 å¾ççç¹å¾å¼ï¼å¿
éï¼ ï¼ä»¥base64æ ¼å¼ç©¿è¿æ¥ï¼ |
| | | isControl 叿§ç¶æï¼0为æªå¸æ§ï¼1ä¸ºå·²å¸æ§ï¼ |
| | | 请æ±ç±»åï¼httpMethod = "POST"(json) |
| | | |
| | | ---- |
| | | |
| | | #3.人å管çä¸ä¼ äººåæ¥å£ |
| | | 人åID(å¿
é)ï¼ id ä¾å¦ï¼PSSVR010120181208175534014 |
| | | å§åï¼å¯ç©ºï¼ name |
| | | 身份è¯å·ï¼å¯ä»¥ä¸åï¼cardId |
| | | æ§å«ï¼å¯ç©ºï¼gender |
| | | ææºå·ï¼å¯ç©ºï¼phone |
| | | é群idï¼å¿
éï¼distributionIds |
| | | é群åç§°ï¼å¿
éï¼distributionNames |
| | | å¾ççfstdfsè·¯å¾ï¼å¿
éï¼photos |
| | | å¾ççç¹å¾å¼ï¼å¿
éï¼featureBase64 ï¼ä»¥base64æ ¼å¼ç©¿è¿æ¥ï¼ |
| | | |
| | | æ°æ®ç±»åï¼æ²¡æ 注ç齿¯å符串 |
| | | 注æä¼ è¾æ¶ç驼峰å¼å½å |
| | | |
| | | |
| | | ä¼ å举ä¾ï¼ |
| | | |
| | | [ |
| | | { |
| | | "name":âå¼ ä¸â, |
| | | "cardId":"130430199809090876", |
| | | "gender":"ç·", |
| | | "phone":"13700678954", |
| | | "deviceId":"DSPAD010120181101", |
| | | âdistributionIdsâ:"fcjaw-soifaw-2134-432", |
| | | "distributionNames":"pad1", |
| | | "photos":"group1/M00/01/90/wKgBy1wLa-qAA5cJAABHxJUyH0A935.jpg", |
| | | "featureBase64 ":"kQZbUt48zxqUQfwv/r2mYfCz/VU5K7lg3KIgBdrc/+==" |
| | | }, |
| | | { |
| | | "name":â鿝â, |
| | | "cardId":"130430199809090876", |
| | | "gender":"ç·", |
| | | "phone":"13700678954", |
| | | âdistributionIdsâ:"fcjaw-soifaw-2134-432", |
| | | "distributionNames":"pad1", |
| | | "photos":"group1/M00/01/90/wKgBy1wLa-qAA5cJAABHxJUyH0A935.jpg", |
| | | "featureBase64 ":"kQZbUt48zxqUQfwv/r2mYfCz//+==" |
| | | } |
| | | ] |
| | | |
| | | è¯·æ±æ¹æ³ä¸ºpostï¼ä»¥jsonæ ¼å¼ä¼ è¾ï¼æ¯ææ¹éä¸ä¼ |
| | | ç®åçip为203 |
| | | æ¥å£è·¯å¾ï¼IPï¼3697/addPerson/uploadToTemporary |
| | | |
| | | |
| | | --- |
| | | |
| | | |
| | | |
| | | |
| | | |
| | |
| | | "error": ["erlang is null"] |
| | | } |
| | | |
| | | #TODO 叿§ |
| | | å建åºåº createDatabase |
| | | ä¸åï¼ |
| | | { |
| | | "createBy","", //å建è
/åæè®¾å¤analyDev.叿§å¹³å°conCemter |
| | | "TableType": "person", //表类åperson/car |
| | | "TableName": "test", //表å |
| | | "SyncType": "1", //åæ¥ç±»å1忥/0æ¬å°åº |
| | | "BwType": "1", //é»ç½åå1é»åå/0ç½åå |
| | | "SyncType": "1", //åæ¥ç±»å 1忥/0æ¬å°åº |
| | | "BwType": "1", //é»ç½åå 1é»åå/0ç½åå |
| | | "StartTime": "2018-01-01 01:02:00", //å¼å§æ¶é´ |
| | | "EndTime": "2018-12-31 01:02:00" //ç»ææ¶é´ |
| | | "IsSync":"", // æ¯å¦åæ¥å°åå°ä¸´æ¶åº 1 æ¯ 0 䏿¯ |
| | | "threshold":0-100, // å¾çéå¼ 0-100 |
| | | "enabled":"1", // æ¯å¦å¯ç¨ 1å¯ç¨ 0æªå¯ç¨ |
| | | "uuid":"uuid-åºåºid" |
| | | } |
| | | è¿åï¼ |
| | | { |
| | | "results": "1" //0失败1æå |
| | | "results": "1", //0失败1æå |
| | | } |
| | | éè¯¯ï¼ |
| | | { |
| | | "error": ["erlang is null"||"err_json"] |
| | | "error": "erlang is null/err_json/åºåºå·²åå¨" |
| | | } |
| | | |
| | | |
| | | #TODO 叿§ |
| | | æ´æ°åºåº updateDatabase |
| | | ä¸åï¼ |
| | | { |
| | | "createBy","", //å建è
/åæè®¾å¤analyDev.叿§å¹³å°conCemter |
| | | "uuid":"", //表uuid |
| | | "TableType": "person", //表类åperson/car |
| | | "TableName": "test", //表å |
| | |
| | | "BwType": "1", //é»ç½åå1é»åå/0ç½åå |
| | | "StartTime": "2018-01-01 01:02:00", //å¼å§æ¶é´ |
| | | "EndTime": "2018-12-31 01:02:00" //ç»ææ¶é´ |
| | | "IsSync":"", //æ¯å¦åæ¥å°åå°ä¸´æ¶åº 1 æ¯ 0 䏿¯ |
| | | "threshold":0-100, // å¾çéå¼ 0-100 |
| | | "enabled":"1" // æ¯å¦å¯ç¨ 1å¯ç¨ 0æªå¯ç¨ |
| | | } |
| | | // æ´æ° é null åæ®µå¼ |
| | | // 忢å¯ç¨æ¶ï¼è¿è¾¹ åªä¼ä¼ {"enabled":"0","uuid":""}ï¼æä»¥éè¦ä¸é¢çæ¡ä»¶ |
| | | è¿åï¼ |
| | | { |
| | | "results": "1" //0失败1æå |
| | | } |
| | | éè¯¯ï¼ |
| | | { |
| | | "error": ["erlang is null"||"err_json"] |
| | | "error": "erlang is null/err_json" |
| | | } |
| | | |
| | | #TODO 叿§ |
| | | å é¤åºåº deleteDatabase |
| | | ä¸åï¼ |
| | | { |
| | | "createBy","", //å建è
/åæè®¾å¤analyDev.叿§å¹³å°conCemter |
| | | "uuid":"", //表uuid |
| | | "TableType": "car", //表类åperson/car |
| | | "TableName": "test2", //表å |
| | |
| | | } |
| | | éè¯¯ï¼ |
| | | { |
| | | "error": ["erlang is null"||"err_json"] |
| | | "error": "erlang is null/err_json/åºåºå·²åå¨" |
| | | } |
| | | |
| | | #å é¤ä¿®æ¹è¡¨æ¶,表åä¸å lt_;éè¦ä¼ SyncType åæ®µ |
| | | #å é¤ä¿®æ¹æ·»å æ¥è¯¢åºåºäººåæ°æ®æ¶,éè¦åºåºåç§°å lt_ |
| | | |
| | | # å é¤ä¿®æ¹æ·»å æ¥è¯¢åºåºäººåæ°æ®æ¶,éè¦åºåºåç§°å lt_ |
| | | |
| | | |
| | | æ¥æ¾åæ¥åºåº findAllDatabase |
| | | ä¸åï¼ |
| | | è¿åï¼ |
| | | [{ |
| | | "uuid": "e92a005e-fc19-56b5-8a23-53570bc270ae", //表uuid |
| | | "tableName": "test", //表å |
| | | "tableType": "person", //表类å |
| | | "bwType": "1", //é»ç½ååç±»å |
| | | "start_time": "2018-01-01 01:02:00", //å¼å§æ¶é´ |
| | | "end_time": "2018-12-31 01:02:00" //ç»ææ¶é´ |
| | | }] |
| | | éè¯¯ï¼ |
| | | { |
| | | "error": "erlang is null" |
| | | } |
| | | |
| | | æ¥æ¾åæ¥åºåº findLocalDatabase |
| | | ä¸åï¼æ |
| | | è¿åï¼ |
| | | [{ |
| | | "uuid": "e92a005e-fc19-56b5-8a23-53570bc270ae", //表uuid |
| | | "tableName": "test", //表å |
| | | "tableType": "person", //表类å |
| | | "bwType": "1", //é»ç½ååç±»å |
| | | "start_time": "2018-01-01 01:02:00", //å¼å§æ¶é´ |
| | | "end_time": "2018-12-31 01:02:00" //ç»ææ¶é´ |
| | | }] |
| | | éè¯¯ï¼ |
| | | { |
| | | "error": "erlang is null" |
| | | } |
| | | |
| | | #d |
| | | |
| | | å è½½åºåºæ°æ® loadFaceFeaData |
| | | #TODO 叿§ |
| | | æ·»å 人å addPerson ï¼img_urlåimg_base64äºéä¸ï¼ |
| | | ä¸åï¼ |
| | | { |
| | | "TableName":"test" //表å |
| | | } |
| | | è¿åï¼ |
| | | [{ |
| | | "uuid": "00b429d6-3746-57b9-8123-0dbf134731d2", //UUID |
| | | "tableName": "test", //表å |
| | | "idcard": "123456789012345678", //身份è¯å· |
| | | "imgUrl": "http://192.168.1.188/group1/M00/00/01/wKgBvFuOcuCAbYeQAB86k1llhSw841.jpg" |
| | | }, |
| | | { |
| | | "uuid": "0148cb5c-2232-5b02-9a00-f1f9a6b71de7", |
| | | "tableName": "test", |
| | | "idcard": "123456789012345678", |
| | | "imgUrl": "http://192.168.1.188/group1/M00/00/01/wKgBvFuOcuCADeQUABVsWlPEN7w947.jpg" |
| | | }, |
| | | { |
| | | "uuid": "01f20455-32bf-5c6e-b7b8-dea1395049a0", |
| | | "tableName": "test", |
| | | "idcard": "123456789012345678", |
| | | "imgUrl": "http://192.168.1.188/group1/M00/00/01/wKgBvFuOct-Aaz39ACP45aaRJUY002.jpg" |
| | | } |
| | | ] |
| | | éè¯¯ï¼ |
| | | { |
| | | "error": ["erlang is null"||"err_json"] |
| | | } |
| | | |
| | | |
| | | æ·»å æè
æ´æ°äººå addPerson |
| | | ä¸åï¼ |
| | | { |
| | | "createBy","", //å建è
/åæè®¾å¤analyDev.叿§å¹³å°conCemter |
| | | "enabled":"1", // æ¯å¦å¯ç¨ 1å¯ç¨ 0æªå¯ç¨ |
| | | "uuid": "", //æ·»å äººåæ¶è¯·ä¸ºç©º"" |
| | | "TableName": "test", //表å |
| | | "img_url ": "http: //192.168.1.188/group1/M00/00/01/wKgBvFuOcuGADRA_ABzanOgXxUE975.jpg", |
| | | "idcard : 123456789012345678", //身份è¯id |
| | | "img_base64 ": "" //å¾çbase64 |
| | | "TableId": "test", //表id |
| | | "TableName":"", //表å |
| | | "TableType":"person", //person |
| | | "BwType":"", //é»ç½åå1é»åå/0ç½åå |
| | | "SyncType":"1", //åæ¥ç±»å1忥/0æ¬å°åº |
| | | "img_url":"http: //192.168.1.188/group1/M00/00/01/wKgBvFuOcuGADRA_ABzanOgXxUE975.jpg", |
| | | "idcard":"123456789012345678", //èº«ä»½è¯æè¿° |
| | | "img_base64": "" //å¾çbase64ç |
| | | } |
| | | è¿åï¼ |
| | | { |
| | |
| | | "error": ["erlang is null"||"err_json"] |
| | | } |
| | | |
| | | #TODO 叿§ |
| | | æ´æ°äººå updatePerson |
| | | ä¸åï¼ |
| | | { |
| | | "createBy","", //å建è
/åæè®¾å¤analyDev.叿§å¹³å°conCemter |
| | | "enabled":"1", // æ¯å¦å¯ç¨ 1å¯ç¨ 0æªå¯ç¨ |
| | | "uuid": "", |
| | | "TableId": "test", //表id |
| | | "TableName":"", //表å |
| | | "TableType":"person", |
| | | "BwType":"", //é»ç½åå1é»åå/0ç½åå |
| | | "SyncType":"1", //åæ¥ç±»å1忥/0æ¬å°åº |
| | | "img_url":"http: //192.168.1.188/group1/M00/00/01/wKgBvFuOcuGADRA_ABzanOgXxUE975.jpg", |
| | | "idcard":"123456789012345678", //身份è¯id |
| | | "img_base64": "" //å¾çbase64ç |
| | | } |
| | | è¿åï¼ |
| | | { |
| | | "uuid": "82ee3b83-da2c-5d18-8cfa-f15e3ec4c9d4", |
| | | "img_url": "http://192.168.1.188/group1/M00/00/01/wKgBvFuOcuGADRA_ABzanOgXxUE975.jpg" |
| | | } |
| | | éè¯¯ï¼ |
| | | { |
| | | "error": ["erlang is null"||"err_json"] |
| | | } |
| | | |
| | | #TODO 叿§ |
| | | æ¥æ¾åæ¥åºåº findAllDatabase |
| | | ä¸åï¼ |
| | | è¿åï¼ |
| | | [{ |
| | | "uuid": "e92a005e-fc19-56b5-8a23-53570bc270ae", //表uuid |
| | | "tableName": "test", //表å |
| | | "tableType": "person", //表类å |
| | | "bwType": "1", //é»ç½ååç±»å |
| | | "start_time": "2018-01-01 01:02:00", //å¼å§æ¶é´ |
| | | "end_time": "2018-12-31 01:02:00", //ç»ææ¶é´ |
| | | "IsSync":"", //æ¯å¦åæ¥å°åå°ä¸´æ¶åº 1 æ¯ 0 䏿¯ |
| | | "threshold":0-100, // å¾çéå¼ 0-100 |
| | | "enabled":"1", // æ¯å¦å¯ç¨ 1å¯ç¨ 0æªå¯ç¨ |
| | | "createBy","" //å建è
/åæè®¾å¤analyDev.叿§å¹³å°conCemter |
| | | }] |
| | | éè¯¯ï¼ |
| | | { |
| | | "error": "erlang is null" |
| | | } |
| | | |
| | | #TODO 叿§ |
| | | æ¥æ¾åæ¥åºåº findLocalDatabase |
| | | ä¸åï¼æ |
| | | è¿åï¼ |
| | | [{ |
| | | "uuid": "e92a005e-fc19-56b5-8a23-53570bc270ae", //表uuid |
| | | "tableName": "test", //表å |
| | | "tableType": "person", //表类å |
| | | "bwType": "1", //é»ç½ååç±»å |
| | | "start_time": "2018-01-01 01:02:00", //å¼å§æ¶é´ |
| | | "end_time": "2018-12-31 01:02:00", //ç»ææ¶é´ |
| | | "IsSync":"", //æ¯å¦åæ¥å°åå°ä¸´æ¶åº 1 æ¯ 0 䏿¯ |
| | | "threshold":0-100, // å¾çéå¼ 0-100 |
| | | "enabled":"1", // æ¯å¦å¯ç¨ 1å¯ç¨ 0æªå¯ç¨ |
| | | "createBy","" //å建è
/åæè®¾å¤analyDev.叿§å¹³å°conCemter |
| | | }] |
| | | éè¯¯ï¼ |
| | | { |
| | | "error": "erlang is null" |
| | | } |
| | | |
| | | #TODO 叿§ |
| | | å è½½åºåºæ°æ® loadFaceFeaData |
| | | ä¸åï¼ |
| | | { |
| | | "TableName":"test" //表å |
| | | } |
| | | è¿åï¼ |
| | | [{ |
| | | "uuid": "00b429d6-3746-57b9-8123-0dbf134731d2", //UUID |
| | | "tableName": "test", //表å |
| | | "idcard": "123456789012345678", //身份è¯å· |
| | | "enabled":"1", // æ¯å¦å¯ç¨ 1å¯ç¨ 0æªå¯ç¨ |
| | | "imgUrl": "http://192.168.1.188/group1/M00/00/01/wKgBvFuOcuCAbYeQAB86k1llhSw841.jpg" |
| | | }, |
| | | { |
| | | "uuid": "0148cb5c-2232-5b02-9a00-f1f9a6b71de7", |
| | | "tableName": "test", |
| | | "idcard": "123456789012345678", |
| | | "enabled":"1", // æ¯å¦å¯ç¨ 1å¯ç¨ 0æªå¯ç¨ |
| | | "imgUrl": "http://192.168.1.188/group1/M00/00/01/wKgBvFuOcuCADeQUABVsWlPEN7w947.jpg" |
| | | }, |
| | | { |
| | | "uuid": "01f20455-32bf-5c6e-b7b8-dea1395049a0", |
| | | "tableName": "test", |
| | | "idcard": "123456789012345678", |
| | | "enabled":"1", // æ¯å¦å¯ç¨ 1å¯ç¨ 0æªå¯ç¨ |
| | | "imgUrl": "http://192.168.1.188/group1/M00/00/01/wKgBvFuOct-Aaz39ACP45aaRJUY002.jpg" |
| | | } |
| | | ] |
| | | éè¯¯ï¼ |
| | | { |
| | | "error": ["erlang is null"||"err_json"] |
| | | } |
| | | |
| | | #TODO 叿§ |
| | | æ·»å æè
æ´æ°äººå delPerson |
| | | ä¸åï¼ |
| | | { |
| | | "TableId": "test", //表id |
| | | "uuid": "", |
| | | "TableName": "test" //表å |
| | | "createBy","", //å建è
/åæè®¾å¤analyDev.叿§å¹³å°conCemter |
| | | } |
| | | è¿åï¼ |
| | | { |
| | |
| | | //#todo éåæ¥åºæ¯å¦éè¦æ¯è¾ï¼ |
| | | |
| | | DBG("m_faceFCMAP compare start " << it.first); |
| | | // 对æ¯åæ°,æåæºåæ°å叿§åºåæ°ï¼è°ä½æè°?ææ¶ä¸å |
| | | // if(){ |
| | | // } |
| | | // score |
| | | // 对æ¯å½æ° |
| | | t_FaceFC->compare(key, &featureData, topN); |
| | | t_FaceFC->compare(key, &featureData, topN,); |
| | | DBG("m_faceFCMAP compare end " << it.first); |
| | | // è·å对æ¯ç»æ |
| | | auto t_results = t_FaceFC->getTopResult(key); |
| | |
| | | * @param folderPath 任塿 ¹ç®å½ï¼ç¨äºåå
±äº«å
åid |
| | | * @param json åæ°ä¸ºrtspæµå°å sdkæ¯å¦å¯ç¨çæ è¯ |
| | | */ |
| | | // AppPipeController(std::string folderPath, const Json::Value &json); |
| | | AppPipeController(std::string folderPath, const SdkRuleMap& ruleMap); |
| | | // AppPipeController(std::string folderPath, const Json::Value &json); |
| | | AppPipeController(std::string folderPath, const SdkRuleMap &ruleMap); |
| | | |
| | | // AppPipeController(int index, const Json::Value &json, bool RecordVideoEnable = false); |
| | | // AppPipeController(int index, const Json::Value &json, bool RecordVideoEnable = false); |
| | | |
| | | // AppPipeController(std::string camId, const Json::Value &json, bool RecordVideoEnable); |
| | | // AppPipeController(std::string camId, const Json::Value &json, bool RecordVideoEnable); |
| | | |
| | | AppPipeController(std::string camId, const SdkRuleMap& ruleMap, bool RecordVideoEnable); |
| | | AppPipeController(std::string camId, const SdkRuleMap &ruleMap, bool RecordVideoEnable); |
| | | |
| | | virtual ~AppPipeController(); |
| | | |
| | |
| | | |
| | | void setfdfsClient(FastFdsWithLock *p_fdfsClient); |
| | | |
| | | void setWeekRule(const std::map<int, std::vector<LActRuleWeekRecord>>& weekRuleMap); |
| | | void setWeekRule(const std::map<int, std::vector<LActRuleWeekRecord>> &weekRuleMap); |
| | | |
| | | private: |
| | | void init(); |
| | | |
| | | private://Perimete |
| | | PerimeterElement perimeterElement; |
| | | // TriggerElement peTriggerElement; |
| | | // TriggerElement peTriggerElement; |
| | | |
| | | void initPerimeter(); |
| | | |
| | |
| | | |
| | | private: |
| | | PerStaticElement perStaticElement; |
| | | |
| | | void initPerStatic(); |
| | | |
| | | private://Perimete |
| | | PerimeterElement perHubElement; |
| | | // TriggerElement peTriggerElement; |
| | | // TriggerElement peTriggerElement; |
| | | |
| | | void initPerHub(); |
| | | |
| | | private: |
| | | ffmpeg::VideoCaptureElement videoCaptureElement; |
| | | YoloRpcElement yoloRpcElement; |
| | | FaceRpcElement faceRpcElement; |
| | | FaceExtractElement faceExtractElement; |
| | |
| | | std::map<int, std::vector<LActRuleWeekRecord>> m_weekRuleMap; |
| | | SdkRuleMap m_sdkRuleMap; |
| | | std::string m_localIp; |
| | | |
| | | std::string getFullFileName(); |
| | | |
| | | std::mutex mutex; |
| | | }; |
| | | |
| | |
| | | #include <jsoncpp/json/json.h> |
| | | |
| | | #define ALARM_PERCENT (10) //10% |
| | | |
| | | PerimeterElement::PerimeterElement(const SdkRule &rule) : |
| | | m_sdkRule(rule), |
| | | PipeElement(true), |
| | | trackingTrigger(nullptr), |
| | | mRealNum(0), |
| | | m_triggerElement(rule.nTriggerDelay*8,0), |
| | | m_triggerElement(rule.nTriggerDelay * 8, 0), |
| | | pManagerEsDB(nullptr), |
| | | m_bIsMask(true) |
| | | { |
| | | m_bIsMask(true) { |
| | | |
| | | pManagerEsDB = new EsDBTool(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort")); |
| | | } |
| | |
| | | // DBG("picDate="<<picDate); |
| | | |
| | | } |
| | | if (m_sdkRule.nSdkType == PerimeterSdk) |
| | | { |
| | | if (m_sdkRule.nSdkType == PerimeterSdk) { |
| | | |
| | | if(m_bIsMask) |
| | | { |
| | | std::vector<Point> poly2; |
| | | std::vector<Point> interPoly; |
| | | poly2.push_back(Point(rect.x(),rect.y())); |
| | | poly2.push_back(Point(rect.x()+rect.width(),rect.y())); |
| | | poly2.push_back(Point(rect.x()+rect.width(),rect.y()+rect.height())); |
| | | poly2.push_back(Point(rect.x(),rect.y()+rect.height())); |
| | | IntAreaCalcUtil::PolygonClip(poly1,poly2,interPoly); |
| | | float inter = IntAreaCalcUtil::intAreaCalc(interPoly); |
| | | float total1 =IntAreaCalcUtil::intAreaCalc(poly1); |
| | | float total2 = IntAreaCalcUtil::intAreaCalc(poly2); |
| | | int per1 = (int)(inter / total1 * 100); |
| | | int per2 = (int)(inter / total2 * 100); |
| | | int per=std::max(per1,per2); |
| | | if (m_bIsMask) { |
| | | std::vector<Point> poly2; |
| | | std::vector<Point> interPoly; |
| | | poly2.push_back(Point(rect.x(), rect.y())); |
| | | poly2.push_back(Point(rect.x() + rect.width(), rect.y())); |
| | | poly2.push_back(Point(rect.x() + rect.width(), rect.y() + rect.height())); |
| | | poly2.push_back(Point(rect.x(), rect.y() + rect.height())); |
| | | IntAreaCalcUtil::PolygonClip(poly1, poly2, interPoly); |
| | | float inter = IntAreaCalcUtil::intAreaCalc(interPoly); |
| | | float total1 = IntAreaCalcUtil::intAreaCalc(poly1); |
| | | float total2 = IntAreaCalcUtil::intAreaCalc(poly2); |
| | | int per1 = (int) (inter / total1 * 100); |
| | | int per2 = (int) (inter / total2 * 100); |
| | | int per = std::max(per1, per2); |
| | | |
| | | if(ALARM_PERCENT <= per) |
| | | { |
| | | //DBG("per 1="<<per1<<" per2="<<per2<<" per="<<per); |
| | | m_recVec.push_back(obj.rect); |
| | | num++; |
| | | } |
| | | if (ALARM_PERCENT <= per) { |
| | | //DBG("per 1="<<per1<<" per2="<<per2<<" per="<<per); |
| | | m_recVec.push_back(obj.rect); |
| | | num++; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | else if (mPolygon.containsPoint(center, Qt::OddEvenFill) || !m_bIsMask) |
| | | { |
| | | } else if (mPolygon.containsPoint(center, Qt::OddEvenFill) || !m_bIsMask) { |
| | | m_recVec.push_back(obj.rect); |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | switch (m_sdkRule.nSdkType) { |
| | | case PerimeterSdk: |
| | | //state = num > 0 ; |
| | | state =( num !=mRealNum); |
| | | // DBG("num="<<num<< "time="<< picDate); |
| | | state = (num != mRealNum); |
| | | // DBG("num="<<num<< "time="<< picDate); |
| | | |
| | | |
| | | break; |
| | | case CrowdSdk: |
| | | state = num > m_sdkRule.nAlarmNumLowerLimit && num !=mRealNum; |
| | | state = num > m_sdkRule.nAlarmNumLowerLimit && num != mRealNum; |
| | | |
| | | break; |
| | | case PerHubSdk: |
| | | state = num > m_sdkRule.nAlarmNumLowerLimit && num < m_sdkRule.nAlarmNumUpperLimit && num !=mRealNum; |
| | | state = num > m_sdkRule.nAlarmNumLowerLimit && num < m_sdkRule.nAlarmNumUpperLimit && num != mRealNum; |
| | | |
| | | |
| | | // if(m_sdkRule.nAlarmNumLowerLimit>=0) |
| | |
| | | |
| | | m_triggerElement.setState(state); |
| | | m_triggerElement.triggerOnce(); |
| | | if (m_triggerElement.getTriggerState() ) |
| | | { |
| | | if(num > 0) { |
| | | if (m_triggerElement.getTriggerState()) { |
| | | if (num > 0) { |
| | | cv::Mat t_image = image(CutMask()).clone(); |
| | | if(t_image.empty()) |
| | | { |
| | | if (t_image.empty()) { |
| | | DBG("t_image empty"); |
| | | return; |
| | | } |
| | |
| | | void PerimeterElement::setMask(std::string mask) { |
| | | QJsonArray arrayAreas = getJsonArrayFromQString(QString::fromStdString(mask)); |
| | | if (arrayAreas.isEmpty() && m_sdkRule.nSdkType != PerimeterSdk) { |
| | | m_bIsMask=false; |
| | | m_bIsMask = false; |
| | | return;//do not detect |
| | | } |
| | | int size = arrayAreas.size(); |
| | |
| | | QJsonObject obj = jsonValue.toObject(); |
| | | int x = obj.value("x").toDouble() * 4; |
| | | int y = obj.value("y").toDouble() * 4; |
| | | if(m_sdkRule.nSdkType == PerimeterSdk) |
| | | { |
| | | poly1.push_back(Point(x,y)); |
| | | if (m_sdkRule.nSdkType == PerimeterSdk) { |
| | | poly1.push_back(Point(x, y)); |
| | | } else { |
| | | mPolygon << (QPoint(x, y)); |
| | | } |
| | | else |
| | | { |
| | | mPolygon << (QPoint(x, y)); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | CvUtil::cvMat2Buffer(image, buffer); |
| | | std::string strImgUrlTmp = ""; |
| | | fdfsClient->fastFds->uploadFile(buffer, strImgUrlTmp, "jpg"); |
| | | // strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp); |
| | | // strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp); |
| | | strImgUrl.clear(); |
| | | strImgUrl = strImgUrlTmp; |
| | | // strImgUrl.append("/").append(strImgUrlTmp); |
| | |
| | | t_json["ChannlId"] = getProperty("ch_id"); // ééid |
| | | t_json["likeDate"] = AppUtil::getTimeSecString(); // æ¯å¯¹æ¶é´ |
| | | t_json["picAddress"] = m_sdkRule.strAddr.toStdString();// ææå°å |
| | | DBG("picAddress="<<m_sdkRule.strAddr.toStdString()); |
| | | DBG("picAddress=" << m_sdkRule.strAddr.toStdString()); |
| | | t_json["picMaxUrl"] = "wait todo"; // 大å¾è·¯å¾ |
| | | |
| | | |
| | | // t_json["Age"] ="wait todo"; |
| | | t_json["picDate"] = time; // æææ¶é´ï¼å¿
é¡»æ |
| | | DBG("picDate="<<time); |
| | | DBG("picDate=" << time); |
| | | t_json["picLocalUrl"] = "wait todo"; // æ¬å°è·¯å¾ |
| | | t_json["isDelete"] = "1";//é»è®¤1 ,0æ æ 1ææ |
| | | |
| | |
| | | // DBG("RECT x="<<rect.x<<"y"<<rect.y<<"w"<<rect.width<<"h"<<rect.height); |
| | | return rect; |
| | | } |
| | | bool PerimeterElement::isAnd() |
| | | { |
| | | |
| | | bool PerimeterElement::isAnd() { |
| | | |
| | | } |
| | |
| | | { |
| | | "DEV_ID" : "DSVAD010120181119", |
| | | "ES_IP" : "192.168.1.122", |
| | | "ES_PORT" : 9200, |
| | | "FaceDetectionSampleSize" : 720, |
| | | "FaceSeachSleepTime" : 60, |
| | | "TotalLoadSize" : "500", |
| | | "buildAddr" : "/home/bsk/Apps/QiaoJiaSystem/build/", |
| | | "clusterID" : "", |
| | | "cutPath" : "/home/bsk/work/qiaojia/cut", |
| | | "encode_thread_num" : 3, |
| | | "erlCookie" : "123", |
| | | "erlFatherNode" : " ", |
| | | "erlNode" : "f6d7d984-858e-4235-a657-644927b3a628@192.168.1.148", |
| | | "erlPath" : "/opt/erlang/f6d7d984-858e-4235-a657-644927b3a628", |
| | | "loadPath" : "/home/bsk/work/qiaojia/load", |
| | | "localPasswd" : "123456", |
| | | "logPath" : "/home/bsk/work/log/", |
| | | "mainServerIp" : "192.168.1.182", |
| | | "mainServerPort" : "3697", |
| | | "netIfName" : "enp3s0", |
| | | "redis_buf_len" : 750, |
| | | "redis_ip" : "127.0.0.1", |
| | | "srsAddr" : "rtmp://192.168.1.122:1934/live/", |
| | | "webPort" : 11111 |
| | | "DEV_ID": "DSVAD010120181119", |
| | | "ES_IP": "192.168.1.122", |
| | | "ES_PORT": 9200, |
| | | "FaceDetectionSampleSize": 720, |
| | | "FaceSeachSleepTime": 60, |
| | | "TotalLoadSize": "500", |
| | | "buildAddr": "/home/bsk/Apps/QiaoJiaSystem/build/", |
| | | "clusterID": "", |
| | | "cutPath": "/home/bsk/work/qiaojia/cut", |
| | | "encode_thread_num": 3, |
| | | "erlCookie": "123", |
| | | "erlFatherNode": " ", |
| | | "erlNode": "f6d7d984-858e-4235-a657-644927b3a628@192.168.1.148", |
| | | "erlPath": "/opt/erlang/f6d7d984-858e-4235-a657-644927b3a628", |
| | | "loadPath": "/home/bsk/work/qiaojia/load", |
| | | "localPasswd": "123456", |
| | | "logPath": "/home/bsk/work/log/", |
| | | "mainServerIp": "192.168.1.182", |
| | | "mainServerPort": "3697", |
| | | "mainServerrUrl": "/addPerson/uploadToTemporary", |
| | | "addFromAnalyUrl":"192.168.1.182:3699/data/api-c/taskUser/addFromAnaly", |
| | | "netIfName": "enp3s0", |
| | | "redis_buf_len": 750, |
| | | "redis_ip": "127.0.0.1", |
| | | "srsAddr": "rtmp://192.168.1.122:1934/live/", |
| | | "webPort": 11111 |
| | | } |
New file |
| | |
| | | ##jsonæä»¶æ¨¡æ¿ååæ°å«ä¹ |
| | | |
| | | { |
| | | "DEV_ID" : "DSVAD010120181119", |
| | | "clusterID" : "", |
| | | "webPort" : 11111, |
| | | "netIfName" : "enp3s0", |
| | | "localPasswd" : "123456", |
| | | "ES_IP" : "192.168.1.122", |
| | | "ES_PORT" : 9200, |
| | | "mainServerIp" : "192.168.1.182", |
| | | "mainServerPort" : "3697", |
| | | "mainServerrUrl" : "/addPerson/uploadToTemporary", |
| | | "TotalLoadSize" : "500", |
| | | "buildAddr" : "/home/bsk/Apps/QiaoJiaSystem/build/", |
| | | "cutPath" : "/home/bsk/work/qiaojia/cut", |
| | | "loadPath" : "/home/bsk/work/qiaojia/load", |
| | | "logPath" : "/home/bsk/work/log/", |
| | | "FaceDetectionSampleSize" : 720, |
| | | "FaceSeachSleepTime" : 60, |
| | | "encode_thread_num" : 3, |
| | | "erlCookie" : "123", |
| | | "erlFatherNode" : " ", |
| | | "erlNode" : "f6d7d984-858e-4235-a657-644927b3a628@192.168.1.148", |
| | | "erlPath" : "/opt/erlang/f6d7d984-858e-4235-a657-644927b3a628", |
| | | "redis_buf_len" : 750, |
| | | "redis_ip" : "127.0.0.1", |
| | | "srsAddr" : "rtmp://192.168.1.122:1934/live/" |
| | | } |
| | | |
| | | ---- |
| | | ---- |
| | | * DEV_ID |
| | | >设å¤id |
| | | |
| | | * clusterID |
| | | >é群id |
| | | |
| | | * webPort |
| | | >webserverç»javaæ¥å£çç«¯å£ |
| | | |
| | | * netIfName |
| | | >å½åæºå¨çç½ç»åï¼ä¾¿äºæ¥è¯¢ipå°åç |
| | | |
| | | * localPasswd |
| | | >å½åæºå¨çç¨æ·åçå¯ç ? |
| | | |
| | | --- |
| | | * ES_IP |
| | | >esé群çip |
| | | |
| | | * ES_PORT |
| | | >esé群çç«¯å£ |
| | | --- |
| | | |
| | | --- |
| | | * mainServerIp |
| | | >人åä¸ä¼ çip |
| | | |
| | | * mainServerPort |
| | | >人åä¸ä¼ çç«¯å£ |
| | | |
| | | * mainServerrUrl |
| | | >人åä¸ä¼ çæ¥å£url |
| | | --- |
| | | |
| | | --- |
| | | * TotalLoadSize |
| | | >ä¸è½½æä»¶çæå¤§åå¨ç©ºé´ |
| | | |
| | | * buildAddr |
| | | >æ§è¡æä»¶çè·¯å¾ |
| | | |
| | | * cutPath |
| | | >è£åªæä»¶åå¨ç®å½ |
| | | |
| | | * loadPath |
| | | >ä¸è½½æä»¶åå¨ç®å½ |
| | | |
| | | * logPath |
| | | >æ¥å¿è·¯å¾ |
| | | --- |
| | | |
| | | * FaceDetectionSampleSize |
| | | > down sample size(image down sample) for detect image,if it is 0,will detect by original image. |
| | | > |
| | | > äººè¸æ£æµ |
| | | |
| | | * FaceSeachSleepTime |
| | | >人è¸å¯¹æ¯æå¡æ°æ®å·æ°å»¶è¿æ¶é´ |
| | | |
| | | --- |
| | | * encode_thread_num |
| | | >ç¼ç 线ç¨ä¸ªæ° |
| | | |
| | | * erlCookie |
| | | >erlangé群çcookie |
| | | |
| | | * erlFatherNode |
| | | >erlangé群主èç¹ |
| | | |
| | | * erlNode |
| | | >erlangèç¹åç§° |
| | | |
| | | * erlPath |
| | | >erlangèç¹æå¨è·¯å¾ |
| | | --- |
| | | |
| | | * redis_buf_len |
| | | >redis buf é¿åº¦ï¼ |
| | | |
| | | * redis_ip |
| | | >redis ip |
| | | |
| | | * srsAddr |
| | | >rtmpæ¨æµçåºç¡å°å |
| | | |
| | | |
| | | |
| | | |
| | | |
| | |
| | | t_feature_info.id = query.value(0).toString().toStdString(); |
| | | t_feature_info.img = query.value(1).toString().toStdString(); |
| | | t_feature_info.idcard = query.value(2).toString().toStdString(); |
| | | t_feature_info.enable = query.value(4).toString().toStdString(); |
| | | t_feature_info.enable = query.value(3).toString().toStdString(); |
| | | |
| | | dataCache.insert(std::make_pair(t_feature_info.id, t_feature_info)); |
| | | } |