필터 소스코드 정리
This commit is contained in:
@@ -1,812 +0,0 @@
|
|||||||
#include "widget.h"
|
|
||||||
#include <QVBoxLayout>
|
|
||||||
#include <QLabel>
|
|
||||||
#include <QSqlDatabase>
|
|
||||||
#include <QSqlError>
|
|
||||||
#include <QSqlQuery>
|
|
||||||
#include <QDebug>
|
|
||||||
#include <QPushButton>
|
|
||||||
#include <QThread>
|
|
||||||
#include <QTime>
|
|
||||||
#include <QFile>
|
|
||||||
#include <QSettings>
|
|
||||||
|
|
||||||
#include "../Json/sjson.h"
|
|
||||||
#include "../common.h"
|
|
||||||
#define MINUTE 60000
|
|
||||||
Widget::Widget(QWidget *parent) :
|
|
||||||
QWidget(parent)
|
|
||||||
{
|
|
||||||
QVBoxLayout *vMainLayout = new QVBoxLayout;
|
|
||||||
{
|
|
||||||
{
|
|
||||||
QHBoxLayout *hLayout = new QHBoxLayout;
|
|
||||||
QStringList strList;
|
|
||||||
strList << "Data" << "Filter Group" << "Company" << "Category";
|
|
||||||
m_plw = new QListWidget[E_LIST_MAX];
|
|
||||||
int i = 0;
|
|
||||||
foreach(QString str , strList)
|
|
||||||
{
|
|
||||||
QVBoxLayout *vLayout = new QVBoxLayout;
|
|
||||||
vLayout->addWidget(new QLabel(str));
|
|
||||||
vLayout->addWidget(&m_plw[i++]);
|
|
||||||
hLayout->addLayout(vLayout);
|
|
||||||
}
|
|
||||||
connect(&m_plw[E_LIST_COMPANY],SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),this,SLOT(CompanyItemChanged(QListWidgetItem*,QListWidgetItem*)));
|
|
||||||
vMainLayout->addLayout(hLayout);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
QHBoxLayout *hLayout = new QHBoxLayout;
|
|
||||||
{
|
|
||||||
QVBoxLayout *vLayout = new QVBoxLayout;
|
|
||||||
{
|
|
||||||
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;
|
|
||||||
hSubLayout->addWidget(new QLabel("Timer(Minute): "));
|
|
||||||
m_pleExcutionTime = new QLineEdit;
|
|
||||||
m_pleExcutionTime->setValidator( new QIntValidator(1, 100000, this));
|
|
||||||
m_pleExcutionTime->setText("60");
|
|
||||||
m_pleExcutionTime->setFixedWidth(50);
|
|
||||||
hSubLayout->addWidget(m_pleExcutionTime);
|
|
||||||
|
|
||||||
hSubLayout->addWidget(new QLabel("Influencer Limit: "));
|
|
||||||
m_pleInfluencerLimitFrom = new QLineEdit;
|
|
||||||
m_pleInfluencerLimitFrom->setValidator( new QIntValidator(1, 100000, this));
|
|
||||||
m_pleInfluencerLimitFrom->setText("1");
|
|
||||||
m_pleInfluencerLimitFrom->setFixedWidth(40);
|
|
||||||
m_pleInfluencerLimitTo = new QLineEdit;
|
|
||||||
m_pleInfluencerLimitTo->setValidator( new QIntValidator(1, 100000, this));
|
|
||||||
m_pleInfluencerLimitTo->setText("500");
|
|
||||||
m_pleInfluencerLimitTo->setFixedWidth(40);
|
|
||||||
|
|
||||||
hSubLayout->addWidget(m_pleInfluencerLimitFrom);
|
|
||||||
hSubLayout->addWidget(m_pleInfluencerLimitTo);
|
|
||||||
|
|
||||||
v_0_Layout->addLayout(hSubLayout);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
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);
|
|
||||||
QPushButton *ppbStart = new QPushButton("Start");
|
|
||||||
connect(ppbStart, SIGNAL(released()),this, SLOT(on_process_start()));
|
|
||||||
hSubLayout->addWidget(ppbStart);
|
|
||||||
QPushButton *ppbStop = new QPushButton("Stop");
|
|
||||||
connect(ppbStop, SIGNAL(released()),this, SLOT(on_process_stop()));
|
|
||||||
hSubLayout->addWidget(ppbStop);
|
|
||||||
|
|
||||||
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("Spammers Count");
|
|
||||||
connect(ppbCount, SIGNAL(released()),this, SLOT(on_spammers_count()));
|
|
||||||
hLayoutEdit->addWidget(ppbCount);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
QPushButton *ppbCount = new QPushButton("Power Cafe Count");
|
|
||||||
connect(ppbCount, SIGNAL(released()),this, SLOT(on_power_cafe_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 *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"));
|
|
||||||
m_plwLog = new QListWidget;
|
|
||||||
vLayout->addWidget(m_plwLog);
|
|
||||||
hLayout->addLayout(vLayout);
|
|
||||||
}
|
|
||||||
vMainLayout->addLayout(hLayout);
|
|
||||||
}
|
|
||||||
QPushButton *ppbRefresh = new QPushButton("Refresh");
|
|
||||||
connect(ppbRefresh, SIGNAL(released()),this, SLOT(on_refresh()));
|
|
||||||
vMainLayout->addWidget(ppbRefresh);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
QPushButton *ppbSend = new QPushButton("Send");
|
|
||||||
vMainLayout->addWidget(ppbSend);
|
|
||||||
connect(ppbSend, SIGNAL(released()),this, SLOT(on_send()));
|
|
||||||
*/
|
|
||||||
connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(time_update()));
|
|
||||||
connect(&m_executionTimer, SIGNAL(timeout()), this, SLOT(time_execute()));
|
|
||||||
//m_pThread = new SGetThread;
|
|
||||||
setLayout(vMainLayout);
|
|
||||||
//m_pPutThread = new SPutThread[QThread::idealThreadCount()];
|
|
||||||
if (ReloadSetup() == false)
|
|
||||||
{
|
|
||||||
InsertLog("setup.ini don't find");
|
|
||||||
}
|
|
||||||
m_db = QSqlDatabase::addDatabase("QMYSQL");
|
|
||||||
//m_statusTimer.start(5000);
|
|
||||||
Refresh();
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::InsertLog(QString str)
|
|
||||||
{
|
|
||||||
if(str[str.length()-1] == QChar('\n'))
|
|
||||||
str = str.mid(0, str.length()-1);
|
|
||||||
|
|
||||||
QTime time = QTime::currentTime();
|
|
||||||
QString strOut = time.toString("[hh:mm:ss] ") + str;
|
|
||||||
m_plwLog->addItem(strOut);
|
|
||||||
|
|
||||||
if (m_plwLog->count() > 1024)
|
|
||||||
{
|
|
||||||
m_plwLog->removeItemWidget(m_plwLog->item(0));
|
|
||||||
QListWidgetItem* item = m_plwLog->takeItem(0);
|
|
||||||
delete item;
|
|
||||||
}
|
|
||||||
m_plwLog->setCurrentRow( m_plwLog->count() - 1 );
|
|
||||||
m_plwLog->repaint();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Widget::ReloadSetup()
|
|
||||||
{
|
|
||||||
QSettings settings(QString("setup.ini"), QSettings::IniFormat);
|
|
||||||
settings.setIniCodec("UTF-8");
|
|
||||||
settings.beginGroup(QString("database"));
|
|
||||||
if (settings.childKeys().size() == 0) return false;
|
|
||||||
m_strWebDataBaseHost = settings.value("host").toString();
|
|
||||||
m_strWebDataBaseUser = settings.value("user").toString();
|
|
||||||
m_strWebDataBasePass = settings.value("pass").toString();
|
|
||||||
m_strWebDataBaseName = settings.value("name").toString();
|
|
||||||
settings.endGroup();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Widget::Refresh()
|
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < E_LIST_MAX ; i++)
|
|
||||||
m_plw[i].clear();
|
|
||||||
|
|
||||||
{
|
|
||||||
QSqlQuery query("select id,name,locked from filtergroup");
|
|
||||||
while (query.next())
|
|
||||||
{
|
|
||||||
QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString() +
|
|
||||||
((query.value(2).toInt() == 0)? "" : " (Locked)")
|
|
||||||
,&m_plw[E_LIST_FILTER]);
|
|
||||||
pItem->setData(Qt::UserRole, QVariant(query.value(0)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
QSqlQuery query("select id,name FROM datagroup");
|
|
||||||
while(query.next())
|
|
||||||
{
|
|
||||||
QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString() + QString("(") + query.value(0).toString() + QString(")") ,&m_plw[E_LIST_DATA]);
|
|
||||||
pItem->setData(Qt::UserRole, QVariant(query.value(0)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
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(m_strWebDataBaseHost);
|
|
||||||
m_db.setUserName(m_strWebDataBaseUser);
|
|
||||||
m_db.setPassword(m_strWebDataBasePass);
|
|
||||||
m_db.setDatabaseName(m_strWebDataBaseName);
|
|
||||||
|
|
||||||
if (m_db.open() == false)
|
|
||||||
{
|
|
||||||
InsertLog(m_db.lastError().text());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
QSqlQuery query("select num,name FROM company");
|
|
||||||
while(query.next())
|
|
||||||
{
|
|
||||||
QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString(),&m_plw[E_LIST_COMPANY]);
|
|
||||||
pItem->setData(Qt::UserRole, QVariant(query.value(0)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
m_db.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::CompanyItemChanged(QListWidgetItem* _current,QListWidgetItem*)
|
|
||||||
{
|
|
||||||
if (_current == 0) return;
|
|
||||||
m_db.setHostName(m_strWebDataBaseHost);
|
|
||||||
m_db.setUserName(m_strWebDataBaseUser);
|
|
||||||
m_db.setPassword(m_strWebDataBasePass);
|
|
||||||
m_db.setDatabaseName(m_strWebDataBaseName);
|
|
||||||
if (m_db.open() == false)
|
|
||||||
{
|
|
||||||
InsertLog(m_db.lastError().text());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
m_plw[E_LIST_CATALOG].clear();
|
|
||||||
|
|
||||||
int nServiceCnt[E_SERVICE_MAX] = {0};
|
|
||||||
|
|
||||||
QSqlQuery query("select num,name,servicenum FROM category where company_num = '" +_current->data(Qt::UserRole).toString()+ "' order by servicenum asc, num asc");
|
|
||||||
while(query.next())
|
|
||||||
{
|
|
||||||
int num = query.value(0).toInt();
|
|
||||||
int servicenum = query.value(2).toInt();
|
|
||||||
QString name = query.value(1).toString();
|
|
||||||
QString strService;
|
|
||||||
|
|
||||||
|
|
||||||
switch (servicenum - 1)
|
|
||||||
{
|
|
||||||
case E_SERVICE_INFLUENCER:
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
if (0 == nServiceCnt[E_SERVICE_INFLUENCER]++)
|
|
||||||
continue;
|
|
||||||
*/
|
|
||||||
strService = "[Influencer]";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case E_SERVICE_CONSUMER:
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
if (0 == nServiceCnt[E_SERVICE_CONSUMER]++)
|
|
||||||
continue;
|
|
||||||
*/
|
|
||||||
strService = "[Consumer]";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case E_SERVICE_SPAMMER:
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
if (0 == nServiceCnt[E_SERVICE_SPAMMER]++)
|
|
||||||
continue;
|
|
||||||
*/
|
|
||||||
strService = "[Spammer]";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case E_SERVICE_POWERCAFE:
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
if (0 == nServiceCnt[E_SERVICE_POWERCAFE]++)
|
|
||||||
continue;
|
|
||||||
*/
|
|
||||||
strService = "[Powercafe]";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QListWidgetItem *pItem = new QListWidgetItem(strService + ":" + name ,&m_plw[E_LIST_CATALOG]);
|
|
||||||
|
|
||||||
QList<QVariant> qlist;
|
|
||||||
qlist.append(QVariant(num));
|
|
||||||
qlist.append(QVariant(servicenum));
|
|
||||||
pItem->setData(Qt::UserRole, QVariant(qlist));
|
|
||||||
}
|
|
||||||
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())
|
|
||||||
{
|
|
||||||
if (i == E_LIST_CATALOG)
|
|
||||||
{
|
|
||||||
QList<QVariant> qlist = item->data(Qt::UserRole).toList();
|
|
||||||
int nCategory = qlist.at(0).toInt();
|
|
||||||
int nService = qlist.at(1).toInt();
|
|
||||||
strQuery += astProcessFilter[i].m_strID + "=";
|
|
||||||
strQuery += QString::number(nCategory) + ",";
|
|
||||||
strQuery += astProcessFilter[i].m_strName + "='";
|
|
||||||
strQuery += item->text() + "',";
|
|
||||||
strQuery += "service_num = " + QString::number(nService) + ",";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
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_load()
|
|
||||||
{
|
|
||||||
InsertFilterProcess(E_PROCSS_TYPE_LOAD);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::on_send()
|
|
||||||
{
|
|
||||||
InsertFilterProcess(E_PROCSS_TYPE_SEND);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::on_category()
|
|
||||||
{
|
|
||||||
InsertFilterProcess(E_PROCSS_TYPE_CATEGORY_MAKE);
|
|
||||||
}
|
|
||||||
|
|
||||||
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()
|
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
foreach (QListWidgetItem *item,m_plwFilterProcess->selectedItems())
|
|
||||||
{
|
|
||||||
QSqlQuery query;
|
|
||||||
QString sql("delete from filterprocess where id = " + item->data(Qt::UserRole).toString());
|
|
||||||
if(query.exec(sql) == false)
|
|
||||||
{
|
|
||||||
InsertLog(query.lastError().text());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
m_db.close();
|
|
||||||
|
|
||||||
foreach (QListWidgetItem *itemProcessGroup,m_plwFilterProcessGroup->selectedItems())
|
|
||||||
FilterProcssRefresh(itemProcessGroup->data(Qt::UserRole).toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::FilterProcssRefresh(QString _strGroupID)
|
|
||||||
{
|
|
||||||
qDebug() << __FILE__ << __LINE__;
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
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());
|
|
||||||
}
|
|
||||||
m_plwFilterProcess->clear();
|
|
||||||
while(query.next())
|
|
||||||
{
|
|
||||||
QString str;
|
|
||||||
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 filter [" ;
|
|
||||||
str += query.value(5).toString();
|
|
||||||
str += "] and Send : Company [";
|
|
||||||
str += query.value(6).toString();
|
|
||||||
str += "]";
|
|
||||||
break;
|
|
||||||
case E_PROCSS_TYPE_SPAMMERS_COUNT:
|
|
||||||
str += "Spammers Count filter [" ;
|
|
||||||
str += query.value(5).toString();
|
|
||||||
str += "] 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)));
|
|
||||||
}
|
|
||||||
m_db.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::on_refresh()
|
|
||||||
{
|
|
||||||
Refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::time_update()
|
|
||||||
{
|
|
||||||
process_refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::process_refresh()
|
|
||||||
{
|
|
||||||
m_plwProcess->clear();
|
|
||||||
for(int i = 0; i < D_PROCESS_MAX; i++)
|
|
||||||
{
|
|
||||||
if (m_aProcess[i].arguments().size() == 0) continue;
|
|
||||||
QString str = m_aProcess[i].arguments().at(1);
|
|
||||||
str += "["+m_aProcess[i].arguments().at(2)+"] ";
|
|
||||||
|
|
||||||
switch(m_aProcess[i].state())
|
|
||||||
{
|
|
||||||
case QProcess::NotRunning:str += "(Wait)";break;
|
|
||||||
case QProcess::Running:str += "(Run)";break;
|
|
||||||
case QProcess::Starting:str += "(Start)";break;
|
|
||||||
}
|
|
||||||
QListWidgetItem *pItem = new QListWidgetItem(str,m_plwProcess);
|
|
||||||
pItem->setData(Qt::UserRole, QVariant(m_aProcess[i].arguments().at(0)));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::on_process_insert()
|
|
||||||
{
|
|
||||||
foreach(QListWidgetItem *item,m_plwFilterProcessGroup->selectedItems())
|
|
||||||
{
|
|
||||||
QStringList strlist;
|
|
||||||
strlist.append(item->data(Qt::UserRole).toString());
|
|
||||||
strlist.append(item->text().trimmed());
|
|
||||||
strlist.append(m_pleInfluencerLimitFrom->text() + "~" + m_pleInfluencerLimitTo->text());
|
|
||||||
for (int i = 0; i < D_PROCESS_MAX;i++)
|
|
||||||
{
|
|
||||||
if (m_aProcess[i].arguments().size() == 0)
|
|
||||||
{
|
|
||||||
|
|
||||||
#if defined(Q_OS_WIN32)
|
|
||||||
m_aProcess[i].setProgram("FilterProcess.exe");
|
|
||||||
|
|
||||||
#else
|
|
||||||
m_aProcess[i].setProgram("./FilterProcess");
|
|
||||||
|
|
||||||
#endif
|
|
||||||
m_aProcess[i].setArguments(strlist);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
process_refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::on_process_start()
|
|
||||||
{
|
|
||||||
bool ok;
|
|
||||||
int time = m_pleExcutionTime->text().toInt(&ok);
|
|
||||||
if(!ok)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (m_statusTimer.isActive() == false)
|
|
||||||
m_statusTimer.start(5000);
|
|
||||||
|
|
||||||
if (m_executionTimer.isActive() == false)
|
|
||||||
m_executionTimer.start(time*MINUTE);
|
|
||||||
|
|
||||||
time_update();
|
|
||||||
time_execute();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::on_process_stop()
|
|
||||||
{
|
|
||||||
if (m_statusTimer.isActive() == true)
|
|
||||||
m_statusTimer.stop();
|
|
||||||
if (m_executionTimer.isActive() == true)
|
|
||||||
m_executionTimer.stop();
|
|
||||||
|
|
||||||
process_refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::on_process_delete()
|
|
||||||
{
|
|
||||||
foreach(QListWidgetItem *item,m_plwProcess->selectedItems())
|
|
||||||
{
|
|
||||||
for (int i = 0; i < D_PROCESS_MAX;i++)
|
|
||||||
{
|
|
||||||
if (m_aProcess[i].arguments().size() > 0 && m_aProcess[i].arguments().at(0) == item->data(Qt::UserRole).toString())
|
|
||||||
{
|
|
||||||
Kill(i);
|
|
||||||
m_aProcess[i].setArguments(QStringList());
|
|
||||||
process_refresh();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Widget::time_execute()
|
|
||||||
{
|
|
||||||
for(int i = 0; i < D_PROCESS_MAX; i++)
|
|
||||||
{
|
|
||||||
if (m_aProcess[i].arguments().size() == 0) continue;
|
|
||||||
|
|
||||||
switch(m_aProcess[i].state())
|
|
||||||
{
|
|
||||||
case QProcess::NotRunning: m_aProcess[i].start();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
process_refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::process_output()
|
|
||||||
{
|
|
||||||
QProcess *pPro = (QProcess*)sender();
|
|
||||||
QString str = pPro->readAllStandardOutput();
|
|
||||||
InsertLog(str);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Widget::Kill(int _nProcess)
|
|
||||||
{
|
|
||||||
if (m_aProcess[_nProcess].state() == QProcess::Running)
|
|
||||||
{
|
|
||||||
m_aProcess[_nProcess].kill();
|
|
||||||
m_aProcess[_nProcess].waitForFinished();
|
|
||||||
m_aProcess[_nProcess].setArguments(QStringList());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -12,7 +12,6 @@ CONFIG -= app_bundle
|
|||||||
|
|
||||||
TEMPLATE = app
|
TEMPLATE = app
|
||||||
|
|
||||||
|
|
||||||
SOURCES += main.cpp \
|
SOURCES += main.cpp \
|
||||||
sdbmanager.cpp \
|
sdbmanager.cpp \
|
||||||
sinitializer.cpp \
|
sinitializer.cpp \
|
||||||
|
|||||||
@@ -25,10 +25,14 @@ int main(int argc, char *argv[])
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString strFilterProcessGroupID = argv[1];
|
||||||
|
QString strFilterProcessGroupName = argv[2];
|
||||||
|
QString strInfluencerLimit = argv[3];
|
||||||
|
|
||||||
a.processEvents();
|
a.processEvents();
|
||||||
|
|
||||||
if (!filter.init(argv[1], argv[2], argv[3]))
|
|
||||||
//if (!filter.init(QString::number(370), "Check"))
|
if (!filter.init(strFilterProcessGroupID, strFilterProcessGroupName, strInfluencerLimit))
|
||||||
{
|
{
|
||||||
cout << "filter init error" << endl;
|
cout << "filter init error" << endl;
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|||||||
@@ -350,33 +350,6 @@ str += QString::number(stbody.sharecount) + ",";
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SConsumer::SReplyConsumerMap::makeTable(SDatagroup &_datagroup, const QMap<int, stReal> &_mapCategory)
|
|
||||||
{
|
|
||||||
int num = 0;
|
|
||||||
const QStringList* orderedUrl = _datagroup.getOrderedUrl();
|
|
||||||
for (QMap<int, stReal>::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++)
|
|
||||||
{
|
|
||||||
const stReal& streal = iterPos.value();
|
|
||||||
foreach (const QString& strUrl, *orderedUrl)
|
|
||||||
{
|
|
||||||
if (streal.m_setRealAllUrl.contains(strUrl))
|
|
||||||
{
|
|
||||||
if (_datagroup.getstBody(strUrl)->replycount == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
const QMap<int, SDatagroup::stReply>* mapReply = _datagroup.getstReply(strUrl);
|
|
||||||
|
|
||||||
for(QMap<int, SDatagroup::stReply>::const_iterator iterPos1 = mapReply->constBegin(); iterPos1 != mapReply->constEnd(); iterPos1++)
|
|
||||||
{
|
|
||||||
stReplyConsumerMap streply;
|
|
||||||
streply.num = num++;
|
|
||||||
streply.category_num = iterPos.key();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString SConsumer::SStatsJson::getStatsJsonBySubtitle(QString _subtitle)
|
QString SConsumer::SStatsJson::getStatsJsonBySubtitle(QString _subtitle)
|
||||||
{
|
{
|
||||||
foreach (stStatsJson statsJson, m_listMap)
|
foreach (stStatsJson statsJson, m_listMap)
|
||||||
|
|||||||
@@ -7,179 +7,134 @@
|
|||||||
class SConsumer:public SService
|
class SConsumer:public SService
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
struct stReal
|
|
||||||
{
|
|
||||||
QSet<QString> m_setRealAllUrl;
|
|
||||||
QSet<QString> m_setRealBodyUrl;
|
|
||||||
QMap<QString, int> m_mapRealReplyUniqueUrl; //multiple
|
|
||||||
};
|
|
||||||
struct stBodyConsumerMap
|
|
||||||
{
|
|
||||||
int num;
|
|
||||||
int body_num;
|
|
||||||
int category_num;
|
|
||||||
int realin;
|
|
||||||
int platformname_num;
|
|
||||||
int platformform_num;
|
|
||||||
QString date;
|
|
||||||
int replycount;
|
|
||||||
int view;
|
|
||||||
int likecount;
|
|
||||||
int sharecount;
|
|
||||||
int id_num;
|
|
||||||
int community_num;
|
|
||||||
int nickname_num;
|
|
||||||
stBodyConsumerMap():num(0), body_num(0), category_num(0), realin(0), platformname_num(0), platformform_num(0),
|
|
||||||
replycount(0), view(0), likecount(0), sharecount(0), id_num(0), community_num(0), nickname_num(0){}
|
|
||||||
};
|
|
||||||
struct stReplyConsumerMap
|
|
||||||
{
|
|
||||||
int num;
|
|
||||||
int reply_num;
|
|
||||||
int body_num;
|
|
||||||
int id_num;
|
|
||||||
int category_num;
|
|
||||||
int realin;
|
|
||||||
stReplyConsumerMap():num(0), reply_num(0), body_num(0), id_num(0), category_num(0), realin(0) {}
|
|
||||||
};
|
|
||||||
/*
|
|
||||||
struct stStatsConUserBuzzybyday
|
|
||||||
{
|
|
||||||
int category[11];
|
|
||||||
QDate date;
|
|
||||||
QString subject;
|
|
||||||
int company_num;
|
|
||||||
stStatsConUserBuzzybyday():company_num(0)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 11; i++)
|
|
||||||
category[i] = 0;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
struct stStatsJson
|
|
||||||
{
|
|
||||||
int company_num;
|
|
||||||
int servicenum;
|
|
||||||
QString title;
|
|
||||||
QString subtitle;
|
|
||||||
int platformname_num;
|
|
||||||
QString jdata;
|
|
||||||
int category_num;
|
|
||||||
stStatsJson():company_num(0), servicenum(2), platformname_num(1), category_num(0){}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stBuzzy
|
struct stReal
|
||||||
{
|
{
|
||||||
int m_nCategory;
|
QSet<QString> m_setRealAllUrl;
|
||||||
QMap<QDate, int> m_mapBodyBuzz;
|
QSet<QString> m_setRealBodyUrl;
|
||||||
QMap<QDate, int> m_mapReplyBuzz;
|
QMap<QString, int> m_mapRealReplyUniqueUrl; //multiple
|
||||||
};
|
};
|
||||||
|
|
||||||
class SBodyConsumerMap
|
struct stBodyConsumerMap
|
||||||
{
|
{
|
||||||
private:
|
stBodyConsumerMap():num(0), body_num(0), category_num(0), realin(0), platformname_num(0), platformform_num(0),
|
||||||
SInitializer *m_pSInitializer;
|
replycount(0), view(0), likecount(0), sharecount(0), id_num(0), community_num(0), nickname_num(0){}
|
||||||
QList<stBodyConsumerMap> m_listMap;
|
|
||||||
public:
|
|
||||||
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
|
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
bool changeTable(QSqlDatabase& _db, const int &_nCompany);
|
|
||||||
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
|
|
||||||
void clear() { m_listMap.clear(); }
|
|
||||||
};
|
|
||||||
class SReplyConsumerMap // Why did you define this?
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
SInitializer *m_pSInitializer;
|
|
||||||
QList<stReplyConsumerMap> m_listMap;
|
|
||||||
public:
|
|
||||||
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
|
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
bool changeTable(QSqlDatabase& _db, const int &_nCompany);
|
|
||||||
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
|
|
||||||
void clear(){ m_listMap.clear(); }
|
|
||||||
|
|
||||||
};
|
int num;
|
||||||
/*
|
int body_num;
|
||||||
class SStatsConUserBuzzybyday
|
int category_num;
|
||||||
{
|
int realin;
|
||||||
private:
|
int platformname_num;
|
||||||
SInitializer *m_pSInitializer;
|
int platformform_num;
|
||||||
QList<stStatsConUserBuzzybyday> m_listMap;
|
QString date;
|
||||||
public:
|
int replycount;
|
||||||
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
|
int view;
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
int likecount;
|
||||||
//bool changeTable(QSqlDatabase& _db, const int &_nCompany);
|
int sharecount;
|
||||||
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
|
int id_num;
|
||||||
void clear(){ m_listMap.clear(); }
|
int community_num;
|
||||||
};
|
int nickname_num;
|
||||||
*/
|
};
|
||||||
|
|
||||||
class SStatsJson
|
struct stReplyConsumerMap
|
||||||
{
|
{
|
||||||
private:
|
stReplyConsumerMap():num(0), reply_num(0), body_num(0), id_num(0), category_num(0), realin(0) {}
|
||||||
SInitializer *m_pSInitializer;
|
|
||||||
QList<stStatsJson> m_listMap;
|
|
||||||
|
|
||||||
private:
|
int num;
|
||||||
QString getStatsJsonBySubtitle(QString _subtitle);
|
int reply_num;
|
||||||
|
int body_num;
|
||||||
|
int id_num;
|
||||||
|
int category_num;
|
||||||
|
int realin;
|
||||||
|
};
|
||||||
|
|
||||||
public:
|
struct stStatsJson
|
||||||
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
|
{
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
stStatsJson():company_num(0), servicenum(2), platformname_num(1), category_num(0){}
|
||||||
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
|
|
||||||
bool SaveDataFile(const int &_nCompany);
|
|
||||||
void clear(){ m_listMap.clear(); }
|
|
||||||
};
|
|
||||||
|
|
||||||
private:
|
int company_num;
|
||||||
SFilterAlgorithm m_SFilterAlgorithm;
|
int servicenum;
|
||||||
QMap<int, stReal> m_mapCategory;
|
QString title;
|
||||||
SBodyConsumerMap m_SBodyConsumerMap;
|
QString subtitle;
|
||||||
//SStatsConUserBuzzybyday m_SStatsConUserBuzzybyday;
|
int platformname_num;
|
||||||
SStatsJson m_SStatsJson;
|
QString jdata;
|
||||||
|
int category_num;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct stBuzzy
|
||||||
|
{
|
||||||
|
int m_nCategory;
|
||||||
|
QMap<QDate, int> m_mapBodyBuzz;
|
||||||
|
QMap<QDate, int> m_mapReplyBuzz;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SBodyConsumerMap
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
|
||||||
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
|
bool changeTable(QSqlDatabase& _db, const int &_nCompany);
|
||||||
|
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
|
||||||
|
void clear() { m_listMap.clear(); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
QList<stBodyConsumerMap> m_listMap;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SStatsJson
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
|
||||||
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
|
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
|
||||||
|
bool SaveDataFile(const int &_nCompany);
|
||||||
|
void clear(){ m_listMap.clear(); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
QList<stStatsJson> m_listMap;
|
||||||
|
QString getStatsJsonBySubtitle(QString _subtitle);
|
||||||
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void setInitiaizer(SInitializer &_initializer);
|
virtual void setInitiaizer(SInitializer &_initializer);
|
||||||
virtual bool uploadData(int _companyNum);
|
virtual bool uploadData(int _companyNum);
|
||||||
virtual bool SaveDataFile(int _companyNum);
|
virtual bool SaveDataFile(int _companyNum);
|
||||||
virtual bool changeTable(int _companyNum);
|
virtual bool changeTable(int _companyNum);
|
||||||
virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList<SInitializer::stFilter> &_listFilter);
|
virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList<SInitializer::stFilter> &_listFilter);
|
||||||
virtual bool makeOverallCategory(int _nCategory);
|
virtual bool makeOverallCategory(int _nCategory);
|
||||||
virtual bool makeTable(SDatagroup &_datagroup);
|
virtual bool makeTable(SDatagroup &_datagroup);
|
||||||
};
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
SFilterAlgorithm m_SFilterAlgorithm;
|
||||||
|
QMap<int, stReal> m_mapCategory;
|
||||||
|
SBodyConsumerMap m_SBodyConsumerMap;
|
||||||
|
SStatsJson m_SStatsJson;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
class SConsumerAssist:public SService
|
class SConsumerAssist:public SService
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual void setInitiaizer(SInitializer &_initializer)
|
virtual void setInitiaizer(SInitializer& _initializer) { m_pSInitializer = &_initializer; }
|
||||||
{
|
virtual bool uploadData(int /*_companyNum*/){ return true; }
|
||||||
m_pSInitializer = &_initializer;
|
virtual bool changeTable(int /*_companyNum*/){ return true; }
|
||||||
}
|
virtual bool makeCategory(SDatagroup& /*_datagroup*/, int /*_nCategory*/, const QList<SInitializer::stFilter> &/*_listFilter*/){ return true; }
|
||||||
virtual bool uploadData(int _companyNum){ return true; }
|
virtual bool makeOverallCategory(int /*_nCategory*/){ return true; }
|
||||||
virtual bool changeTable(int _companyNum){ return true; }
|
virtual bool makeTable(SDatagroup &/*_datagroup*/){return true;}
|
||||||
virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList<SInitializer::stFilter> &_listFilter){ return true; }
|
|
||||||
virtual bool makeOverallCategory(int _nCategory){ return true; }
|
|
||||||
virtual bool makeTable(SDatagroup &_datagroup){return true;}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class SConsumerMarketer:public SConsumerAssist
|
class SConsumerMarketer:public SConsumerAssist
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
virtual bool makeTable(SDatagroup &_datagroup);
|
||||||
virtual bool makeTable(SDatagroup &_datagroup);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class SConsumerCheckList:public SConsumerAssist
|
class SConsumerCheckList:public SConsumerAssist
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
virtual bool makeTable(SDatagroup &_datagroup);
|
||||||
virtual bool makeTable(SDatagroup &_datagroup);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif // SCONSUMER
|
#endif // SCONSUMER
|
||||||
|
|
||||||
|
|||||||
@@ -130,6 +130,9 @@ stConsumerCategoryStatistics& SCousumerStatistics::getCategory(QString _strCateg
|
|||||||
if (iter->categoryName == _strCategoryName)
|
if (iter->categoryName == _strCategoryName)
|
||||||
return *iter;
|
return *iter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static stConsumerCategoryStatistics empty;
|
||||||
|
return empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SCousumerStatistics::hasCategory(QString _strCategoryName)
|
bool SCousumerStatistics::hasCategory(QString _strCategoryName)
|
||||||
|
|||||||
@@ -11,52 +11,52 @@
|
|||||||
|
|
||||||
struct stCountInfo
|
struct stCountInfo
|
||||||
{
|
{
|
||||||
int allCount;
|
int allCount;
|
||||||
int bodyCount;
|
int bodyCount;
|
||||||
int replyCount;
|
int replyCount;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct stConsumerCategoryStatistics
|
struct stConsumerCategoryStatistics
|
||||||
{
|
{
|
||||||
QString categoryName;
|
QString categoryName;
|
||||||
QMap<QString, stCountInfo> mapCountInfoOfDate;
|
QMap<QString, stCountInfo> mapCountInfoOfDate;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SCousumerStatistics
|
class SCousumerStatistics
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
QJsonArray m_BodyJsonArray;
|
QJsonArray m_BodyJsonArray;
|
||||||
QJsonArray m_ReplyJsonArray;
|
QJsonArray m_ReplyJsonArray;
|
||||||
QJsonArray m_AllJsonArray;
|
QJsonArray m_AllJsonArray;
|
||||||
|
|
||||||
QList<QString> m_listBanCategoryName;
|
QList<QString> m_listBanCategoryName;
|
||||||
|
|
||||||
QList<stConsumerCategoryStatistics> m_listConsumerCategoryStatistics;
|
QList<stConsumerCategoryStatistics> m_listConsumerCategoryStatistics;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QJsonArray convertStringToJsonArray(QString _strJson);
|
QJsonArray convertStringToJsonArray(QString _strJson);
|
||||||
QString getCategoryNameFromJsonObject(QJsonObject _jsonObject);
|
QString getCategoryNameFromJsonObject(QJsonObject _jsonObject);
|
||||||
QJsonArray getDataArrayFromJsonDocument(QJsonDocument _jsonDocument);
|
QJsonArray getDataArrayFromJsonDocument(QJsonDocument _jsonDocument);
|
||||||
QJsonArray getValueArrayFromJsonObject(QJsonObject _jsonObject);
|
QJsonArray getValueArrayFromJsonObject(QJsonObject _jsonObject);
|
||||||
|
|
||||||
void setBanCategoryName();
|
void setBanCategoryName();
|
||||||
void makeConsumerStatistics();
|
void makeConsumerStatistics();
|
||||||
void makeBodyStatistics();
|
void makeBodyStatistics();
|
||||||
void makeReplyStatistics();
|
void makeReplyStatistics();
|
||||||
void makeAllStatistics();
|
void makeAllStatistics();
|
||||||
|
|
||||||
bool hasCategory(QString _strCategoryName);
|
bool hasCategory(QString _strCategoryName);
|
||||||
bool isBanCategory(QString _strCategoryName);
|
bool isBanCategory(QString _strCategoryName);
|
||||||
bool isLastDayOfMonth(QString _strDate);
|
bool isLastDayOfMonth(QString _strDate);
|
||||||
stConsumerCategoryStatistics& getCategory(QString _strCategoryName);
|
stConsumerCategoryStatistics& getCategory(QString _strCategoryName);
|
||||||
stConsumerCategoryStatistics createCategory(QString _strCategoryName);
|
stConsumerCategoryStatistics createCategory(QString _strCategoryName);
|
||||||
void sumBodyAndReplyCount(stConsumerCategoryStatistics& _consumerCategoryStatistics);
|
void sumBodyAndReplyCount(stConsumerCategoryStatistics& _consumerCategoryStatistics);
|
||||||
public:
|
public:
|
||||||
SCousumerStatistics(QString _strBodyJson, QString _strReplyJson, QString _strAllJson);
|
SCousumerStatistics(QString _strBodyJson, QString _strReplyJson, QString _strAllJson);
|
||||||
void print();
|
void print();
|
||||||
void print2();
|
void print2();
|
||||||
|
|
||||||
bool saveCousumerStatisticsToExcelFile(int _nCompany);
|
bool saveCousumerStatisticsToExcelFile(int _nCompany);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SCOUSUMERSTATISTICS_H
|
#endif // SCOUSUMERSTATISTICS_H
|
||||||
|
|||||||
@@ -1433,44 +1433,6 @@ bool SDatagroup::SCommunity::changeTable(QSqlDatabase &_db, const int &_nCompany
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
bool SDatagroup::SCommunity::uploadData(QSqlDatabase &_db, const int &_nCompany)
|
|
||||||
{
|
|
||||||
//_db.transaction();
|
|
||||||
QString strQuery;
|
|
||||||
strQuery = "delete from community_" + QString::number(_nCompany) + "_update";
|
|
||||||
QSqlQuery query(_db);
|
|
||||||
if (query.exec(strQuery.toUtf8()) == false)
|
|
||||||
{
|
|
||||||
//m_pSInitializer->insertLog(query.lastQuery());
|
|
||||||
//m_pSInitializer->insertLog(query.lastError().text());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
strQuery = QString("insert into community_" + QString::number(_nCompany) +
|
|
||||||
"_update (num,id,title,url,exid,platformname_num,platformform_num) values (:NUM,:ID,:TITLE,:URL,:EXID,:PLATFORMNAME_NUM,:PLATFORMFORM_NUM)");
|
|
||||||
query.prepare(strQuery);
|
|
||||||
|
|
||||||
foreach (const stCommunity& stcommunity, m_mapCommunity.values())
|
|
||||||
{
|
|
||||||
query.bindValue(":NUM", stcommunity.num);
|
|
||||||
query.bindValue(":ID", stcommunity.id);
|
|
||||||
query.bindValue(":TITLE", sqlString(stcommunity.title).replace(QChar(160),""));
|
|
||||||
query.bindValue(":URL", stcommunity.url);
|
|
||||||
query.bindValue(":EXID", stcommunity.exid);
|
|
||||||
query.bindValue(":PLATFORMNAME_NUM", stcommunity.platformname_num);
|
|
||||||
query.bindValue(":PLATFORMFORM_NUM", stcommunity.platformform_num);
|
|
||||||
|
|
||||||
if (!query.exec())
|
|
||||||
{
|
|
||||||
m_pSInitializer->insertLog(query.lastQuery());
|
|
||||||
m_pSInitializer->insertLog(query.lastError().text());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
bool SDatagroup::SCommunity::uploadData(QSqlDatabase &_db, const int &_nCompany)
|
bool SDatagroup::SCommunity::uploadData(QSqlDatabase &_db, const int &_nCompany)
|
||||||
{
|
{
|
||||||
@@ -1479,9 +1441,7 @@ bool SDatagroup::SCommunity::uploadData(QSqlDatabase &_db, const int &_nCompany)
|
|||||||
strQuery = "delete from community_" + QString::number(_nCompany) + "_update";
|
strQuery = "delete from community_" + QString::number(_nCompany) + "_update";
|
||||||
QSqlQuery query(_db);
|
QSqlQuery query(_db);
|
||||||
if (query.exec(strQuery.toUtf8()) == false)
|
if (query.exec(strQuery.toUtf8()) == false)
|
||||||
{
|
{
|
||||||
//m_pSInitializer->insertLog(query.lastQuery());
|
|
||||||
//m_pSInitializer->insertLog(query.lastError().text());
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
strQuery = QString("insert into community_" + QString::number(_nCompany) +
|
strQuery = QString("insert into community_" + QString::number(_nCompany) +
|
||||||
@@ -1508,7 +1468,6 @@ bool SDatagroup::SCommunity::uploadData(QSqlDatabase &_db, const int &_nCompany)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SDatagroup::SCommunity::put(const QString &_strKey, const stCommunity &_stcommunity)
|
void SDatagroup::SCommunity::put(const QString &_strKey, const stCommunity &_stcommunity)
|
||||||
{
|
{
|
||||||
m_mapCommunity.insert(_strKey.trimmed(), _stcommunity);
|
m_mapCommunity.insert(_strKey.trimmed(), _stcommunity);
|
||||||
@@ -1523,5 +1482,3 @@ void SDatagroup::SCommunity::clear()
|
|||||||
{
|
{
|
||||||
m_mapCommunity.clear();
|
m_mapCommunity.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -16,285 +16,282 @@ QString UniCodeToEucKr(const QString& _strData);
|
|||||||
class SDatagroup
|
class SDatagroup
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum E_ARTICLE
|
enum E_ARTICLE
|
||||||
{
|
{
|
||||||
E_ARTICLE_BODY = 0,
|
E_ARTICLE_BODY = 0,
|
||||||
E_ARTICLE_REPLY,
|
E_ARTICLE_REPLY,
|
||||||
E_ARTICLE_MAX,
|
E_ARTICLE_MAX,
|
||||||
};
|
};
|
||||||
struct stBody
|
struct stBody
|
||||||
{
|
{
|
||||||
int num;
|
stBody():replyendnum(-1), replystartnum(-1), replycount(0), share(0), like(0) {}
|
||||||
int id_num;
|
|
||||||
QString id_id;
|
|
||||||
int nickname_num;
|
|
||||||
int community_num;
|
|
||||||
int platformname_num;
|
|
||||||
int platformform_num;
|
|
||||||
QString* title;
|
|
||||||
QString* data;
|
|
||||||
QString url;
|
|
||||||
int view;
|
|
||||||
QString date;
|
|
||||||
int replystartnum;
|
|
||||||
int replyendnum;
|
|
||||||
int replycount;
|
|
||||||
int like;
|
|
||||||
int share;
|
|
||||||
QVector<int> realbycategorynum;
|
|
||||||
|
|
||||||
|
int num;
|
||||||
|
int id_num;
|
||||||
|
QString id_id;
|
||||||
|
int nickname_num;
|
||||||
|
int community_num;
|
||||||
|
int platformname_num;
|
||||||
|
int platformform_num;
|
||||||
|
QString* title;
|
||||||
|
QString* data;
|
||||||
|
QString url;
|
||||||
|
int view;
|
||||||
|
QString date;
|
||||||
|
int replystartnum;
|
||||||
|
int replyendnum;
|
||||||
|
int replycount;
|
||||||
|
int like;
|
||||||
|
int share;
|
||||||
|
QVector<int> realbycategorynum;
|
||||||
|
|
||||||
QString lastupdate;
|
QString lastupdate;
|
||||||
QString community_title;
|
QString community_title;
|
||||||
QString community_url;
|
QString community_url;
|
||||||
QString community_id;
|
QString community_id;
|
||||||
QString community_exid;
|
QString community_exid;
|
||||||
QString platformname_name;
|
QString platformname_name;
|
||||||
QString platformform_form;
|
QString platformform_form;
|
||||||
QString nickname_nickname;
|
QString nickname_nickname;
|
||||||
QString nickname_exnickname;
|
QString nickname_exnickname;
|
||||||
|
|
||||||
//QSet<int> realbycategorynum;
|
};
|
||||||
stBody():replyendnum(-1), replystartnum(-1), replycount(0), share(0), like(0) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stReply
|
struct stReply
|
||||||
{
|
{
|
||||||
int num;
|
stReply():num(0),id_num(0),nickname_num(0),community_num(0),body_num(0),platformname_num(0),platformform_num(0){}
|
||||||
int id_num;
|
|
||||||
QString id_id;
|
|
||||||
int nickname_num;
|
|
||||||
int community_num;
|
|
||||||
int body_num;
|
|
||||||
QString parent;
|
|
||||||
QString* data;
|
|
||||||
QString date;
|
|
||||||
QVector<int> realbycategorynum;
|
|
||||||
|
|
||||||
|
int num;
|
||||||
|
int id_num;
|
||||||
|
QString id_id;
|
||||||
|
int nickname_num;
|
||||||
|
int community_num;
|
||||||
|
int body_num;
|
||||||
|
QString parent;
|
||||||
|
QString* data;
|
||||||
|
QString date;
|
||||||
|
QVector<int> realbycategorynum;
|
||||||
|
|
||||||
int platformname_num;
|
int platformname_num;
|
||||||
int platformform_num;
|
int platformform_num;
|
||||||
QString platformname_name;
|
QString platformname_name;
|
||||||
QString platformform_form;
|
QString platformform_form;
|
||||||
QString nickname_nickname;
|
QString nickname_nickname;
|
||||||
QString nickname_exnickname;
|
QString nickname_exnickname;
|
||||||
QString body_date;
|
QString body_date;
|
||||||
//QSet<int> realbycategorynum;
|
};
|
||||||
stReply():num(0),id_num(0),nickname_num(0),community_num(0),body_num(0),platformname_num(0),platformform_num(0){}
|
struct stCommunity
|
||||||
};
|
{
|
||||||
struct stCommunity
|
stCommunity():num(0), platformform_num(1), platformname_num(1), title("(none)"), url(" "), id(" "), exid(" ") {}
|
||||||
{
|
|
||||||
int num;
|
|
||||||
QString id;
|
|
||||||
QString exid;
|
|
||||||
QString title;
|
|
||||||
QString url;
|
|
||||||
int platformname_num;
|
|
||||||
int platformform_num;
|
|
||||||
stCommunity():num(0), platformform_num(1), platformname_num(1), title("(none)"), url(" "), id(" "), exid(" ") {}
|
|
||||||
};
|
|
||||||
struct stId
|
|
||||||
{
|
|
||||||
int num;
|
|
||||||
QString id;
|
|
||||||
int platformname_num;
|
|
||||||
stId():num(0), id("(none)"), platformname_num(1) {}
|
|
||||||
};
|
|
||||||
struct stNickname
|
|
||||||
{
|
|
||||||
int num;
|
|
||||||
QString nickname;
|
|
||||||
int id_num;
|
|
||||||
int platformname_num;
|
|
||||||
stNickname():num(0), platformname_num(0) {}
|
|
||||||
};
|
|
||||||
struct stProfileurlKey
|
|
||||||
{
|
|
||||||
int m_nPlatformForm;
|
|
||||||
QString m_strId;
|
|
||||||
stProfileurlKey(int _nPlatform, const QString& _strId):m_nPlatformForm(_nPlatform), m_strId(_strId) {}
|
|
||||||
bool operator<(const stProfileurlKey& other) const
|
|
||||||
{
|
|
||||||
if (m_nPlatformForm < other.m_nPlatformForm)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if ((m_nPlatformForm == other.m_nPlatformForm) && (m_strId < other.m_strId))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bool operator==(const stProfileurlKey &other) const
|
|
||||||
{
|
|
||||||
if ((m_nPlatformForm == other.m_nPlatformForm) && (m_strId == other.m_strId))
|
|
||||||
return true;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class SBody
|
int num;
|
||||||
{
|
QString id;
|
||||||
private:
|
QString exid;
|
||||||
//QList<stBody> m_listBody;
|
QString title;
|
||||||
SInitializer *m_pSInitializer;
|
QString url;
|
||||||
QMap<QString, stBody> m_mapBody;
|
int platformname_num;
|
||||||
public:
|
int platformform_num;
|
||||||
void put(const QString& _url, const stBody& _stbody);
|
};
|
||||||
bool putCategory(const QString& _url, const int& _nCategory);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int& _nCompany, const QStringList& _order);
|
|
||||||
bool changeTable(QSqlDatabase &_db, const int& nCompany);
|
|
||||||
int getBodyNum(const QString& _url);
|
|
||||||
QString vecToString(const QVector<int>& _realbycategorynum);
|
|
||||||
QString vecToString(const QSet<int> &_realbycategorynum);
|
|
||||||
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
|
|
||||||
stBody* get(const QString& _url);
|
|
||||||
void clear();
|
|
||||||
// int getBodyCount();
|
|
||||||
// int getUserCount();
|
|
||||||
// QMap<QString, int> getMapBodyCountOfPlatform();
|
|
||||||
// QMap<QString, int> getMapUserCountOfPlatform();
|
|
||||||
};
|
|
||||||
|
|
||||||
class SReply
|
struct stId
|
||||||
{
|
{
|
||||||
private:
|
stId():num(0), id("(none)"), platformname_num(1) {}
|
||||||
//QList<stReply> m_listReply;
|
|
||||||
SInitializer *m_pSInitializer;
|
|
||||||
QMap<QString, QMap<int, stReply> > m_mapReply;
|
|
||||||
public:
|
|
||||||
void put(const QString& _url, const int& _order, const stReply& _streply);
|
|
||||||
bool putCategory(const QString &_url, const int &_order, int& _nCategory);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int& _nCompany, QStringList& _order);
|
|
||||||
bool changeTable(QSqlDatabase &_db, const int& _nCompany);
|
|
||||||
int getReplyNum(const QString &_url, const int& _order);
|
|
||||||
stReply* get(const QString& _url, const int& _order);
|
|
||||||
QMap<int, stReply>* get(const QString& _url);
|
|
||||||
QString vecToString(const QVector<int>& _realbycategorynum);
|
|
||||||
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
|
|
||||||
void clear();
|
|
||||||
};
|
|
||||||
class SId
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
QMap<QString, stId> m_mapId;
|
|
||||||
SInitializer *m_pSInitializer;
|
|
||||||
public:
|
|
||||||
bool contains(const QString& _strKey);
|
|
||||||
void put(const QString& _strKey, const stId& _stid);
|
|
||||||
void put(const stId& _stid);
|
|
||||||
QString getIdKey(const QStringList& _strlist);
|
|
||||||
stId* get(const QString &_strKey);
|
|
||||||
bool changeTable(QSqlDatabase &_db, const int& _nCompany);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int& _nCompany);
|
|
||||||
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
|
|
||||||
void clear();
|
|
||||||
};
|
|
||||||
class SNickname
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
QMap<QString, stNickname> m_mapNickname;
|
|
||||||
SInitializer *m_pSInitializer;
|
|
||||||
public:
|
|
||||||
//QString getNicknameKey(const QStringList& _strlist);
|
|
||||||
stNickname* get(const QString &_strKey);
|
|
||||||
bool changeTable(QSqlDatabase &_db, const int& _nCompany);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int& _nCompany);
|
|
||||||
void put(const QString& _strKey, const stNickname& _stnickname);
|
|
||||||
void put(const stNickname& _nickname);
|
|
||||||
bool contains(const QString& _strKey);
|
|
||||||
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
|
|
||||||
void clear();
|
|
||||||
};
|
|
||||||
class SCommunity
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
QMap<QString, stCommunity> m_mapCommunity;
|
|
||||||
SInitializer *m_pSInitializer;
|
|
||||||
public:
|
|
||||||
QString getCommunityKey(const QStringList& _strlist);
|
|
||||||
stCommunity* get(const QString &_strKey);
|
|
||||||
bool changeTable(QSqlDatabase &_db, const int& _nCompany);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int& _nCompany);
|
|
||||||
void put(const QString& _strKey, const stCommunity& _stcommunity);
|
|
||||||
bool contains(const QString& _strKey);
|
|
||||||
void clear();
|
|
||||||
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
|
|
||||||
};
|
|
||||||
struct stBodyReplyCount
|
|
||||||
{
|
|
||||||
int m_nAllBodyCount;
|
|
||||||
int m_nAllReplyCount;
|
|
||||||
int m_nFilterBodyCount;
|
|
||||||
int m_nFilterReplyCount;
|
|
||||||
stBodyReplyCount():m_nAllBodyCount(0), m_nAllReplyCount(0), m_nFilterBodyCount(0), m_nFilterReplyCount(0){}
|
|
||||||
};
|
|
||||||
struct stDate
|
|
||||||
{
|
|
||||||
QString m_strMindate;
|
|
||||||
QString m_strMaxdate;
|
|
||||||
QString m_strLastupdate;
|
|
||||||
stDate():m_strMindate("2100-12-31 23:59:59"), m_strMaxdate("1900-01-01 00:00:00"), m_strLastupdate("1900-01-01 00:00:00"){}
|
|
||||||
};
|
|
||||||
|
|
||||||
private:
|
int num;
|
||||||
SInitializer* m_pSInitializer;
|
QString id;
|
||||||
QSet<QString> m_setFilteredUrl;
|
int platformname_num;
|
||||||
|
};
|
||||||
|
|
||||||
QStringList m_slOrderedBodyUrl;
|
struct stNickname
|
||||||
QMap<QString, QMap<int, QStringList> > m_mapReply;
|
{
|
||||||
QMap<QString, QStringList> m_mapBody;
|
stNickname():num(0), platformname_num(0) {}
|
||||||
QMap<QString, int> m_mapBodyCountOfPlatform;
|
|
||||||
QMap<QString, int> m_mapUserCountOfPlatform;
|
int num;
|
||||||
QMap<stProfileurlKey, QStringList*> m_mapProfile;
|
QString nickname;
|
||||||
|
int id_num;
|
||||||
|
int platformname_num;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct stProfileurlKey
|
||||||
|
{
|
||||||
|
stProfileurlKey(int _nPlatform, const QString& _strId):m_nPlatformForm(_nPlatform), m_strId(_strId) {}
|
||||||
|
|
||||||
|
bool operator<(const stProfileurlKey& other) const
|
||||||
|
{
|
||||||
|
return (m_nPlatformForm < other.m_nPlatformForm) || ((m_nPlatformForm == other.m_nPlatformForm) && (m_strId < other.m_strId));
|
||||||
|
}
|
||||||
|
bool operator==(const stProfileurlKey &other) const
|
||||||
|
{
|
||||||
|
return ((m_nPlatformForm == other.m_nPlatformForm) && (m_strId == other.m_strId));
|
||||||
|
}
|
||||||
|
|
||||||
|
int m_nPlatformForm;
|
||||||
|
QString m_strId;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SBody
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void put(const QString& _url, const stBody& _stbody);
|
||||||
|
bool putCategory(const QString& _url, const int& _nCategory);
|
||||||
|
bool uploadData(QSqlDatabase &_db, const int& _nCompany, const QStringList& _order);
|
||||||
|
bool changeTable(QSqlDatabase &_db, const int& nCompany);
|
||||||
|
int getBodyNum(const QString& _url);
|
||||||
|
QString vecToString(const QVector<int>& _realbycategorynum);
|
||||||
|
QString vecToString(const QSet<int> &_realbycategorynum);
|
||||||
|
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
|
||||||
|
stBody* get(const QString& _url);
|
||||||
|
void clear();
|
||||||
|
|
||||||
|
private:
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
QMap<QString, stBody> m_mapBody;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class SReply
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void put(const QString& _url, const int& _order, const stReply& _streply);
|
||||||
|
bool putCategory(const QString &_url, const int &_order, int& _nCategory);
|
||||||
|
bool uploadData(QSqlDatabase &_db, const int& _nCompany, QStringList& _order);
|
||||||
|
bool changeTable(QSqlDatabase &_db, const int& _nCompany);
|
||||||
|
int getReplyNum(const QString &_url, const int& _order);
|
||||||
|
stReply* get(const QString& _url, const int& _order);
|
||||||
|
QMap<int, stReply>* get(const QString& _url);
|
||||||
|
QString vecToString(const QVector<int>& _realbycategorynum);
|
||||||
|
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
|
||||||
|
void clear();
|
||||||
|
|
||||||
|
private:
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
QMap<QString, QMap<int, stReply> > m_mapReply;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class SId
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool contains(const QString& _strKey);
|
||||||
|
void put(const QString& _strKey, const stId& _stid);
|
||||||
|
void put(const stId& _stid);
|
||||||
|
QString getIdKey(const QStringList& _strlist);
|
||||||
|
stId* get(const QString &_strKey);
|
||||||
|
bool changeTable(QSqlDatabase &_db, const int& _nCompany);
|
||||||
|
bool uploadData(QSqlDatabase &_db, const int& _nCompany);
|
||||||
|
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
|
||||||
|
void clear();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QMap<QString, stId> m_mapId;
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class SNickname
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
stNickname* get(const QString &_strKey);
|
||||||
|
bool changeTable(QSqlDatabase &_db, const int& _nCompany);
|
||||||
|
bool uploadData(QSqlDatabase &_db, const int& _nCompany);
|
||||||
|
void put(const QString& _strKey, const stNickname& _stnickname);
|
||||||
|
void put(const stNickname& _nickname);
|
||||||
|
bool contains(const QString& _strKey);
|
||||||
|
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
|
||||||
|
void clear();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QMap<QString, stNickname> m_mapNickname;
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SCommunity
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QString getCommunityKey(const QStringList& _strlist);
|
||||||
|
stCommunity* get(const QString &_strKey);
|
||||||
|
bool changeTable(QSqlDatabase &_db, const int& _nCompany);
|
||||||
|
bool uploadData(QSqlDatabase &_db, const int& _nCompany);
|
||||||
|
void put(const QString& _strKey, const stCommunity& _stcommunity);
|
||||||
|
bool contains(const QString& _strKey);
|
||||||
|
void clear();
|
||||||
|
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
QMap<QString, stCommunity> m_mapCommunity;
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct stBodyReplyCount
|
||||||
|
{
|
||||||
|
int m_nAllBodyCount;
|
||||||
|
int m_nAllReplyCount;
|
||||||
|
int m_nFilterBodyCount;
|
||||||
|
int m_nFilterReplyCount;
|
||||||
|
stBodyReplyCount():m_nAllBodyCount(0), m_nAllReplyCount(0), m_nFilterBodyCount(0), m_nFilterReplyCount(0){}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct stDate
|
||||||
|
{
|
||||||
|
QString m_strMindate;
|
||||||
|
QString m_strMaxdate;
|
||||||
|
QString m_strLastupdate;
|
||||||
|
stDate():m_strMindate("2100-12-31 23:59:59"), m_strMaxdate("1900-01-01 00:00:00"), m_strLastupdate("1900-01-01 00:00:00"){}
|
||||||
|
};
|
||||||
|
|
||||||
SBody m_SBody;
|
|
||||||
SReply m_SReply;
|
|
||||||
SCommunity m_SCommunity;
|
|
||||||
SId m_SId;
|
|
||||||
SNickname m_SNickname;
|
|
||||||
stBodyReplyCount m_stBodyReplyCount;
|
|
||||||
stDate m_stDate;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void setInitializer(SInitializer &initializer);
|
void setInitializer(SInitializer &initializer);
|
||||||
bool loadData(const int& _nDatagroupNumber);
|
bool loadData(const int& _nDatagroupNumber);
|
||||||
bool uploadData(const int& _nCompany);
|
bool uploadData(const int& _nCompany);
|
||||||
bool changeTable(const int& _nCompany);
|
bool changeTable(const int& _nCompany);
|
||||||
bool makeTable();
|
bool makeTable();
|
||||||
void addRealUrl(const QString& _strUrl);
|
void addRealUrl(const QString& _strUrl);
|
||||||
void copyData(QVector<QStringList> *_data);
|
void copyData(QVector<QStringList> *_data);
|
||||||
const QMap<QString, QStringList>* getmapBody();
|
const QMap<QString, QStringList>* getmapBody();
|
||||||
const QStringList* getmapBody(const stProfileurlKey& _stprofileurlkey);
|
const QStringList* getmapBody(const stProfileurlKey& _stprofileurlkey);
|
||||||
const QMap<QString, QMap<int, QStringList> >* getmapReply();
|
const QMap<QString, QMap<int, QStringList> >* getmapReply();
|
||||||
const stBody* getstBody(const QString& _strUrl);
|
const stBody* getstBody(const QString& _strUrl);
|
||||||
const stReply* getstReply(const QString& _strUrl, const int &_order);
|
const stReply* getstReply(const QString& _strUrl, const int &_order);
|
||||||
const QMap<int, stReply>* getstReply(const QString& _strUrl);
|
const QMap<int, stReply>* getstReply(const QString& _strUrl);
|
||||||
int getstBodyNum(const QString& _strUrl);
|
int getstBodyNum(const QString& _strUrl);
|
||||||
int getstReplyNum(const QString& _strUrl, const int &_order);
|
int getstReplyNum(const QString& _strUrl, const int &_order);
|
||||||
const QStringList* getOrderedUrl();
|
const QStringList* getOrderedUrl();
|
||||||
void addRealBodyCategory(const QString& _strUrl, const int _nCategory);
|
void addRealBodyCategory(const QString& _strUrl, const int _nCategory);
|
||||||
void addRealReplyCategory(const QString& _strUrl, const int& _order, int _nCategory);
|
void addRealReplyCategory(const QString& _strUrl, const int& _order, int _nCategory);
|
||||||
const stCommunity* getstCommunity(const QStringList& _sl);
|
const stCommunity* getstCommunity(const QStringList& _sl);
|
||||||
const stBodyReplyCount* getCounts();
|
const stBodyReplyCount* getCounts();
|
||||||
const stDate* getstDate();
|
const stDate* getstDate();
|
||||||
int getBodyCount();
|
int getBodyCount();
|
||||||
int getUserCount();
|
int getUserCount();
|
||||||
QMap<QString, int> getMapBodyCountOfPlatform();
|
QMap<QString, int> getMapBodyCountOfPlatform();
|
||||||
QMap<QString, int> getMapUserCountOfPlatform();
|
QMap<QString, int> getMapUserCountOfPlatform();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void init();
|
SInitializer* m_pSInitializer;
|
||||||
void setloadQuery(QString _astrQuery[], int _nDatagroupNumber);
|
QSet<QString> m_setFilteredUrl;
|
||||||
void makeProfile(const QStringList& _strList);
|
|
||||||
void makeBodyCountOfPlatform();
|
QStringList m_slOrderedBodyUrl;
|
||||||
void makeUserCountOfPlatform();
|
QMap<QString, QMap<int, QStringList> > m_mapReply;
|
||||||
|
QMap<QString, QStringList> m_mapBody;
|
||||||
|
QMap<QString, int> m_mapBodyCountOfPlatform;
|
||||||
|
QMap<QString, int> m_mapUserCountOfPlatform;
|
||||||
|
QMap<stProfileurlKey, QStringList*> m_mapProfile;
|
||||||
|
|
||||||
|
SBody m_SBody;
|
||||||
|
SReply m_SReply;
|
||||||
|
SCommunity m_SCommunity;
|
||||||
|
SId m_SId;
|
||||||
|
SNickname m_SNickname;
|
||||||
|
stBodyReplyCount m_stBodyReplyCount;
|
||||||
|
stDate m_stDate;
|
||||||
|
|
||||||
|
void init();
|
||||||
|
void setloadQuery(QString _astrQuery[], int _nDatagroupNumber);
|
||||||
|
void makeProfile(const QStringList& _strList);
|
||||||
|
void makeBodyCountOfPlatform();
|
||||||
|
void makeUserCountOfPlatform();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif // SDATAGROUP
|
#endif // SDATAGROUP
|
||||||
|
|
||||||
|
|||||||
@@ -10,28 +10,28 @@ class QSqlError;
|
|||||||
class SDBManager
|
class SDBManager
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum E_DATABASE{ E_DATABASE_DATA, E_DATABASE_WEB };
|
enum E_DATABASE{ E_DATABASE_DATA, E_DATABASE_WEB };
|
||||||
QSqlDatabase getDBConnection(const QString& _dbName) const;
|
virtual ~SDBManager();
|
||||||
QSqlDatabase getDBConnection(const E_DATABASE& _eDatabase) const;
|
|
||||||
bool open(const QString& _dbName);
|
QSqlDatabase getDBConnection(const QString& _dbName) const;
|
||||||
bool open(const E_DATABASE& _eDatabase);
|
QSqlDatabase getDBConnection(const E_DATABASE& _eDatabase) const;
|
||||||
void close(const QString& _dbName);
|
bool open(const QString& _dbName);
|
||||||
void close(const E_DATABASE& _eDatabase);
|
bool open(const E_DATABASE& _eDatabase);
|
||||||
void close();
|
void close(const QString& _dbName);
|
||||||
void addDatabase(const QString& _dbName, const QString& _host, const QString& _id, const QString& _pw, const QString& _db, const int& _port = 3306);
|
void close(const E_DATABASE& _eDatabase);
|
||||||
void addDatabase(const QString& _dbName, const E_DATABASE& _eDatabase, const QString& _host, const QString& _id, const QString& _pw, const QString& _db, const int& _port = 3306);
|
void close();
|
||||||
QSqlQuery sqlQuery(const QString& _dbName);
|
void addDatabase(const QString& _dbName, const QString& _host, const QString& _id, const QString& _pw, const QString& _db, const int& _port = 3306);
|
||||||
QSqlQuery sqlQuery(const E_DATABASE& _eDatabase);
|
void addDatabase(const QString& _dbName, const E_DATABASE& _eDatabase, const QString& _host, const QString& _id, const QString& _pw, const QString& _db, const int& _port = 3306);
|
||||||
bool reOpen(const QString& _dbName);
|
QSqlQuery sqlQuery(const QString& _dbName);
|
||||||
bool reOpen(const E_DATABASE& _eDatabase);
|
QSqlQuery sqlQuery(const E_DATABASE& _eDatabase);
|
||||||
bool isConnectionError(const QSqlError& _error);
|
bool reOpen(const QString& _dbName);
|
||||||
QSqlDatabase operator[](const QString& _dbName) const;
|
bool reOpen(const E_DATABASE& _eDatabase);
|
||||||
QSqlDatabase operator[](const E_DATABASE& _eDatabase) const;
|
bool isConnectionError(const QSqlError& _error);
|
||||||
virtual ~SDBManager();
|
QSqlDatabase operator[](const QString& _dbName) const;
|
||||||
|
QSqlDatabase operator[](const E_DATABASE& _eDatabase) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QMap<E_DATABASE, QString> m_mapDBname;
|
QMap<E_DATABASE, QString> m_mapDBname;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif // SDBMANAGER
|
#endif // SDBMANAGER
|
||||||
|
|
||||||
|
|||||||
@@ -1,24 +1,25 @@
|
|||||||
#ifndef SFILTERALGORITHM
|
#ifndef SFILTERALGORITHM
|
||||||
#define SFILTERALGORITHM
|
#define SFILTERALGORITHM
|
||||||
|
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
#include "../common.h"
|
#include "../common.h"
|
||||||
|
|
||||||
class QString;
|
class QString;
|
||||||
class QStringList;
|
class QStringList;
|
||||||
class SInitializer;
|
class SInitializer;
|
||||||
|
|
||||||
class SFilterAlgorithm
|
class SFilterAlgorithm
|
||||||
{
|
{
|
||||||
private:
|
|
||||||
QVector <SKeyword> m_vecKeyword;
|
|
||||||
public:
|
public:
|
||||||
void FilterSearch(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
|
void FilterSearch(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
|
||||||
void FilterCounter(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
|
void FilterCounter(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
|
||||||
void FilterReplace(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
|
void FilterReplace(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
|
||||||
void FilterDate(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson, int _nDateColumn);
|
void FilterDate(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson, int _nDateColumn);
|
||||||
void FilterLength(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
|
void FilterLength(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QVector <SKeyword> m_vecKeyword;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif // SFILTERALGORITHM
|
#endif // SFILTERALGORITHM
|
||||||
|
|
||||||
|
|||||||
@@ -10,141 +10,154 @@ using namespace std;
|
|||||||
|
|
||||||
bool SFilterProcess::init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName)
|
bool SFilterProcess::init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName)
|
||||||
{
|
{
|
||||||
if (!m_SInitializer.init(_strFilterProcessGroupID, _strFilterProcessGroupName))
|
if (!m_SInitializer.init(_strFilterProcessGroupID, _strFilterProcessGroupName))
|
||||||
{
|
{
|
||||||
cout << "initializer init error" << endl;
|
cout << "initializer init error" << endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_SDatagroup.setInitializer(m_SInitializer);
|
m_SDatagroup.setInitializer(m_SInitializer);
|
||||||
m_SConsumer.setInitiaizer(m_SInitializer);
|
m_SConsumer.setInitiaizer(m_SInitializer);
|
||||||
m_SInfluencer.setInitiaizer(m_SInitializer);
|
m_SInfluencer.setInitiaizer(m_SInitializer);
|
||||||
m_SSpammer.setInitiaizer(m_SInitializer);
|
m_SSpammer.setInitiaizer(m_SInitializer);
|
||||||
m_SPowercafe.setInitiaizer(m_SInitializer);
|
m_SPowercafe.setInitiaizer(m_SInitializer);
|
||||||
m_SConsumerMarketer.setInitiaizer(m_SInitializer);
|
m_SConsumerMarketer.setInitiaizer(m_SInitializer);
|
||||||
m_SConsumerCheckList.setInitiaizer(m_SInitializer);
|
m_SConsumerCheckList.setInitiaizer(m_SInitializer);
|
||||||
m_SInitializer.closeConnection(SDBManager::E_DATABASE_WEB);
|
m_SInitializer.closeConnection(SDBManager::E_DATABASE_WEB);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SFilterProcess::init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName, QString _strInfluencerLimit)
|
bool SFilterProcess::init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName, QString _strInfluencerLimit)
|
||||||
{
|
{
|
||||||
if (!m_SInitializer.init(_strFilterProcessGroupID, _strFilterProcessGroupName, _strInfluencerLimit))
|
if (!m_SInitializer.init(_strFilterProcessGroupID, _strFilterProcessGroupName, _strInfluencerLimit))
|
||||||
{
|
{
|
||||||
cout << "initializer init error" << endl;
|
cout << "initializer init error" << endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_SDatagroup.setInitializer(m_SInitializer);
|
m_SDatagroup.setInitializer(m_SInitializer);
|
||||||
m_SConsumer.setInitiaizer(m_SInitializer);
|
m_SConsumer.setInitiaizer(m_SInitializer);
|
||||||
m_SInfluencer.setInitiaizer(m_SInitializer);
|
m_SInfluencer.setInitiaizer(m_SInitializer);
|
||||||
m_SSpammer.setInitiaizer(m_SInitializer);
|
m_SSpammer.setInitiaizer(m_SInitializer);
|
||||||
m_SPowercafe.setInitiaizer(m_SInitializer);
|
m_SPowercafe.setInitiaizer(m_SInitializer);
|
||||||
m_SConsumerMarketer.setInitiaizer(m_SInitializer);
|
m_SConsumerMarketer.setInitiaizer(m_SInitializer);
|
||||||
m_SConsumerCheckList.setInitiaizer(m_SInitializer);
|
m_SConsumerCheckList.setInitiaizer(m_SInitializer);
|
||||||
m_SInitializer.closeConnection(SDBManager::E_DATABASE_WEB);
|
m_SInitializer.closeConnection(SDBManager::E_DATABASE_WEB);
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SFilterProcess::LoadData(const SInitializer::stFilterProcess& process)
|
||||||
|
{
|
||||||
|
m_SDatagroup.loadData(process.m_nDatagroupID);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SFilterProcess::MakeCategory(const SInitializer::stFilterProcess& process)
|
||||||
|
{
|
||||||
|
m_SInitializer.insertDebugLog("FilterGroupName: " + process.m_strFilterGroupName);
|
||||||
|
switch(process.m_nServiceNum)
|
||||||
|
{
|
||||||
|
case E_SERVICE_INFLUENCER:
|
||||||
|
{
|
||||||
|
qDebug() << "Influencer:" << process.m_nCategoryNum;
|
||||||
|
m_SInfluencer.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case E_SERVICE_CONSUMER:
|
||||||
|
{
|
||||||
|
qDebug() << "Consumer:" << process.m_nCategoryNum;
|
||||||
|
m_SConsumer.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case E_SERVICE_SPAMMER:
|
||||||
|
{
|
||||||
|
qDebug() << "Spammer:" << process.m_nCategoryNum;
|
||||||
|
m_SSpammer.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case E_SERVICE_POWERCAFE:
|
||||||
|
{
|
||||||
|
qDebug() << "Powercafe:" << process.m_nCategoryNum;
|
||||||
|
m_SPowercafe.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SFilterProcess::Send(const SInitializer::stFilterProcess& process)
|
||||||
|
{
|
||||||
|
m_SConsumerMarketer.makeTable(m_SDatagroup);
|
||||||
|
m_SConsumerCheckList.makeTable(m_SDatagroup);
|
||||||
|
m_SDatagroup.makeTable();
|
||||||
|
|
||||||
|
m_SConsumer.makeTable(m_SDatagroup);
|
||||||
|
m_SInfluencer.makeTable(m_SDatagroup);
|
||||||
|
m_SSpammer.makeTable(m_SDatagroup);
|
||||||
|
m_SPowercafe.makeTable(m_SDatagroup);
|
||||||
|
|
||||||
|
if (m_SInitializer.isUpload())
|
||||||
|
{
|
||||||
|
m_SInitializer.openConnection(SDBManager::E_DATABASE_WEB);
|
||||||
|
m_SDatagroup.uploadData(process.m_nCompanyNum);
|
||||||
|
m_SConsumer.uploadData(process.m_nCompanyNum);
|
||||||
|
m_SInfluencer.uploadData(process.m_nCompanyNum);
|
||||||
|
m_SSpammer.uploadData(process.m_nCompanyNum);
|
||||||
|
m_SPowercafe.uploadData(process.m_nCompanyNum);
|
||||||
|
|
||||||
|
m_SDatagroup.changeTable(process.m_nCompanyNum);
|
||||||
|
m_SConsumer.changeTable(process.m_nCompanyNum);
|
||||||
|
m_SInfluencer.changeTable(process.m_nCompanyNum);
|
||||||
|
m_SSpammer.changeTable(process.m_nCompanyNum);
|
||||||
|
m_SPowercafe.changeTable(process.m_nCompanyNum);
|
||||||
|
|
||||||
|
m_SInitializer.updateWebDBInfoComplete(m_SInitializer.getDatabase(SDBManager::E_DATABASE_WEB), m_SDatagroup.getstDate()->m_strMindate,
|
||||||
|
m_SDatagroup.getstDate()->m_strMaxdate, m_SDatagroup.getstDate()->m_strLastupdate,
|
||||||
|
m_SDatagroup.getCounts()->m_nFilterBodyCount, m_SDatagroup.getCounts()->m_nFilterReplyCount,
|
||||||
|
process.m_nCompanyNum);
|
||||||
|
m_SInitializer.insertLog("Upload Done");
|
||||||
|
m_nCompany = process.m_nCompanyNum;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_nCompany = -100;
|
||||||
|
m_SInitializer.insertLog("No Upload");
|
||||||
|
}
|
||||||
|
|
||||||
|
m_SConsumer.SaveDataFile(process.m_nCompanyNum);
|
||||||
|
m_SInfluencer.SaveDataFile(process.m_nCompanyNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SFilterProcess::run()
|
bool SFilterProcess::run()
|
||||||
{
|
{
|
||||||
m_SInitializer.insertLog("New Filter start");
|
m_SInitializer.insertLog("New Filter start");
|
||||||
QList<SInitializer::stFilterProcess> listFilterProcess = m_SInitializer.getFilterProcess();
|
QList<SInitializer::stFilterProcess> listFilterProcess = m_SInitializer.getFilterProcess();
|
||||||
foreach (SInitializer::stFilterProcess process, listFilterProcess)
|
foreach (SInitializer::stFilterProcess process, listFilterProcess)
|
||||||
{
|
{
|
||||||
switch(process.m_nFilterProcessType)
|
switch(process.m_nFilterProcessType)
|
||||||
{
|
{
|
||||||
case E_PROCSS_TYPE_LOAD:
|
case E_PROCSS_TYPE_LOAD:
|
||||||
{
|
{
|
||||||
m_SDatagroup.loadData(process.m_nDatagroupID);
|
LoadData(process);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case E_PROCSS_TYPE_CATEGORY_MAKE:
|
case E_PROCSS_TYPE_CATEGORY_MAKE:
|
||||||
{
|
{
|
||||||
m_SInitializer.insertDebugLog("FilterGroupName: " + process.m_strFilterGroupName);
|
MakeCategory(process);
|
||||||
switch(process.m_nServiceNum)
|
break;
|
||||||
{
|
}
|
||||||
case E_SERVICE_INFLUENCER:
|
case E_PROCSS_TYPE_SEND:
|
||||||
{
|
{
|
||||||
qDebug() << "Influencer:" << process.m_nCategoryNum;
|
Send(process);
|
||||||
m_SInfluencer.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID));
|
break;
|
||||||
break;
|
}
|
||||||
}
|
}
|
||||||
case E_SERVICE_CONSUMER:
|
}
|
||||||
{
|
|
||||||
qDebug() << "Consumer:" << process.m_nCategoryNum;
|
|
||||||
m_SConsumer.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case E_SERVICE_SPAMMER:
|
|
||||||
{
|
|
||||||
qDebug() << "Spammer:" << process.m_nCategoryNum;
|
|
||||||
m_SSpammer.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case E_SERVICE_POWERCAFE:
|
|
||||||
{
|
|
||||||
qDebug() << "Powercafe:" << process.m_nCategoryNum;
|
|
||||||
m_SPowercafe.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
m_SInitializer.insertLog("New Filter END.");
|
||||||
}
|
return true;
|
||||||
case E_PROCSS_TYPE_SEND:
|
|
||||||
{
|
|
||||||
m_SConsumerMarketer.makeTable(m_SDatagroup);
|
|
||||||
m_SConsumerCheckList.makeTable(m_SDatagroup);
|
|
||||||
m_SDatagroup.makeTable();
|
|
||||||
|
|
||||||
m_SConsumer.makeTable(m_SDatagroup);
|
|
||||||
m_SInfluencer.makeTable(m_SDatagroup);
|
|
||||||
m_SSpammer.makeTable(m_SDatagroup);
|
|
||||||
m_SPowercafe.makeTable(m_SDatagroup);
|
|
||||||
|
|
||||||
if (m_SInitializer.isUpload())
|
|
||||||
{
|
|
||||||
m_SInitializer.openConnection(SDBManager::E_DATABASE_WEB);
|
|
||||||
m_SDatagroup.uploadData(process.m_nCompanyNum);
|
|
||||||
m_SConsumer.uploadData(process.m_nCompanyNum);
|
|
||||||
m_SInfluencer.uploadData(process.m_nCompanyNum);
|
|
||||||
m_SSpammer.uploadData(process.m_nCompanyNum);
|
|
||||||
m_SPowercafe.uploadData(process.m_nCompanyNum);
|
|
||||||
|
|
||||||
m_SDatagroup.changeTable(process.m_nCompanyNum);
|
|
||||||
m_SConsumer.changeTable(process.m_nCompanyNum);
|
|
||||||
m_SInfluencer.changeTable(process.m_nCompanyNum);
|
|
||||||
m_SSpammer.changeTable(process.m_nCompanyNum);
|
|
||||||
m_SPowercafe.changeTable(process.m_nCompanyNum);
|
|
||||||
|
|
||||||
m_SInitializer.updateWebDBInfoComplete(m_SInitializer.getDatabase(SDBManager::E_DATABASE_WEB), m_SDatagroup.getstDate()->m_strMindate,
|
|
||||||
m_SDatagroup.getstDate()->m_strMaxdate, m_SDatagroup.getstDate()->m_strLastupdate,
|
|
||||||
m_SDatagroup.getCounts()->m_nFilterBodyCount, m_SDatagroup.getCounts()->m_nFilterReplyCount,
|
|
||||||
process.m_nCompanyNum);
|
|
||||||
m_SInitializer.insertLog("Upload Done");
|
|
||||||
m_nCompany = process.m_nCompanyNum;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_nCompany = -100;
|
|
||||||
m_SInitializer.insertLog("No Upload");
|
|
||||||
}
|
|
||||||
|
|
||||||
m_SConsumer.SaveDataFile(process.m_nCompanyNum);
|
|
||||||
m_SInfluencer.SaveDataFile(process.m_nCompanyNum);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
m_SInitializer.insertLog("New Filter END.");
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int SFilterProcess::getCompanyNum()
|
int SFilterProcess::getCompanyNum()
|
||||||
{
|
{
|
||||||
return m_nCompany;
|
return m_nCompany;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#ifndef SFILTERPROCESS
|
#ifndef SFILTERPROCESS
|
||||||
#define SFILTERPROCESS
|
#define SFILTERPROCESS
|
||||||
|
|
||||||
#include "sinitializer.h"
|
#include "sinitializer.h"
|
||||||
#include "sdatagroup.h"
|
#include "sdatagroup.h"
|
||||||
#include "sconsumer.h"
|
#include "sconsumer.h"
|
||||||
@@ -11,31 +12,37 @@ class QString;
|
|||||||
|
|
||||||
class SFilterProcess:public QObject
|
class SFilterProcess:public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
private:
|
|
||||||
SInitializer m_SInitializer;
|
|
||||||
SDatagroup m_SDatagroup;
|
|
||||||
SConsumer m_SConsumer;
|
|
||||||
SInfluencer m_SInfluencer;
|
|
||||||
SSpammer m_SSpammer;
|
|
||||||
SPowercafe m_SPowercafe;
|
|
||||||
SConsumerMarketer m_SConsumerMarketer;
|
|
||||||
SConsumerCheckList m_SConsumerCheckList;
|
|
||||||
int m_nCompany;
|
|
||||||
public:
|
public:
|
||||||
enum E_SERVICE
|
enum E_SERVICE
|
||||||
{
|
{
|
||||||
E_SERVICE_INFLUENCER = 1,
|
E_SERVICE_INFLUENCER = 1,
|
||||||
E_SERVICE_CONSUMER,
|
E_SERVICE_CONSUMER,
|
||||||
E_SERVICE_SPAMMER,
|
E_SERVICE_SPAMMER,
|
||||||
E_SERVICE_POWERCAFE
|
E_SERVICE_POWERCAFE
|
||||||
};
|
};
|
||||||
SFilterProcess(QObject *parent = 0):QObject(parent), m_nCompany(-1){}
|
SFilterProcess(QObject *parent = 0):QObject(parent), m_nCompany(-1){}
|
||||||
bool init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName);
|
bool init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName);
|
||||||
bool init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName, QString _strInfluencerLimit);
|
bool init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName, QString _strInfluencerLimit);
|
||||||
bool run();
|
bool run();
|
||||||
int getCompanyNum();
|
int getCompanyNum();
|
||||||
|
|
||||||
|
private:
|
||||||
|
SInitializer m_SInitializer;
|
||||||
|
SDatagroup m_SDatagroup;
|
||||||
|
SConsumer m_SConsumer;
|
||||||
|
SInfluencer m_SInfluencer;
|
||||||
|
SSpammer m_SSpammer;
|
||||||
|
SPowercafe m_SPowercafe;
|
||||||
|
SConsumerMarketer m_SConsumerMarketer;
|
||||||
|
SConsumerCheckList m_SConsumerCheckList;
|
||||||
|
int m_nCompany;
|
||||||
|
|
||||||
|
void LoadData(const SInitializer::stFilterProcess& process);
|
||||||
|
void MakeCategory(const SInitializer::stFilterProcess& process);
|
||||||
|
void Send(const SInitializer::stFilterProcess& process);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SFILTERPROCESS
|
#endif // SFILTERPROCESS
|
||||||
|
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ void SHttpSender::ReadData()
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void SHttpSender::error(QAbstractSocket::SocketError error)
|
void SHttpSender::error(QAbstractSocket::SocketError /*error*/)
|
||||||
{
|
{
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,26 +1,29 @@
|
|||||||
#ifndef SHTTPSENDER_H
|
#ifndef SHTTPSENDER_H
|
||||||
#define SHTTPSENDER_H
|
#define SHTTPSENDER_H
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QtNetwork>
|
#include <QtNetwork>
|
||||||
#include <QtNetwork/QTcpSocket>
|
#include <QtNetwork/QTcpSocket>
|
||||||
#include <QSqlDatabase>
|
#include <QSqlDatabase>
|
||||||
|
|
||||||
class SHttpSender : public QObject
|
class SHttpSender : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
SHttpSender(QObject * obj = 0);
|
SHttpSender(QObject * obj = 0);
|
||||||
void SendData(int _company_num);
|
void SendData(int _company_num);
|
||||||
virtual ~SHttpSender();
|
virtual ~SHttpSender();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void ReadData();
|
void ReadData();
|
||||||
void DisConnected();
|
void DisConnected();
|
||||||
void error(QAbstractSocket::SocketError error);
|
void error(QAbstractSocket::SocketError error);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QTcpSocket *socket;
|
QTcpSocket *socket;
|
||||||
quint16 port;
|
quint16 port;
|
||||||
QString addr;
|
QString addr;
|
||||||
QString addrName;
|
QString addrName;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SHTTPSENDER_H
|
#endif // SHTTPSENDER_H
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#ifndef SINFLUENCER
|
#ifndef SINFLUENCER
|
||||||
#define SINFLUENCER
|
#define SINFLUENCER
|
||||||
|
|
||||||
#include "sservice.h"
|
#include "sservice.h"
|
||||||
#include "sfilteralgorithm.h"
|
#include "sfilteralgorithm.h"
|
||||||
#include "sinitializer.h"
|
#include "sinitializer.h"
|
||||||
@@ -9,362 +10,375 @@
|
|||||||
|
|
||||||
class QString;
|
class QString;
|
||||||
class QStringList;
|
class QStringList;
|
||||||
|
|
||||||
class SInfluencer:public SService
|
class SInfluencer:public SService
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
struct stReal
|
struct stReal
|
||||||
{
|
{
|
||||||
QSet<QString> m_setRealAllUrl;
|
QSet<QString> m_setRealAllUrl;
|
||||||
QSet<QString> m_setRealBodyUrl;
|
QSet<QString> m_setRealBodyUrl;
|
||||||
QMap<QString, int> m_mapRealReplyUniqueUrl; //multiple
|
QMap<QString, int> m_mapRealReplyUniqueUrl; //multiple
|
||||||
};
|
};
|
||||||
struct stInfluencer
|
|
||||||
{
|
|
||||||
int id_num;
|
|
||||||
int nickname_num;
|
|
||||||
int community_num;
|
|
||||||
int category_num;
|
|
||||||
QString id_id;
|
|
||||||
QString profile;
|
|
||||||
QString profileurl;
|
|
||||||
int bodycount;
|
|
||||||
int replycount;
|
|
||||||
double influencervalue;
|
|
||||||
int rank;
|
|
||||||
QString community_title;
|
|
||||||
QString community_url;
|
|
||||||
QString community_id;
|
|
||||||
QString nickname_nickname;
|
|
||||||
QString nickname_exnickname;
|
|
||||||
QString platformname_name;
|
|
||||||
int platformname_num;
|
|
||||||
int sharecount;
|
|
||||||
int likecount;
|
|
||||||
QString interactionrank;
|
|
||||||
QString isSelected;
|
|
||||||
QMap<QString, QList<SDatagroup::stReply> > interactions;
|
|
||||||
int interactionsTotalReplyCount;
|
|
||||||
int interactionsTotalCount;
|
|
||||||
|
|
||||||
stInfluencer():id_num(0),nickname_num(0),community_num(0),category_num(0),bodycount(0),replycount(0),rank(0),influencervalue(0.0),platformname_num(0),
|
struct stInfluencer
|
||||||
sharecount(0), likecount(0), interactionsTotalReplyCount(0), interactionsTotalCount(0), isSelected("NULL") {}
|
{
|
||||||
|
stInfluencer():id_num(0),nickname_num(0),community_num(0),category_num(0),bodycount(0),replycount(0),rank(0),influencervalue(0.0),platformname_num(0),
|
||||||
|
sharecount(0), likecount(0), interactionsTotalReplyCount(0), interactionsTotalCount(0), isSelected("NULL") {}
|
||||||
|
|
||||||
};
|
int id_num;
|
||||||
struct stStatsInfBloggerRank
|
int nickname_num;
|
||||||
{
|
int community_num;
|
||||||
QString id_id;
|
int category_num;
|
||||||
QString nickname_nickname;
|
QString id_id;
|
||||||
int bodycount;
|
QString profile;
|
||||||
int replycount;
|
QString profileurl;
|
||||||
double influencevalue;
|
int bodycount;
|
||||||
QString subject;
|
int replycount;
|
||||||
int company_num;
|
double influencervalue;
|
||||||
int rank;
|
int rank;
|
||||||
stStatsInfBloggerRank():bodycount(0),replycount(0),rank(0),influencevalue(0.0){}
|
QString community_title;
|
||||||
stStatsInfBloggerRank(const QString &_id_id, const QString &_nickname_nickname):id_id(_id_id),nickname_nickname(_nickname_nickname),
|
QString community_url;
|
||||||
bodycount(0), replycount(0), rank(0), influencevalue(0.0) {}
|
QString community_id;
|
||||||
};
|
QString nickname_nickname;
|
||||||
|
QString nickname_exnickname;
|
||||||
|
QString platformname_name;
|
||||||
|
int platformname_num;
|
||||||
|
int sharecount;
|
||||||
|
int likecount;
|
||||||
|
QString interactionrank;
|
||||||
|
QString isSelected;
|
||||||
|
QMap<QString, QList<SDatagroup::stReply> > interactions;
|
||||||
|
int interactionsTotalReplyCount;
|
||||||
|
int interactionsTotalCount;
|
||||||
|
|
||||||
struct stStatsInfBloggerBuzzbyday
|
};
|
||||||
{
|
|
||||||
QString date;
|
|
||||||
int formateddate;
|
|
||||||
int idcount;
|
|
||||||
int bodycount;
|
|
||||||
int replycount;
|
|
||||||
int company_num;
|
|
||||||
stStatsInfBloggerBuzzbyday():formateddate(0), idcount(0), bodycount(0), replycount(0), company_num(0){}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stBodyInfluencerMap
|
struct stStatsInfBloggerRank
|
||||||
{
|
{
|
||||||
int num;
|
stStatsInfBloggerRank():bodycount(0),replycount(0),rank(0),influencevalue(0.0){}
|
||||||
int body_num;
|
stStatsInfBloggerRank(const QString &_id_id, const QString &_nickname_nickname):id_id(_id_id),nickname_nickname(_nickname_nickname),
|
||||||
int id_num;
|
bodycount(0), replycount(0), rank(0), influencevalue(0.0) {}
|
||||||
int category_num;
|
|
||||||
int realin;
|
|
||||||
int community_num;
|
|
||||||
QString date;
|
|
||||||
stBodyInfluencerMap():num(0),body_num(0), id_num(0), category_num(0), realin(0), community_num(0){}
|
|
||||||
};
|
|
||||||
struct stReplyInfluencerMap
|
|
||||||
{
|
|
||||||
int num;
|
|
||||||
int reply_num;
|
|
||||||
int body_num;
|
|
||||||
int id_num;
|
|
||||||
int category_num;
|
|
||||||
int realin;
|
|
||||||
int community_num;
|
|
||||||
QString body_date;
|
|
||||||
stReplyInfluencerMap():num(0),reply_num(0),body_num(0),id_num(0),category_num(0),realin(0),community_num(0){}
|
|
||||||
};
|
|
||||||
|
|
||||||
class SReplyInfluencerMap
|
QString id_id;
|
||||||
{
|
QString nickname_nickname;
|
||||||
private:
|
int bodycount;
|
||||||
SInitializer *m_pSInitializer;
|
int replycount;
|
||||||
QList<stReplyInfluencerMap> m_listMap;
|
double influencevalue;
|
||||||
public:
|
QString subject;
|
||||||
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
int company_num;
|
||||||
void clear(){ m_listMap.clear(); }
|
int rank;
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
};
|
|
||||||
|
|
||||||
class STInfluencer
|
};
|
||||||
{
|
|
||||||
private:
|
|
||||||
SInitializer *m_pSInitializer;
|
|
||||||
QList<stInfluencer> m_listMap;
|
|
||||||
QMap<int, QList<stInfluencer> > m_mapInfluencerOfCategory;
|
|
||||||
QMap<int, QList<int> > m_mapInfluencerGroupInfo;
|
|
||||||
QMap<int, QMap<int, QList<stInfluencer> > > m_mapInfluencerOfGroup;
|
|
||||||
public:
|
|
||||||
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
bool SaveDataFile(int _companyNum);
|
|
||||||
void clear(){ m_listMap.clear(); }
|
|
||||||
QList<stInfluencer>& getInfluencerList();
|
|
||||||
int getInfluencerCount();
|
|
||||||
QMap<QString, int> getInfluencerCountOfPlatform();
|
|
||||||
int getInfluencerGroupNum(int _nCategoryNum);
|
|
||||||
void setInfluencerValueWeight();
|
|
||||||
void processDuplicatedInfluencer();
|
|
||||||
QMap<QString, QList<double> > makeInfluencerValuesOfId(QMap<int, QList<stInfluencer> > &_mapInfluencersOfCategory);
|
|
||||||
QMap<QString, QList<double> > filterInfluencerValuesOfId(QMap<QString, QList<double> > &_mapInfluencerValuesOfId);
|
|
||||||
void sortInfluencerValuesOfId(QMap<QString, QList<double> > &_mapInfluencerValuesOfId);
|
|
||||||
void copyInfluencerFromGroupToList();
|
|
||||||
void sortInfluencerByValue();
|
|
||||||
void setInfluecnerRank();
|
|
||||||
void setDuplicatedInfluencerFlag(QMap<int, QList<stInfluencer> > &_mapInfluencersOfCategory, QMap<QString, QList<double> > &_mapInfluencerValuesOfId);
|
|
||||||
void setGroupDuplicatedInfluencerFlag(QMap<QString, int> &_mapCountOfGroupDuplicatedId);
|
|
||||||
QMap<QString, int> makeCountOfGroupDuplicatedId();
|
|
||||||
};
|
|
||||||
|
|
||||||
class SStatsInfBloggerRank
|
struct stStatsInfBloggerBuzzbyday
|
||||||
{
|
{
|
||||||
private:
|
stStatsInfBloggerBuzzbyday():formateddate(0), idcount(0), bodycount(0), replycount(0), company_num(0){}
|
||||||
SInitializer *m_pSInitializer;
|
|
||||||
QList<stStatsInfBloggerRank> m_listMap;
|
|
||||||
public:
|
|
||||||
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
|
||||||
void clear(){ m_listMap.clear(); }
|
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
};
|
|
||||||
|
|
||||||
class SStatsInfBloggerBuzzbyday
|
QString date;
|
||||||
{
|
int formateddate;
|
||||||
private:
|
int idcount;
|
||||||
SInitializer *m_pSInitializer;
|
int bodycount;
|
||||||
QList<stStatsInfBloggerBuzzbyday> m_listMap;
|
int replycount;
|
||||||
public:
|
int company_num;
|
||||||
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
|
||||||
void clear(){ m_listMap.clear(); }
|
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
};
|
|
||||||
|
|
||||||
class SBodyInfluencerMap
|
};
|
||||||
{
|
|
||||||
private:
|
|
||||||
SInitializer *m_pSInitializer;
|
|
||||||
QList<stBodyInfluencerMap> m_listMap;
|
|
||||||
public:
|
|
||||||
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
|
||||||
void clear(){ m_listMap.clear(); }
|
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
};
|
|
||||||
|
|
||||||
class SInfluencerWeight
|
struct stBodyInfluencerMap
|
||||||
{
|
{
|
||||||
private:
|
stBodyInfluencerMap():num(0),body_num(0), id_num(0), category_num(0), realin(0), community_num(0){}
|
||||||
QMap<int,double> m_mapBodyWeight;
|
|
||||||
QMap<int,double> m_mapReplyWeight;
|
|
||||||
QMap<int,double> m_mapLikeWeight;
|
|
||||||
const static double m_multipleValue;
|
|
||||||
|
|
||||||
private:
|
int num;
|
||||||
void calculateSectionWeight(QMap<int, double>& _mapSection);
|
int body_num;
|
||||||
public:
|
int id_num;
|
||||||
void calculateWeight();
|
int category_num;
|
||||||
void insert(stInfluencer &_val);
|
int realin;
|
||||||
double getInfluenceValue(stInfluencer &_val);
|
int community_num;
|
||||||
};
|
QString date;
|
||||||
|
|
||||||
struct stStatsJson
|
};
|
||||||
{
|
struct stReplyInfluencerMap
|
||||||
int company_num;
|
{
|
||||||
int servicenum;
|
stReplyInfluencerMap():num(0),reply_num(0),body_num(0),id_num(0),category_num(0),realin(0),community_num(0){}
|
||||||
QString title;
|
|
||||||
QString subtitle;
|
|
||||||
QString platformname_name;
|
|
||||||
int platformname_num;
|
|
||||||
QString jdata;
|
|
||||||
int category_num;
|
|
||||||
int bodyCountOfPlatform;
|
|
||||||
int userCount;
|
|
||||||
int influencerGroupNum;
|
|
||||||
stStatsJson():company_num(0), servicenum(2), platformname_num(1), category_num(0), bodyCountOfPlatform(0), userCount(0), influencerGroupNum(0){}
|
|
||||||
};
|
|
||||||
|
|
||||||
class SPlatformStatistics
|
int num;
|
||||||
{
|
int reply_num;
|
||||||
private:
|
int body_num;
|
||||||
QMap<QString, int> m_mapBodyCountOfPlatform;
|
int id_num;
|
||||||
QMap<QString, int> m_mapUserCountOfPlatform;
|
int category_num;
|
||||||
int m_nTotalBodyCount;
|
int realin;
|
||||||
int m_nTotalUserCount;
|
int community_num;
|
||||||
public:
|
QString body_date;
|
||||||
SPlatformStatistics() : m_nTotalBodyCount(0), m_nTotalUserCount(0) {}
|
|
||||||
void calculatePlatformsStatistics(SDatagroup &_datagroup);
|
|
||||||
int getBodyCount(QString _platformname);
|
|
||||||
int getUserCount(QString _platformname);
|
|
||||||
int getTotalBodyCount();
|
|
||||||
int getTotalUserCount();
|
|
||||||
};
|
|
||||||
|
|
||||||
class SGroupStatistics
|
};
|
||||||
{
|
|
||||||
private:
|
|
||||||
QMap<int, int> m_mapUserCountOfGroup;
|
|
||||||
QMap<int, QString> m_mapPlatformOfGroup;
|
|
||||||
const QMap<int, QList<int> > m_mapCategorysOfGroup;
|
|
||||||
const QList<SInfluencer::stInfluencer>& m_listInfluencer;
|
|
||||||
|
|
||||||
private:
|
class SReplyInfluencerMap
|
||||||
void calculateUserCount();
|
{
|
||||||
void calculatePlatform();
|
public:
|
||||||
QString getMaxBodyCountPlatform(QMap<QString, int> _mapBodyCountOfPlatform);
|
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
||||||
public:
|
void clear(){ m_listMap.clear(); }
|
||||||
SGroupStatistics(QMap<int, QList<int> > _mapCategorysOfGroup, QList<SInfluencer::stInfluencer>& _listInfluencer) :
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
m_mapCategorysOfGroup(_mapCategorysOfGroup), m_listInfluencer(_listInfluencer) {}
|
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
||||||
void calculateGroupStatistics();
|
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
||||||
QString getPlatform(int _nGroupNum);
|
|
||||||
};
|
|
||||||
|
|
||||||
class SStatsJson
|
private:
|
||||||
{
|
SInitializer *m_pSInitializer;
|
||||||
private:
|
QList<stReplyInfluencerMap> m_listMap;
|
||||||
SInitializer *m_pSInitializer;
|
|
||||||
QList<stStatsJson> m_listMap;
|
|
||||||
|
|
||||||
private:
|
};
|
||||||
void makeGroupStatsJson(SGroupStatistics _groupStatistics, SPlatformStatistics _platformStatistics);
|
|
||||||
void makeTotalStatsJson(SPlatformStatistics _platformStatistics);
|
|
||||||
QString makeStatsJson(stStatsJson _ststatsJson);
|
|
||||||
|
|
||||||
public:
|
class STInfluencer
|
||||||
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
|
{
|
||||||
// void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
public:
|
||||||
void makeTable(SDatagroup &_datagroup, STInfluencer& _influencer);
|
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
||||||
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
void clear(){ m_listMap.clear(); }
|
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
||||||
};
|
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
bool SaveDataFile(int _companyNum);
|
||||||
|
void clear(){ m_listMap.clear(); }
|
||||||
|
QList<stInfluencer>& getInfluencerList();
|
||||||
|
int getInfluencerCount();
|
||||||
|
QMap<QString, int> getInfluencerCountOfPlatform();
|
||||||
|
int getInfluencerGroupNum(int _nCategoryNum);
|
||||||
|
void setInfluencerValueWeight();
|
||||||
|
void processDuplicatedInfluencer();
|
||||||
|
QMap<QString, QList<double> > makeInfluencerValuesOfId(QMap<int, QList<stInfluencer> > &_mapInfluencersOfCategory);
|
||||||
|
QMap<QString, QList<double> > filterInfluencerValuesOfId(QMap<QString, QList<double> > &_mapInfluencerValuesOfId);
|
||||||
|
void sortInfluencerValuesOfId(QMap<QString, QList<double> > &_mapInfluencerValuesOfId);
|
||||||
|
void copyInfluencerFromGroupToList();
|
||||||
|
void sortInfluencerByValue();
|
||||||
|
void setInfluecnerRank();
|
||||||
|
void setDuplicatedInfluencerFlag(QMap<int, QList<stInfluencer> > &_mapInfluencersOfCategory, QMap<QString, QList<double> > &_mapInfluencerValuesOfId);
|
||||||
|
void setGroupDuplicatedInfluencerFlag(QMap<QString, int> &_mapCountOfGroupDuplicatedId);
|
||||||
|
QMap<QString, int> makeCountOfGroupDuplicatedId();
|
||||||
|
|
||||||
class SIdrankbyinteraction
|
private:
|
||||||
{
|
SInitializer *m_pSInitializer;
|
||||||
private:
|
QList<stInfluencer> m_listMap;
|
||||||
QJsonArray m_interactorsJson;
|
QMap<int, QList<stInfluencer> > m_mapInfluencerOfCategory;
|
||||||
QJsonArray m_pickedInteractorsJson;
|
QMap<int, QList<int> > m_mapInfluencerGroupInfo;
|
||||||
|
QMap<int, QMap<int, QList<stInfluencer> > > m_mapInfluencerOfGroup;
|
||||||
|
|
||||||
private:
|
};
|
||||||
void makeInteractorsJson(const SInfluencer::stInfluencer& _val);
|
|
||||||
void pickInteractorsByHighReplyCount(int _pickLimit);
|
|
||||||
public:
|
|
||||||
QString makeIdrankbyinteractionColumnJson(const SInfluencer::stInfluencer& _val);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct isGreaterInfluencerValue
|
class SStatsInfBloggerRank
|
||||||
{
|
{
|
||||||
bool operator()(const stInfluencer& first, const stInfluencer& second)
|
public:
|
||||||
{
|
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
||||||
if (first.influencervalue > second.influencervalue)
|
void clear(){ m_listMap.clear(); }
|
||||||
return true;
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
else if (first.influencervalue == second.influencervalue)
|
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
||||||
return first.bodycount > second.bodycount;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
//return first.influencervalue > second.influencervalue;
|
|
||||||
}
|
|
||||||
bool operator()(const stStatsInfBloggerRank& first, const stStatsInfBloggerRank& second)
|
|
||||||
{
|
|
||||||
if (first.influencevalue > second.influencevalue)
|
|
||||||
return true;
|
|
||||||
else if (first.influencevalue == second.influencevalue)
|
|
||||||
return first.bodycount > second.bodycount;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
//return first.influencevalue > second.influencevalue;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct isGreaterInfluencerRank
|
private:
|
||||||
{
|
SInitializer *m_pSInitializer;
|
||||||
bool operator()(const stInfluencer& first, const stInfluencer& second)
|
QList<stStatsInfBloggerRank> m_listMap;
|
||||||
{
|
|
||||||
return first.rank <= second.rank;
|
};
|
||||||
}
|
|
||||||
};
|
class SStatsInfBloggerBuzzbyday
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
||||||
|
void clear(){ m_listMap.clear(); }
|
||||||
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
|
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
QList<stStatsInfBloggerBuzzbyday> m_listMap;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class SBodyInfluencerMap
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
||||||
|
void clear(){ m_listMap.clear(); }
|
||||||
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
|
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
QList<stBodyInfluencerMap> m_listMap;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class SInfluencerWeight
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void calculateWeight();
|
||||||
|
void insert(stInfluencer &_val);
|
||||||
|
double getInfluenceValue(stInfluencer &_val);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QMap<int,double> m_mapBodyWeight;
|
||||||
|
QMap<int,double> m_mapReplyWeight;
|
||||||
|
QMap<int,double> m_mapLikeWeight;
|
||||||
|
const static double m_multipleValue;
|
||||||
|
|
||||||
|
void calculateSectionWeight(QMap<int, double>& _mapSection);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct stStatsJson
|
||||||
|
{
|
||||||
|
stStatsJson():company_num(0), servicenum(2), platformname_num(1), category_num(0), bodyCountOfPlatform(0), userCount(0), influencerGroupNum(0){}
|
||||||
|
|
||||||
|
int company_num;
|
||||||
|
int servicenum;
|
||||||
|
QString title;
|
||||||
|
QString subtitle;
|
||||||
|
QString platformname_name;
|
||||||
|
int platformname_num;
|
||||||
|
QString jdata;
|
||||||
|
int category_num;
|
||||||
|
int bodyCountOfPlatform;
|
||||||
|
int userCount;
|
||||||
|
int influencerGroupNum;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class SPlatformStatistics
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SPlatformStatistics() : m_nTotalBodyCount(0), m_nTotalUserCount(0) {}
|
||||||
|
void calculatePlatformsStatistics(SDatagroup &_datagroup);
|
||||||
|
int getBodyCount(QString _platformname);
|
||||||
|
int getUserCount(QString _platformname);
|
||||||
|
int getTotalBodyCount();
|
||||||
|
int getTotalUserCount();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QMap<QString, int> m_mapBodyCountOfPlatform;
|
||||||
|
QMap<QString, int> m_mapUserCountOfPlatform;
|
||||||
|
int m_nTotalBodyCount;
|
||||||
|
int m_nTotalUserCount;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class SGroupStatistics
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SGroupStatistics(QMap<int, QList<int> > _mapCategorysOfGroup, QList<SInfluencer::stInfluencer>& _listInfluencer) :
|
||||||
|
m_mapCategorysOfGroup(_mapCategorysOfGroup), m_listInfluencer(_listInfluencer) {}
|
||||||
|
void calculateGroupStatistics();
|
||||||
|
QString getPlatform(int _nGroupNum);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QMap<int, int> m_mapUserCountOfGroup;
|
||||||
|
QMap<int, QString> m_mapPlatformOfGroup;
|
||||||
|
const QMap<int, QList<int> > m_mapCategorysOfGroup;
|
||||||
|
const QList<SInfluencer::stInfluencer>& m_listInfluencer;
|
||||||
|
|
||||||
|
void calculateUserCount();
|
||||||
|
void calculatePlatform();
|
||||||
|
QString getMaxBodyCountPlatform(QMap<QString, int> _mapBodyCountOfPlatform);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class SStatsJson
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
|
||||||
|
void makeTable(SDatagroup &_datagroup, STInfluencer& _influencer);
|
||||||
|
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
|
||||||
|
void clear(){ m_listMap.clear(); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
QList<stStatsJson> m_listMap;
|
||||||
|
|
||||||
|
void makeGroupStatsJson(SGroupStatistics _groupStatistics, SPlatformStatistics _platformStatistics);
|
||||||
|
void makeTotalStatsJson(SPlatformStatistics _platformStatistics);
|
||||||
|
QString makeStatsJson(stStatsJson _ststatsJson);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class SIdrankbyinteraction
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QString makeIdrankbyinteractionColumnJson(const SInfluencer::stInfluencer& _val);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QJsonArray m_interactorsJson;
|
||||||
|
QJsonArray m_pickedInteractorsJson;
|
||||||
|
|
||||||
|
void makeInteractorsJson(const SInfluencer::stInfluencer& _val);
|
||||||
|
void pickInteractorsByHighReplyCount(int _pickLimit);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct isGreaterInfluencerValue
|
||||||
|
{
|
||||||
|
bool operator()(const stInfluencer& first, const stInfluencer& second)
|
||||||
|
{
|
||||||
|
return (first.influencervalue > second.influencervalue) || ((first.influencervalue == second.influencervalue) && (first.bodycount > second.bodycount));
|
||||||
|
}
|
||||||
|
bool operator()(const stStatsInfBloggerRank& first, const stStatsInfBloggerRank& second)
|
||||||
|
{
|
||||||
|
return (first.influencevalue > second.influencevalue) || ((first.influencevalue == second.influencevalue) || (first.bodycount > second.bodycount));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct isGreaterInfluencerRank
|
||||||
|
{
|
||||||
|
bool operator()(const stInfluencer& first, const stInfluencer& second)
|
||||||
|
{
|
||||||
|
return first.rank <= second.rank;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
struct isGreaterBodyCount
|
struct isGreaterBodyCount
|
||||||
{
|
{
|
||||||
bool operator()(const stStatsInfBloggerRank& first, const stStatsInfBloggerRank& second)
|
bool operator()(const stStatsInfBloggerRank& first, const stStatsInfBloggerRank& second)
|
||||||
{
|
{
|
||||||
return first.bodycount > second.bodycount;
|
return first.bodycount > second.bodycount;
|
||||||
}
|
}
|
||||||
bool operator()(const stInfluencer& first, const stInfluencer& second)
|
bool operator()(const stInfluencer& first, const stInfluencer& second)
|
||||||
{
|
{
|
||||||
return first.bodycount > second.bodycount;
|
return first.bodycount > second.bodycount;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct isGreaterReplyCount
|
struct isGreaterReplyCount
|
||||||
{
|
{
|
||||||
bool operator()(const stStatsInfBloggerRank& first, const stStatsInfBloggerRank& second)
|
bool operator()(const stStatsInfBloggerRank& first, const stStatsInfBloggerRank& second)
|
||||||
{
|
{
|
||||||
return first.replycount > second.replycount;
|
return first.replycount > second.replycount;
|
||||||
}
|
}
|
||||||
bool operator()(const stInfluencer& first, const stInfluencer& second)
|
bool operator()(const stInfluencer& first, const stInfluencer& second)
|
||||||
{
|
{
|
||||||
return first.replycount > second.replycount;
|
return first.replycount > second.replycount;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct stInfluenceBuzz
|
struct stInfluenceBuzz
|
||||||
{
|
{
|
||||||
int bodycount;
|
stInfluenceBuzz():bodycount(0), replycount(0) {}
|
||||||
int replycount;
|
|
||||||
QSet<QString> idcount;
|
|
||||||
stInfluenceBuzz():bodycount(0), replycount(0) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
int bodycount;
|
||||||
private:
|
int replycount;
|
||||||
SFilterAlgorithm m_SFilterAlgorithm;
|
QSet<QString> idcount;
|
||||||
QMap<int, stReal> m_mapCategory;
|
};
|
||||||
SBodyInfluencerMap m_SBodyInfluencerMap;
|
|
||||||
SReplyInfluencerMap m_SReplyInfluencerMap;
|
|
||||||
//SStatsInfBloggerBuzzbyday m_SStatsInfBloggerBuzzbyday;
|
|
||||||
//SStatsInfBloggerRank m_SStatsInfBloggerRank;
|
|
||||||
STInfluencer m_STInfluencer;
|
|
||||||
SStatsJson m_SStatsJson;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void setInitiaizer(SInitializer &_initializer);
|
virtual void setInitiaizer(SInitializer &_initializer);
|
||||||
virtual bool uploadData(int _companyNum);
|
virtual bool uploadData(int _companyNum);
|
||||||
virtual bool changeTable(int _companyNum);
|
virtual bool changeTable(int _companyNum);
|
||||||
virtual bool SaveDataFile(int _companyNum);
|
virtual bool SaveDataFile(int _companyNum);
|
||||||
virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList<SInitializer::stFilter> &_listFilter);
|
virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList<SInitializer::stFilter> &_listFilter);
|
||||||
virtual bool makeOverallCategory(int _categoryNum);
|
virtual bool makeOverallCategory(int _categoryNum);
|
||||||
virtual bool makeTable(SDatagroup &_datagroup);
|
virtual bool makeTable(SDatagroup &_datagroup);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SFilterAlgorithm m_SFilterAlgorithm;
|
||||||
|
QMap<int, stReal> m_mapCategory;
|
||||||
|
SBodyInfluencerMap m_SBodyInfluencerMap;
|
||||||
|
SReplyInfluencerMap m_SReplyInfluencerMap;
|
||||||
|
STInfluencer m_STInfluencer;
|
||||||
|
SStatsJson m_SStatsJson;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -6,21 +6,15 @@
|
|||||||
|
|
||||||
class SInfluencerInteractorUrlMaker
|
class SInfluencerInteractorUrlMaker
|
||||||
{
|
{
|
||||||
private:
|
|
||||||
static const QString m_strNaverBlogBaseUrl;
|
|
||||||
static const QString m_strInstagramBaseUrl;
|
|
||||||
static const QString m_strKakaoBaseUrl;
|
|
||||||
static const QString m_strFacebookBaseUrl;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static QString makeInfluencerInteractorUrl(const SDatagroup::stReply& _interactorReply);
|
static QString makeInfluencerInteractorUrl(const SDatagroup::stReply& _interactorReply);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static const QString m_strNaverBlogBaseUrl;
|
||||||
|
static const QString m_strInstagramBaseUrl;
|
||||||
|
static const QString m_strKakaoBaseUrl;
|
||||||
|
static const QString m_strFacebookBaseUrl;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif // SINFLUENCERINTERACTORURLMAKER_H
|
#endif // SINFLUENCERINTERACTORURLMAKER_H
|
||||||
|
|||||||
@@ -376,6 +376,8 @@ bool SInitializer::initFilterProcess()
|
|||||||
QString strQuery = QString("select filterprocess_type,datagroup_id,filtergroup_id,company_num,category_num,filterprocess_order,service_num,filtergroup_name "
|
QString strQuery = QString("select filterprocess_type,datagroup_id,filtergroup_id,company_num,category_num,filterprocess_order,service_num,filtergroup_name "
|
||||||
"from filterprocess where filterprocessgroup_id = ") + QString::number(m_stFilterProcessGroup.m_nFilterProcessGroupID);
|
"from filterprocess where filterprocessgroup_id = ") + QString::number(m_stFilterProcessGroup.m_nFilterProcessGroupID);
|
||||||
|
|
||||||
|
qDebug() << strQuery << endl;
|
||||||
|
|
||||||
QSqlQuery query(m_sDBManager[SDBManager::E_DATABASE_DATA]);
|
QSqlQuery query(m_sDBManager[SDBManager::E_DATABASE_DATA]);
|
||||||
|
|
||||||
if(query.exec(strQuery.toUtf8()) == false)
|
if(query.exec(strQuery.toUtf8()) == false)
|
||||||
@@ -766,10 +768,11 @@ bool SInitializer::initCompanyNum()
|
|||||||
|
|
||||||
void SInitializer::insertLog(const QString& _strMsg) const
|
void SInitializer::insertLog(const QString& _strMsg) const
|
||||||
{
|
{
|
||||||
cout << "[";
|
cout << "[" << m_stFilterProcessGroup.m_strFilterProcessGroupName.toStdString() << "] " << _strMsg.toStdString() << endl;
|
||||||
cout << m_stFilterProcessGroup.m_strFilterProcessGroupName.toStdString();
|
|
||||||
cout << "] ";
|
#ifdef QT_DEBUG
|
||||||
cout << _strMsg.toStdString() << endl;
|
//qDebug() << "[" << m_stFilterProcessGroup.m_strFilterProcessGroupName << "]" << _strMsg;
|
||||||
|
#endif
|
||||||
|
|
||||||
QFile file(m_stFilterProcessGroup.m_strFilterProcessGroupName + "." + QDate::currentDate().toString(Qt::ISODate)+".log");
|
QFile file(m_stFilterProcessGroup.m_strFilterProcessGroupName + "." + QDate::currentDate().toString(Qt::ISODate)+".log");
|
||||||
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))
|
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))
|
||||||
@@ -787,10 +790,10 @@ void SInitializer::insertDebugLog(const QString& _strMsg) const
|
|||||||
if (!m_bDebug)
|
if (!m_bDebug)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
cout << "[";
|
cout << "[" << m_stFilterProcessGroup.m_strFilterProcessGroupName.toStdString() << "] " << _strMsg.toStdString() << endl;
|
||||||
cout << m_stFilterProcessGroup.m_strFilterProcessGroupName.toStdString();
|
#ifdef QT_DEBUG
|
||||||
cout << "] ";
|
//qDebug() << "[" << m_stFilterProcessGroup.m_strFilterProcessGroupName << "] " << _strMsg << endl;
|
||||||
cout << _strMsg.toStdString() << endl;
|
#endif
|
||||||
|
|
||||||
QFile file(m_stFilterProcessGroup.m_strFilterProcessGroupName + "_debug." + QDate::currentDate().toString(Qt::ISODate)+".log");
|
QFile file(m_stFilterProcessGroup.m_strFilterProcessGroupName + "_debug." + QDate::currentDate().toString(Qt::ISODate)+".log");
|
||||||
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))
|
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#ifndef SINITIALIZER
|
#ifndef SINITIALIZER
|
||||||
#define SINITIALIZER
|
#define SINITIALIZER
|
||||||
|
|
||||||
#include "sdbmanager.h"
|
#include "sdbmanager.h"
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
@@ -10,248 +11,232 @@ class QSqlDatabase;
|
|||||||
|
|
||||||
const int REAL_BODY = 0x01;
|
const int REAL_BODY = 0x01;
|
||||||
const int REAL_REPLY = 0x02;
|
const int REAL_REPLY = 0x02;
|
||||||
//const int DEBUG = 0;
|
|
||||||
//const int RELEASE = 1;
|
|
||||||
//const int MODE = RELEASE;
|
|
||||||
|
|
||||||
class SInitializer
|
class SInitializer
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
enum E_SPAMER
|
||||||
|
{
|
||||||
|
E_SPAMER_BODY_COUNT_CUT = 0,
|
||||||
|
E_SPAMER_BODY_COUNT_RATIO,
|
||||||
|
E_SPAMER_REPLY_COUNT_CUT,
|
||||||
|
E_SPAMER_REPLY_COUNT_RATIO,
|
||||||
|
E_SPAMER_NICK_COUNT_CUT,
|
||||||
|
E_SPAMER_NICK_COUNT_RATIO,
|
||||||
|
E_SPAMER_MAX
|
||||||
|
};
|
||||||
|
|
||||||
private:
|
enum E_COLUMN
|
||||||
bool initDays();
|
{
|
||||||
bool initDBConnection();
|
E_COLUMN_DATABASE=0,
|
||||||
bool initFilterProcess();
|
E_COLUMN_NAME,
|
||||||
bool initCompanyNum();
|
E_COLUMN_DATE,
|
||||||
bool initColumn();
|
E_COLUMN_COUNT,
|
||||||
bool initInfluencer();
|
};
|
||||||
bool initSpammer();
|
|
||||||
bool initPlatform();
|
|
||||||
//bool initConsumerCategory();
|
|
||||||
bool initCategory();
|
|
||||||
bool initBlogPageNum();
|
|
||||||
bool initConsumerMarketer();
|
|
||||||
bool initConsumerCheckList();
|
|
||||||
bool initUpload();
|
|
||||||
bool initDebug();
|
|
||||||
|
|
||||||
|
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_etc,
|
||||||
|
E_DATA_MAX,
|
||||||
|
// for body, not reply
|
||||||
|
E_DATA_article_like = E_DATA_reply_url,
|
||||||
|
E_DATA_article_share = E_DATA_article_parent,
|
||||||
|
E_DATA_article_replycount = E_DATA_article_order
|
||||||
|
};
|
||||||
|
enum E_SERVICE
|
||||||
|
{
|
||||||
|
E_SERVICE_INFLUENCER = 1,
|
||||||
|
E_SERVICE_CONSUMER,
|
||||||
|
E_SERVICE_SPAMMER,
|
||||||
|
E_SERVICE_POWERCAFE,
|
||||||
|
E_SERVICE_MAX
|
||||||
|
};
|
||||||
|
|
||||||
|
struct stDataBaseInfo
|
||||||
|
{
|
||||||
|
QString m_strHostName;
|
||||||
|
QString m_strUserName;
|
||||||
|
QString m_strPassword;
|
||||||
|
QString m_strDBName;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct stFilterProcessGroup
|
||||||
|
{
|
||||||
|
int m_nFilterProcessGroupID;
|
||||||
|
QString m_strFilterProcessGroupName;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct stInfluencerParam
|
||||||
|
{
|
||||||
|
double m_dBody;
|
||||||
|
double m_dReply;
|
||||||
|
double A;
|
||||||
|
double B;
|
||||||
|
stInfluencerParam() : m_dBody(0.4), m_dReply(0.6), A(1.0), B(1.0) {}
|
||||||
|
double operator[](const int nSelect) const
|
||||||
|
{
|
||||||
|
switch(nSelect)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
return m_dBody;
|
||||||
|
case 1:
|
||||||
|
return m_dReply;
|
||||||
|
default:
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct stColumn
|
||||||
|
{
|
||||||
|
QStringList m_slColumn;
|
||||||
|
QStringList m_slColumnName;
|
||||||
|
int m_anColumn[E_DATA_MAX];
|
||||||
|
stColumn()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < E_DATA_MAX; i++)
|
||||||
|
m_anColumn[i] = -1;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct stFilterProcess
|
||||||
|
{
|
||||||
|
int m_nDatagroupID;
|
||||||
|
int m_nFilterGroupID;
|
||||||
|
int m_nCategoryNum;
|
||||||
|
int m_nFilterProcessOrder;
|
||||||
|
int m_nFilterProcessType;
|
||||||
|
int m_nCompanyNum;
|
||||||
|
int m_nServiceNum;
|
||||||
|
QString m_strFilterGroupName;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct stFilter
|
||||||
|
{
|
||||||
|
int m_nType;
|
||||||
|
int m_nFilterGroupID;
|
||||||
|
QVariant m_vData;
|
||||||
|
stFilter()
|
||||||
|
{
|
||||||
|
m_nType = -1;
|
||||||
|
m_nFilterGroupID = -1;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct stPlatform
|
||||||
|
{
|
||||||
|
QMap<QString, int> m_mapPlatformName;
|
||||||
|
QMap<QString, int> m_mapPlatformForm;
|
||||||
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum E_SPAMER
|
bool init(const QString& _strFilterProcessGroupID, const QString& _strFilterProcessGroupName);
|
||||||
{
|
bool init(const QString& _strFilterProcessGroupID, const QString& _strFilterProcessGroupName, QString _strInfluencerLimit);
|
||||||
E_SPAMER_BODY_COUNT_CUT = 0,
|
void insertLog(const QString& _strMsg) const;
|
||||||
E_SPAMER_BODY_COUNT_RATIO,
|
void insertDebugLog(const QString& _strMsg) const;
|
||||||
E_SPAMER_REPLY_COUNT_CUT,
|
QSqlDatabase getDatabase(const QString& _dbName) const;
|
||||||
E_SPAMER_REPLY_COUNT_RATIO,
|
QSqlDatabase getDatabase(const SDBManager::E_DATABASE& _eDatabase) const;
|
||||||
E_SPAMER_NICK_COUNT_CUT,
|
int getDataGroupNumber() const;
|
||||||
E_SPAMER_NICK_COUNT_RATIO,
|
QStringList getColumnStringList() const;
|
||||||
E_SPAMER_MAX
|
QStringList getColumnNameStringList() const;
|
||||||
};
|
|
||||||
|
|
||||||
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_etc,
|
|
||||||
E_DATA_MAX,
|
|
||||||
// for body, not reply
|
|
||||||
E_DATA_article_like = E_DATA_reply_url,
|
|
||||||
E_DATA_article_share = E_DATA_article_parent,
|
|
||||||
E_DATA_article_replycount = E_DATA_article_order
|
|
||||||
};
|
|
||||||
enum E_SERVICE
|
|
||||||
{
|
|
||||||
E_SERVICE_INFLUENCER = 1,
|
|
||||||
E_SERVICE_CONSUMER,
|
|
||||||
E_SERVICE_SPAMMER,
|
|
||||||
E_SERVICE_POWERCAFE,
|
|
||||||
E_SERVICE_MAX
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stDataBaseInfo
|
|
||||||
{
|
|
||||||
QString m_strHostName;
|
|
||||||
QString m_strUserName;
|
|
||||||
QString m_strPassword;
|
|
||||||
QString m_strDBName;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stFilterProcessGroup
|
|
||||||
{
|
|
||||||
int m_nFilterProcessGroupID;
|
|
||||||
QString m_strFilterProcessGroupName;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stInfluencerParam
|
|
||||||
{
|
|
||||||
double m_dBody;
|
|
||||||
double m_dReply;
|
|
||||||
double A;
|
|
||||||
double B;
|
|
||||||
stInfluencerParam() : m_dBody(0.4), m_dReply(0.6), A(1.0), B(1.0) {}
|
|
||||||
double operator[](const int nSelect) const
|
|
||||||
{
|
|
||||||
switch(nSelect)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
return m_dBody;
|
|
||||||
case 1:
|
|
||||||
return m_dReply;
|
|
||||||
default:
|
|
||||||
return 0.0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stColumn
|
|
||||||
{
|
|
||||||
QStringList m_slColumn;
|
|
||||||
QStringList m_slColumnName;
|
|
||||||
int m_anColumn[E_DATA_MAX];
|
|
||||||
stColumn()
|
|
||||||
{
|
|
||||||
for (int i = 0; i < E_DATA_MAX; i++)
|
|
||||||
m_anColumn[i] = -1;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stFilterProcess
|
|
||||||
{
|
|
||||||
int m_nDatagroupID;
|
|
||||||
int m_nFilterGroupID;
|
|
||||||
int m_nCategoryNum;
|
|
||||||
int m_nFilterProcessOrder;
|
|
||||||
int m_nFilterProcessType;
|
|
||||||
int m_nCompanyNum;
|
|
||||||
int m_nServiceNum;
|
|
||||||
QString m_strFilterGroupName;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stFilter
|
|
||||||
{
|
|
||||||
int m_nType;
|
|
||||||
int m_nFilterGroupID;
|
|
||||||
QVariant m_vData;
|
|
||||||
stFilter()
|
|
||||||
{
|
|
||||||
m_nType = -1;
|
|
||||||
m_nFilterGroupID = -1;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stPlatform
|
|
||||||
{
|
|
||||||
QMap<QString, int> m_mapPlatformName;
|
|
||||||
QMap<QString, int> m_mapPlatformForm;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
QString getStartDay() const;
|
||||||
|
QString getEndDay() const;
|
||||||
|
const int* getColumnIntArray() const;
|
||||||
|
QList<stFilterProcess> getFilterProcess();
|
||||||
|
QMap<int, QList<stFilter> > getFilterGroup();
|
||||||
|
const double* getSpammerParam() const;
|
||||||
|
QList<stFilter> getFilterGroup(int _nFilterGroupId);
|
||||||
|
int getPlatformForm(const QString &_form);
|
||||||
|
int getPlatformName(const QString &_name);
|
||||||
|
QMap<int, int>* getConsumerCategory();
|
||||||
|
//int getConsumerAllCategory();
|
||||||
|
void closeConnection(const SDBManager::E_DATABASE _eDatabase);
|
||||||
|
void closeConnection(const QString& _str);
|
||||||
|
bool openConnection(const SDBManager::E_DATABASE _eDatabase);
|
||||||
|
bool openConnection(const QString& _str);
|
||||||
|
double getInfluencerParam(int _BodyorReply);
|
||||||
|
stInfluencerParam getInfluencerParam();
|
||||||
|
void updateWebDBInfoState(QSqlDatabase &_db, int _nCompany, QString _strStatus);
|
||||||
|
void updateWebDBInfoComplete(QSqlDatabase _db, QString _mindate, QString _maxdate, QString _lastupdate, int _bodycount, int _replycount, int _nCompany);
|
||||||
|
int getAllCategoryNum(int _nService);
|
||||||
|
QString getCategoryName(int _nCategory) const;
|
||||||
|
int getBlogPageNum();
|
||||||
|
QMap<int, QString> getConsumerMaketer();
|
||||||
|
QStringList getConsumerCheckList();
|
||||||
|
QMap<int, QString> getConsumerCheckListUser();
|
||||||
|
bool isUpload();
|
||||||
|
QMap<int, QList<int> > getInfluencerGroup();
|
||||||
|
QString getInfluencerLimitFrom();
|
||||||
|
QString getInfluencerLimitTo();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SDBManager m_sDBManager;
|
SDBManager m_sDBManager;
|
||||||
QString m_strStartDay;
|
QString m_strStartDay;
|
||||||
QString m_strEndDay;
|
QString m_strEndDay;
|
||||||
double m_adSpammerParam[E_SPAMER_MAX];
|
double m_adSpammerParam[E_SPAMER_MAX];
|
||||||
stDataBaseInfo m_stWebDBInfo;
|
stDataBaseInfo m_stWebDBInfo;
|
||||||
int m_nCompanyNum;
|
int m_nCompanyNum;
|
||||||
stFilterProcessGroup m_stFilterProcessGroup;
|
stFilterProcessGroup m_stFilterProcessGroup;
|
||||||
stInfluencerParam m_stInfluencerParam;
|
stInfluencerParam m_stInfluencerParam;
|
||||||
stColumn m_stColumn;
|
stColumn m_stColumn;
|
||||||
QList<stFilterProcess> m_listFilterProcess;
|
QList<stFilterProcess> m_listFilterProcess;
|
||||||
QMap<int, QList<stFilter> > m_mapFilterGroup; // key : filtergroupid
|
QMap<int, QList<stFilter> > m_mapFilterGroup; // key : filtergroupid
|
||||||
int m_nDataGroupNumber;
|
int m_nDataGroupNumber;
|
||||||
stPlatform m_stPlatform;
|
stPlatform m_stPlatform;
|
||||||
//QMap<int, int> m_mapConsumerCategory;
|
int m_nConsumerAllCategory;
|
||||||
int m_nConsumerAllCategory;
|
int m_anAllCategory[E_SERVICE_MAX];
|
||||||
int m_anAllCategory[E_SERVICE_MAX];
|
QMap<int, QString> m_mapCategory;
|
||||||
QMap<int, QString> m_mapCategory;
|
int m_nBlogPageNum;
|
||||||
int m_nBlogPageNum;
|
QMap<int, QString> m_mapConsumerMaketers;
|
||||||
QMap<int, QString> m_mapConsumerMaketers;
|
QMap<int, QString> m_mapConsumerCheckListUser;
|
||||||
QMap<int, QString> m_mapConsumerCheckListUser;
|
QMap<int, QList<int> > m_mapInfluencerGroup;
|
||||||
QMap<int, QList<int> > m_mapInfluencerGroup;
|
QStringList m_slConsumerCheckList;
|
||||||
QStringList m_slConsumerCheckList;
|
bool m_bUpload;
|
||||||
bool m_bUpload;
|
bool m_bDebug;
|
||||||
bool m_bDebug;
|
QString m_strInfluencerLimitFrom;
|
||||||
QString m_strInfluencerLimitFrom;
|
QString m_strInfluencerLimitTo;
|
||||||
QString m_strInfluencerLimitTo;
|
|
||||||
|
|
||||||
public:
|
bool initDays();
|
||||||
bool init(const QString& _strFilterProcessGroupID, const QString& _strFilterProcessGroupName);
|
bool initDBConnection();
|
||||||
bool init(const QString& _strFilterProcessGroupID, const QString& _strFilterProcessGroupName, QString _strInfluencerLimit);
|
bool initFilterProcess();
|
||||||
void insertLog(const QString& _strMsg) const;
|
bool initCompanyNum();
|
||||||
void insertDebugLog(const QString& _strMsg) const;
|
bool initColumn();
|
||||||
QSqlDatabase getDatabase(const QString& _dbName) const;
|
bool initInfluencer();
|
||||||
QSqlDatabase getDatabase(const SDBManager::E_DATABASE& _eDatabase) const;
|
bool initSpammer();
|
||||||
int getDataGroupNumber() const;
|
bool initPlatform();
|
||||||
QStringList getColumnStringList() const;
|
bool initCategory();
|
||||||
QStringList getColumnNameStringList() const;
|
bool initBlogPageNum();
|
||||||
|
bool initConsumerMarketer();
|
||||||
|
bool initConsumerCheckList();
|
||||||
|
bool initUpload();
|
||||||
|
bool initDebug();
|
||||||
|
|
||||||
QString getStartDay() const;
|
|
||||||
QString getEndDay() const;
|
|
||||||
const int* getColumnIntArray() const;
|
|
||||||
QList<stFilterProcess> getFilterProcess();
|
|
||||||
QMap<int, QList<stFilter> > getFilterGroup();
|
|
||||||
const double* getSpammerParam() const;
|
|
||||||
QList<stFilter> getFilterGroup(int _nFilterGroupId);
|
|
||||||
int getPlatformForm(const QString &_form);
|
|
||||||
int getPlatformName(const QString &_name);
|
|
||||||
QMap<int, int>* getConsumerCategory();
|
|
||||||
//int getConsumerAllCategory();
|
|
||||||
void closeConnection(const SDBManager::E_DATABASE _eDatabase);
|
|
||||||
void closeConnection(const QString& _str);
|
|
||||||
bool openConnection(const SDBManager::E_DATABASE _eDatabase);
|
|
||||||
bool openConnection(const QString& _str);
|
|
||||||
double getInfluencerParam(int _BodyorReply);
|
|
||||||
stInfluencerParam getInfluencerParam();
|
|
||||||
void updateWebDBInfoState(QSqlDatabase &_db, int _nCompany, QString _strStatus);
|
|
||||||
void updateWebDBInfoComplete(QSqlDatabase _db, QString _mindate, QString _maxdate, QString _lastupdate, int _bodycount, int _replycount, int _nCompany);
|
|
||||||
int getAllCategoryNum(int _nService);
|
|
||||||
QString getCategoryName(int _nCategory) const;
|
|
||||||
int getBlogPageNum();
|
|
||||||
QMap<int, QString> getConsumerMaketer();
|
|
||||||
QStringList getConsumerCheckList();
|
|
||||||
QMap<int, QString> getConsumerCheckListUser();
|
|
||||||
bool isUpload();
|
|
||||||
QMap<int, QList<int> > getInfluencerGroup();
|
|
||||||
QString getInfluencerLimitFrom();
|
|
||||||
QString getInfluencerLimitTo();
|
|
||||||
//bool disableIndex(QSqlDatabase& db, QString _tableName, QStringList _strIndexNames, int _nMode = MODE);
|
|
||||||
//bool enableIndex(QSqlDatabase& db, QString _tableName, QStringList _strIndexNames, int _nMode = MODE);
|
|
||||||
//bool disableSettings(QSqlDatabase& db, int _nMode = MODE);
|
|
||||||
//bool enableSettings(QSqlDatabase& db, int _nMode = MODE);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif // SINITIALIZER
|
#endif // SINITIALIZER
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,216 +1,226 @@
|
|||||||
#ifndef SPOWERCAFE
|
#ifndef SPOWERCAFE
|
||||||
#define SPOWERCAFE
|
#define SPOWERCAFE
|
||||||
|
|
||||||
#include "sservice.h"
|
#include "sservice.h"
|
||||||
#include "sfilteralgorithm.h"
|
#include "sfilteralgorithm.h"
|
||||||
#include "sinitializer.h"
|
#include "sinitializer.h"
|
||||||
class QString;
|
class QString;
|
||||||
class QStringList;
|
class QStringList;
|
||||||
class SPowercafe:public SService
|
|
||||||
|
class SPowercafe : public SService
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
struct stReal
|
struct stReal
|
||||||
{
|
{
|
||||||
QSet<QString> m_setRealAllUrl;
|
QSet<QString> m_setRealAllUrl;
|
||||||
QSet<QString> m_setRealBodyUrl;
|
QSet<QString> m_setRealBodyUrl;
|
||||||
QMap<QString, int> m_mapRealReplyUniqueUrl; //multiple
|
QMap<QString, int> m_mapRealReplyUniqueUrl; //multiple
|
||||||
};
|
};
|
||||||
|
|
||||||
struct stPowercafe
|
struct stPowercafe
|
||||||
{
|
{
|
||||||
int category_num;
|
stPowercafe():category_num(0), community_num(0), bodycountall(0), replycountall(0), allcountall(0), usercountall(0), bodycountreal(0),
|
||||||
int community_num;
|
replycountreal(0), allcountreal(0), usercountreal(0), rank(0), platformname_num(0){}
|
||||||
QString community_id;
|
|
||||||
int bodycountall;
|
|
||||||
int replycountall;
|
|
||||||
int allcountall;
|
|
||||||
int usercountall;
|
|
||||||
int bodycountreal;
|
|
||||||
int replycountreal;
|
|
||||||
int allcountreal;
|
|
||||||
int usercountreal;
|
|
||||||
int rank;
|
|
||||||
|
|
||||||
QString community_title;
|
int category_num;
|
||||||
QString community_url;
|
int community_num;
|
||||||
int platformname_num;
|
QString community_id;
|
||||||
QString platformname_name;
|
int bodycountall;
|
||||||
|
int replycountall;
|
||||||
|
int allcountall;
|
||||||
|
int usercountall;
|
||||||
|
int bodycountreal;
|
||||||
|
int replycountreal;
|
||||||
|
int allcountreal;
|
||||||
|
int usercountreal;
|
||||||
|
int rank;
|
||||||
|
|
||||||
stPowercafe():category_num(0), community_num(0), bodycountall(0), replycountall(0), allcountall(0), usercountall(0), bodycountreal(0),
|
QString community_title;
|
||||||
replycountreal(0), allcountreal(0), usercountreal(0), rank(0), platformname_num(0){}
|
QString community_url;
|
||||||
};
|
int platformname_num;
|
||||||
|
QString platformname_name;
|
||||||
|
|
||||||
struct stStatsPowCafeRank
|
};
|
||||||
{
|
|
||||||
QString community_id;
|
|
||||||
QString community_title;
|
|
||||||
int articlecountall;
|
|
||||||
int articlecountreal;
|
|
||||||
int usercountreal;
|
|
||||||
QString subject;
|
|
||||||
int rank;
|
|
||||||
int company_num;
|
|
||||||
stStatsPowCafeRank(): articlecountall(0), articlecountreal(0), usercountreal(0), rank(0), company_num(0){}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stBodyPowercafeMap
|
struct stStatsPowCafeRank
|
||||||
{
|
{
|
||||||
int num;
|
stStatsPowCafeRank(): articlecountall(0), articlecountreal(0), usercountreal(0), rank(0), company_num(0){}
|
||||||
int body_num;
|
|
||||||
int community_num;
|
|
||||||
int category_num;
|
|
||||||
int realin;
|
|
||||||
QString date;
|
|
||||||
int platformname_num;
|
|
||||||
stBodyPowercafeMap():num(0), body_num(0), community_num(0), category_num(0), realin(0), platformname_num(0){}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stReplyPowercafeMap
|
QString community_id;
|
||||||
{
|
QString community_title;
|
||||||
int num;
|
int articlecountall;
|
||||||
int reply_num;
|
int articlecountreal;
|
||||||
int body_num;
|
int usercountreal;
|
||||||
int community_num;
|
QString subject;
|
||||||
int category_num;
|
int rank;
|
||||||
int realin;
|
int company_num;
|
||||||
QString body_date;
|
|
||||||
stReplyPowercafeMap():num(0), reply_num(0), body_num(0), community_num(0), category_num(0), realin(0) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
class STPowercafe
|
};
|
||||||
{
|
|
||||||
private:
|
|
||||||
SInitializer *m_pSInitializer;
|
|
||||||
QList<stPowercafe> m_listMap;
|
|
||||||
|
|
||||||
public:
|
struct stBodyPowercafeMap
|
||||||
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
{
|
||||||
void clear(){ m_listMap.clear(); }
|
stBodyPowercafeMap():num(0), body_num(0), community_num(0), category_num(0), realin(0), platformname_num(0){}
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
|
|
||||||
};
|
int num;
|
||||||
|
int body_num;
|
||||||
|
int community_num;
|
||||||
|
int category_num;
|
||||||
|
int realin;
|
||||||
|
QString date;
|
||||||
|
int platformname_num;
|
||||||
|
|
||||||
class SStatsPowCafeRank
|
};
|
||||||
{
|
|
||||||
private:
|
|
||||||
SInitializer *m_pSInitializer;
|
|
||||||
QList<stStatsPowCafeRank> m_listMap;
|
|
||||||
|
|
||||||
public:
|
struct stReplyPowercafeMap
|
||||||
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
{
|
||||||
void clear(){ m_listMap.clear(); }
|
stReplyPowercafeMap():num(0), reply_num(0), body_num(0), community_num(0), category_num(0), realin(0) {}
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
};
|
|
||||||
|
|
||||||
class SBodyPowercafeMap
|
int num;
|
||||||
{
|
int reply_num;
|
||||||
private:
|
int body_num;
|
||||||
SInitializer *m_pSInitializer;
|
int community_num;
|
||||||
QList<stBodyPowercafeMap> m_listMap;
|
int category_num;
|
||||||
|
int realin;
|
||||||
|
QString body_date;
|
||||||
|
|
||||||
public:
|
};
|
||||||
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
|
||||||
void clear(){ m_listMap.clear(); }
|
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
};
|
|
||||||
|
|
||||||
class SReplyPowercafeMap
|
class STPowercafe
|
||||||
{
|
{
|
||||||
private:
|
public:
|
||||||
SInitializer *m_pSInitializer;
|
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
||||||
QList<stReplyPowercafeMap> m_listMap;
|
void clear(){ m_listMap.clear(); }
|
||||||
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
|
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
|
||||||
public:
|
private:
|
||||||
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
SInitializer *m_pSInitializer;
|
||||||
void clear(){ m_listMap.clear(); }
|
QList<stPowercafe> m_listMap;
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stStatsJson
|
};
|
||||||
{
|
|
||||||
int company_num;
|
|
||||||
int servicenum;
|
|
||||||
QString title;
|
|
||||||
QString subtitle;
|
|
||||||
int platformname_num;
|
|
||||||
QString jdata;
|
|
||||||
int category_num;
|
|
||||||
stStatsJson():company_num(0), servicenum(2), platformname_num(1), category_num(0){}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
class SStatsPowCafeRank
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
||||||
|
void clear(){ m_listMap.clear(); }
|
||||||
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
|
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
|
||||||
class SStatsJson
|
private:
|
||||||
{
|
SInitializer *m_pSInitializer;
|
||||||
private:
|
QList<stStatsPowCafeRank> m_listMap;
|
||||||
SInitializer *m_pSInitializer;
|
};
|
||||||
QList<stStatsJson> m_listMap;
|
|
||||||
public:
|
|
||||||
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
|
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
|
|
||||||
void clear(){ m_listMap.clear(); }
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stPowercafeRank
|
class SBodyPowercafeMap
|
||||||
{
|
{
|
||||||
int count;
|
public:
|
||||||
QString url;
|
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
||||||
QString community;
|
void clear(){ m_listMap.clear(); }
|
||||||
stPowercafeRank(): count(0){}
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
};
|
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
|
||||||
struct isGreaterCountReal
|
private:
|
||||||
{
|
SInitializer *m_pSInitializer;
|
||||||
bool operator()(const stPowercafe& first, const stPowercafe& second)
|
QList<stBodyPowercafeMap> m_listMap;
|
||||||
{
|
|
||||||
return first.allcountreal > second.allcountreal;
|
|
||||||
}
|
|
||||||
bool operator()(const stStatsPowCafeRank& first, const stStatsPowCafeRank& second)
|
|
||||||
{
|
|
||||||
return first.articlecountreal > second.articlecountreal;
|
|
||||||
}
|
|
||||||
bool operator()(const stPowercafeRank& first, const stPowercafeRank& second)
|
|
||||||
{
|
|
||||||
return first.count > second.count;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct isGreaterCountAll
|
};
|
||||||
{
|
|
||||||
bool operator()(const stStatsPowCafeRank& first, const stStatsPowCafeRank& second)
|
|
||||||
{
|
|
||||||
return first.articlecountall > second.articlecountall;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
class SReplyPowercafeMap
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
||||||
|
void clear(){ m_listMap.clear(); }
|
||||||
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
|
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
QList<stReplyPowercafeMap> m_listMap;
|
||||||
|
};
|
||||||
|
|
||||||
private:
|
struct stStatsJson
|
||||||
SFilterAlgorithm m_SFilterAlgorithm;
|
{
|
||||||
QMap<int, stReal> m_mapCategory;
|
stStatsJson():company_num(0), servicenum(2), platformname_num(1), category_num(0){}
|
||||||
SBodyPowercafeMap m_SBodyPowercafeMap;
|
|
||||||
SReplyPowercafeMap m_SReplyPowercafeMap;
|
|
||||||
STPowercafe m_STPowercafe;
|
|
||||||
//SStatsPowCafeRank m_SStatsPowCafeRank;
|
|
||||||
SStatsJson m_SStatsJson;
|
|
||||||
|
|
||||||
|
int company_num;
|
||||||
|
int servicenum;
|
||||||
|
QString title;
|
||||||
|
QString subtitle;
|
||||||
|
int platformname_num;
|
||||||
|
QString jdata;
|
||||||
|
int category_num;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class SStatsJson
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
|
||||||
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
|
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
|
||||||
|
void clear(){ m_listMap.clear(); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
QList<stStatsJson> m_listMap;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct stPowercafeRank
|
||||||
|
{
|
||||||
|
stPowercafeRank(): count(0){}
|
||||||
|
|
||||||
|
int count;
|
||||||
|
QString url;
|
||||||
|
QString community;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct isGreaterCountReal
|
||||||
|
{
|
||||||
|
bool operator()(const stPowercafe& first, const stPowercafe& second)
|
||||||
|
{
|
||||||
|
return first.allcountreal > second.allcountreal;
|
||||||
|
}
|
||||||
|
bool operator()(const stStatsPowCafeRank& first, const stStatsPowCafeRank& second)
|
||||||
|
{
|
||||||
|
return first.articlecountreal > second.articlecountreal;
|
||||||
|
}
|
||||||
|
bool operator()(const stPowercafeRank& first, const stPowercafeRank& second)
|
||||||
|
{
|
||||||
|
return first.count > second.count;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct isGreaterCountAll
|
||||||
|
{
|
||||||
|
bool operator()(const stStatsPowCafeRank& first, const stStatsPowCafeRank& second)
|
||||||
|
{
|
||||||
|
return first.articlecountall > second.articlecountall;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void setInitiaizer(SInitializer &_initializer);
|
virtual void setInitiaizer(SInitializer &_initializer);
|
||||||
virtual bool uploadData(int _companyNum);
|
virtual bool uploadData(int _companyNum);
|
||||||
virtual bool changeTable(int _companyNum);
|
virtual bool changeTable(int _companyNum);
|
||||||
virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList<SInitializer::stFilter> &_listFilter);
|
virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList<SInitializer::stFilter> &_listFilter);
|
||||||
virtual bool makeOverallCategory(int _categoryNum);
|
virtual bool makeOverallCategory(int _categoryNum);
|
||||||
virtual bool makeTable(SDatagroup &_datagroup);
|
virtual bool makeTable(SDatagroup &_datagroup);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SFilterAlgorithm m_SFilterAlgorithm;
|
||||||
|
QMap<int, stReal> m_mapCategory;
|
||||||
|
SBodyPowercafeMap m_SBodyPowercafeMap;
|
||||||
|
SReplyPowercafeMap m_SReplyPowercafeMap;
|
||||||
|
STPowercafe m_STPowercafe;
|
||||||
|
SStatsJson m_SStatsJson;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SPOWERCAFE
|
#endif // SPOWERCAFE
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
#ifndef SSERVICE
|
#ifndef SSERVICE
|
||||||
#define SSERVICE
|
#define SSERVICE
|
||||||
|
|
||||||
#include "sinitializer.h"
|
#include "sinitializer.h"
|
||||||
#include "sdatagroup.h"
|
#include "sdatagroup.h"
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
class SService
|
class SService
|
||||||
{
|
{
|
||||||
protected:
|
|
||||||
SInitializer* m_pSInitializer;
|
|
||||||
public:
|
public:
|
||||||
virtual void setInitiaizer(SInitializer &_initializer) = 0;
|
virtual void setInitiaizer(SInitializer &_initializer) = 0;
|
||||||
virtual bool uploadData(int _companyNum) = 0;
|
virtual bool uploadData(int _companyNum) = 0;
|
||||||
@@ -15,7 +15,10 @@ public:
|
|||||||
virtual bool makeOverallCategory(int _categoryNum) = 0;
|
virtual bool makeOverallCategory(int _categoryNum) = 0;
|
||||||
virtual bool makeTable(SDatagroup &_datagroup) = 0;
|
virtual bool makeTable(SDatagroup &_datagroup) = 0;
|
||||||
QString convertJsonToStr(int _nSelect, const QString& _strJson);
|
QString convertJsonToStr(int _nSelect, const QString& _strJson);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
SInitializer* m_pSInitializer;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SSERVICE
|
#endif // SSERVICE
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,217 +1,231 @@
|
|||||||
#ifndef SSPAMMER
|
#ifndef SSPAMMER
|
||||||
#define SSPAMMER
|
#define SSPAMMER
|
||||||
|
|
||||||
#include "sservice.h"
|
#include "sservice.h"
|
||||||
#include "sfilteralgorithm.h"
|
#include "sfilteralgorithm.h"
|
||||||
#include "sinitializer.h"
|
#include "sinitializer.h"
|
||||||
class QString;
|
class QString;
|
||||||
class QStringList;
|
class QStringList;
|
||||||
class SSpammer:public SService
|
|
||||||
|
class SSpammer : public SService
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
struct stReal
|
struct stReal
|
||||||
{
|
{
|
||||||
QSet<QString> m_setRealAllUrl;
|
QSet<QString> m_setRealAllUrl;
|
||||||
QSet<QString> m_setRealBodyUrl;
|
QSet<QString> m_setRealBodyUrl;
|
||||||
QMap<QString, int> m_mapRealReplyUniqueUrl; //multiple
|
QMap<QString, int> m_mapRealReplyUniqueUrl; //multiple
|
||||||
};
|
};
|
||||||
|
|
||||||
struct stSpammer
|
struct stSpammer
|
||||||
{
|
{
|
||||||
int id_num;
|
stSpammer():id_num(0), category_num(0), nicknamecount(0), bodycount(0), replycount(0), rank(0), spammervalue(0.0), platformname_num(0){}
|
||||||
int category_num;
|
|
||||||
QString id_id;
|
|
||||||
int nicknamecount;
|
|
||||||
int bodycount;
|
|
||||||
int replycount;
|
|
||||||
double spammervalue;
|
|
||||||
int rank;
|
|
||||||
QString platformname_name;
|
|
||||||
int platformname_num;
|
|
||||||
stSpammer():id_num(0), category_num(0), nicknamecount(0), bodycount(0), replycount(0), rank(0), spammervalue(0.0), platformname_num(0){}
|
|
||||||
|
|
||||||
};
|
int id_num;
|
||||||
|
int category_num;
|
||||||
|
QString id_id;
|
||||||
|
int nicknamecount;
|
||||||
|
int bodycount;
|
||||||
|
int replycount;
|
||||||
|
double spammervalue;
|
||||||
|
int rank;
|
||||||
|
QString platformname_name;
|
||||||
|
int platformname_num;
|
||||||
|
|
||||||
struct stStatsSpaSpammerRank
|
};
|
||||||
{
|
|
||||||
int id_num;
|
|
||||||
QString id_id;
|
|
||||||
QString platformname_name;
|
|
||||||
int nicknamecount;
|
|
||||||
int bodycount;
|
|
||||||
int replycount;
|
|
||||||
double spammervalue;
|
|
||||||
int rank;
|
|
||||||
QString subject;
|
|
||||||
int company_num;
|
|
||||||
stStatsSpaSpammerRank():id_num(0),nicknamecount(0),bodycount(0),replycount(0),rank(0), spammervalue(0.0){}
|
|
||||||
|
|
||||||
};
|
struct stStatsSpaSpammerRank
|
||||||
|
{
|
||||||
|
stStatsSpaSpammerRank():id_num(0),nicknamecount(0),bodycount(0),replycount(0),rank(0), spammervalue(0.0){}
|
||||||
|
|
||||||
struct stBodySpammerMap
|
int id_num;
|
||||||
{
|
QString id_id;
|
||||||
int num;
|
QString platformname_name;
|
||||||
int body_num;
|
int nicknamecount;
|
||||||
int id_num;
|
int bodycount;
|
||||||
int category_num;
|
int replycount;
|
||||||
int realin;
|
double spammervalue;
|
||||||
QString date;
|
int rank;
|
||||||
int platformname_num;
|
QString subject;
|
||||||
stBodySpammerMap():num(0), body_num(0), id_num(0), category_num(0), realin(0), platformname_num(0){}
|
int company_num;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct stReplySpammerMap
|
struct stBodySpammerMap
|
||||||
{
|
{
|
||||||
int num;
|
stBodySpammerMap():num(0), body_num(0), id_num(0), category_num(0), realin(0), platformname_num(0){}
|
||||||
int reply_num;
|
|
||||||
int body_num;
|
|
||||||
int id_num;
|
|
||||||
int category_num;
|
|
||||||
QString body_date;
|
|
||||||
stReplySpammerMap():num(0), body_num(0), reply_num(0), id_num(0), category_num(0){}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stSpammerScore
|
int num;
|
||||||
{
|
int body_num;
|
||||||
int body;
|
int id_num;
|
||||||
int reply;
|
int category_num;
|
||||||
int id_num;
|
int realin;
|
||||||
QSet<QString> nickname;
|
QString date;
|
||||||
stSpammerScore():body(0),reply(0), id_num(0){}
|
int platformname_num;
|
||||||
};
|
|
||||||
|
|
||||||
struct stSpammerRank
|
};
|
||||||
{
|
|
||||||
double value;
|
|
||||||
int platformform_num;
|
|
||||||
QString id;
|
|
||||||
int id_num;
|
|
||||||
stSpammerRank():value(0.0), platformform_num(1), id_num(0){}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stBuzzy
|
struct stReplySpammerMap
|
||||||
{
|
{
|
||||||
int m_nCategory;
|
stReplySpammerMap():num(0), body_num(0), reply_num(0), id_num(0), category_num(0){}
|
||||||
QMap<QDate, int> m_mapBodyBuzz;
|
|
||||||
QMap<QDate, int> m_mapReplyBuzz;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stStatsJson
|
int num;
|
||||||
{
|
int reply_num;
|
||||||
int company_num;
|
int body_num;
|
||||||
int servicenum;
|
int id_num;
|
||||||
QString title;
|
int category_num;
|
||||||
QString subtitle;
|
QString body_date;
|
||||||
int platformname_num;
|
};
|
||||||
QString jdata;
|
|
||||||
int category_num;
|
|
||||||
stStatsJson():company_num(0), servicenum(3), platformname_num(1), category_num(0){}
|
|
||||||
};
|
|
||||||
|
|
||||||
class STSpammer
|
struct stSpammerScore
|
||||||
{
|
{
|
||||||
private:
|
stSpammerScore():body(0),reply(0), id_num(0){}
|
||||||
SInitializer *m_pSInitializer;
|
|
||||||
QList<stSpammer> m_listMap;
|
|
||||||
public:
|
|
||||||
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
|
||||||
void clear(){ m_listMap.clear(); }
|
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory, QSet<int>& setSpammer);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
|
|
||||||
};
|
int body;
|
||||||
|
int reply;
|
||||||
|
int id_num;
|
||||||
|
QSet<QString> nickname;
|
||||||
|
};
|
||||||
|
|
||||||
class SStatsSpaSpammerRank
|
struct stSpammerRank
|
||||||
{
|
{
|
||||||
private:
|
stSpammerRank():value(0.0), platformform_num(1), id_num(0){}
|
||||||
SInitializer *m_pSInitializer;
|
|
||||||
QList<stStatsSpaSpammerRank> m_listMap;
|
|
||||||
public:
|
|
||||||
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
|
||||||
void clear(){ m_listMap.clear(); }
|
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
};
|
|
||||||
|
|
||||||
class SBodySpammerMap
|
double value;
|
||||||
{
|
int platformform_num;
|
||||||
private:
|
QString id;
|
||||||
SInitializer *m_pSInitializer;
|
int id_num;
|
||||||
QList<stBodySpammerMap> m_listMap;
|
|
||||||
public:
|
|
||||||
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
|
||||||
void clear(){ m_listMap.clear(); }
|
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory ,QSet<int>& setSpammer);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
};
|
|
||||||
|
|
||||||
class SReplySpammerMap
|
};
|
||||||
{
|
|
||||||
private:
|
|
||||||
SInitializer *m_pSInitializer;
|
|
||||||
QList<stReplySpammerMap> m_listMap;
|
|
||||||
public:
|
|
||||||
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
|
||||||
void clear(){ m_listMap.clear(); }
|
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory, QSet<int>& setSpammer);
|
|
||||||
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct isGreaterSpammerValue
|
struct stBuzzy
|
||||||
{
|
{
|
||||||
bool operator()(const stSpammer& first, const stSpammer& second) const
|
int m_nCategory;
|
||||||
{
|
QMap<QDate, int> m_mapBodyBuzz;
|
||||||
return first.spammervalue > second.spammervalue;
|
QMap<QDate, int> m_mapReplyBuzz;
|
||||||
}
|
};
|
||||||
|
|
||||||
bool operator()(const stStatsSpaSpammerRank& first, const stStatsSpaSpammerRank& second) const
|
struct stStatsJson
|
||||||
{
|
{
|
||||||
return first.spammervalue > second.spammervalue;
|
stStatsJson() : company_num(0), servicenum(3), platformname_num(1), category_num(0){}
|
||||||
}
|
|
||||||
bool operator()(const stSpammerRank& first, const stSpammerRank& second) const
|
|
||||||
{
|
|
||||||
return first.value > second.value;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class SStatsJson
|
int company_num;
|
||||||
{
|
int servicenum;
|
||||||
private:
|
QString title;
|
||||||
SInitializer *m_pSInitializer;
|
QString subtitle;
|
||||||
QList<stStatsJson> m_listMap;
|
int platformname_num;
|
||||||
public:
|
QString jdata;
|
||||||
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
|
int category_num;
|
||||||
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
void makeTableBuzz(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
void makeTableRank(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
|
||||||
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
|
|
||||||
void clear(){ m_listMap.clear(); }
|
|
||||||
};
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class STSpammer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
||||||
|
void clear(){ m_listMap.clear(); }
|
||||||
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory, QSet<int>& setSpammer);
|
||||||
|
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
QList<stSpammer> m_listMap;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class SStatsSpaSpammerRank
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
||||||
|
void clear(){ m_listMap.clear(); }
|
||||||
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
|
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
QList<stStatsSpaSpammerRank> m_listMap;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class SBodySpammerMap
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
||||||
|
void clear(){ m_listMap.clear(); }
|
||||||
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory ,QSet<int>& setSpammer);
|
||||||
|
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
QList<stBodySpammerMap> m_listMap;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SReplySpammerMap
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
|
||||||
|
void clear(){ m_listMap.clear(); }
|
||||||
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory, QSet<int>& setSpammer);
|
||||||
|
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
QList<stReplySpammerMap> m_listMap;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct isGreaterSpammerValue
|
||||||
|
{
|
||||||
|
bool operator()(const stSpammer& first, const stSpammer& second) const
|
||||||
|
{
|
||||||
|
return first.spammervalue > second.spammervalue;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator()(const stStatsSpaSpammerRank& first, const stStatsSpaSpammerRank& second) const
|
||||||
|
{
|
||||||
|
return first.spammervalue > second.spammervalue;
|
||||||
|
}
|
||||||
|
bool operator()(const stSpammerRank& first, const stSpammerRank& second) const
|
||||||
|
{
|
||||||
|
return first.value > second.value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class SStatsJson
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
|
||||||
|
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
|
void makeTableBuzz(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
|
void makeTableRank(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
|
||||||
|
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
|
||||||
|
void clear(){ m_listMap.clear(); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
SInitializer *m_pSInitializer;
|
||||||
|
QList<stStatsJson> m_listMap;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
private:
|
|
||||||
SFilterAlgorithm m_SFilterAlgorithm;
|
|
||||||
QMap<int, stReal> m_mapCategory;
|
|
||||||
STSpammer m_STSpammer;
|
|
||||||
//SStatsSpaSpammerRank m_SStatsSpaSpammerRank;
|
|
||||||
SBodySpammerMap m_SBodySpammerMap;
|
|
||||||
SReplySpammerMap m_SReplySpammerMap;
|
|
||||||
QSet<int> m_setSpammer;
|
|
||||||
SStatsJson m_SStatsJson;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void setInitiaizer(SInitializer &_initializer);
|
virtual void setInitiaizer(SInitializer &_initializer);
|
||||||
virtual bool uploadData(int _companyNum);
|
virtual bool uploadData(int _companyNum);
|
||||||
virtual bool changeTable(int _companyNum);
|
virtual bool changeTable(int _companyNum);
|
||||||
virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList<SInitializer::stFilter> &_listFilter);
|
virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList<SInitializer::stFilter> &_listFilter);
|
||||||
virtual bool makeOverallCategory(int _categoryNum);
|
virtual bool makeOverallCategory(int _categoryNum);
|
||||||
virtual bool makeTable(SDatagroup &_datagroup);
|
virtual bool makeTable(SDatagroup &_datagroup);
|
||||||
|
|
||||||
|
private:
|
||||||
|
SFilterAlgorithm m_SFilterAlgorithm;
|
||||||
|
QMap<int, stReal> m_mapCategory;
|
||||||
|
STSpammer m_STSpammer;
|
||||||
|
SBodySpammerMap m_SBodySpammerMap;
|
||||||
|
SReplySpammerMap m_SReplySpammerMap;
|
||||||
|
QSet<int> m_setSpammer;
|
||||||
|
SStatsJson m_SStatsJson;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif // SSPAMMER
|
#endif // SSPAMMER
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,155 +0,0 @@
|
|||||||
#ifndef WIDGET_H
|
|
||||||
#define WIDGET_H
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QCalendarWidget>
|
|
||||||
#include <QDateEdit>
|
|
||||||
#include <QPushButton>
|
|
||||||
#include <QHBoxLayout>
|
|
||||||
#include <QComboBox>
|
|
||||||
#include <QLineEdit>
|
|
||||||
#include <QGroupBox>
|
|
||||||
#include <QListWidget>
|
|
||||||
#include <QTabWidget>
|
|
||||||
#include <QRadioButton>
|
|
||||||
#include <QButtonGroup>
|
|
||||||
#include <QTableWidget>
|
|
||||||
#include <QProgressBar>
|
|
||||||
#include <QMenuBar>
|
|
||||||
#include <QSqlDatabase>
|
|
||||||
#include "stable.h"
|
|
||||||
|
|
||||||
class Widget : public QWidget
|
|
||||||
{
|
|
||||||
enum E_COLUMN
|
|
||||||
{
|
|
||||||
E_COLUMN_DATABASE=0,
|
|
||||||
E_COLUMN_NAME,
|
|
||||||
E_COLUMN_DATE,
|
|
||||||
E_COLUMN_COUNT,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum E_LENGTH_COMP
|
|
||||||
{
|
|
||||||
E_LENGTH_COMP_GREATER = 0,
|
|
||||||
E_LENGTH_COMP_LESS,
|
|
||||||
E_LENGTH_COMP_EQUAL,
|
|
||||||
};
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
Widget(QWidget *parent = 0);
|
|
||||||
~Widget();
|
|
||||||
QTabWidget *GetTabWidget()
|
|
||||||
{
|
|
||||||
return m_ptwData;
|
|
||||||
}
|
|
||||||
int getDatePosition()
|
|
||||||
{
|
|
||||||
return m_nColumn;
|
|
||||||
}
|
|
||||||
int getTitlePosition()
|
|
||||||
{
|
|
||||||
return m_nTitle;
|
|
||||||
}
|
|
||||||
int getBodyPosition()
|
|
||||||
{
|
|
||||||
return m_nBody;
|
|
||||||
}
|
|
||||||
int getPlatformTitlePosition()
|
|
||||||
{
|
|
||||||
return m_nPlatformTitle;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
// Data
|
|
||||||
QListWidget *m_plwData;
|
|
||||||
// Date
|
|
||||||
QCalendarWidget *m_pcw;
|
|
||||||
QDateEdit *m_pdeStart;
|
|
||||||
QDateEdit *m_pdeEnd;
|
|
||||||
//QPushButton *m_ppbInsertCalc;
|
|
||||||
//QComboBox *m_pcbDateCatalog;
|
|
||||||
int m_nColumn;
|
|
||||||
int m_nTitle;
|
|
||||||
int m_nBody;
|
|
||||||
int m_nPlatformTitle;
|
|
||||||
// Keyword
|
|
||||||
QComboBox *m_pcbCatalog;
|
|
||||||
QComboBox *m_pcbKeyword;
|
|
||||||
QComboBox *m_pcbMethod;
|
|
||||||
QLineEdit *m_pleString;
|
|
||||||
//QPushButton *m_ppbInsertSearch;
|
|
||||||
// Length
|
|
||||||
QComboBox *m_pcbLengthCatalog;
|
|
||||||
QComboBox *m_pcbLengthComp;
|
|
||||||
QComboBox *m_pcbLengthInsDel;
|
|
||||||
QLineEdit *m_pleLength;
|
|
||||||
// Filter
|
|
||||||
QListWidget *m_plwFilterGroup;
|
|
||||||
QListWidget *m_plwFilter;
|
|
||||||
QLineEdit *m_pleFilterGroup;
|
|
||||||
QGroupBox *m_pgbFilter;
|
|
||||||
// Replace
|
|
||||||
QComboBox *m_pcbReplaceCatalog;
|
|
||||||
QComboBox *m_pcbReplaceFind;
|
|
||||||
QLineEdit *m_pleReplaceFind;
|
|
||||||
QLineEdit *m_pleReplace;
|
|
||||||
QComboBox *m_pcbReplace;
|
|
||||||
|
|
||||||
// Count
|
|
||||||
QComboBox *m_pcbCountCatalog;
|
|
||||||
|
|
||||||
//
|
|
||||||
QTabWidget *m_ptwData;
|
|
||||||
//
|
|
||||||
QProgressBar *m_pProgress;
|
|
||||||
// Column
|
|
||||||
QVector <QStringList> m_vecColumn;
|
|
||||||
private:
|
|
||||||
QMenuBar *setMenuWidget();
|
|
||||||
QGroupBox *setDataWidgets();
|
|
||||||
QGroupBox *setDateWidgets();
|
|
||||||
QGroupBox *setCountWidgets();
|
|
||||||
QGroupBox *setSearchWidgets();
|
|
||||||
QGroupBox *setLengthWidgets();
|
|
||||||
QGroupBox *setFilterWidgets();
|
|
||||||
QGroupBox *setReplaceWidgets();
|
|
||||||
|
|
||||||
QTableWidget *AddTable(QString _str);
|
|
||||||
void SetTableHead();
|
|
||||||
void InsertCopyRow(int _nRow,QTableWidget *_pCurrent,QTableWidget *_pNew);
|
|
||||||
void DataReload(QString _strTableName,int _nSelect);
|
|
||||||
void InsertFilter(int _nType,QString _strJson,int _nGroup);
|
|
||||||
void InsertTimeFilter(int _nTimeCategory ,QDate _dateStart ,QDate _dateEnd ,int _nGroup);
|
|
||||||
void InsertSearchFilter(int _nArticle,int _nCategory,int _nMethod,int _nKeyword, QString _str,int _nGroup);
|
|
||||||
void InsertLengthFilter(int _nArticle,int _nCategory,int _nComp,int _nInsDel,QString _str,int _nGroup);
|
|
||||||
void InsertReplaceFilter(int _nArticle,int _nCategory,int _nFind,QString _strFind,QString _strReplace,int _nGroup);
|
|
||||||
void RefreshFilter(int _nGroup);
|
|
||||||
|
|
||||||
bool ReloadColumn();
|
|
||||||
QString GetArticleType(int _nSelect);
|
|
||||||
public slots:
|
|
||||||
void CloseTab(int index);
|
|
||||||
void DoubleClickTab(int index);
|
|
||||||
void SearchDate();
|
|
||||||
void CountSave();
|
|
||||||
void SearchKeyword();
|
|
||||||
void DataGroupRefresh();
|
|
||||||
void DataGroupItemChanged ( QListWidgetItem * item );
|
|
||||||
void FilterGroupInsert();
|
|
||||||
void FilterGroupDelete();
|
|
||||||
void FilterGroupModify();
|
|
||||||
void FilterGroupRefresh();
|
|
||||||
void FilterGroupCopyPaste();
|
|
||||||
void currentGroupItemChanged(QListWidgetItem *_pCurrent, QListWidgetItem *_pPrev=0);
|
|
||||||
void FilterDelete();
|
|
||||||
void currentFilterItemChanged(QListWidgetItem *_pCurrent, QListWidgetItem *_pPrev=0);
|
|
||||||
void SearchLengthInsert();
|
|
||||||
void SearchReplaceInsert();
|
|
||||||
void FileNew();
|
|
||||||
void FileImport();
|
|
||||||
void FileExport();
|
|
||||||
void FileExit();
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // WIDGET_H
|
|
||||||
@@ -14,7 +14,7 @@ SET FILTER_PATH=%BUILD_PATH_PREFIX%Filter%BUILD_PATH_POSTFIX%\%CONFIGURE%
|
|||||||
SET FILTER_PROCESS_PATH=%BUILD_PATH_PREFIX%FilterProcess%BUILD_PATH_POSTFIX%\%CONFIGURE%
|
SET FILTER_PROCESS_PATH=%BUILD_PATH_PREFIX%FilterProcess%BUILD_PATH_POSTFIX%\%CONFIGURE%
|
||||||
|
|
||||||
SET QT_PATH=C:\Qt\Qt5.4.2\5.4\msvc2013_64\bin
|
SET QT_PATH=C:\Qt\Qt5.4.2\5.4\msvc2013_64\bin
|
||||||
SET MYSQL_PATH=%CUR_PATH%\..\lib\libmysql\64bit
|
SET MYSQL_PATH=C:\Qt\libmysql\64bit
|
||||||
|
|
||||||
SET PYTHONCRAWLER_PATH=%CUR_PATH%\WebBasedCrawler
|
SET PYTHONCRAWLER_PATH=%CUR_PATH%\WebBasedCrawler
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user