diff --git a/Filter/Filter.pro b/Filter/Filter.pro index d298184..1b831f4 100644 --- a/Filter/Filter.pro +++ b/Filter/Filter.pro @@ -11,11 +11,12 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = Filter TEMPLATE = app -SOURCES += main.cpp\ +SOURCES += main.cpp \ widget.cpp \ ../Json/sjson.cpp -HEADERS += widget.h \ +HEADERS += widget.h \ ../Json/sjson.h \ - ../common.h + ../common.h \ + diff --git a/Filter/widget.cpp b/Filter/widget.cpp index 23c1086..45132d9 100644 --- a/Filter/widget.cpp +++ b/Filter/widget.cpp @@ -14,18 +14,8 @@ #include "../json/sjson.h" #include "../common.h" -//#define D_DB_WEB_HOST "db.big-bird.co.kr" -//#define D_DB_WEB_USER "concepters" -//#define D_DB_WEB_PASS "con97996655" -//#define D_DB_WEB_NAME "dbconcepters" - -//#define D_DB_WEB_HOST "192.168.0.82" -//#define D_DB_WEB_USER "root" -//#define D_DB_WEB_PASS "1234" -//#define D_DB_WEB_NAME "dbconcepters" - -Widget::Widget(QWidget *parent) : C_MAP_REAL_BODY (0x01) , C_MAP_REAL_REPLY (0x02) , - QWidget(parent) ,m_nIDMax (0) , m_nNickMax (0) , m_nCommunityMax (0) +Widget::Widget(QWidget *parent) : + QWidget(parent) { QVBoxLayout *vMainLayout = new QVBoxLayout; { @@ -43,29 +33,84 @@ Widget::Widget(QWidget *parent) : C_MAP_REAL_BODY (0x01) , C_MAP_REAL_REPLY (0x0 hLayout->addLayout(vLayout); } connect(&m_plw[E_LIST_COMPANY],SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),this,SLOT(CompanyItemChanged(QListWidgetItem*,QListWidgetItem*))); - connect(&m_plw[E_LIST_DATA],SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(DataItemClicked(QListWidgetItem*))); vMainLayout->addLayout(hLayout); } { QHBoxLayout *hLayout = new QHBoxLayout; { QVBoxLayout *vLayout = new QVBoxLayout; - vLayout->addWidget(new QLabel("Filter Process")); - m_plwFilterProcess = new QListWidget; - vLayout->addWidget(m_plwFilterProcess); + { + QHBoxLayout *h_0_Layout = new QHBoxLayout; + { + QVBoxLayout *v_0_Layout = new QVBoxLayout; + v_0_Layout->addWidget(new QLabel("Filter Process Group")); + m_plwFilterProcessGroup = new QListWidget; + connect(m_plwFilterProcessGroup,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(FilterProcessGroupClicked(QListWidgetItem*))); + v_0_Layout->addWidget(m_plwFilterProcessGroup); + m_pleFilterProcessGroup = new QLineEdit; + v_0_Layout->addWidget(m_pleFilterProcessGroup); + { + QHBoxLayout *hSubLayout = new QHBoxLayout; + QPushButton *ppbInsert = new QPushButton("Insert"); + connect(ppbInsert, SIGNAL(released()),this, SLOT(on_filter_process_group_insert())); + hSubLayout->addWidget(ppbInsert); + QPushButton *ppbDelete = new QPushButton("Delete"); + connect(ppbDelete, SIGNAL(released()),this, SLOT(on_filter_process_group_delete())); + hSubLayout->addWidget(ppbDelete); + QPushButton *ppbModify = new QPushButton("Modify"); + connect(ppbModify, SIGNAL(released()),this, SLOT(on_filter_process_group_modify())); + hSubLayout->addWidget(ppbModify); + v_0_Layout->addLayout(hSubLayout); + } + h_0_Layout->addLayout(v_0_Layout); + } + + { + QVBoxLayout *v_0_Layout = new QVBoxLayout; + v_0_Layout->addWidget(new QLabel("Process List")); + m_plwProcess = new QListWidget; + v_0_Layout->addWidget(m_plwProcess); + { + QHBoxLayout *hSubLayout = new QHBoxLayout; + QPushButton *ppbInsert = new QPushButton("Insert"); + connect(ppbInsert, SIGNAL(released()),this, SLOT(on_process_insert())); + hSubLayout->addWidget(ppbInsert); + QPushButton *ppbDelete = new QPushButton("Delete"); + connect(ppbDelete, SIGNAL(released()),this, SLOT(on_process_delete())); + hSubLayout->addWidget(ppbDelete); + v_0_Layout->addLayout(hSubLayout); + } + h_0_Layout->addLayout(v_0_Layout); + } + vLayout->addLayout(h_0_Layout); + + { + vLayout->addWidget(new QLabel("Filter Process")); + m_plwFilterProcess = new QListWidget; + vLayout->addWidget(m_plwFilterProcess); + } + } { QHBoxLayout *hLayoutEdit = new QHBoxLayout; + { + QPushButton *ppbLoad = new QPushButton("Load"); + connect(ppbLoad, SIGNAL(released()),this, SLOT(on_load())); + hLayoutEdit->addWidget(ppbLoad); + } + { + QPushButton *ppbCategory = new QPushButton("Category Make"); + connect(ppbCategory, SIGNAL(released()),this, SLOT(on_category())); + hLayoutEdit->addWidget(ppbCategory); + } + { + QPushButton *ppbSend = new QPushButton("Send"); + connect(ppbSend, SIGNAL(released()),this, SLOT(on_send())); + hLayoutEdit->addWidget(ppbSend); + } { QPushButton *ppbCount = new QPushButton("Influence Count"); connect(ppbCount, SIGNAL(released()),this, SLOT(on_influence_count())); hLayoutEdit->addWidget(ppbCount); - } - { - /* - QPushButton *ppbCount = new QPushButton("Consumer Supervison Count"); - connect(ppbCount, SIGNAL(released()),this, SLOT(on_consumer_supervison_count())); - hLayoutEdit->addWidget(ppbCount); - */ } { QPushButton *ppbCount = new QPushButton("Spammers Count"); @@ -77,17 +122,21 @@ Widget::Widget(QWidget *parent) : C_MAP_REAL_BODY (0x01) , C_MAP_REAL_REPLY (0x0 connect(ppbCount, SIGNAL(released()),this, SLOT(on_power_cafe_count())); hLayoutEdit->addWidget(ppbCount); } - - QPushButton *ppbInsert = new QPushButton("Insert"); - connect(ppbInsert, SIGNAL(released()),this, SLOT(on_insert())); - hLayoutEdit->addWidget(ppbInsert); - QPushButton *ppbSend = new QPushButton("Send"); - connect(ppbSend, SIGNAL(released()),this, SLOT(on_send())); - hLayoutEdit->addWidget(ppbSend); + { + //QPushButton *ppbCount = new QPushButton("Consumer Supervison Count"); + //connect(ppbCount, SIGNAL(released()),this, SLOT(on_consumer_supervison_count())); + //hLayoutEdit->addWidget(ppbCount); + } + { + QPushButton *ppbDelete = new QPushButton("Delete"); + connect(ppbDelete, SIGNAL(released()),this, SLOT(on_delete())); + hLayoutEdit->addWidget(ppbDelete); + } vLayout->addLayout(hLayoutEdit); } hLayout->addLayout(vLayout); } + { QVBoxLayout *vLayout = new QVBoxLayout; vLayout->addWidget(new QLabel("Log")); @@ -106,26 +155,23 @@ Widget::Widget(QWidget *parent) : C_MAP_REAL_BODY (0x01) , C_MAP_REAL_REPLY (0x0 vMainLayout->addWidget(ppbSend); connect(ppbSend, SIGNAL(released()),this, SLOT(on_send())); */ - //connect(&m_timer, SIGNAL(timeout()), this, SLOT(Update())); + connect(&m_timer, SIGNAL(timeout()), this, SLOT(time_update())); //m_pThread = new SGetThread; setLayout(vMainLayout); - //m_pPutThread = new SPutThread[QThread::idealThreadCount()]; - m_nMode = 0; - if (ReloadColumn() == false) - { - QMessageBox::critical(this,"Error","column.txt do not find",QMessageBox::Ok); - exit(0); - return; - } - - db = QSqlDatabase::addDatabase("QMYSQL"); - //m_timer.start(100); + //m_pPutThread = new SPutThread[QThread::idealThreadCount()]; + m_db = QSqlDatabase::addDatabase("QMYSQL"); + m_timer.start(5000); Refresh(); - FilterProcssRefresh(); + for(int i = 0; i < D_PROCESS_MAX ;i++) + { + connect(&m_aProcess[i],SIGNAL(readyReadStandardOutput()),SLOT(process_output())); + } } Widget::~Widget() { + for (int i = 0; i < D_PROCESS_MAX;i++) + Kill(i); exit(0); } @@ -147,13 +193,13 @@ void Widget::InsertLog(QString str) void Widget::Refresh() { - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - if (db.open() == false) + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + if (m_db.open() == false) { - InsertLog(db.lastError().text()); + InsertLog(m_db.lastError().text()); return; } @@ -177,16 +223,34 @@ void Widget::Refresh() pItem->setData(Qt::UserRole, QVariant(query.value(0))); } } - db.close(); - - db.setHostName(D_DB_WEB_HOST); - db.setUserName(D_DB_WEB_USER); - db.setPassword(D_DB_WEB_PASS); - db.setDatabaseName(D_DB_WEB_NAME); - - if (db.open() == false) { - InsertLog(db.lastError().text()); + m_plwFilterProcessGroup->clear(); + QSqlQuery query("select id,name,state from filterprocessgroup"); + while (query.next()) + { + QString str; + str = query.value(1).toString(); + /*switch(query.value(2).toInt()) + { + case 0:str += " (idle)";break; + case 1:str += " (warking)";break; + } + */ + QListWidgetItem *pItem = new QListWidgetItem(str,m_plwFilterProcessGroup); + pItem->setData(Qt::UserRole, QVariant(query.value(0))); + } + } + m_db.close(); + FilterProcssRefresh("-1"); + + m_db.setHostName(D_DB_WEB_HOST); + m_db.setUserName(D_DB_WEB_USER); + m_db.setPassword(D_DB_WEB_PASS); + m_db.setDatabaseName(D_DB_WEB_NAME); + + if (m_db.open() == false) + { + InsertLog(m_db.lastError().text()); return; } @@ -198,45 +262,19 @@ void Widget::Refresh() pItem->setData(Qt::UserRole, QVariant(query.value(0))); } } - - m_mapPlatformform.clear(); - m_mapPlatformname.clear(); - { - QSqlQuery query("select num,form FROM platformform"); - while(query.next()) - m_mapPlatformform.insert(query.value(1).toString(),query.value(0).toInt()); - } - { - QSqlQuery query("select num,name FROM platformname"); - while(query.next()) - m_mapPlatformname.insert(query.value(1).toString(),query.value(0).toInt()); - } - - { - QSqlQuery query; - if(query.exec("select max(num) from id") == false) {InsertLog(query.lastError().text());} - if(query.next()) - m_nIDMax = query.value(0).toInt() + 1; - if(query.exec("select max(num) from nickname") == false) {InsertLog(query.lastError().text());} - if(query.next()) - m_nNickMax = query.value(0).toInt() + 1; - if(query.exec("select max(num) from community") == false) {InsertLog(query.lastError().text());} - if(query.next()) - m_nCommunityMax = query.value(0).toInt() + 1; - } - db.close(); + m_db.close(); } void Widget::CompanyItemChanged(QListWidgetItem* _current,QListWidgetItem*) { if (_current == 0) return; - db.setHostName(D_DB_WEB_HOST); - db.setUserName(D_DB_WEB_USER); - db.setPassword(D_DB_WEB_PASS); - db.setDatabaseName(D_DB_WEB_NAME); - if (db.open() == false) + m_db.setHostName(D_DB_WEB_HOST); + m_db.setUserName(D_DB_WEB_USER); + m_db.setPassword(D_DB_WEB_PASS); + m_db.setDatabaseName(D_DB_WEB_NAME); + if (m_db.open() == false) { - InsertLog(db.lastError().text()); + InsertLog(m_db.lastError().text()); return; } m_plw[E_LIST_CATALOG].clear(); @@ -246,72 +284,189 @@ void Widget::CompanyItemChanged(QListWidgetItem* _current,QListWidgetItem*) QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString(),&m_plw[E_LIST_CATALOG]); pItem->setData(Qt::UserRole, QVariant(query.value(0))); } - db.close(); + m_db.close(); +} + +void Widget::on_filter_process_group_insert() +{ + if (m_pleFilterProcessGroup->text().trimmed().isEmpty()) return; + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + if (m_db.open() == false) InsertLog(m_db.lastError().text()); + QSqlQuery query; + QString strQuery; + strQuery = "insert into filterprocessgroup (name) value ('" + m_pleFilterProcessGroup->text() + "')"; + if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());} + m_db.close(); + + Refresh(); +} + +void Widget::on_filter_process_group_delete() +{ + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + if (m_db.open() == false) InsertLog(m_db.lastError().text()); + + foreach (QListWidgetItem *item,m_plwFilterProcessGroup->selectedItems()) + { + QSqlQuery query; + QString strQuery; + strQuery = "delete from filterprocessgroup where id = " + item->data(Qt::UserRole).toString(); + if(query.exec(strQuery.toUtf8()) == false) {qDebug() << strQuery ; InsertLog(query.lastError().text());} + strQuery = "delete from filterprocess where filterprocessgroup_id = " + item->data(Qt::UserRole).toString(); + if(query.exec(strQuery.toUtf8()) == false) {qDebug() << strQuery ; InsertLog(query.lastError().text());} + } + m_db.close(); + Refresh(); +} + +void Widget::on_filter_process_group_modify() +{ + if (m_pleFilterProcessGroup->text().trimmed().isEmpty()) return; + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + if (m_db.open() == false) InsertLog(m_db.lastError().text()); + + foreach (QListWidgetItem *item,m_plwFilterProcessGroup->selectedItems()) + { + QSqlQuery query; + QString strQuery; + strQuery = "update filterprocessgroup set name = '" + m_pleFilterProcessGroup->text().trimmed() + "' where id = " + item->data(Qt::UserRole).toString(); + if(query.exec(strQuery.toUtf8()) == false) {qDebug() << strQuery ; InsertLog(query.lastError().text());} + } + m_db.close(); + Refresh(); +} + +void Widget::FilterProcessGroupClicked(QListWidgetItem* _item) +{ + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + if (m_db.open() == false) + { + InsertLog(m_db.lastError().text()); + return; + } + m_pleFilterProcessGroup->setText(_item->text()); + FilterProcssRefresh(_item->data(Qt::UserRole).toString()); + m_db.close(); +} + +struct SFilterProcess +{ + QString m_strID; + QString m_strName; +}; + +void Widget::InsertFilterProcess(int _nProcessType) +{ + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + + if (m_db.open() == false) + { + InsertLog(m_db.lastError().text()); + return; + } + SFilterProcess astProcessFilter[E_LIST_MAX] = {{"datagroup_id","datagroup_name"}, + {"filtergroup_id","filtergroup_name"}, + {"company_num","company_name"}, + {"category_num","category_name"}}; + QSqlQuery query; + QString strSelect; + foreach (QListWidgetItem *itemProcessGroup,m_plwFilterProcessGroup->selectedItems()) + { + QString strQuery = "insert into filterprocess set "; + strQuery += "filterprocess_type = " + QString::number(_nProcessType) + ","; + strSelect = itemProcessGroup->data(Qt::UserRole).toString(); + strQuery += "filterprocessgroup_id = " + strSelect + ","; + for(int i = 0; i < E_LIST_MAX; i++) + { + foreach (QListWidgetItem *item,m_plw[i].selectedItems()) + { + strQuery += astProcessFilter[i].m_strID + "="; + strQuery += item->data(Qt::UserRole).toString() + ","; + strQuery += astProcessFilter[i].m_strName + "='"; + strQuery += item->text() + "',"; + } + } + strQuery = strQuery.left(strQuery.size()-1); + if(query.exec(strQuery.toUtf8()) == false) + { + InsertLog(query.lastError().text()); + qDebug() << strQuery; + } + } + m_db.close(); + if (strSelect.isEmpty() == false) + FilterProcssRefresh(strSelect); +} + +void Widget::on_start() +{ + +} + +void Widget::on_stop() +{ + +} + +void Widget::on_load() +{ + InsertFilterProcess(E_PROCSS_TYPE_LOAD); } void Widget::on_send() { - foreach (QListWidgetItem *item,m_plw[E_LIST_COMPANY].selectedItems()) - { - InsertLog("Data Send Run Start : " + item->text()); - DataPut(item->data(Qt::UserRole).toString()); - InsertLog("Data Send Run End "); - } + InsertFilterProcess(E_PROCSS_TYPE_SEND); } -void Widget::on_insert() +void Widget::on_category() { - /* - int aId[E_LIST_MAX]; - QString aStr[E_LIST_MAX]; - for (int i = 0; i < E_LIST_MAX;i++) - { - aId[i] = D_NONE; - foreach (QListWidgetItem *item,m_plw[i].selectedItems()) - { - aId[i] = item->data(Qt::UserRole).toInt(); - aStr[i] = item->text(); - } - if (aId[i] == D_NONE) return; - } - QStringList list; - list.append("0");//0 - list.append(QString::number(aId[E_LIST_DATA]));//1 - list.append(aStr[E_LIST_DATA]);//2 - list.append(QString::number(aId[E_LIST_FILTER]));//3 - list.append(aStr[E_LIST_FILTER]);//4 - list.append(QString::number(aId[E_LIST_COMPANY]));//5 - list.append(aStr[E_LIST_COMPANY]);// company_name 6 - list.append(aStr[E_LIST_CATALOG]);// category_name 7 - list.append(m_pleCycle->text()); - */ - ReloadData(); + InsertFilterProcess(E_PROCSS_TYPE_CATEGORY_MAKE); +} - foreach (QListWidgetItem *item,m_plw[E_LIST_FILTER].selectedItems()) - { - InsertLog("Data Filter Run Start : " + item->text()); - DataFilter(item->data(Qt::UserRole).toString()); - InsertLog("Data Filter Run End "); - } - foreach (QListWidgetItem *item,m_plw[E_LIST_CATALOG].selectedItems()) - { - InsertLog("Data Make Run Start : " + item->text()); - MakeBuzzy(item->data(Qt::UserRole).toInt()); - DataMake(item->data(Qt::UserRole).toInt()); - InsertLog("Data Make Run End "); - } - FilterProcssRefresh(); +void Widget::on_influence_count() +{ + InsertFilterProcess(E_PROCSS_TYPE_INFLUENCE_COUNT); +} + +void Widget::on_spammers_count() +{ + InsertFilterProcess(E_PROCSS_TYPE_SPAMMERS_COUNT); +} + +void Widget::on_power_cafe_count() +{ + InsertFilterProcess(E_PROCSS_TYPE_POWER_CAFE_COUNT); +} + +void Widget::on_consumer_supervison_count() +{ + //ConsumerSupervisionCount(); } void Widget::on_delete() { - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - if (db.open() == false) + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + if (m_db.open() == false) { - InsertLog(db.lastError().text()); + InsertLog(m_db.lastError().text()); return; } foreach (QListWidgetItem *item,m_plwFilterProcess->selectedItems()) @@ -323,26 +478,25 @@ void Widget::on_delete() InsertLog(query.lastError().text()); } } - db.close(); - FilterProcssRefresh(); + m_db.close(); + + foreach (QListWidgetItem *itemProcessGroup,m_plwFilterProcessGroup->selectedItems()) + FilterProcssRefresh(itemProcessGroup->data(Qt::UserRole).toString()); } -void Widget::FilterProcssRefresh() +void Widget::FilterProcssRefresh(QString _strGroupID) { - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - if (db.open() == false) + m_db.setHostName("bigbird.iptime.org"); + m_db.setUserName("admin"); + m_db.setPassword("admin123"); + m_db.setDatabaseName("concepters"); + if (m_db.open() == false) { - InsertLog(db.lastError().text()); + InsertLog(m_db.lastError().text()); return; } - - /* - QString sql("select id,datagroup_name,filtergroup_name,company_name,category_name,lastruntime from filterprocess"); + QString sql("select id,filterprocess_type,filterprocess_order,datagroup_id,datagroup_name,filtergroup_name,company_name,category_name from filterprocess where filterprocessgroup_id = " + _strGroupID); QSqlQuery query; - if(query.exec(sql) == false) { InsertLog(query.lastError().text()); @@ -351,1656 +505,122 @@ void Widget::FilterProcssRefresh() while(query.next()) { QString str; - str += "(Data : " + query.value(1).toString(); - str += ",Filter : " + query.value(2).toString(); - str += ") -> (Company : " + query.value(3).toString(); - str += ",Category : " + query.value(4).toString(); - str += ") (Cycle : " + query.value(5).toString(); - str += " sec, Last Run Time : " + query.value(6).toString() +")"; + switch(query.value(1).toInt()) + { + case E_PROCSS_TYPE_LOAD: + str += "Loading : Data ["; + str += query.value(4).toString(); + str += "]"; + break; + case E_PROCSS_TYPE_CATEGORY_MAKE: + str += "Category filter ["; + str += query.value(5).toString(); + str += "] Make Category ["; + str += query.value(7).toString(); + str += "]"; + break; + case E_PROCSS_TYPE_SEND: + str += "Send : Company ["; + str += query.value(6).toString(); + str += "]"; + break; + case E_PROCSS_TYPE_INFLUENCE_COUNT: + str += "Influence Count and Send : Company ["; + str += query.value(6).toString(); + str += "]"; + break; + case E_PROCSS_TYPE_SPAMMERS_COUNT: + str += "Spammers Count and Send : Company ["; + str += query.value(6).toString(); + str += "]"; + break; + case E_PROCSS_TYPE_POWER_CAFE_COUNT: + str += "Power Cafe Count filter [" ; + str += query.value(5).toString(); + str += "] and Send : Company ["; + str += query.value(6).toString(); + str += "]"; + break; + } QListWidgetItem *pItem = new QListWidgetItem(str,m_plwFilterProcess); pItem->setData(Qt::UserRole, QVariant(query.value(0))); } - */ - db.close(); - //datagroup,filtergroup company category cycletime , lastruntime -} - -QString Widget::SqlString(QString _str) -{ - _str.replace("\\","\\\\"); - _str.replace("'","\\'"); - _str.replace("\"","\\\""); - _str.replace(",","\\,"); - return _str; -} - -void Widget::Update() -{ -} - -void Widget::FilterDate(QString _strJson) -{ - SJson json; - int nSelect = json.Get(_strJson,"Article").toInt() - 1; - if (nSelect < 0) return; - m_bDataFlag[nSelect] = true; - QVector copyData; - QDate dateStart = QDate::fromString(json.Get(_strJson,"Start"),"yyyy-MM-dd"); - QDate dateEnd = QDate::fromString(json.Get(_strJson,"End"),"yyyy-MM-dd"); - foreach(QStringList strList , m_data[nSelect]) - { - bool bFlag = false; - QString strTime = strList.at(m_nDateColumn).trimmed(); - if (strTime.size() >= 10) - { - QChar ch = strTime.at(4); - QString strFormat = QString("yyyy")+ch+QString("MM")+ch+QString("dd"); - QDate date = QDate::fromString(strTime.left(10),strFormat); - if (dateStart <= date && dateEnd >= date) - bFlag = true; - } - if (bFlag) - copyData.push_back(strList); - } - m_data[nSelect].clear(); - m_data[nSelect] = copyData; -} - -void Widget::FilterLength(QString _strJson) -{ - SJson json; - int nSelect = json.Get(_strJson,"Article").toInt() - 1; - if (nSelect < 0) return; - m_bDataFlag[nSelect] = true; - - int nCatalog = json.GetNumber(_strJson,"Category"); - int nComp = json.GetNumber(_strJson,"Comp"); - int nFlag = json.GetNumber(_strJson,"InsDel"); - int nLength = json.Get(_strJson,"String").toInt(); - - QVector copyData; - foreach(QStringList strList , m_data[nSelect]) - { - bool bFlag = false; - int nCurrentLength = strList.at(nCatalog).trimmed().length(); - switch(nComp) - { - case E_LENGTH_COMP_GREATER: - if (nCurrentLength > nLength) - bFlag = true; - break; - case E_LENGTH_COMP_LESS: - if (nCurrentLength < nLength) - bFlag = true; - break; - case E_LENGTH_COMP_EQUAL: - if (nLength == nCurrentLength) - bFlag = true; - break; - } - if (nFlag == 1) bFlag = !bFlag; - if (bFlag) - copyData.push_back(strList); - } - m_data[nSelect].clear(); - m_data[nSelect] = copyData; -} - -void Widget::FilterReplace(QString _strJson) -{ - SJson json; - int nSelect = json.Get(_strJson,"Article").toInt() - 1; - if (nSelect < 0) return; - m_bDataFlag[nSelect] = true; - - int nCatalog = json.GetNumber(_strJson,"Category"); - QString strFind = json.Get(_strJson,"String_Find"); - QString strReplace = json.Get(_strJson,"String_Replace"); - - bool bFlag = false; - QStringList strListKeyword; - if (json.GetNumber(_strJson,"Find") == E_REPLACE_SPACE) - { - bFlag = true; - strListKeyword = strFind.split(" "); - } - - for (int i = 0 ; i < m_data[nSelect].size(); i++) - { - if (bFlag) - { - foreach(QString str,strListKeyword) - { - m_data[nSelect][i][nCatalog] = m_data[nSelect][i][nCatalog].replace(str,strReplace); - } - } - else - m_data[nSelect][i][nCatalog] = m_data[nSelect][i][nCatalog].replace(strFind,strReplace); - } -} - -void Widget::FilterSerach(QString _strJson) -{ - SJson json; - int nSelect = json.Get(_strJson,"Article").toInt() - 1; - if (nSelect < 0) return; - m_bDataFlag[nSelect] = true; - int nCategory = json.GetNumber(_strJson,"Category"); - int nMethod = json.GetNumber(_strJson,"Method"); - int nKeyword = json.GetNumber(_strJson,"Keyword"); - QStringList strListKeyword = json.Get(_strJson,"String").split(" "); - - if (nMethod == 1) - { - for (int i = 0 ; i < strListKeyword.size(); i++ ) - strListKeyword[i] = " " + strListKeyword[i] + " "; - } - - QVector copyData; - foreach(QStringList strList , m_data[nSelect]) - { - bool bFlag = false; - QString strData = strList.at(nCategory); - switch(nKeyword) - { - case 0: - { - foreach(QString strKey , strListKeyword) - if (strData.contains(strKey)){bFlag = true;break;} - break; - } - case 1: - { - int nKeyCount = 0; - foreach(QString strKey , strListKeyword) - if (strData.contains(strKey)) nKeyCount++; - if (nKeyCount == strListKeyword.size()) - bFlag = true; - break; - } - case 2: - { - bFlag = true; - foreach(QString strKey , strListKeyword) - if (strData.contains(strKey)){bFlag = false;break;} - break; - } - case 3: - { - foreach(QString strKey , strListKeyword) - strList[nCategory].replace(strKey,""); - bFlag = true; - break; - } - } - if (bFlag) copyData.push_back(strList); - } - m_data[nSelect].clear(); - m_data[nSelect] = copyData; -} - -void Widget::ReloadData() -{ - for (int i = 0; i < E_ARTICLE_MAX ; i++) - { - m_data[i].clear(); - m_bDataFlag[i] = false; - } - - foreach(SBody stBody, m_mapData.values()) - { - m_data[E_ARTICLE_BODY].push_back(stBody.m_strlist); - foreach(SReply stReply , stBody.m_vecReply.values()) - { - m_data[E_ARTICLE_REPLY].push_back(stReply.m_strlist); - } - } -} - -void Widget::DataFilter(QString _strFilterGroupID) -{ - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - - if (db.open() == false) - { - InsertLog(db.lastError().text()); - return; - } - QString sql = "select type,data from filter where filtergroup_id = " + _strFilterGroupID; - QSqlQuery query; - if(query.exec(sql) == false) { InsertLog(query.lastError().text());return;} - while (query.next()) - { - switch(query.value(0).toInt()) - { - case E_FILTER_TYPE_DATE://Date - FilterDate(query.value(1).toString()); - break; - case E_FILTER_TYPE_SEARCH: - FilterSerach(query.value(1).toString()); - break; - case E_FILTER_TYPE_LENGTH: - FilterLength(query.value(1).toString()); - break; - case E_FILTER_TYPE_REPLACE: - FilterReplace(query.value(1).toString()); - break; - } - } - db.close(); + m_db.close(); } void Widget::on_refresh() { Refresh(); - FilterProcssRefresh(); } -/* -void Widget::Update() -{ - switch(m_nMode) - { - case 1: - m_data.clear(); - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - if (db.open() == false) - { - InsertLog(db.lastError().text()); - return; - } - - foreach (QListWidgetItem *item,m_plw[E_LIST_DATA].selectedItems()) - { - m_pThread->SetData(QString("data_"+item->data(Qt::UserRole).toString()),&m_data); - } - m_pThread->start(); - m_nMode = 2; - InsertLog("Data Read Start"); - break; - case 2: - if (m_pThread->isRunning() == false) - { - db.close(); - InsertLog("Data Read End"); - InsertLog("Data Write Web Start"); - db.setHostName(D_DB_WEB_HOST); - db.setUserName(D_DB_WEB_USER); - db.setPassword(D_DB_WEB_PASS); - db.setDatabaseName(D_DB_WEB_NAME); - if (db.open() == false) - { - InsertLog(db.lastError().text()); - return; - } - db.exec("delete from data"); - qDebug() << QString::number(m_data.size()); - m_pPutThread[0].SetData("data",&m_data,0,m_data.size()); - m_pPutThread[0].start(); - m_nMode = 3; - } - break; - case 3: - if (m_pPutThread[0].isRunning() == false) - { - m_nMode = 0; - InsertLog("Data Write Web End"); - } - break; - } -} -*/ - -bool Widget::ReloadColumn() +void Widget::time_update() { - QVector vecColumn; - QFile file("column.txt"); - if (file.open(QIODevice::ReadOnly | QIODevice::Text) == false) return false; + m_plwProcess->clear(); + for(int i = 0; i < D_PROCESS_MAX; i++) { - while (!file.atEnd()) + if (m_aProcess[i].arguments().size() == 0) continue; + QString str = m_aProcess[i].arguments().at(1); + switch(m_aProcess[i].state()) { - QString str = QString(file.readLine()); - if (str.at(0) == QChar('#')) continue; - if (str.trimmed().isEmpty()) continue; - vecColumn.push_back(str.split(",")); + case QProcess::NotRunning: + str += "(Wait)"; + m_aProcess[i].start(); + break; + case QProcess::Running:str += "(Run)";break; + case QProcess::Starting:str += "(Start)";break; } - } - if (vecColumn.size() <= 0) return false; - - foreach(QStringList strList,vecColumn) - m_listDataBaseColumn.push_back(strList.at(E_COLUMN_DATABASE)); - - for(int i = 0; i < m_listDataBaseColumn.size(); i++) - { - if (m_listDataBaseColumn[i].trimmed() == QString("platform_title")) m_anData[E_DATA_platform_title] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("article_form")) m_anData[E_DATA_article_form] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("article_parent")) m_anData[E_DATA_article_parent] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("article_id")) m_anData[E_DATA_article_id] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("article_nickname")) m_anData[E_DATA_article_nickname] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("article_title")) m_anData[E_DATA_article_title] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("article_data")) m_anData[E_DATA_article_data] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("article_url")) m_anData[E_DATA_article_url] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("article_hit")) m_anData[E_DATA_article_hit] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("article_date")) m_anData[E_DATA_article_date] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("article_order")) m_anData[E_DATA_article_order] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("platform_id")) m_anData[E_DATA_platform_id] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("platform_name")) m_anData[E_DATA_platform_name] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("platform_form")) m_anData[E_DATA_platform_form] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("reply_url")) m_anData[E_DATA_reply_url] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("keyword_id")) m_anData[E_DATA_keyword_id] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("article_profileurl")) m_anData[E_DATA_article_profileurl] = i; - if (m_listDataBaseColumn[i].trimmed() == QString("article_profile")) m_anData[E_DATA_article_profile] = i; - } - - m_nUrlColumn = m_anData[E_DATA_article_url]; - m_nDateColumn = m_anData[E_DATA_article_date]; - m_nOrderColumn = m_anData[E_DATA_article_order]; - return true; + QListWidgetItem *pItem = new QListWidgetItem(str,m_plwProcess); + pItem->setData(Qt::UserRole, QVariant(m_aProcess[i].arguments().at(0))); + } } -QString Widget::GetCommunityKey(const QStringList _strList) +void Widget::on_process_insert() { - QString str; - str.append(_strList[m_anData[E_DATA_platform_form]].trimmed()); - str.append("."); - str.append(_strList[m_anData[E_DATA_platform_name]].trimmed()); - str.append(".com/"); - str.append(_strList[m_anData[E_DATA_platform_id]].trimmed()); - return str.trimmed(); -} - -void Widget::DataItemClicked(QListWidgetItem* item) -{ - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - - if (db.open() == false) + foreach(QListWidgetItem *item,m_plwFilterProcessGroup->selectedItems()) { - InsertLog(db.lastError().text()); - return; - } - - QSqlQuery query; - QString strSelect; - strSelect = "select "; - foreach (QString strColumn,m_listDataBaseColumn) - strSelect += "CONVERT(" + strColumn + " USING utf8),"; - strSelect = strSelect.left(strSelect.size() - 1); - strSelect += " from "; - strSelect += "data_" + item->data(Qt::UserRole).toString(); - - InsertLog("Start Loading data_" + item->data(Qt::UserRole).toString()); - m_strlistOrder.clear(); - m_mapData.clear(); - m_vecMap.clear(); - - m_mapID.clear(); - m_mapCommunity.clear(); - m_mapNickname.clear(); - - SId stID; - stID.m_nNum = m_nIDMax; - stID.m_nCommunity = m_nCommunityMax; - m_mapID.insert(" ",stID); - - SCommunity stCom; - stCom.m_nNum = m_nCommunityMax; - m_mapCommunity.insert(" ",stCom); - - QString astrWhere[E_ARTICLE_MAX] = {" where article_form = 'body' Order by article_date DESC"," where article_form = 'reply'"}; - for (int i = 0; i < E_ARTICLE_MAX ; i++) - { - if(query.exec(QString(strSelect + astrWhere[i]).toUtf8()) == false) {InsertLog(query.lastError().text());return;} - int nCount = 0; - while(query.next()) + QStringList strlist; + strlist.append(item->data(Qt::UserRole).toString()); + strlist.append(item->text().trimmed()); + for (int i = 0; i < D_PROCESS_MAX;i++) { - QStringList strList; - for(int j = 0; j < m_listDataBaseColumn.size(); j++) - strList << " " + query.value(j).toString() + " "; - QString strURL = strList[m_nUrlColumn].trimmed(); - switch(i) + if (m_aProcess[i].state() == QProcess::NotRunning) { - case E_ARTICLE_BODY: - { - if (m_mapData.contains(strURL) == false) - { - if (strList[m_anData[E_DATA_article_date]].trimmed().isEmpty()) continue; - if (strList[m_anData[E_DATA_article_id]].trimmed().isEmpty()) continue; - if (strList[m_anData[E_DATA_article_nickname]].trimmed().isEmpty()) continue; - if (strList[m_anData[E_DATA_platform_id]].trimmed().isEmpty()) continue; - SBody stBody; - stBody.m_date = QDateTime::fromString(strList[m_anData[E_DATA_article_date]].trimmed(),"yyyy-MM-dd HH:mm:ss").date(); - if (stBody.m_date < QDate::currentDate().addMonths(-3)) continue; - stBody.m_nNum = nCount++; - stBody.m_dtLast = QDateTime::fromString(strList[m_anData[E_DATA_article_date]].trimmed(),"yyyy-MM-dd HH:mm:ss"); - stBody.m_bSelect = false; - stBody.m_bReplySelect = false; - stBody.m_strlist = strList; - m_mapData.insert(strURL,stBody); - m_strlistOrder.push_back(strURL); - if (m_mapID.contains(strList[m_anData[E_DATA_article_id]].trimmed()) == false) - { - SId stID; - stID.m_nNum = m_mapID.size() + m_nIDMax; - stID.m_nCommunity = m_nCommunityMax; - stID.m_strID = strList[m_anData[E_DATA_article_id]].trimmed(); - if(m_mapPlatformname.contains(strList[m_anData[E_DATA_platform_name]].trimmed())) - stID.m_nPlatfromName = m_mapPlatformname[strList[m_anData[E_DATA_platform_name]].trimmed()]; - m_mapID.insert(stID.m_strID,stID); - } - if (m_mapNickname.contains(strList[m_anData[E_DATA_article_nickname]].trimmed()) == false) - { - SNickname stNick; - stNick.m_nNum = m_mapNickname.size() + m_nNickMax; - stNick.m_strNickname = strList[m_anData[E_DATA_article_nickname]].trimmed(); - stNick.m_nID = m_nIDMax; - m_mapNickname.insert(stNick.m_strNickname,stNick); - } - QString strKey = GetCommunityKey(strList); - if (m_mapCommunity.contains(strKey) == false) - { - SCommunity stCom; - stCom.m_nNum = m_mapCommunity.size() + m_nCommunityMax; - stCom.m_strID = strList[m_anData[E_DATA_platform_id]].trimmed(); - stCom.m_strTitle = strList[m_anData[E_DATA_platform_title]].trimmed(); - if(m_mapPlatformname.contains(strList[m_anData[E_DATA_platform_name]].trimmed())) - stCom.m_nPlatformname = m_mapPlatformname[strList[m_anData[E_DATA_platform_name]].trimmed()]; - else - continue; - if(m_mapPlatformform.contains(strList[m_anData[E_DATA_platform_form]].trimmed())) - stCom.m_nPlatformform = m_mapPlatformform[strList[m_anData[E_DATA_platform_form]].trimmed()]; - else - continue; - if (strList[m_anData[E_DATA_platform_name]].trimmed().compare(QString("naver")) == false) - { - stCom.m_strUrl = strKey; - } - m_mapCommunity.insert(strKey,stCom); - } - } - } - break; - case E_ARTICLE_REPLY: - { - if (m_mapData.contains(strURL)) - { - if (strList[m_anData[E_DATA_article_id]].trimmed().isEmpty()) continue; - if (strList[m_anData[E_DATA_article_nickname]].trimmed().isEmpty()) continue; - SReply stReply; - stReply.m_bSelect = false; - stReply.m_nOrder = strList[m_nOrderColumn].toInt(); - stReply.m_strlist = strList; - stReply.m_date = QDateTime::fromString(strList[m_anData[E_DATA_article_date]].trimmed(),"yyyy-MM-dd HH:mm:ss").date(); - QDateTime dtComp = QDateTime::fromString(strList[m_anData[E_DATA_article_date]].trimmed(),"yyyy-MM-dd HH:mm:ss"); - if (m_mapData[strURL].m_dtLast < dtComp) - m_mapData[strURL].m_dtLast = dtComp; - m_mapData[strURL].m_vecReply.insert(stReply.m_nOrder,stReply); - if (m_mapID.contains(strList[m_anData[E_DATA_article_id]].trimmed()) == false) - { - SId stID; - stID.m_nNum = m_mapID.size() + m_nIDMax; - stID.m_strID = strList[m_anData[E_DATA_article_id]].trimmed(); - if(m_mapPlatformname.contains(strList[m_anData[E_DATA_platform_name]].trimmed())) - stID.m_nPlatfromName = m_mapPlatformname[strList[m_anData[E_DATA_platform_name]].trimmed()]; - stID.m_nCommunity = m_nCommunityMax; - m_mapID.insert(stID.m_strID,stID); - } - if (m_mapNickname.contains(strList[m_anData[E_DATA_article_nickname]].trimmed()) == false) - { - SNickname stNick; - stNick.m_nNum = m_mapNickname.size() + m_nNickMax; - stNick.m_strNickname = strList[m_anData[E_DATA_article_nickname]].trimmed(); - stNick.m_nID = m_nIDMax; - m_mapNickname.insert(stNick.m_strNickname,stNick); - } - } - } + m_aProcess[i].setProgram("FilterProcess.exe"); + m_aProcess[i].setArguments(strlist); break; } } } - foreach(SId stID,m_mapID) - { - QString strCommunityKey = "blog.naver.com/" + stID.m_strID.trimmed(); - if (m_mapCommunity.contains(strCommunityKey)) - stID.m_nCommunity = m_mapCommunity[strCommunityKey].m_nNum; - } - - foreach(SBody stBody, m_mapData.values()) - { - QString strNick = stBody.m_strlist[m_anData[E_DATA_article_nickname]].trimmed(); - QString strID = stBody.m_strlist[m_anData[E_DATA_article_id]].trimmed(); - if (m_mapNickname.contains(strNick) && m_mapID.contains(strID)) - m_mapNickname[strNick].m_nID = m_mapID[strID].m_nNum; - foreach(SReply stReply , stBody.m_vecReply.values()) - { - QString strNick = stReply.m_strlist[m_anData[E_DATA_article_nickname]].trimmed(); - QString strID = stReply.m_strlist[m_anData[E_DATA_article_id]].trimmed(); - if (m_mapNickname.contains(strNick) && m_mapID.contains(strID)) - m_mapNickname[strNick].m_nID = m_mapID[strID].m_nNum; - } - } - MakeBuzzyAll(); - InsertLog("End Loading"); - db.close(); } -void Widget::MakeBuzzyAll() +void Widget::on_process_delete() { - m_vecBuzzy.clear(); - SBuzzy stBuzzy; - stBuzzy.m_nCategory = 0; - foreach(SBody stBody, m_mapData.values()) + foreach(QListWidgetItem *item,m_plwProcess->selectedItems()) { - if (stBuzzy.m_astArticle[E_ARTICLE_BODY].m_mapCount.contains(stBody.m_date)) - stBuzzy.m_astArticle[E_ARTICLE_BODY].m_mapCount[stBody.m_date]++; - else - stBuzzy.m_astArticle[E_ARTICLE_BODY].m_mapCount.insert(stBody.m_date,1); - foreach(SReply stReply , stBody.m_vecReply.values()) + for (int i = 0; i < D_PROCESS_MAX;i++) { - if (stBuzzy.m_astArticle[E_ARTICLE_REPLY].m_mapCount.contains(stReply.m_date)) - stBuzzy.m_astArticle[E_ARTICLE_REPLY].m_mapCount[stReply.m_date]++; - else - stBuzzy.m_astArticle[E_ARTICLE_REPLY].m_mapCount.insert(stReply.m_date,1); - } - } - m_vecBuzzy.push_back(stBuzzy); -} - -QVariant Widget::GetWebData(QString _strTable,QString _strColumn,int _nNum) -{ - QVariant value; - db.setHostName(D_DB_WEB_HOST); - db.setUserName(D_DB_WEB_USER); - db.setPassword(D_DB_WEB_PASS); - db.setDatabaseName(D_DB_WEB_NAME); - if (db.open() == false) - { - InsertLog(db.lastError().text()); - return value; - } - QSqlQuery query("select " + _strColumn + " FROM " + _strTable + " where num = " + QString::number(_nNum)); - if (query.next()) - value = query.value(0); - db.close(); - return value; -} - -void Widget::MakeBuzzy(int _nCategory) -{ - SBuzzy stBuzzy; - QVariant value = GetWebData("category","statsColumnNum",_nCategory); - if (value.isNull()) - { - InsertLog("Make Buzzy Error : statsColumnNum is null ..."); - return; - } - stBuzzy.m_nCategory = value.toInt(); - if (stBuzzy.m_nCategory == -1) return; - QMap map; - if (m_bDataFlag[E_ARTICLE_BODY] == true) - { - foreach(QStringList strList,m_data[E_ARTICLE_BODY]) - { - QString strURL = strList[m_nUrlColumn].trimmed(); - if(map.contains(strURL) == false) + if (m_aProcess[i].arguments().at(0) == item->data(Qt::UserRole).toString()) { - QDate date = QDateTime::fromString(strList[m_anData[E_DATA_article_date]].trimmed(),"yyyy-MM-dd HH:mm:ss").date(); - if (stBuzzy.m_astArticle[E_ARTICLE_BODY].m_mapCount.contains(date)) - stBuzzy.m_astArticle[E_ARTICLE_BODY].m_mapCount[date]++; - else - stBuzzy.m_astArticle[E_ARTICLE_BODY].m_mapCount.insert(date,1); - map.insert(strURL,true); - } - } - } - map.clear(); - if (m_bDataFlag[E_ARTICLE_REPLY] == true) - { - foreach(QStringList strList,m_data[E_ARTICLE_REPLY]) - { - QString strURL = strList[m_nUrlColumn].trimmed(); - strURL += "\\"; - strURL += strList[m_nOrderColumn].trimmed(); - if(map.contains(strURL) == false) - { - QDate date = QDateTime::fromString(strList[m_anData[E_DATA_article_date]].trimmed(),"yyyy-MM-dd HH:mm:ss").date(); - if (stBuzzy.m_astArticle[E_ARTICLE_REPLY].m_mapCount.contains(date)) - stBuzzy.m_astArticle[E_ARTICLE_REPLY].m_mapCount[date]++; - else - stBuzzy.m_astArticle[E_ARTICLE_REPLY].m_mapCount.insert(date,1); - map.insert(strURL,true); - } - } - } - m_vecBuzzy.push_back(stBuzzy); -} - -void Widget::DataMake(int _nCategory) -{ - QMap mapData; - - if (m_bDataFlag[E_ARTICLE_BODY] == true) - { - foreach(QStringList strList,m_data[E_ARTICLE_BODY]) - { - QString strURL = strList[m_nUrlColumn].trimmed(); - if (m_mapData.contains(strURL)) - { - m_mapData[strURL].m_bSelect = true; - m_mapData[strURL].m_vecCategory.push_back(_nCategory); - if (mapData.contains(strURL)) - mapData[strURL] |= C_MAP_REAL_BODY; - else - mapData.insert(strURL,C_MAP_REAL_BODY); - } - } - } - - if (m_bDataFlag[E_ARTICLE_REPLY] == true) - { - foreach(QStringList strList,m_data[E_ARTICLE_REPLY]) - { - QString strURL = strList[m_nUrlColumn].trimmed(); - if (m_mapData.contains(strURL)) - { - m_mapData[strURL].m_bReplySelect = true; - int nSelect = strList[m_nOrderColumn].trimmed().toInt(); - if (m_mapData[strURL].m_vecReply.contains(nSelect)) - { - m_mapData[strURL].m_vecReply[nSelect].m_bSelect = true; - m_mapData[strURL].m_vecReply[nSelect].m_vecCategory.push_back(_nCategory); - if (mapData.contains(strURL)) - mapData[strURL] |= C_MAP_REAL_REPLY; - else - mapData.insert(strURL,C_MAP_REAL_REPLY); - } - } - } - } - - foreach(QString strUrl , m_strlistOrder ) - { - if (mapData.contains(strUrl)) - { - if (mapData.value(strUrl) != 0) - { - SMap stMap; - stMap.m_nBody = m_mapData[strUrl].m_nNum; - stMap.m_nCategory = _nCategory; - stMap.m_nRealIn = mapData.value(strUrl); - stMap.m_strURL = strUrl; - m_vecMap.push_back(stMap); - } - } - } -} - -QString Widget::GetVectorToString(QVector _vecCategory,QString _strDelimiter) -{ - QString str; - if (_vecCategory.isEmpty()) return QString(" "); - foreach (int n , _vecCategory ) - str += QString::number(n) + _strDelimiter; - return str.left(str.length() - _strDelimiter.length()); -} - -bool QSortPowerCafe(const SPowerCafeCount &st1, const SPowerCafeCount &st2) -{ - return st1.m_ncAll > st2.m_ncAll; -} - -bool QSortPowerCafeReal(const SPowerCafeCount &st1, const SPowerCafeCount &st2) -{ - return st1.m_ncAllReal > st2.m_ncAllReal; -} - -void Widget::on_power_cafe_count() -{ - ReloadData(); - foreach (QListWidgetItem *item,m_plw[E_LIST_FILTER].selectedItems()) - { - InsertLog("Power Cafe Data Filter Run Start : " + item->text()); - DataFilter(item->data(Qt::UserRole).toString()); - InsertLog("Power Cafe Data Filter Run End "); - } - QMap mapRealCount; - QMap mapAllCount; - foreach (QListWidgetItem *item,m_plw[E_LIST_COMPANY].selectedItems()) - { - InsertLog("Power Cafe Rank Count Make Start " + item->text()); - // real make - if (m_bDataFlag[E_ARTICLE_BODY] == true) - { - foreach(QStringList strlist,m_data[E_ARTICLE_BODY]) - { - if (strlist[m_anData[E_DATA_platform_form]].trimmed().compare(QString("cafe")) != 0) continue; - QString strKey = strlist[m_anData[E_DATA_platform_id]].trimmed(); - if (mapRealCount.contains(strKey)==false) - { - SPowerCafeCount stPowerCafe; - stPowerCafe.m_strCafeID = strKey; - QString strUrl = GetCommunityKey(strlist); - if (m_mapCommunity.contains(strUrl) == false ) continue; - stPowerCafe.m_strCommunityURL = strUrl; - stPowerCafe.m_nCommunityID = m_mapCommunity[strUrl].m_nNum; - stPowerCafe.m_strlistData = strlist; - mapRealCount.insert(strKey,stPowerCafe); - } - mapRealCount[strKey].m_ncBodyReal++; - mapRealCount[strKey].m_ncAllReal++; - if (mapRealCount[strKey].m_mapUser.contains(strlist[m_anData[E_DATA_article_id]].trimmed())==false) - mapRealCount[strKey].m_mapUser.insert(strlist[m_anData[E_DATA_article_id]].trimmed(),true); - } - } - if (m_bDataFlag[E_ARTICLE_REPLY] == true) - { - foreach(QStringList strlist,m_data[E_ARTICLE_REPLY]) - { - if (strlist[m_anData[E_DATA_platform_form]].trimmed().compare(QString("cafe")) != 0) continue; - QString strKey = strlist[m_anData[E_DATA_platform_id]].trimmed(); - if (mapRealCount.contains(strKey)==false) - { - SPowerCafeCount stPowerCafe; - stPowerCafe.m_strCafeID = strKey; - QString strUrl = GetCommunityKey(strlist); - if (m_mapCommunity.contains(strUrl) == false ) continue; - stPowerCafe.m_strCommunityURL = strUrl; - stPowerCafe.m_nCommunityID = m_mapCommunity[strUrl].m_nNum; - stPowerCafe.m_strlistData = strlist; - mapRealCount.insert(strKey,stPowerCafe); - } - mapRealCount[strKey].m_ncReplyReal++; - mapRealCount[strKey].m_ncAllReal++; - if (mapRealCount[strKey].m_mapUser.contains(strlist[m_anData[E_DATA_article_id]].trimmed())==false) - mapRealCount[strKey].m_mapUser.insert(strlist[m_anData[E_DATA_article_id]].trimmed(),true); - } - } - // all make - foreach(SBody stBody, m_mapData.values()) - { - if (stBody.m_strlist[m_anData[E_DATA_platform_form]].trimmed().compare(QString("cafe")) != 0) continue; - QString strKey = stBody.m_strlist[m_anData[E_DATA_platform_id]].trimmed(); - if (mapAllCount.contains(strKey)==false) - { - SPowerCafeCount stPowerCafe; - stPowerCafe.m_strCafeID = strKey; - QString strUrl = GetCommunityKey(stBody.m_strlist); - if (m_mapCommunity.contains(strUrl) == false ) continue; - stPowerCafe.m_strCommunityURL = strUrl; - stPowerCafe.m_nCommunityID = m_mapCommunity[strUrl].m_nNum; - stPowerCafe.m_strlistData = stBody.m_strlist; - mapAllCount.insert(strKey,stPowerCafe); - } - mapAllCount[strKey].m_ncBodyAll++; - if (mapAllCount[strKey].m_mapUser.contains(stBody.m_strlist[m_anData[E_DATA_article_id]].trimmed())==false) - mapAllCount[strKey].m_mapUser.insert(stBody.m_strlist[m_anData[E_DATA_article_id]].trimmed(),true); - - foreach(SReply stReply , stBody.m_vecReply.values()) - { - if (stReply.m_strlist[m_anData[E_DATA_article_id]].compare(strKey) != 0) - mapAllCount[strKey].m_ncReplyAll++; - if (mapAllCount[strKey].m_mapUser.contains(stReply.m_strlist[m_anData[E_DATA_article_id]].trimmed())==false) - mapAllCount[strKey].m_mapUser.insert(stReply.m_strlist[m_anData[E_DATA_article_id]].trimmed(),true); - } - } - foreach (SPowerCafeCount stPowerCafe,mapAllCount.values()) - mapAllCount[stPowerCafe.m_strCafeID].m_ncAll = stPowerCafe.m_ncBodyAll + stPowerCafe.m_ncReplyAll; - - foreach(SPowerCafeCount st,mapRealCount) - { - if (mapAllCount.contains(st.m_strCafeID)) - { - mapRealCount[st.m_strCafeID].m_ncBodyAll = mapAllCount[st.m_strCafeID].m_ncBodyAll; - mapRealCount[st.m_strCafeID].m_ncReplyAll = mapAllCount[st.m_strCafeID].m_ncReplyAll; - mapRealCount[st.m_strCafeID].m_ncAll = mapAllCount[st.m_strCafeID].m_ncAll; - mapRealCount[st.m_strCafeID].m_ncUserAll = mapAllCount[st.m_strCafeID].m_mapUser.size(); - } - } - InsertLog("Power Cafe Rank Count Make End"); - InsertLog("Power Cafe Rank Send Start " + item->text()); - { - db.setHostName(D_DB_WEB_HOST); - db.setUserName(D_DB_WEB_USER); - db.setPassword(D_DB_WEB_PASS); - db.setDatabaseName(D_DB_WEB_NAME); - if (db.open() == false) - { - InsertLog(db.lastError().text()); + Kill(i); return; } - QSqlQuery query; - QString strQuery; - QString strCompanyNum = item->data(Qt::UserRole).toString(); - strQuery = "delete from powercafe where company_num = " + strCompanyNum; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - strQuery = "delete from stats_powercaferank where company_num = " + strCompanyNum; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - QList list = mapRealCount.values(); - qSort(list.begin(),list.end(),QSortPowerCafeReal); - strQuery = "insert into powercafe (company_num,rank,community_num,community_id,bodycountall,replycountall,allcountall,usercountall,bodycountreal,replycountreal,allcountreal,usercountreal)" - " VALUES (" + strCompanyNum + ",:RANK,:COMMNUNITY_NUM,:COMMNUNITY_ID,:BODY_ALL,:REPLY_ALL,:COUNT_ALL,:USER_ALL,:BODY_REAL,:REPLY_REAL,:ALL_REAL,:USER_REAL)"; - - int nCount = 0; - query.prepare(strQuery.toUtf8()); - foreach(SPowerCafeCount stIn,list) - { - query.bindValue(":COMMNUNITY_NUM",stIn.m_nCommunityID); - query.bindValue(":COMMNUNITY_ID",stIn.m_strCafeID); - query.bindValue(":BODY_ALL",stIn.m_ncBodyAll); - query.bindValue(":REPLY_ALL",stIn.m_ncReplyAll); - query.bindValue(":COUNT_ALL",stIn.m_ncAll); - query.bindValue(":USER_ALL",stIn.m_ncUserAll); - query.bindValue(":BODY_REAL",stIn.m_ncBodyReal); - query.bindValue(":REPLY_REAL",stIn.m_ncReplyReal); - query.bindValue(":ALL_REAL",stIn.m_ncAllReal); - query.bindValue(":USER_REAL",stIn.m_mapUser.size()); - query.bindValue(":RANK",++nCount); - if(query.exec() == false) { - InsertLog(query.lastError().text());return; - } - } - nCount = 0; - //articlecountall/articlecountreal/usercountreal - strQuery = "insert into stats_powercaferank (rank,articlecountall,usercountreal,subject,company_num,community_id,community_title,articlecountreal)" - " VALUES (:RANK,0,0,'articlecountreal'," + strCompanyNum + ",:ID,:TITLE,:COUNT_ALL)"; - query.prepare(strQuery.toUtf8()); - foreach(SPowerCafeCount stIn,list) - { - if (stIn.m_strCafeID.trimmed().isEmpty()) continue; - if (stIn.m_strlistData[m_anData[E_DATA_platform_title]].trimmed().isEmpty()) continue; - if (nCount >= 10) break; nCount++; - query.bindValue(":ID",stIn.m_strCafeID.trimmed().toUtf8()); - query.bindValue(":TITLE",stIn.m_strlistData[m_anData[E_DATA_platform_title]].trimmed().toUtf8()); - query.bindValue(":COUNT_ALL",stIn.m_ncAllReal); - query.bindValue(":RANK",nCount); - if(query.exec() == false) { - InsertLog(query.lastError().text());return; - } - } - - QList listAll = mapAllCount.values(); - qSort(listAll.begin(),listAll.end(),QSortPowerCafe); - - nCount = 0; - strQuery = "insert into stats_powercaferank (rank,articlecountreal,usercountreal,subject,company_num,community_id,community_title,articlecountall)" - " VALUES (:RANK,0,0,'articlecountall'," + strCompanyNum + ",:ID,:TITLE,:COUNT_ALL)"; - query.prepare(strQuery.toUtf8()); - foreach(SPowerCafeCount stIn,listAll) - { - if (stIn.m_strCafeID.trimmed().isEmpty()) continue; - if (stIn.m_strlistData[m_anData[E_DATA_platform_title]].trimmed().isEmpty()) continue; - if (nCount >= 10) break; nCount++; - query.bindValue(":ID",stIn.m_strCafeID.trimmed().toUtf8()); - query.bindValue(":TITLE",stIn.m_strlistData[m_anData[E_DATA_platform_title]].trimmed().toUtf8()); - query.bindValue(":COUNT_ALL",stIn.m_ncAll); - query.bindValue(":RANK",nCount); - if(query.exec() == false) { - InsertLog(query.lastError().text()); - return;} - } - db.close(); - InsertLog("Power Cafe Rank Send End"); } } } -bool QSortBody(const SInfluenceCount &stInflunce1, const SInfluenceCount &stInflunce2) +void Widget::process_output() { - return stInflunce1.m_ncBody > stInflunce2.m_ncBody; + QProcess *pPro = (QProcess*)sender(); + QString str = pPro->readAllStandardOutput(); + InsertLog(str); } -bool QSortReply(const SInfluenceCount &stInflunce1, const SInfluenceCount &stInflunce2) +void Widget::Kill(int _nProcess) { - return stInflunce1.m_ncReply > stInflunce2.m_ncReply; -} - -bool QSortInfulrence(const SInfluenceCount &stInflunce1, const SInfluenceCount &stInflunce2) -{ - return stInflunce1.m_dinfulrence > stInflunce2.m_dinfulrence; -} - -void Widget::InfluenceCount() -{ - QMap mapCount; - foreach (QListWidgetItem *item,m_plw[E_LIST_COMPANY].selectedItems()) + if (m_aProcess[_nProcess].state() == QProcess::Running) { - InsertLog("Influence Rank Count Make Start " + item->text()); - QString strCompanyNum = item->data(Qt::UserRole).toString(); - foreach(SBody stBody, m_mapData.values()) - { - if (stBody.m_strlist[m_anData[E_DATA_platform_form]].trimmed().compare(QString("blog")) != 0) continue; - QString strKey = stBody.m_strlist[m_anData[E_DATA_article_id]].trimmed(); - if (mapCount.contains(strKey)==false) - { - SInfluenceCount stInfluence; - stInfluence.m_nID = m_mapID[strKey].m_nNum; - QString strCommunityKey = GetCommunityKey(stBody.m_strlist); - if (m_mapCommunity.contains(strCommunityKey) == false) continue; - stInfluence.m_nCommunity = m_mapCommunity[strCommunityKey].m_nNum; - QString strNickname = stBody.m_strlist[m_anData[E_DATA_article_nickname]].trimmed(); - if (m_mapNickname.contains(strNickname) == false) - stInfluence.m_nNickname = 0; - else - stInfluence.m_nNickname = m_mapNickname[strNickname].m_nNum; - stInfluence.m_ncBody = 0; - stInfluence.m_ncReply = 0; - stInfluence.m_strID = strKey; - stInfluence.m_strlistData = stBody.m_strlist; - mapCount.insert(strKey,stInfluence); - } - mapCount[strKey].m_ncBody++; - foreach(SReply stReply , stBody.m_vecReply.values()) - { - if (stReply.m_strlist[m_anData[E_DATA_article_id]].compare(strKey) != 0) - mapCount[strKey].m_ncReply++; - } - } - - foreach (SInfluenceCount stInfluence,mapCount.values()) - { - mapCount[stInfluence.m_strID].m_dinfulrence = ((double)stInfluence.m_ncBody * 0.4) + ((double)stInfluence.m_ncReply * 0.6); - } - InsertLog("Influence Rank Count Make End"); - { - db.setHostName(D_DB_WEB_HOST); - db.setUserName(D_DB_WEB_USER); - db.setPassword(D_DB_WEB_PASS); - db.setDatabaseName(D_DB_WEB_NAME); - if (db.open() == false) - { - InsertLog(db.lastError().text()); - return; - } - - InsertLog("Influence Rank Count Send Start"); - QSqlQuery query; - QString strQuery; - strQuery = "delete from stats_influencerrank where company_num = " + strCompanyNum; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - strQuery = "delete from influencer where company_num = " + strCompanyNum; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - QList list = mapCount.values(); - qSort(list.begin(),list.end(),QSortInfulrence); - - //id_id,rank, - strQuery = "insert into influencer (rank,company_num,id_num,nickname_num,community_num,bodycount,replycount,influencervalue,profile,profileurl,id_id)" - " VALUES (:RANK," + strCompanyNum + ",:ID_NUM,:NICKNAME_NUM,:COMMUNITY_NUM,:BODY_COUNT,:REPLY_COUNT,:INPL,:PROFILE,:PROFILE_URL,:ID_ID)"; - - query.prepare(strQuery.toUtf8()); - int ncRank = 1; - foreach(SInfluenceCount stIn,list) - { - if (stIn.m_strID.length() > 42) continue; - if (m_mapID.contains(stIn.m_strID) == false ) continue; - query.bindValue(":ID_NUM",stIn.m_nID); - query.bindValue(":NICKNAME_NUM",stIn.m_nNickname); - query.bindValue(":COMMUNITY_NUM",stIn.m_nCommunity); - query.bindValue(":BODY_COUNT",stIn.m_ncBody); - query.bindValue(":REPLY_COUNT",stIn.m_ncReply); - query.bindValue(":INPL",QString::number(stIn.m_dinfulrence,'g',3)); - query.bindValue(":PROFILE",stIn.m_strlistData.at(m_anData[E_DATA_article_profile]).trimmed().toUtf8()); - query.bindValue(":PROFILE_URL",stIn.m_strlistData.at(m_anData[E_DATA_article_profileurl]).trimmed().toUtf8()); - query.bindValue(":ID_ID",stIn.m_strID.trimmed().toUtf8()); - query.bindValue(":RANK",ncRank++); - if(query.exec() == false) {InsertLog(query.lastError().text());return;} - } - - int nCount = 0; - foreach(SInfluenceCount stIn,list) - { - if (nCount >= 10) break; nCount++; - strQuery = MakeInfluencerrankQuery(stIn,nCount,"influencevalue",strCompanyNum); - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - } - nCount = 0; - qSort(list.begin(),list.end(),QSortBody); - foreach(SInfluenceCount stIn,list) - { - if (nCount >= 10) break; nCount++; - strQuery = MakeInfluencerrankQuery(stIn,nCount,"bodycount",strCompanyNum); - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - } - - qSort(list.begin(),list.end(),QSortReply); - nCount = 0; - foreach(SInfluenceCount stIn,list) - { - if (nCount >= 10) break; nCount++; - strQuery = MakeInfluencerrankQuery(stIn,nCount,"replycount",strCompanyNum); - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - } - db.close(); - InsertLog("Influence Rank Count Send End"); - } + m_aProcess[_nProcess].kill(); + m_aProcess[_nProcess].waitForFinished(); + m_aProcess[_nProcess].setArguments(QStringList()); } } - -struct SMaketer -{ - int m_nBodyCount; - int m_nReplyCount; - int m_nAllCount; - QString m_strID; - QString m_strPlatformName; - - SMaketer() - { - m_nBodyCount=0; - m_nReplyCount=0; - } -}; - -bool QSortMarketer(const SMaketer &stMaketer1, const SMaketer &stMaketer2) -{ - return stMaketer1.m_nAllCount > stMaketer2.m_nAllCount; -} - -void Widget::ConsumerSupervisionCount() -{ - db.setHostName(D_DB_WEB_HOST); - db.setUserName(D_DB_WEB_USER); - db.setPassword(D_DB_WEB_PASS); - db.setDatabaseName(D_DB_WEB_NAME); - if (db.open() == false) - { - InsertLog(db.lastError().text()); - return; - } - QMap mapMaketer; - QMap mapCafe; - - foreach (QListWidgetItem *item,m_plw[E_LIST_COMPANY].selectedItems()) - { - InsertLog("Markter Rank Count Make Start " + item->text()); - QString strCompanyNum = item->data(Qt::UserRole).toString(); - - QSqlQuery query; - QString strQuery; - strQuery = "delete from stats_response where company_num = " + strCompanyNum; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - - strQuery = "select id,platformname from marketer where company_num = " + strCompanyNum; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - while(query.next()) - { - SMaketer stMaketer; - stMaketer.m_strID = query.value(0).toString(); - stMaketer.m_strPlatformName = query.value(1).toString(); - mapMaketer.insert(stMaketer.m_strID,stMaketer); - } - - foreach(SBody stBody, m_mapData.values()) - { - QString strKey = stBody.m_strlist[m_anData[E_DATA_article_id]].trimmed(); - if (mapMaketer.contains(strKey)) - { - if (stBody.m_strlist[m_anData[E_DATA_platform_name]].trimmed().compare(mapMaketer[strKey].m_strPlatformName) == 0) - { - mapMaketer[strKey].m_nBodyCount++; - QString strCafe = stBody.m_strlist[m_anData[E_DATA_platform_id]].trimmed(); - if (stBody.m_strlist[m_anData[E_DATA_platform_form]].trimmed().compare("cafe") == 0) - { - if (mapCafe.contains(strCafe) == false) - { - SMaketer stCafe; - stCafe.m_strID = strCafe; - mapCafe.insert(strCafe,stCafe); - } - mapCafe[strCafe].m_nBodyCount++; - } - } - } - - foreach(SReply stReply , stBody.m_vecReply.values()) - { - strKey = stReply.m_strlist[m_anData[E_DATA_article_id]].trimmed(); - if (mapMaketer.contains(strKey)) - { - if (stReply.m_strlist[m_anData[E_DATA_platform_name]].trimmed().compare(mapMaketer[strKey].m_strPlatformName) == 0) - { - mapMaketer[strKey].m_nReplyCount++; - QString strCafe = stBody.m_strlist[m_anData[E_DATA_platform_id]].trimmed(); - if (stBody.m_strlist[m_anData[E_DATA_platform_form]].trimmed().compare("cafe") == 0) - { - if (mapCafe.contains(strCafe) == false) - { - SMaketer stCafe; - stCafe.m_strID = strCafe; - mapCafe.insert(strCafe,stCafe); - } - mapCafe[strCafe].m_nReplyCount++; - } - } - } - } - } - - foreach (SMaketer stMaketer,mapMaketer.values()) - mapMaketer[stMaketer.m_strID].m_nAllCount = stMaketer.m_nBodyCount + stMaketer.m_nReplyCount; - - foreach (SMaketer stCafe,mapCafe.values()) - mapCafe[stCafe.m_strID].m_nAllCount = stCafe.m_nBodyCount + stCafe.m_nReplyCount; - { - QList list = mapMaketer.values(); - qSort(list.begin(),list.end(),QSortMarketer); - InsertLog("Markter Rank Count Make End"); - { - InsertLog("Markter Rank Count Send Start"); - foreach(SMaketer stMaket,list) - { - strQuery = "insert into stats_response (rank,platformid,subject,marketerid,marketernickname,bodycount,replycount,company_num) values (0,' ' , 'marketerid' , "; - strQuery += "'" + stMaket.m_strID + "',"; - strQuery += "' ',"; - strQuery += QString::number(stMaket.m_nBodyCount) + ","; - strQuery += QString::number(stMaket.m_nReplyCount) + ","; - strQuery += strCompanyNum + ")"; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - } - InsertLog("Markter Rank Count Send End"); - } - } - { - QList list = mapCafe.values(); - qSort(list.begin(),list.end(),QSortMarketer); - { - InsertLog("Maketer in Cafe Rank Count Send Start"); - foreach(SMaketer stMaket,list) - { - if (stMaket.m_nAllCount == 0) break; - strQuery = "insert into stats_response (rank,marketerid,subject,platformid,marketernickname,bodycount,replycount,company_num) values (0,' ' , 'platformid' , "; - strQuery += "'" + stMaket.m_strID + "',"; - strQuery += "' ',"; - strQuery += QString::number(stMaket.m_nBodyCount) + ","; - strQuery += QString::number(stMaket.m_nReplyCount) + ","; - strQuery += strCompanyNum + ")"; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - } - InsertLog("Maketer in Cafe Rank Count Send End"); - } - } - } - db.close(); -} - -void Widget::on_influence_count() -{ - InfluenceCount(); -} - -QString Widget::MakeInfluencerrankQuery(const SInfluenceCount &_stIn,int _nRank,QString _strSubject,QString _strCompanyNum) -{ - QString strOut; - strOut = "insert into stats_influencerrank(rank,id_id,nickname_nickname,bodycount,replycount,influencevalue,subject,company_num) VALUES ("; - strOut += QString::number(_nRank) + ","; - strOut += "'" + _stIn.m_strlistData.at(m_anData[E_DATA_article_id]).trimmed() + "',"; - strOut += "'" + _stIn.m_strlistData.at(m_anData[E_DATA_article_nickname]).trimmed() + "',"; - strOut += QString::number(_stIn.m_ncBody) + ","; - strOut += QString::number(_stIn.m_ncReply) + ","; - strOut += QString::number(_stIn.m_dinfulrence,'g',3)+ ","; - strOut += "'" + _strSubject + "',"; - strOut += _strCompanyNum + ")"; - return strOut; -} - -void Widget::on_consumer_supervison_count() -{ - ConsumerSupervisionCount(); -} - -QString Widget::SeqDelString(QString _strData,QChar _chChar,int _nMax) -{ - static const int C_SEQ_FIND = 0; - static const int C_SEQ_DEL = 1; - - QString strOut; - int nMode = C_SEQ_FIND,nCount=0; - for (int i = 0 ; i < _strData.length(); i++) - { - switch(nMode) - { - case C_SEQ_FIND: - if (_strData[i] == _chChar) - nCount++; - else - nCount = 0; - strOut += _strData[i]; - if (nCount >= _nMax) - nMode = C_SEQ_DEL; - break; - case C_SEQ_DEL: - nCount = 0; - if (_strData[i] != _chChar) - { - strOut += _strData[i]; - nMode = C_SEQ_FIND; - } - break; - } - } - return strOut; -} - -struct SSpamer -{ - QString m_strKey; - QString m_strTitle; - QString m_strNickname; - double m_dBodycount; - double m_dReplycount; - double m_dSpammerValue; - SSpamer() - { - m_dBodycount = 0.0; - m_dReplycount = 0.0; - } - QSet m_setNick; -}; - -bool QSortSpamer(const SSpamer &st1, const SSpamer &st2) -{ - return st1.m_dSpammerValue > st2.m_dSpammerValue; -} - -void Widget::on_spammers_count() -{ - QFile inputFile("spammers.txt"); - double dRead[E_SPAMER_MAX]; - /* - Body_Count_Cut = 5 - Body_Count_Ratio = 0.7 - Nick_Count_Cut = 10 - Nick_Count_Ratio = 0.3 - */ - if (inputFile.open(QIODevice::ReadOnly)) - { - QTextStream in(&inputFile); - while (!in.atEnd()) - { - QString line = in.readLine(); - QStringList list = line.split("="); - if (list.size() < 2) continue; - if (list[0].trimmed().compare("Body_Count_Cut") == 0) dRead[E_SPAMER_BODY_COUNT_CUT]=list[1].toDouble(); - if (list[0].trimmed().compare("Body_Count_Ratio") == 0) dRead[E_SPAMER_BODY_COUNT_RATIO]=list[1].toDouble(); - if (list[0].trimmed().compare("Nick_Count_Cut") == 0) dRead[E_SPAMER_NICK_COUNT_CUT]=list[1].toDouble(); - if (list[0].trimmed().compare("Nick_Count_Ratio") == 0) dRead[E_SPAMER_NICK_COUNT_RATIO]=list[1].toDouble(); - } - inputFile.close(); - } - else - { - InsertLog("spammers.txt do not read."); - return; - } - QMap mapSpamer; - foreach (QListWidgetItem *item,m_plw[E_LIST_COMPANY].selectedItems()) - { - InsertLog("Spamer Rank Count Make Start " + item->text()); - foreach(SBody stBody, m_mapData.values()) - { - if (stBody.m_strlist[m_anData[E_DATA_article_id]].trimmed().isEmpty()) continue; - QString strKey = stBody.m_strlist[m_anData[E_DATA_platform_name]].trimmed() + QString(","); - strKey += stBody.m_strlist[m_anData[E_DATA_platform_form]].trimmed() + QString(","); - strKey += stBody.m_strlist[m_anData[E_DATA_article_id]].trimmed(); - if (mapSpamer.contains(strKey) == false) - { - SSpamer stSpamer; - stSpamer.m_strKey = strKey; - stSpamer.m_strNickname = stBody.m_strlist[m_anData[E_DATA_article_nickname]].trimmed(); - mapSpamer.insert(strKey,stSpamer); - } - mapSpamer[strKey].m_dBodycount+=1.0; - mapSpamer[strKey].m_setNick.insert(stBody.m_strlist[m_anData[E_DATA_article_nickname]].trimmed()); - foreach(SReply stReply , stBody.m_vecReply.values()) - { - QString strKey = stReply.m_strlist[m_anData[E_DATA_platform_name]].trimmed() + QString(","); - strKey += stReply.m_strlist[m_anData[E_DATA_platform_form]].trimmed() + QString(","); - strKey += stReply.m_strlist[m_anData[E_DATA_article_id]].trimmed(); - if (mapSpamer.contains(strKey) == false) - { - SSpamer stSpamer; - stSpamer.m_strKey = strKey; - stSpamer.m_strNickname = stReply.m_strlist[m_anData[E_DATA_article_nickname]].trimmed(); - mapSpamer.insert(strKey,stSpamer); - } - mapSpamer[strKey].m_dReplycount+=1.0; - QString strReKey = stReply.m_strlist[m_anData[E_DATA_article_nickname]].trimmed(); - if (mapSpamer[strKey].m_setNick.contains(strReKey) == false) - mapSpamer[strKey].m_setNick.insert(strReKey); - } - } - - QList list; - foreach(SSpamer stSpamer,mapSpamer.values()) - { - bool bFlag = false; - if (stSpamer.m_dBodycount > dRead[E_SPAMER_BODY_COUNT_CUT]) - bFlag = true; - if ((double)stSpamer.m_setNick.size() > dRead[E_SPAMER_BODY_COUNT_CUT]) - bFlag = true; - if (bFlag) - { - stSpamer.m_dSpammerValue = (dRead[E_SPAMER_BODY_COUNT_RATIO]*stSpamer.m_dBodycount)+ - (dRead[E_SPAMER_NICK_COUNT_RATIO]*(double)stSpamer.m_setNick.size()); - list.push_back(stSpamer); - } - } - qSort(list.begin(),list.end(),QSortSpamer); - - InsertLog("Spamer Rank Count Make End "); - InsertLog("Spamer Rank Count Send Start "); - db.setHostName(D_DB_WEB_HOST); - db.setUserName(D_DB_WEB_USER); - db.setPassword(D_DB_WEB_PASS); - db.setDatabaseName(D_DB_WEB_NAME); - if (db.open() == false) - { - InsertLog(db.lastError().text()); - return; - } - QSqlQuery query; - QString strQuery; - QString strCompanyNum = item->data(Qt::UserRole).toString(); - strQuery = "delete from stats_spammerrank where company_num = " + strCompanyNum; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - strQuery = "delete from spammer where company_num = " + strCompanyNum; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - - QMap mapPlatformnameCount; - - foreach(QString str,m_mapPlatformname.keys()) - mapPlatformnameCount.insert(str,1); - - int nCount = 0; - foreach(SSpamer stIn,list) - { - QStringList strList = stIn.m_strKey.split(","); - QString strID = strList[2].trimmed(); - QString strPlatformname = strList[0].trimmed(); - if (strID.isEmpty()) continue; - if (strPlatformname.isEmpty()) continue; - QString strValue; - strValue += QString::number(m_mapID[strID].m_nNum) + ",'"; - strValue += strID + "',"; - strValue += QString::number(stIn.m_setNick.size()) + ","; - strValue += QString::number((int)stIn.m_dBodycount) + ","; - strValue += QString::number((int)stIn.m_dReplycount) + ","; - strValue += QString::number(stIn.m_dSpammerValue,'g',3) + ","; - strValue += strCompanyNum; - strQuery = "insert into spammer (id_num,id_id,nicknamecount,bodycount,replycount,spammervalue,company_num,rank) VALUES ("; - strQuery += strValue + "," + QString::number(nCount+1) + ")"; - if(query.exec(strQuery.toUtf8()) == false) - { - qDebug() << strQuery;InsertLog(query.lastError().text()); - InsertLog(strQuery); - continue; - } - if (mapPlatformnameCount.contains(strPlatformname)) - { - if (mapPlatformnameCount[strPlatformname] < 10) - { - strQuery = "insert into stats_spammerrank (id_num,id_id,nicknamecount,bodycount,replycount,spammervalue,company_num,rank,platformname_name,subject) VALUES ("; - strQuery += strValue + ","; - strQuery += QString::number(mapPlatformnameCount[strPlatformname]) + ",'"; - strQuery += strPlatformname + "','spammervalue')"; - if(query.exec(strQuery.toUtf8()) == false) - { - qDebug() << strQuery;InsertLog(query.lastError().text());//return; - InsertLog(strQuery); - continue; - } - mapPlatformnameCount[strPlatformname]++; - } - } - nCount++; - } - db.close(); - InsertLog("Spamer Rank Count Send End "); - } -} - -void Widget::DataPut(QString _strCompanyNum) -{ - db.setHostName(D_DB_WEB_HOST); - db.setUserName(D_DB_WEB_USER); - db.setPassword(D_DB_WEB_PASS); - db.setDatabaseName(D_DB_WEB_NAME); - if (db.open() == false) - { - InsertLog(db.lastError().text()); - return; - } - - QSqlQuery query; - QString strQuery; - - //if(query.exec(QString("SET AUTOCOMMIT = FALSE").toUtf8()) == false) {InsertLog(query.lastError().text());db.close();return;} - - strQuery = "delete from body_" + _strCompanyNum; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - - strQuery = "delete from reply_" + _strCompanyNum; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - - strQuery = "delete from body_category_map_" + _strCompanyNum; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - - strQuery = "delete from stats_articlebuzzbyday where company_num = " + _strCompanyNum; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - - strQuery = "delete from id where company_num = " + _strCompanyNum; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - - strQuery = "delete from nickname where company_num = " + _strCompanyNum; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - - strQuery = "delete from community where company_num = " + _strCompanyNum; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;} - - QString strReplyQuery = QString("insert into reply_" + _strCompanyNum + " (num,id_num,nickname_num,community_num,id_id,parent,data,date,body_num,realbycategorynum) VALUES (:NUM,:ID_NUM,:NICKNAME_NUM,:COMMUNITY_NUM,:ID_ID,:PARENT,:DATA,:DATE,:BODY_NUM,:REALBYCATEGORYNUM)").toUtf8(); - QString strBodyQuery = QString("insert into body_" + _strCompanyNum + " (num,id_num,nickname_num,community_num,id_id,platformname_num,platformform_num, title, data, url, view, date, reply_startnum, reply_endnum, reply_count, lastupdate, realbycategorynum)" - " VALUES (:NUM,:ID_NUM,:NICKNAME_NUM,:COMMUNITY_NUM,:ID_ID,:PLATFORMNAME_NUM,:PLATFORMFORM_NUM,:TITLE,:DATA,:URL,:VIEW,:DATE,:REPLY_STARTNUM,:REPLY_ENDNUM,:REPLY_COUNT,:LASTUPDATE,:REALBYCATEGORYNUM)").toUtf8(); - QString strMapQuery = QString("insert into body_category_map_" + _strCompanyNum + " (num,body_num,category_num,realin) VALUES (:NUM,:BODY_NUM,:CATEGORY_NUM,:REALIN)").toUtf8(); - - QString strCommunityQuery = QString("insert into community(num,id,title,url,platformname_num,platformform_num,company_num) values ("); - - foreach (SCommunity stCommunity,m_mapCommunity.values()) - { - strQuery = strCommunityQuery; - strQuery += QString::number(stCommunity.m_nNum); - strQuery += ",'" + stCommunity.m_strID + "'"; - strQuery += ",'" + SqlString(stCommunity.m_strTitle) + "'"; - strQuery += ",'" + SqlString(stCommunity.m_strUrl) + "'"; - strQuery += "," + QString::number(stCommunity.m_nPlatformname); - strQuery += "," + QString::number(stCommunity.m_nPlatformform); - strQuery += "," + _strCompanyNum + ")"; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());db.close();qDebug() << strQuery;return;} - } - - //if(query.exec(QString("COMMIT").toUtf8()) == false) {InsertLog(query.lastError().text());return;} - - QString strIDQuery = QString("insert into id(num,id,platformname_num,community_num,company_num) values ("); - foreach (SId stID,m_mapID.values()) - { - strQuery = strIDQuery; - strQuery += QString::number(stID.m_nNum); - strQuery += ",'" + stID.m_strID + "'"; - strQuery += "," + QString::number(stID.m_nPlatfromName); - strQuery += "," + QString::number(stID.m_nCommunity); - strQuery += "," + _strCompanyNum + ")"; - if(query.exec(strQuery.toUtf8()) == false) {qDebug() << strQuery;InsertLog(query.lastError().text());db.close();return;} - } - - //if(query.exec(QString("COMMIT").toUtf8()) == false) {InsertLog(query.lastError().text());return;} - - QString strNickQuery = QString("insert into nickname(num,nickname,id_num,company_num) values ("); - foreach (SNickname stNick,m_mapNickname.values()) - { - strQuery = strNickQuery; - strQuery += QString::number(stNick.m_nNum); - strQuery += ",'" + SqlString(stNick.m_strNickname) + "'"; - strQuery += "," + QString::number(stNick.m_nID); - strQuery += "," + _strCompanyNum + ")"; - if(query.exec(strQuery.toUtf8()) == false) - { - InsertLog(query.lastError().text());db.close();qDebug() << strQuery;return; - } - } - - //if(query.exec(QString("COMMIT").toUtf8()) == false) {InsertLog(query.lastError().text());return;} - - int nReplyCount = 0; - foreach(QString strUrl , m_strlistOrder ) - { - int nReplyStart = nReplyCount; - foreach(SReply stReply,m_mapData[strUrl].m_vecReply) - { - query.prepare(strReplyQuery); - query.bindValue(":NUM",nReplyCount); - query.bindValue(":ID_NUM",m_mapID[stReply.m_strlist[m_anData[E_DATA_article_id]].trimmed()].m_nNum); - query.bindValue(":NICKNAME_NUM",m_mapNickname[stReply.m_strlist[m_anData[E_DATA_article_nickname]].trimmed()].m_nNum); - query.bindValue(":COMMUNITY_NUM",m_mapCommunity[GetCommunityKey(m_mapData[strUrl].m_strlist)].m_nNum); - query.bindValue(":ID_ID",stReply.m_strlist[m_anData[E_DATA_article_id]].trimmed()); - query.bindValue(":PARENT",stReply.m_strlist[m_anData[E_DATA_article_parent]].trimmed().toUtf8()); - query.bindValue(":DATA",SqlString(stReply.m_strlist[m_anData[E_DATA_article_data]].trimmed()).toUtf8()); - query.bindValue(":DATE",stReply.m_strlist[m_anData[E_DATA_article_date]].trimmed().toUtf8()); - query.bindValue(":BODY_NUM",m_mapData[strUrl].m_nNum); - query.bindValue(":REALBYCATEGORYNUM",GetVectorToString(stReply.m_vecCategory," ").trimmed()); - if (query.exec()==false){ - InsertLog(query.lastError().text());db.close();return; - } - nReplyCount++; - } - query.prepare(strBodyQuery); - query.bindValue(":NUM",m_mapData[strUrl].m_nNum); - query.bindValue(":PLATFORMNAME_NUM",m_mapPlatformname[m_mapData[strUrl].m_strlist[m_anData[E_DATA_platform_name]].trimmed()]); - query.bindValue(":PLATFORMFORM_NUM",m_mapPlatformform[m_mapData[strUrl].m_strlist[m_anData[E_DATA_platform_form]].trimmed()]); - query.bindValue(":ID_NUM",m_mapID[m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_id]].trimmed()].m_nNum); - query.bindValue(":NICKNAME_NUM",m_mapNickname[m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_nickname]].trimmed()].m_nNum); - query.bindValue(":COMMUNITY_NUM",m_mapCommunity[GetCommunityKey(m_mapData[strUrl].m_strlist)].m_nNum); - query.bindValue(":ID_ID",m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_id]].trimmed()); - query.bindValue(":TITLE",SqlString(m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_title]]).trimmed()); - query.bindValue(":PROFILE",SqlString(m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_profile]]).trimmed()); - QString strData = m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_data]]; - strData=strData.replace(QChar(160),""); - bool bQuit = true; - while(bQuit) - { - if (strData.contains("\n\n\n")) - strData=strData.replace("\n\n\n",""); - else - bQuit = false; - } - //strData=SeqDelString(strData,QChar('\n'),2); - query.bindValue(":DATA",SqlString(strData.replace(QString("\n"),QString("
"))).trimmed().left(32768)); - //query.bindValue(":PROFILEURL",SqlString(m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_profileurl]]).trimmed()); - QString strArticleUrl = m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_url]].trimmed(); - query.bindValue(":URL",strArticleUrl.right(strArticleUrl.length() - QString("http://").length())); - if (m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_hit]].trimmed().isEmpty()) - query.bindValue(":VIEW","-1"); - else - query.bindValue(":VIEW",m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_hit]]); - query.bindValue(":DATE",m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_date]].trimmed()); - if (m_mapData[strUrl].m_vecReply.size() == 0) - { - query.bindValue(":REPLY_STARTNUM",-1); - query.bindValue(":REPLY_ENDNUM",-1); - } - else - { - query.bindValue(":REPLY_STARTNUM",nReplyStart); - query.bindValue(":REPLY_ENDNUM",nReplyCount-1); - } - query.bindValue(":REPLY_COUNT",m_mapData[strUrl].m_vecReply.size()); - QString strDate = m_mapData[strUrl].m_dtLast.toString("yyyy-MM-dd HH:mm:ss"); - if (strDate.trimmed().isEmpty()) - query.bindValue(":LASTUPDATE","1900-01-01 00:00:00"); - else - query.bindValue(":LASTUPDATE",strDate); - - query.bindValue(":REALBYCATEGORYNUM",GetVectorToString(m_mapData[strUrl].m_vecCategory," ").trimmed()); - if (query.exec()==false) { - InsertLog(query.lastError().text());db.close();return; - } - } - - //if(query.exec(QString("COMMIT").toUtf8()) == false) {InsertLog(query.lastError().text());return;} - query.prepare(strMapQuery); - int nCount = 0; - foreach(SMap stMap,m_vecMap) - { - query.bindValue(":NUM",nCount++); - query.bindValue(":BODY_NUM",stMap.m_nBody); - query.bindValue(":CATEGORY_NUM",stMap.m_nCategory); - query.bindValue(":REALIN",stMap.m_nRealIn); - if (query.exec()==false){InsertLog(query.lastError().text());db.close();qDebug() << strQuery;return;} - } - - //if(query.exec(QString("COMMIT").toUtf8()) == false) {InsertLog(query.lastError().text());return;} - - QDate date = QDate::currentDate().addDays(-60); - QString astrOrderBy[D_ARTICLE_MAX] = {"body","reply","all"}; - while(date <= QDate::currentDate()) - { - QVector vecCount; - foreach(SBuzzy stBuzzy,m_vecBuzzy) - { - SBuzzyCount stCount; - memset(&stCount.m_anCount,0,sizeof(int)*D_ARTICLE_MAX); - stCount.m_nCategory = stBuzzy.m_nCategory; - if (stBuzzy.m_astArticle[E_ARTICLE_BODY].m_mapCount.contains(date)) - stCount.m_anCount[0] = stBuzzy.m_astArticle[E_ARTICLE_BODY].m_mapCount[date]; - if (stBuzzy.m_astArticle[E_ARTICLE_REPLY].m_mapCount.contains(date)) - stCount.m_anCount[1] = stBuzzy.m_astArticle[E_ARTICLE_REPLY].m_mapCount[date]; - stCount.m_anCount[2] = stCount.m_anCount[0] + stCount.m_anCount[1]; - vecCount.push_back(stCount); - } - for (int i = 0; i < D_ARTICLE_MAX ; i++) - { - strQuery = "insert stats_articlebuzzbyday set "; - foreach(SBuzzyCount stCount,vecCount) - { - strQuery += "category_"; - //if (stCount.m_nCategory) - strQuery += QString::number(stCount.m_nCategory); - //else - //strQuery += "all"; - strQuery += " = "; - strQuery += QString::number(stCount.m_anCount[i]); - strQuery += ","; - } - strQuery += "date = '"; - strQuery += date.toString("yyyy-MM-dd"); - strQuery += "', subject = '" ; - strQuery += astrOrderBy[i]; - strQuery += "',company_num = "; - strQuery += _strCompanyNum; - if (query.exec(strQuery.toUtf8())==false) { InsertLog(query.lastError().text());db.close();qDebug() << strQuery;return;} - } - date = date.addDays(1); - } - //if(query.exec(QString("COMMIT").toUtf8()) == false) {InsertLog(query.lastError().text());return;} - //if(query.exec(QString("SET AUTOCOMMIT = TRUE").toUtf8()) == false) {InsertLog(query.lastError().text());return;} - //SET AUTOCOMMIT = TRUE; - - //QSqlQuery query; - if(query.exec("select max(num) from id") == false) {InsertLog(query.lastError().text());} - if(query.next()) - m_nIDMax = query.value(0).toInt() + 1; - if(query.exec("select max(num) from nickname") == false) {InsertLog(query.lastError().text());} - if(query.next()) - m_nNickMax = query.value(0).toInt() + 1; - if(query.exec("select max(num) from community") == false) {InsertLog(query.lastError().text());} - if(query.next()) - m_nCommunityMax = query.value(0).toInt() + 1; - - db.close(); -} diff --git a/Filter/widget.h b/Filter/widget.h index cb1c1bb..b1388ea 100644 --- a/Filter/widget.h +++ b/Filter/widget.h @@ -7,145 +7,8 @@ #include #include #include -#include #include - -//#include "SGetThread.h" -//#include "SPutThread.h" -struct SReply -{ - QStringList m_strlist; - QDate m_date; - bool m_bSelect; - int m_nOrder; - QVector m_vecCategory; -}; - -struct SBody -{ - int m_nNum; - QStringList m_strlist; - bool m_bSelect; - bool m_bReplySelect; - QDateTime m_dtLast; - QDate m_date; - QMap m_vecReply; - QVector m_vecCategory; -}; - -struct SMap -{ - int m_nBody; - int m_nCategory; - int m_nRealIn; - QString m_strURL; -}; - -struct SInfluenceCount -{ - int m_ncBody; - int m_ncReply; - double m_dinfulrence; - int m_nID; - int m_nNickname; - int m_nCommunity; - QString m_strID; - QString m_strOrder; - QStringList m_strlistData; - SInfluenceCount() - { - m_nNickname = 0; - m_nCommunity = 0; - m_nID = 0; - } -}; - -struct SPowerCafeCount -{ - QString m_strCafeID; - QString m_strCommunityURL; - QStringList m_strlistData; - int m_nCommunityID; - int m_ncBodyAll; - int m_ncReplyAll; - int m_ncAll; - int m_ncBodyReal; - int m_ncReplyReal; - int m_ncAllReal; - int m_ncUserReal; - int m_ncUserAll; - QMap m_mapUser; - SPowerCafeCount() - { - m_ncBodyAll = 0; - m_ncReplyAll = 0; - m_ncAll = 0; - m_ncBodyReal = 0; - m_ncReplyReal = 0; - m_ncAllReal = 0; - m_ncUserReal = 0; - m_ncUserAll = 0; - } -}; - -struct SBuzzyArticle -{ - QMap m_mapCount; -}; - -#define D_ARTICLE_MAX 3 - -struct SBuzzyCount -{ - int m_nCategory; - int m_anCount[D_ARTICLE_MAX]; -}; - -struct SId -{ - int m_nNum; - int m_nPlatfromName; - int m_nCommunity; - QString m_strID; - SId() - { - m_nNum = 0; - m_nPlatfromName = 1; - m_nCommunity = 0; - m_strID = "(none)"; - } -}; - -struct SCommunity -{ - int m_nNum; - int m_nPlatformname; - int m_nPlatformform; - QString m_strTitle; - QString m_strUrl; - QString m_strID; - - SCommunity() - { - m_nNum = 0; - m_nPlatformname = 1; - m_nPlatformform = 1; - m_strTitle = "(none)"; - m_strUrl = " "; - m_strID = " "; - } -}; - -struct SNickname -{ - int m_nNum; - int m_nID; - QString m_strNickname; - SNickname() - { - m_nID = 0; - } -}; +#include class Widget : public QWidget { @@ -160,135 +23,49 @@ public: E_LIST_COMPANY, E_LIST_CATALOG, E_LIST_MAX - }; - enum E_COLUMN - { - E_COLUMN_DATABASE=0, - E_COLUMN_NAME, - E_COLUMN_DATE, - E_COLUMN_COUNT, }; - - enum E_ARTICLE - { - E_ARTICLE_BODY = 0, - E_ARTICLE_REPLY, - E_ARTICLE_MAX, - }; - - enum E_DATA - { - E_DATA_platform_title = 0, - E_DATA_article_form, - E_DATA_article_parent, - E_DATA_article_id, - E_DATA_article_nickname, - E_DATA_article_title, - E_DATA_article_data, - E_DATA_article_url, - E_DATA_article_hit, - E_DATA_article_date, - E_DATA_article_order, - E_DATA_platform_id, - E_DATA_platform_name, - E_DATA_platform_form, - E_DATA_reply_url, - E_DATA_keyword_id, - E_DATA_article_profileurl, - E_DATA_article_profile, - E_DATA_MAX, - }; - - enum E_SPAMER - { - E_SPAMER_BODY_COUNT_CUT = 0, - E_SPAMER_BODY_COUNT_RATIO, - E_SPAMER_NICK_COUNT_CUT, - E_SPAMER_NICK_COUNT_RATIO, - E_SPAMER_MAX - }; - - struct SBuzzy - { - SBuzzyArticle m_astArticle[E_ARTICLE_MAX]; - int m_nArticle; - int m_nCategory; - }; - - const int C_MAP_REAL_BODY; - const int C_MAP_REAL_REPLY; - - int m_anData[E_DATA_MAX]; - void Refresh(); + void FilterProcssRefresh(QString _strGroupID); + void Refresh(); private: QListWidget *m_plw; QListWidget *m_plwLog; QListWidget *m_plwFilterProcess; - QProgressBar *m_pProg; + QListWidget *m_plwFilterProcessGroup; + QListWidget *m_plwProcess; QTimer m_timer; - int m_nMode; - int m_nDateColumn; - int m_nUrlColumn; - int m_nOrderColumn; - QVector m_data[E_ARTICLE_MAX]; - bool m_bDataFlag[E_ARTICLE_MAX]; - QStringList m_listDataBaseColumn; - QMap m_mapData; - QVector m_vecMap; - QStringList m_strlistOrder; - QSqlDatabase db; - QVector m_vecInfluence; - QVector m_vecBuzzy; - ///////////////////////////////////////////////////// - QMap m_mapID; - QMap m_mapCommunity; - QMap m_mapNickname; - QMap m_mapPlatformform; - QMap m_mapPlatformname; + QLineEdit *m_pleFilterProcessGroup; - int m_nIDMax; - int m_nNickMax; - int m_nCommunityMax; - //SGetThread *m_pThread; - //SPutThread *m_pPutThread; - //QVector m_mainData; -private: + QSqlDatabase m_db; void InsertLog(QString str); - void FilterProcssRefresh(); - //void DataGet(QStringList _list); - void DataFilter(QString _strFilterGroupID); - void DataPut(QString _strCompanyNum); - QString GetVectorToString(QVector _vecCategory,QString _strDelimiter); - void DataMake(int _nCategory); - QString SqlString(QString _str); - void FilterDate(QString strJson); - void FilterSerach(QString strJson); - void FilterLength(QString strJson); - void FilterReplace(QString strJson); - bool ReloadColumn(); - void ReloadData(); - QString SeqDelString(QString _strData,QChar _chChar,int _nMax); - QString MakeInfluencerrankQuery(const SInfluenceCount &_stIn,int _nRank,QString _strSubject,QString _strCompanyNum); - void MakeBuzzyAll(); - void MakeBuzzy(int _nCategory); - QVariant GetWebData(QString _strTable,QString _strColumn,int _nNum); - void InfluenceCount(); - void ConsumerSupervisionCount(); - //inline QString GetComKey(const QStringList _strList); - inline QString GetCommunityKey(const QStringList _strList); + void InsertFilterProcess(int _nProcessType); + void Kill(int _nProcess); +#define D_PROCESS_MAX 1024 + QProcess m_aProcess[D_PROCESS_MAX]; private slots: void CompanyItemChanged(QListWidgetItem*,QListWidgetItem* _prev = 0); - void DataItemClicked(QListWidgetItem*); - void on_insert(); - void on_send(); - void on_delete(); + void FilterProcessGroupClicked(QListWidgetItem*); + void on_load(); + void on_start(); + void on_stop(); void on_refresh(); + void on_category(); + void on_send(); + void on_delete(); void on_influence_count(); - void on_power_cafe_count(); + void on_power_cafe_count(); void on_consumer_supervison_count(); void on_spammers_count(); - void Update(); + + void on_process_insert(); + void on_process_delete(); + + void on_filter_process_group_insert(); + void on_filter_process_group_delete(); + void on_filter_process_group_modify(); + void time_update(); + + void process_output(); }; #endif // WIDGET_H