카테고리 중간 수정버전

git-svn-id: svn://192.168.0.12/source@261 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
admin
2016-05-11 08:47:24 +00:00
parent d1adf4e8b4
commit bd8a037056
15 changed files with 712 additions and 226 deletions

View File

@@ -60,8 +60,8 @@ bool SConsumer::makeCategory(SDatagroup &_datagroup, int _nCategory, const QList
} }
} }
stReal streal; stReal streal;
qDebug() << "filtered size: " << vecData[SInitializer::E_ARTICLE_BODY].size(); m_pSInitializer->insertLog(QString("CategoryNum:") + QString::number(_nCategory) + ",(" +
qDebug() << "filtered size: " << vecData[SInitializer::E_ARTICLE_REPLY].size(); QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + '/' + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ")" + "(Body/Reply)" );
const int *anColumn = m_pSInitializer->getColumnIntArray(); const int *anColumn = m_pSInitializer->getColumnIntArray();
if (bFiltered[SInitializer::E_ARTICLE_BODY]) if (bFiltered[SInitializer::E_ARTICLE_BODY])
{ {
@@ -135,11 +135,14 @@ bool SConsumer::makeOverallCategory(int _nCategory)
bool SConsumer::makeTable(SDatagroup &_datagroup) bool SConsumer::makeTable(SDatagroup &_datagroup)
{ {
m_pSInitializer->insertLog("Make Consumer Tables"); if (m_mapCategory.size() > 1)
m_SBodyConsumerMap.makeTable(_datagroup, m_mapCategory); {
m_pSInitializer->insertLog("Make Body Tables"); m_pSInitializer->insertLog("Make Consumer Tables");
m_SStatsConUserBuzzybyday.makeTable(_datagroup, m_mapCategory); m_SBodyConsumerMap.makeTable(_datagroup, m_mapCategory);
m_pSInitializer->insertLog("Make Reply Tables"); m_pSInitializer->insertLog("Make Body Tables");
m_SStatsConUserBuzzybyday.makeTable(_datagroup, m_mapCategory);
m_pSInitializer->insertLog("Make Reply Tables");
}
return true; return true;
} }
@@ -159,6 +162,14 @@ void SConsumer::SBodyConsumerMap::makeTable(SDatagroup &_datagroup, const QMap<i
stbody.body_num = _datagroup.getstBodyNum(strUrl); stbody.body_num = _datagroup.getstBodyNum(strUrl);
stbody.category_num = iterPos.key(); stbody.category_num = iterPos.key();
stbody.realin |= REAL_BODY; stbody.realin |= REAL_BODY;
stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num;
stbody.platformform_num = _datagroup.getstBody(strUrl)->platformform_num;
stbody.body_date = _datagroup.getstBody(strUrl)->date;
stbody.body_replycount = _datagroup.getstBody(strUrl)->replycount;
stbody.body_view = _datagroup.getstBody(strUrl)->view;
stbody.body_id_num = _datagroup.getstBody(strUrl)->id_num;
if (streal.m_mapRealReplyUniqueUrl.contains(strUrl)) if (streal.m_mapRealReplyUniqueUrl.contains(strUrl))
{ {
stbody.realin |= REAL_REPLY; stbody.realin |= REAL_REPLY;
@@ -179,6 +190,13 @@ void SConsumer::SBodyConsumerMap::makeTable(SDatagroup &_datagroup, const QMap<i
stbody.category_num = iterPos.key(); stbody.category_num = iterPos.key();
stbody.realin |= REAL_REPLY; stbody.realin |= REAL_REPLY;
stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num;
stbody.platformform_num = _datagroup.getstBody(strUrl)->platformform_num;
stbody.body_date = _datagroup.getstBody(strUrl)->date;
stbody.body_replycount = _datagroup.getstBody(strUrl)->replycount;
stbody.body_view = _datagroup.getstBody(strUrl)->view;
stbody.body_id_num = _datagroup.getstBody(strUrl)->id_num;
foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl)) foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl))
{ {
_datagroup.addRealReplyCategory(strUrl, order, iterPos.key()); _datagroup.addRealReplyCategory(strUrl, order, iterPos.key());
@@ -252,7 +270,7 @@ bool SConsumer::SBodyConsumerMap::uploadData(QSqlDatabase &_db, const int &_nCom
} }
strQuery = QString("insert into body_consumer_map_" + QString::number(_nCompany) + strQuery = QString("insert into body_consumer_map_" + QString::number(_nCompany) +
"_update (num,body_num,category_num,realin) VALUES ("); "_update (num,body_num,category_num,realin,platformname_num,platformform_num,body_date,body_replycount,body_view,body_id_num) VALUES (");
query.clear(); query.clear();
@@ -262,7 +280,13 @@ bool SConsumer::SBodyConsumerMap::uploadData(QSqlDatabase &_db, const int &_nCom
str += QString::number(stbody.num) + ","; str += QString::number(stbody.num) + ",";
str += QString::number(stbody.body_num) + ","; str += QString::number(stbody.body_num) + ",";
str += QString::number(stbody.category_num) + ","; str += QString::number(stbody.category_num) + ",";
str += QString::number(stbody.realin) + ")"; str += QString::number(stbody.realin) + ",";
str += QString::number(stbody.platformname_num) + ",";
str += QString::number(stbody.platformform_num) + ",";
str += "'" + stbody.body_date + "',";
str += QString::number(stbody.body_replycount) + ",";
str += QString::number(stbody.body_view) + ",";
str += QString::number(stbody.body_id_num) + ")";
if (query.exec(str.toUtf8()) == false) if (query.exec(str.toUtf8()) == false)
{ {
@@ -285,7 +309,7 @@ void SConsumer::SReplyConsumerMap::makeTable(SDatagroup &_datagroup, const QMap<
{ {
if (streal.m_setRealAllUrl.contains(strUrl)) if (streal.m_setRealAllUrl.contains(strUrl))
{ {
if (_datagroup.getstBody(strUrl)->reply_count == 0) if (_datagroup.getstBody(strUrl)->replycount == 0)
continue; continue;
const QMap<int, SDatagroup::stReply>* mapReply = _datagroup.getstReply(strUrl); const QMap<int, SDatagroup::stReply>* mapReply = _datagroup.getstReply(strUrl);
@@ -303,6 +327,7 @@ void SConsumer::SReplyConsumerMap::makeTable(SDatagroup &_datagroup, const QMap<
void SConsumer::SStatsConUserBuzzybyday::makeTable(SDatagroup &_datagroup, const QMap<int, stReal> &_mapCategory) void SConsumer::SStatsConUserBuzzybyday::makeTable(SDatagroup &_datagroup, const QMap<int, stReal> &_mapCategory)
{ {
/*
const QMap<QString, QStringList>* mapBody = _datagroup.getmapBody(); const QMap<QString, QStringList>* mapBody = _datagroup.getmapBody();
const QMap<QString, QMap<int, QStringList> >* mapReply = _datagroup.getmapReply(); const QMap<QString, QMap<int, QStringList> >* mapReply = _datagroup.getmapReply();
const int* anColumn = m_pSInitializer->getColumnIntArray(); const int* anColumn = m_pSInitializer->getColumnIntArray();
@@ -323,7 +348,8 @@ void SConsumer::SStatsConUserBuzzybyday::makeTable(SDatagroup &_datagroup, const
QDate date = QDateTime::fromString((*mapBody)[strUrl.trimmed()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); QDate date = QDateTime::fromString((*mapBody)[strUrl.trimmed()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date();
//if (date.isNull()) //if (date.isNull())
// date = QDateTime::fromString((*mapBody)[strUrl.trimmed()][anColumn[SInitializer::E_DATA_article_date]].trimmed(), "yyyy-MM-dd HH:mm:ss").date(); // date = QDateTime::fromString((*mapBody)[strUrl.trimmed()][anColumn[SInitializer::E_DATA_article_date]].trimmed(), "yyyy-MM-dd HH:mm:ss").date();
if (date.year() == 1990)
continue;
dateStart = (date < dateStart ) ? date : dateStart; dateStart = (date < dateStart ) ? date : dateStart;
dateEnd = (date > dateEnd ) ? date : dateEnd; dateEnd = (date > dateEnd ) ? date : dateEnd;
@@ -337,6 +363,8 @@ void SConsumer::SStatsConUserBuzzybyday::makeTable(SDatagroup &_datagroup, const
{ {
const QStringList &slReply = (*mapReply)[iterPos1.key()][iterPos1.value()]; const QStringList &slReply = (*mapReply)[iterPos1.key()][iterPos1.value()];
QDate date = QDateTime::fromString(slReply[anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); QDate date = QDateTime::fromString(slReply[anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date();
if (date.year() == 1990)
continue;
dateStart = (date < dateStart ) ? date : dateStart; dateStart = (date < dateStart ) ? date : dateStart;
dateEnd = (date > dateEnd ) ? date : dateEnd; dateEnd = (date > dateEnd ) ? date : dateEnd;
if (stbuzzy.m_mapReplyBuzz.contains(date)) if (stbuzzy.m_mapReplyBuzz.contains(date))
@@ -356,6 +384,9 @@ void SConsumer::SStatsConUserBuzzybyday::makeTable(SDatagroup &_datagroup, const
for (QMap<QString, QStringList>::const_iterator iterPos = mapBody->constBegin(); iterPos != mapBody->constEnd(); iterPos++) for (QMap<QString, QStringList>::const_iterator iterPos = mapBody->constBegin(); iterPos != mapBody->constEnd(); iterPos++)
{ {
QDate date = QDateTime::fromString(iterPos.value()[anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); QDate date = QDateTime::fromString(iterPos.value()[anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date();
if (date.year() == 1990)
continue;
if (stbuzzy.m_mapBodyBuzz.contains(date)) if (stbuzzy.m_mapBodyBuzz.contains(date))
stbuzzy.m_mapBodyBuzz[date]++; stbuzzy.m_mapBodyBuzz[date]++;
else else
@@ -367,6 +398,9 @@ void SConsumer::SStatsConUserBuzzybyday::makeTable(SDatagroup &_datagroup, const
for (QMap<int, QStringList>::const_iterator iterPos1 = iterPos.value().constBegin(); iterPos1 != iterPos.value().constEnd(); iterPos1++) for (QMap<int, QStringList>::const_iterator iterPos1 = iterPos.value().constBegin(); iterPos1 != iterPos.value().constEnd(); iterPos1++)
{ {
QDate date = QDateTime::fromString(iterPos1.value()[anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); QDate date = QDateTime::fromString(iterPos1.value()[anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date();
if (date.year() == 1990)
continue;
if (stbuzzy.m_mapReplyBuzz.contains(date)) if (stbuzzy.m_mapReplyBuzz.contains(date))
stbuzzy.m_mapReplyBuzz[date]++; stbuzzy.m_mapReplyBuzz[date]++;
else else
@@ -406,6 +440,7 @@ void SConsumer::SStatsConUserBuzzybyday::makeTable(SDatagroup &_datagroup, const
m_listMap.append(streplybuzz); m_listMap.append(streplybuzz);
} }
} }
*/
} }
/* /*

View File

@@ -18,7 +18,13 @@ public:
int body_num; int body_num;
int category_num; int category_num;
int realin; int realin;
stBodyConsumerMap():num(0), body_num(0), category_num(0), realin(0){} int platformname_num;
int platformform_num;
QString body_date;
int body_replycount;
int body_view;
int body_id_num;
stBodyConsumerMap():num(0), body_num(0), category_num(0), realin(0), platformname_num(0), platformform_num(0), body_replycount(0), body_view(0), body_id_num(0){}
}; };
struct stReplyConsumerMap struct stReplyConsumerMap
{ {

View File

@@ -7,6 +7,7 @@
#include <QDebug> #include <QDebug>
#include <QRegExp> #include <QRegExp>
#include <QTextCodec> #include <QTextCodec>
#include <QtAlgorithms>
#include "sdatagroup.h" #include "sdatagroup.h"
#include "sinfluencer.h" #include "sinfluencer.h"
#include "sinitializer.h" #include "sinitializer.h"
@@ -84,6 +85,7 @@ bool SDatagroup::loadData(const int& _nDatagroupNumber)
for (int j = 0; j < m_pSInitializer->getColumnStringList().size(); j++) for (int j = 0; j < m_pSInitializer->getColumnStringList().size(); j++)
strList.append(" " + query.value(j).toString() + " "); strList.append(" " + query.value(j).toString() + " ");
/*
if(strList[anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "post" || if(strList[anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "post" ||
strList[anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "story" || strList[anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "story" ||
strList[anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "channel") strList[anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "channel")
@@ -91,7 +93,7 @@ bool SDatagroup::loadData(const int& _nDatagroupNumber)
if(strList[anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "group") if(strList[anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "group")
strList[anColumn[SInitializer::E_DATA_platform_form]] = " community "; strList[anColumn[SInitializer::E_DATA_platform_form]] = " community ";
*/
switch(i) switch(i)
{ {
case E_ARTICLE_BODY: case E_ARTICLE_BODY:
@@ -256,7 +258,7 @@ bool SDatagroup::uploadData(const int &_nCompany)
bool SDatagroup::makeTable() bool SDatagroup::makeTable()
{ {
QRegExp rxHttp("http[s]?://"); QRegExp rxHttp("http[s]?://");
m_pSInitializer->insertLog("Start makeTable"); m_pSInitializer->insertLog("Start Datagroup makeTable");
m_pSInitializer->insertLog("#ofALL/#ofFiltered :" + QString::number(m_mapBody.size()) + "/" + QString::number(m_setFilteredUrl.size()) ); m_pSInitializer->insertLog("#ofALL/#ofFiltered :" + QString::number(m_mapBody.size()) + "/" + QString::number(m_setFilteredUrl.size()) );
const int* anColumn = m_pSInitializer->getColumnIntArray(); const int* anColumn = m_pSInitializer->getColumnIntArray();
int nBody = 0; int nBody = 0;
@@ -360,7 +362,7 @@ bool SDatagroup::makeTable()
stbody.num = nBody++; stbody.num = nBody++;
stbody.data = &(strListBody[anColumn[SInitializer::E_DATA_article_data]]); stbody.data = &(strListBody[anColumn[SInitializer::E_DATA_article_data]]);
stbody.title = &(strListBody[anColumn[SInitializer::E_DATA_article_title]]); stbody.title = &(strListBody[anColumn[SInitializer::E_DATA_article_title]]);
stbody.reply_count = mapReply.size(); stbody.replycount = mapReply.size();
stbody.id_id = strListBody[anColumn[SInitializer::E_DATA_article_id]].trimmed(); stbody.id_id = strListBody[anColumn[SInitializer::E_DATA_article_id]].trimmed();
stbody.date = strListBody[anColumn[SInitializer::E_DATA_article_date]].trimmed(); stbody.date = strListBody[anColumn[SInitializer::E_DATA_article_date]].trimmed();
stbody.lastupdate = lastupdate; stbody.lastupdate = lastupdate;
@@ -372,8 +374,18 @@ bool SDatagroup::makeTable()
stbody.id_num = m_SId.get(m_SId.getIdKey(strListBody))->num; stbody.id_num = m_SId.get(m_SId.getIdKey(strListBody))->num;
stbody.community_num = m_SCommunity.get(m_SCommunity.getCommunityKey(strListBody))->num; stbody.community_num = m_SCommunity.get(m_SCommunity.getCommunityKey(strListBody))->num;
stbody.nickname_num = m_SNickname.get(strListBody[anColumn[SInitializer::E_DATA_article_nickname]].trimmed())->num; stbody.nickname_num = m_SNickname.get(strListBody[anColumn[SInitializer::E_DATA_article_nickname]].trimmed())->num;
stbody.reply_startnum = ((mapReply.size() > 0) ? nReply : -1); stbody.replystartnum = ((mapReply.size() > 0) ? nReply : -1);
stbody.reply_endnum = ((mapReply.size() > 0) ? nReply + mapReply.size() - 1 : -1); stbody.replyendnum = ((mapReply.size() > 0) ? nReply + mapReply.size() - 1 : -1);
stbody.community_title = m_SCommunity.get(m_SCommunity.getCommunityKey(strListBody))->title;
stbody.community_url = m_SCommunity.get(m_SCommunity.getCommunityKey(strListBody))->url;
stbody.community_id = m_SCommunity.get(m_SCommunity.getCommunityKey(strListBody))->id;
stbody.community_exid = m_SCommunity.get(m_SCommunity.getCommunityKey(strListBody))->exid;
stbody.platformform_form = strListBody[anColumn[SInitializer::E_DATA_platform_form]].trimmed();
stbody.platformname_name = strListBody[anColumn[SInitializer::E_DATA_platform_name]].trimmed();
stbody.nickname_nickname = m_SNickname.get(strListBody[anColumn[SInitializer::E_DATA_article_nickname]].trimmed())->nickname;
stbody.nickname_exnickname = UniCodeToEucKr(m_SNickname.get(strListBody[anColumn[SInitializer::E_DATA_article_nickname]].trimmed())->nickname);
m_SBody.put(strUrl, stbody); m_SBody.put(strUrl, stbody);
m_stDate.m_strMaxdate = (( m_stDate.m_strMaxdate > stbody.date ) ? m_stDate.m_strMaxdate : stbody.date ); m_stDate.m_strMaxdate = (( m_stDate.m_strMaxdate > stbody.date ) ? m_stDate.m_strMaxdate : stbody.date );
@@ -395,6 +407,15 @@ bool SDatagroup::makeTable()
streply.data = &(strListReply[anColumn[SInitializer::E_DATA_article_data]]); streply.data = &(strListReply[anColumn[SInitializer::E_DATA_article_data]]);
streply.date = strListReply[anColumn[SInitializer::E_DATA_article_date]].trimmed(); streply.date = strListReply[anColumn[SInitializer::E_DATA_article_date]].trimmed();
streply.parent = strListReply[anColumn[SInitializer::E_DATA_article_parent]].trimmed(); streply.parent = strListReply[anColumn[SInitializer::E_DATA_article_parent]].trimmed();
streply.nickname_nickname = m_SNickname.get(strListReply[anColumn[SInitializer::E_DATA_article_nickname]].trimmed())->nickname;
streply.nickname_exnickname = m_SNickname.get(strListReply[anColumn[SInitializer::E_DATA_article_nickname]].trimmed())->nickname;
streply.platformform_num = m_pSInitializer->getPlatformForm(strListReply[anColumn[SInitializer::E_DATA_platform_form]].trimmed());
streply.platformform_form = strListReply[anColumn[SInitializer::E_DATA_platform_form]].trimmed();
streply.platformname_num = m_pSInitializer->getPlatformName(strListReply[anColumn[SInitializer::E_DATA_platform_name]].trimmed());
streply.platformname_name = strListReply[anColumn[SInitializer::E_DATA_platform_name]].trimmed();
streply.body_date = m_SBody.get(strUrl)->date;
if (streply.parent.isEmpty()) if (streply.parent.isEmpty())
streply.parent = " "; streply.parent = " ";
if (m_SId.contains(m_SId.getIdKey(strListReply)) && m_SNickname.contains(strListReply[anColumn[SInitializer::E_DATA_article_nickname]].trimmed())) if (m_SId.contains(m_SId.getIdKey(strListReply)) && m_SNickname.contains(strListReply[anColumn[SInitializer::E_DATA_article_nickname]].trimmed()))
@@ -556,7 +577,22 @@ void SDatagroup::SBody::clear()
QString SDatagroup::SBody::vecToString(const QVector<int>& _realbycategorynum) QString SDatagroup::SBody::vecToString(const QVector<int>& _realbycategorynum)
{ {
QString str = ""; QString str = "";
foreach (int real, _realbycategorynum) QList<int> ilist = _realbycategorynum.toList();
qSort(ilist.begin(), ilist.end(), qLess<int>());
QList<int>::iterator it = std::unique(ilist.begin(), ilist.end());
int totalsize = std::distance(ilist.begin(), it);
for (int i = 0; i < totalsize; i++)
str += ((QString::number(ilist.at(i))) + " ");
return str.trimmed();
}
QString SDatagroup::SBody::vecToString(const QSet<int>& _realbycategorynum)
{
QString str = "";
QList<int> nlist = _realbycategorynum.toList();
qSort(nlist.begin(), nlist.end(), qLess<int>());
foreach (int real, nlist)
str += (QString::number(real) + " "); str += (QString::number(real) + " ");
return str.trimmed(); return str.trimmed();
} }
@@ -625,7 +661,8 @@ bool SDatagroup::SBody::uploadData(QSqlDatabase &_db, const int& _nCompany, cons
} }
strQuery = "insert into body_" + QString::number(_nCompany) + strQuery = "insert into body_" + QString::number(_nCompany) +
"_update(num,id_num,nickname_num,community_num,id_id,platformname_num,platformform_num, title, data, url, view, date, reply_startnum, reply_endnum, reply_count, lastupdate, realbycategorynum) VALUES("; "_update(num,id_num,nickname_num,community_num,id_id,platformname_num,platformform_num, title, data, url, view, date, replystartnum, replyendnum, replycount, lastupdate, realbycategorynum,"
"community_title, community_url, community_id, community_exid, platformname_name, platformform_form, nickname_nickname, nickname_exnickname) VALUES(";
foreach (const QString& url, _order) foreach (const QString& url, _order)
{ {
@@ -639,17 +676,28 @@ bool SDatagroup::SBody::uploadData(QSqlDatabase &_db, const int& _nCompany, cons
str += QString::number(body.community_num) + ","; str += QString::number(body.community_num) + ",";
str += "'" + sqlString(body.id_id) + "',"; str += "'" + sqlString(body.id_id) + "',";
str += QString::number(body.platformname_num) + ","; str += QString::number(body.platformname_num) + ",";
str += QString::number(body.platformname_num) + ","; str += QString::number(body.platformform_num) + ",";
str += "'" + sqlString(*(body.title)).replace(QChar(160),"") + "',"; str += "'" + sqlString(*(body.title)).replace(QChar(160),"") + "',";
str += "'" + sqlString(*(body.data)).replace(QRegExp("\n{3,}"),"\n\n").replace(QChar(160),"").left(65535) + "',"; str += "'" + sqlString((*(body.data)).replace(QRegExp("\n{3,}"),"\n\n").replace(QChar(160),"").left(60000)) + "',";
str += "'" + body.url + "',"; str += "'" + body.url + "',";
str += QString::number(body.view) + ","; str += QString::number(body.view) + ",";
str += "'" + body.date + "',"; str += "'" + body.date + "',";
str += QString::number(body.reply_startnum) + ","; str += QString::number(body.replystartnum) + ",";
str += QString::number(body.reply_endnum) + ","; str += QString::number(body.replyendnum) + ",";
str += QString::number(body.reply_count) + ","; str += QString::number(body.replycount) + ",";
str += "'" + body.lastupdate + "',"; str += "'" + body.lastupdate + "',";
str += "'" + vecToString(body.realbycategorynum) + "')"; str += "'" + vecToString(body.realbycategorynum) + "',";
str += "'" + sqlString(body.community_title) + "',";
str += "'" + body.community_url + "',";
str += "'" + body.community_id + "',";
str += "'" + sqlString(body.community_exid) + "',";
str += "'" + body.platformname_name + "',";
str += "'" + body.platformform_form + "',";
str += "'" + sqlString(body.nickname_nickname) + "',";
str += "'" + sqlString(body.nickname_exnickname) + "')";
if (!query.exec(str.toUtf8())) if (!query.exec(str.toUtf8()))
{ {
m_pSInitializer->insertLog(query.lastQuery()); m_pSInitializer->insertLog(query.lastQuery());
@@ -805,7 +853,9 @@ bool SDatagroup::SReply::uploadData(QSqlDatabase &_db, const int &_nCompany, QSt
return false; return false;
} }
strQuery = "insert into reply_" + QString::number(_nCompany) + "_update (num,id_num,nickname_num,community_num,id_id,parent,data,date,body_num,realbycategorynum) VALUES ("; strQuery = "insert into reply_" + QString::number(_nCompany) +
"_update (num,id_num,nickname_num,community_num,id_id,parent,data,date,body_num,realbycategorynum,"
"nickname_nickname,nickname_exnickname,platformname_num,platformname_name,platformform_num,platformform_form,body_date) VALUES (";
foreach (const QString& url, _order) foreach (const QString& url, _order)
{ {
@@ -820,10 +870,18 @@ bool SDatagroup::SReply::uploadData(QSqlDatabase &_db, const int &_nCompany, QSt
str += QString::number(reply.community_num) + ","; str += QString::number(reply.community_num) + ",";
str += "'" + sqlString(reply.id_id) + "',"; str += "'" + sqlString(reply.id_id) + "',";
str += "'" + sqlString(reply.parent) + "',"; str += "'" + sqlString(reply.parent) + "',";
str += "'" + sqlString(*(reply.data)).replace(QRegExp("\n{3,}"),"\n\n").replace(QChar(160),"") + "',"; str += "'" + sqlString((*(reply.data)).replace(QRegExp("\n{3,}"),"\n\n").replace(QChar(160),"").left(60000)) + "',";
str += "'" + reply.date + "',"; str += "'" + reply.date + "',";
str += QString::number(reply.body_num) + ","; str += QString::number(reply.body_num) + ",";
str += "'" + vecToString(reply.realbycategorynum) + "')"; str += "'" + vecToString(reply.realbycategorynum) + "',";
str += "'" + sqlString(reply.nickname_nickname) + "',";
str += "'" + sqlString(reply.nickname_exnickname) + "',";
str += QString::number(reply.platformname_num) + ",";
str += "'" + reply.platformname_name + "',";
str += QString::number(reply.platformform_num) + ",";
str += "'" + reply.platformform_form + "',";
str += "'" + reply.body_date + "')";
if (!query.exec(str.toUtf8())) if (!query.exec(str.toUtf8()))
{ {
m_pSInitializer->insertLog(query.lastQuery()); m_pSInitializer->insertLog(query.lastQuery());
@@ -840,10 +898,22 @@ bool SDatagroup::SReply::uploadData(QSqlDatabase &_db, const int &_nCompany, QSt
QString SDatagroup::SReply::vecToString(const QVector<int>& _realbycategorynum) QString SDatagroup::SReply::vecToString(const QVector<int>& _realbycategorynum)
{ {
/*
QString str = ""; QString str = "";
foreach (int real, _realbycategorynum) foreach (int real, _realbycategorynum)
str += (QString::number(real) + " "); str += (QString::number(real) + " ");
return str.trimmed(); return str.trimmed();
*/
QString str = "";
QList<int> ilist = _realbycategorynum.toList();
qSort(ilist.begin(), ilist.end(), qLess<int>());
QList<int>::iterator it = std::unique(ilist.begin(), ilist.end());
int totalsize = std::distance(ilist.begin(), it);
for (int i = 0; i < totalsize; i++)
str += ((QString::number(ilist.at(i))) + " ");
return str.trimmed();
} }
@@ -1092,7 +1162,7 @@ bool SDatagroup::SNickname::uploadData(QSqlDatabase &_db, const int &_nCompany)
} }
QString SDatagroup::SNickname::UniCodeToEucKr(const QString& _strData) QString UniCodeToEucKr(const QString& _strData)
{ {
{ {
QString strOut; QString strOut;
@@ -1128,11 +1198,29 @@ QString SDatagroup::SNickname::UniCodeToEucKr(const QString& _strData)
QString SDatagroup::SCommunity::getCommunityKey(const QStringList &_strList) QString SDatagroup::SCommunity::getCommunityKey(const QStringList &_strList)
{ {
QString str; QString str;
str.append(_strList[m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_platform_form]].trimmed()); if (_strList[m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_platform_name]].trimmed() == "naver" || _strList[m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_platform_name]].trimmed() == "daum")
str.append("."); {
str.append(_strList[m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_platform_name]].trimmed()); str.append(_strList[m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_platform_form]].trimmed());
str.append(".com/"); str.append(".");
str.append(_strList[m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_platform_id]].trimmed()); str.append(_strList[m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_platform_name]].trimmed());
str.append(".com/");
str.append(_strList[m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_platform_id]].trimmed());
}
else if (_strList[m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_platform_name]].trimmed() == "instagram")
{
str.append("instagram.com/");
str.append(_strList[m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_platform_id]].trimmed());
}
else if (_strList[m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_platform_name]].trimmed() == "kakaostory")
{
str.append("story.kakao.com/");
str.append(_strList[m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_platform_id]].trimmed());
}
else if (_strList[m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_platform_name]].trimmed() == "facebook")
{
str.append("facebook.com/");
str.append(_strList[m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_platform_id]].trimmed());
}
return str.trimmed(); return str.trimmed();
} }

View File

@@ -11,6 +11,7 @@ class QStringList;
class QSqlDatabase; class QSqlDatabase;
QString sqlString(QString _str); QString sqlString(QString _str);
QString UniCodeToEucKr(const QString& _strData);
class SDatagroup class SDatagroup
{ {
@@ -35,12 +36,24 @@ public:
QString url; QString url;
int view; int view;
QString date; QString date;
int reply_startnum; int replystartnum;
int reply_endnum; int replyendnum;
int reply_count; int replycount;
QString lastupdate;
QVector<int> realbycategorynum; QVector<int> realbycategorynum;
stBody():reply_endnum(-1), reply_startnum(-1), reply_count(0) {}
QString lastupdate;
QString community_title;
QString community_url;
QString community_id;
QString community_exid;
QString platformname_name;
QString platformform_form;
QString nickname_nickname;
QString nickname_exnickname;
//QSet<int> realbycategorynum;
stBody():replyendnum(-1), replystartnum(-1), replycount(0) {}
}; };
struct stReply struct stReply
@@ -55,6 +68,17 @@ public:
QString* data; QString* data;
QString date; QString date;
QVector<int> realbycategorynum; QVector<int> realbycategorynum;
int platformname_num;
int platformform_num;
QString platformname_name;
QString platformform_form;
QString nickname_nickname;
QString nickname_exnickname;
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
{ {
@@ -124,6 +148,7 @@ public:
bool changeTable(QSqlDatabase &_db, const int& nCompany); bool changeTable(QSqlDatabase &_db, const int& nCompany);
int getBodyNum(const QString& _url); int getBodyNum(const QString& _url);
QString vecToString(const QVector<int>& _realbycategorynum); QString vecToString(const QVector<int>& _realbycategorynum);
QString vecToString(const QSet<int> &_realbycategorynum);
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; } void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
stBody* get(const QString& _url); stBody* get(const QString& _url);
void clear(); void clear();
@@ -176,7 +201,6 @@ public:
void put(const QString& _strKey, const stNickname& _stnickname); void put(const QString& _strKey, const stNickname& _stnickname);
void put(const stNickname& _nickname); void put(const stNickname& _nickname);
bool contains(const QString& _strKey); bool contains(const QString& _strKey);
QString UniCodeToEucKr(const QString& _strData);
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; } void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
void clear(); void clear();
}; };

View File

@@ -40,14 +40,45 @@ bool SFilterProcess::run()
} }
case E_PROCSS_TYPE_CATEGORY_MAKE: case E_PROCSS_TYPE_CATEGORY_MAKE:
{ {
m_SConsumer.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID)); 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;
}
}
break; break;
} }
case E_PROCSS_TYPE_SEND: case E_PROCSS_TYPE_SEND:
{ {
m_SDatagroup.makeTable(); m_SDatagroup.makeTable();
m_SConsumer.makeOverallCategory(m_SInitializer.getConsumerAllCategory()); m_SConsumer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_CONSUMER));
m_SInfluencer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_INFLUENCER));
m_SSpammer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_SPAMMER));
m_SPowercafe.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_POWERCAFE));
m_SConsumer.makeTable(m_SDatagroup); m_SConsumer.makeTable(m_SDatagroup);
m_SInfluencer.makeTable(m_SDatagroup); m_SInfluencer.makeTable(m_SDatagroup);
m_SSpammer.makeTable(m_SDatagroup); m_SSpammer.makeTable(m_SDatagroup);
@@ -72,21 +103,6 @@ bool SFilterProcess::run()
process.m_nCompanyNum); process.m_nCompanyNum);
break; break;
} }
case E_PROCSS_TYPE_INFLUENCE_COUNT:
{
m_SInfluencer.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID));
break;
}
case E_PROCSS_TYPE_SPAMMERS_COUNT:
{
m_SSpammer.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID));
break;
}
case E_PROCSS_TYPE_POWER_CAFE_COUNT:
{
m_SPowercafe.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID));
break;
}
} }
} }
m_SInitializer.insertLog("New Filter END"); m_SInitializer.insertLog("New Filter END");

View File

@@ -19,6 +19,14 @@ private:
SPowercafe m_SPowercafe; SPowercafe m_SPowercafe;
public: public:
enum E_SERVICE
{
E_SERVICE_INFLUENCER = 1,
E_SERVICE_CONSUMER,
E_SERVICE_SPAMMER,
E_SERVICE_POWERCAFE
};
bool init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName); bool init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName);
bool run(); bool run();

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.3.0, 2016-03-22T15:30:38. --> <!-- Written by QtCreator 3.3.0, 2016-05-03T18:01:56. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>
@@ -787,7 +787,7 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">sfilterprocess</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">sfilterprocess</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:C:/source/sfilterprocess/sfilterprocess.pro</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:C:/source/sfilterprocess/sfilterprocess.pro</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments">&quot;370&quot; &quot;test&quot;</value> <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments">&quot;427&quot; &quot;test&quot;</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">sfilterprocess.pro</value> <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">sfilterprocess.pro</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value> <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">true</value> <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">true</value>

View File

@@ -61,14 +61,20 @@ bool SInfluencer::changeTable(int _companyNum)
QSqlDatabase dbWeb = m_pSInitializer->getDatabase(SDBManager::E_DATABASE_WEB); QSqlDatabase dbWeb = m_pSInitializer->getDatabase(SDBManager::E_DATABASE_WEB);
if (!m_SBodyInfluencerMap.changeTable(dbWeb, _companyNum)) if (!m_SBodyInfluencerMap.changeTable(dbWeb, _companyNum))
{ {
m_pSInitializer->insertLog("Fail to upload influencer body map"); m_pSInitializer->insertLog("Fail to change influencer body map");
return false; return false;
} }
if (!m_SReplyInfluencerMap.changeTable(dbWeb, _companyNum)) if (!m_SReplyInfluencerMap.changeTable(dbWeb, _companyNum))
{ {
m_pSInitializer->insertLog("Fail to upload influencer reply map"); m_pSInitializer->insertLog("Fail to change influencer reply map");
return false; return false;
} }
if (!m_STInfluencer.changeTable(dbWeb, _companyNum))
{
m_pSInitializer->insertLog("Fail to change influencer");
return false;
}
return true; return true;
} }
@@ -105,8 +111,8 @@ bool SInfluencer::makeCategory(SDatagroup &_datagroup, int _nCategory, const QLi
} }
} }
stReal streal; stReal streal;
qDebug() << "filtered size: " << vecData[SInitializer::E_ARTICLE_BODY].size(); m_pSInitializer->insertLog(QString("CategoryNum:") + QString::number(_nCategory) + ",(" +
qDebug() << "filtered size: " << vecData[SInitializer::E_ARTICLE_REPLY].size(); QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + '/' + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ")" + "(Body/Reply)" );
const int *anColumn = m_pSInitializer->getColumnIntArray(); const int *anColumn = m_pSInitializer->getColumnIntArray();
if (bFiltered[SInitializer::E_ARTICLE_BODY]) if (bFiltered[SInitializer::E_ARTICLE_BODY])
{ {
@@ -135,22 +141,46 @@ bool SInfluencer::makeCategory(SDatagroup &_datagroup, int _nCategory, const QLi
bool SInfluencer::makeOverallCategory(int _categoryNum) bool SInfluencer::makeOverallCategory(int _categoryNum)
{ {
if (m_mapCategory.size() < 1)
return true;
stReal streal;
for (QMap<int, stReal>::iterator iterPos = m_mapCategory.begin(); iterPos != m_mapCategory.end(); iterPos++ )
{
stReal& val = iterPos.value();
foreach (const QString& _strurl, val.m_setRealBodyUrl )
streal.m_setRealBodyUrl.insert(_strurl);
foreach (const QString& _strurl, val.m_setRealAllUrl )
streal.m_setRealAllUrl.insert(_strurl);
for (QMap<QString, int>::iterator iterPos1 = val.m_mapRealReplyUniqueUrl.begin(); iterPos1 != val.m_mapRealReplyUniqueUrl.end();
iterPos1++)
{
streal.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value());
}
}
m_mapCategory.insert(_categoryNum, streal);
return true; return true;
} }
bool SInfluencer::makeTable(SDatagroup &_datagroup) bool SInfluencer::makeTable(SDatagroup &_datagroup)
{ {
m_pSInitializer->insertLog("Make influencer tables"); if (m_mapCategory.size() > 1)
m_pSInitializer->insertLog("Make influencer body tables"); {
m_SBodyInfluencerMap.makeTable(_datagroup, m_mapCategory); m_pSInitializer->insertLog("Make influencer tables");
m_pSInitializer->insertLog("Make influencer reply tables"); m_pSInitializer->insertLog("Make influencer body tables");
m_SReplyInfluencerMap.makeTable(_datagroup, m_mapCategory); m_SBodyInfluencerMap.makeTable(_datagroup, m_mapCategory);
m_pSInitializer->insertLog("Make influencer stats_inf_blogger_buzzy tables"); m_pSInitializer->insertLog("Make influencer reply tables");
m_SStatsInfBloggerBuzzbyday.makeTable(_datagroup, m_mapCategory); m_SReplyInfluencerMap.makeTable(_datagroup, m_mapCategory);
m_pSInitializer->insertLog("Make influencer stats_inf_blogger_rank table"); m_pSInitializer->insertLog("Make influencer stats_inf_blogger_buzzy tables");
m_SStatsInfBloggerRank.makeTable(_datagroup, m_mapCategory); m_SStatsInfBloggerBuzzbyday.makeTable(_datagroup, m_mapCategory);
m_pSInitializer->insertLog("Make influencer influencer"); m_pSInitializer->insertLog("Make influencer stats_inf_blogger_rank table");
m_STInfluencer.makeTable(_datagroup, m_mapCategory); m_SStatsInfBloggerRank.makeTable(_datagroup, m_mapCategory);
m_pSInitializer->insertLog("Make influencer influencer");
m_STInfluencer.makeTable(_datagroup, m_mapCategory);
}
return true; return true;
} }
@@ -159,12 +189,12 @@ void SInfluencer::STInfluencer::makeTable(SDatagroup &_datagroup, const QMap<int
const QMap<QString, QStringList>* mapBody = _datagroup.getmapBody(); const QMap<QString, QStringList>* mapBody = _datagroup.getmapBody();
const QMap<QString, QMap<int, QStringList> >* mapReply = _datagroup.getmapReply(); const QMap<QString, QMap<int, QStringList> >* mapReply = _datagroup.getmapReply();
const QStringList* orderedUrl = _datagroup.getOrderedUrl(); const QStringList* orderedUrl = _datagroup.getOrderedUrl();
QMap<SDatagroup::stProfileurlKey, stInfluencer> mapRank;
const int* anColumn = m_pSInitializer->getColumnIntArray(); const int* anColumn = m_pSInitializer->getColumnIntArray();
for (QMap<int, stReal>::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) for (QMap<int, stReal>::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++)
{ {
QMap<SDatagroup::stProfileurlKey, stInfluencer> mapRank;
const stReal& streal = iterPos.value(); const stReal& streal = iterPos.value();
foreach (const QString& _url, *orderedUrl) foreach (const QString& _url, *orderedUrl)
{ {
@@ -182,6 +212,14 @@ void SInfluencer::STInfluencer::makeTable(SDatagroup &_datagroup, const QMap<int
mapRank[stprofileurlkey].community_num = _datagroup.getstBody(_url)->community_num; mapRank[stprofileurlkey].community_num = _datagroup.getstBody(_url)->community_num;
mapRank[stprofileurlkey].profile = (*(_datagroup.getmapBody(stprofileurlkey)))[anColumn[SInitializer::E_DATA_article_profile]].trimmed(); mapRank[stprofileurlkey].profile = (*(_datagroup.getmapBody(stprofileurlkey)))[anColumn[SInitializer::E_DATA_article_profile]].trimmed();
mapRank[stprofileurlkey].profileurl = (*(_datagroup.getmapBody(stprofileurlkey)))[anColumn[SInitializer::E_DATA_article_profileurl]].trimmed(); mapRank[stprofileurlkey].profileurl = (*(_datagroup.getmapBody(stprofileurlkey)))[anColumn[SInitializer::E_DATA_article_profileurl]].trimmed();
mapRank[stprofileurlkey].category_num = iterPos.key();
mapRank[stprofileurlkey].community_title = _datagroup.getstCommunity(*(_datagroup.getmapBody(stprofileurlkey)))->title;
mapRank[stprofileurlkey].community_url = _datagroup.getstCommunity(*(_datagroup.getmapBody(stprofileurlkey)))->url;
mapRank[stprofileurlkey].community_id = _datagroup.getstCommunity(*(_datagroup.getmapBody(stprofileurlkey)))->id;
mapRank[stprofileurlkey].nickname_nickname = _datagroup.getstBody(_url)->nickname_nickname;
mapRank[stprofileurlkey].nickname_exnickname = _datagroup.getstBody(_url)->nickname_exnickname;
mapRank[stprofileurlkey].platformname_num = _datagroup.getstBody(_url)->platformname_num;
mapRank[stprofileurlkey].platformname_name = _datagroup.getstBody(_url)->platformname_name;
} }
mapRank[stprofileurlkey].bodycount++; mapRank[stprofileurlkey].bodycount++;
@@ -195,22 +233,19 @@ void SInfluencer::STInfluencer::makeTable(SDatagroup &_datagroup, const QMap<int
} }
} }
} }
} for (QMap<SDatagroup::stProfileurlKey, stInfluencer>::iterator iterPos1 = mapRank.begin(); iterPos1 != mapRank.end(); iterPos1++)
{
for (QMap<SDatagroup::stProfileurlKey, stInfluencer>::iterator iterPos = mapRank.begin(); iterPos != mapRank.end(); iterPos++) stInfluencer &val = iterPos1.value();
{ val.influencervalue = val.bodycount * m_pSInitializer->getInfluencerParam(0) + val.replycount * m_pSInitializer->getInfluencerParam(1);
stInfluencer &val = iterPos.value(); }
val.influencervalue = val.bodycount * m_pSInitializer->getInfluencerParam(0) + val.replycount * m_pSInitializer->getInfluencerParam(1); QList<stInfluencer> listmap = mapRank.values();
} qSort(listmap.begin(), listmap.end(), isGreaterInfluencerValue());
int rank = 1;
m_listMap = mapRank.values(); for (QList<stInfluencer>::iterator iterPos1 = listmap.begin(); iterPos1 != listmap.end(); iterPos1++)
{
qSort(m_listMap.begin(), m_listMap.end(), isGreaterInfluencerValue()); iterPos1->rank = rank++;
}
int rank = 1; m_listMap.append(listmap);
for (QList<stInfluencer>::iterator iterPos = m_listMap.begin(); iterPos != m_listMap.end(); iterPos++)
{
iterPos->rank = rank++;
} }
} }
@@ -264,7 +299,7 @@ bool SInfluencer::STInfluencer::uploadData(QSqlDatabase &_db, const int &_nCompa
bool SInfluencer::STInfluencer::uploadData(QSqlDatabase &_db, const int &_nCompany) bool SInfluencer::STInfluencer::uploadData(QSqlDatabase &_db, const int &_nCompany)
{ {
QString strQuery = "delete from influencer where company_num = " + QString::number(_nCompany); QString strQuery = "delete from influencer_" + QString::number(_nCompany) + "_update";
QSqlQuery query(_db); QSqlQuery query(_db);
if (query.exec(strQuery.toUtf8()) == false) if (query.exec(strQuery.toUtf8()) == false)
{ {
@@ -272,8 +307,9 @@ bool SInfluencer::STInfluencer::uploadData(QSqlDatabase &_db, const int &_nCompa
m_pSInitializer->insertLog(query.lastError().text()); m_pSInitializer->insertLog(query.lastError().text());
return false; return false;
} }
strQuery = "insert into influencer (rank,company_num,id_num,nickname_num,community_num,bodycount,replycount,influencervalue,profile,profileurl,id_id)" strQuery = "insert into influencer_" + QString::number(_nCompany) +
" VALUES ("; "_update (rank,category_num,id_num,nickname_num,community_num,bodycount,replycount,influencervalue,profile,profileurl,id_id,"
"community_title,community_url,community_id,nickname_nickname,nickname_exnickname,platformname_num,platformname_name) VALUES (";
query.clear(); query.clear();
@@ -281,7 +317,7 @@ bool SInfluencer::STInfluencer::uploadData(QSqlDatabase &_db, const int &_nCompa
{ {
QString str = strQuery; QString str = strQuery;
str += QString::number(stinfluencer.rank) + ","; str += QString::number(stinfluencer.rank) + ",";
str += QString::number(_nCompany) + ","; str += QString::number(stinfluencer.category_num) + ",";
str += QString::number(stinfluencer.id_num) + ","; str += QString::number(stinfluencer.id_num) + ",";
str += QString::number(stinfluencer.nickname_num) + ","; str += QString::number(stinfluencer.nickname_num) + ",";
str += QString::number(stinfluencer.community_num) + ","; str += QString::number(stinfluencer.community_num) + ",";
@@ -290,7 +326,15 @@ bool SInfluencer::STInfluencer::uploadData(QSqlDatabase &_db, const int &_nCompa
str += QString::number(stinfluencer.influencervalue, 'g', 3) + ","; str += QString::number(stinfluencer.influencervalue, 'g', 3) + ",";
str += "'" + sqlString(stinfluencer.profile).trimmed().replace(QChar(160), "") + "',"; str += "'" + sqlString(stinfluencer.profile).trimmed().replace(QChar(160), "") + "',";
str += "'" + stinfluencer.profileurl.trimmed() + "',"; str += "'" + stinfluencer.profileurl.trimmed() + "',";
str += "'" + sqlString(stinfluencer.id_id) + "')"; str += "'" + sqlString(stinfluencer.id_id) + "',";
str += "'" + sqlString(stinfluencer.community_title) + "',";
str += "'" + stinfluencer.community_url + "',";
str += "'" + stinfluencer.community_id + "',";
str += "'" + sqlString(stinfluencer.nickname_nickname) + "',";
str += "'" + sqlString(stinfluencer.nickname_exnickname) + "',";
str += QString::number(stinfluencer.platformname_num) + ",";
str += "'" + stinfluencer.platformname_name + "')";
if (query.exec(str.toUtf8()) == false) if (query.exec(str.toUtf8()) == false)
{ {
m_pSInitializer->insertLog(query.lastQuery()); m_pSInitializer->insertLog(query.lastQuery());
@@ -306,6 +350,23 @@ bool SInfluencer::STInfluencer::uploadData(QSqlDatabase &_db, const int &_nCompa
return true; return true;
} }
bool SInfluencer::STInfluencer::changeTable(QSqlDatabase &_db, const int &_nCompany)
{
QString strQuery;
QSqlQuery query(_db);
strQuery = "RENAME TABLE ";
strQuery += "influencer_" + QString::number(_nCompany) + " TO " + "influencer_" + QString::number(_nCompany) + "_temp" + ",";
strQuery += "influencer_" + QString::number(_nCompany) + "_update" + " TO " + "influencer_" + QString::number(_nCompany) + ",";
strQuery += "influencer_" + QString::number(_nCompany) + "_temp" + " TO " + "influencer_" + QString::number(_nCompany) + "_update";
if (!query.exec(strQuery.toUtf8()))
{
m_pSInitializer->insertLog(query.lastQuery());
m_pSInitializer->insertLog(query.lastError().text());
return false;
}
return true;
}
void SInfluencer::SStatsInfBloggerRank::makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory) void SInfluencer::SStatsInfBloggerRank::makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory)
{ {
const QMap<QString, QStringList>* mapBody = _datagroup.getmapBody(); const QMap<QString, QStringList>* mapBody = _datagroup.getmapBody();
@@ -313,11 +374,11 @@ void SInfluencer::SStatsInfBloggerRank::makeTable(SDatagroup &_datagroup, const
const int* anColumn = m_pSInitializer->getColumnIntArray(); const int* anColumn = m_pSInitializer->getColumnIntArray();
const int RANK = 10; const int RANK = 10;
QMap<SDatagroup::stProfileurlKey, stStatsInfBloggerRank> mapRank;
for (QMap<int, stReal>::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) for (QMap<int, stReal>::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++)
{ {
const stReal& streal = iterPos.value(); const stReal& streal = iterPos.value();
QMap<SDatagroup::stProfileurlKey, stStatsInfBloggerRank> mapRank;
foreach (const QString& _url, streal.m_setRealBodyUrl) foreach (const QString& _url, streal.m_setRealBodyUrl)
{ {
@@ -342,46 +403,46 @@ void SInfluencer::SStatsInfBloggerRank::makeTable(SDatagroup &_datagroup, const
} }
} }
} }
}
for (QMap<SDatagroup::stProfileurlKey, stStatsInfBloggerRank>::iterator iterPos = mapRank.begin(); iterPos != mapRank.end(); iterPos++) for (QMap<SDatagroup::stProfileurlKey, stStatsInfBloggerRank>::iterator iterPos = mapRank.begin(); iterPos != mapRank.end(); iterPos++)
{ {
stStatsInfBloggerRank &val = iterPos.value(); stStatsInfBloggerRank &val = iterPos.value();
val.influencevalue = val.bodycount * m_pSInitializer->getInfluencerParam(0) + val.replycount * m_pSInitializer->getInfluencerParam(1); val.influencevalue = val.bodycount * m_pSInitializer->getInfluencerParam(0) + val.replycount * m_pSInitializer->getInfluencerParam(1);
} }
QList<stStatsInfBloggerRank> listMap = mapRank.values(); QList<stStatsInfBloggerRank> listMap = mapRank.values();
qSort(listMap.begin(), listMap.end(), isGreaterInfluencerValue()); qSort(listMap.begin(), listMap.end(), isGreaterInfluencerValue());
// influencevalue // influencevalue
for(int i = 0; i < RANK; i++) for(int i = 0; i < RANK && i < listMap.size(); i++)
{ {
listMap[i].rank = i + 1; listMap[i].rank = i + 1;
listMap[i].subject = "influencevalue"; listMap[i].subject = "influencevalue";
m_listMap.append(listMap.at(i)); m_listMap.append(listMap.at(i));
//qDebug() << listMap[i].id_id; //qDebug() << listMap[i].id_id;
} }
qSort(listMap.begin(), listMap.end(), isGreaterBodyCount()); qSort(listMap.begin(), listMap.end(), isGreaterBodyCount());
// influencevalue // influencevalue
for(int i = 0; i < RANK; i++) for(int i = 0; i < RANK && i < listMap.size(); i++)
{ {
listMap[i].rank = i + 1; listMap[i].rank = i + 1;
listMap[i].subject = "bodycount"; listMap[i].subject = "bodycount";
m_listMap.append(listMap.at(i)); m_listMap.append(listMap.at(i));
//qDebug() << listMap[i].id_id; //qDebug() << listMap[i].id_id;
} }
qSort(listMap.begin(), listMap.end(), isGreaterReplyCount()); qSort(listMap.begin(), listMap.end(), isGreaterReplyCount());
// influencevalue // influencevalue
for(int i = 0; i < RANK; i++) for(int i = 0; i < RANK && i < listMap.size(); i++)
{ {
listMap[i].rank = i + 1; listMap[i].rank = i + 1;
listMap[i].subject = "replycount"; listMap[i].subject = "replycount";
m_listMap.append(listMap.at(i)); m_listMap.append(listMap.at(i));
//qDebug() << listMap[i].id_id; //qDebug() << listMap[i].id_id;
}
listMap.clear();
} }
listMap.clear();
} }
/* /*
@@ -624,17 +685,17 @@ void SInfluencer::SBodyInfluencerMap::makeTable(SDatagroup &_datagroup, const QM
stbody.id_num = _datagroup.getstBody(strUrl)->id_num; stbody.id_num = _datagroup.getstBody(strUrl)->id_num;
stbody.category_num = iterPos.key(); stbody.category_num = iterPos.key();
stbody.realin |= REAL_BODY; stbody.realin |= REAL_BODY;
stbody.community_num = _datagroup.getstBody(strUrl)->community_num;
stbody.body_date = _datagroup.getstBody(strUrl)->date;
m_listMap.append(stbody); m_listMap.append(stbody);
//_datagroup.addRealBodyCategory(strUrl, iterPos.key()); _datagroup.addRealBodyCategory(strUrl, iterPos.key());
if (streal.m_mapRealReplyUniqueUrl.contains(strUrl)) if (streal.m_mapRealReplyUniqueUrl.contains(strUrl))
{ {
stbody.realin |= REAL_REPLY; stbody.realin |= REAL_REPLY;
/*
foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl)) foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl))
{ {
_datagroup.addRealReplyCategory(strUrl, order, iterPos.key()); _datagroup.addRealReplyCategory(strUrl, order, iterPos.key());
} }
*/
} }
} }
} }
@@ -687,7 +748,7 @@ bool SInfluencer::SBodyInfluencerMap::uploadData(QSqlDatabase &_db, const int &_
m_pSInitializer->insertLog(query.lastError().text()); m_pSInitializer->insertLog(query.lastError().text());
return false; return false;
} }
strQuery = "insert into body_influencer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,realin)" strQuery = "insert into body_influencer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,realin,community_num,body_date)"
" values ("; " values (";
query.clear(); query.clear();
@@ -699,7 +760,9 @@ bool SInfluencer::SBodyInfluencerMap::uploadData(QSqlDatabase &_db, const int &_
str += QString::number(stmap.category_num) + ","; str += QString::number(stmap.category_num) + ",";
str += QString::number(stmap.id_num) + ","; str += QString::number(stmap.id_num) + ",";
str += QString::number(stmap.body_num) + ","; str += QString::number(stmap.body_num) + ",";
str += QString::number(stmap.realin) + ")"; str += QString::number(stmap.realin) + ",";
str += QString::number(stmap.community_num) + ",";
str += "'" + stmap.body_date + "')";
if (query.exec(str.toUtf8()) == false) if (query.exec(str.toUtf8()) == false)
{ {
@@ -734,14 +797,11 @@ void SInfluencer::SReplyInfluencerMap::makeTable(SDatagroup &_datagroup, const Q
streply.realin |= REAL_REPLY; streply.realin |= REAL_REPLY;
streply.id_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->id_num; streply.id_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->id_num;
streply.reply_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->num; streply.reply_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->num;
streply.community_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->community_num;
streply.body_date = _datagroup.getstBody(iterPos1.key())->date;
m_listMap.append(streply); m_listMap.append(streply);
/* _datagroup.addRealReplyCategory(iterPos1.key(), iterPos1.value(), iterPos.key());
foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl))
{
_datagroup.addRealReplyCategory(strUrl, order, iterPos.key());
}
*/
} }
} }
else else
@@ -757,6 +817,9 @@ void SInfluencer::SReplyInfluencerMap::makeTable(SDatagroup &_datagroup, const Q
streply.realin |= REAL_REPLY; streply.realin |= REAL_REPLY;
streply.id_num = _datagroup.getstReply(_url, iterPos1.key())->id_num; streply.id_num = _datagroup.getstReply(_url, iterPos1.key())->id_num;
streply.reply_num = _datagroup.getstReply(_url, iterPos1.key())->num; streply.reply_num = _datagroup.getstReply(_url, iterPos1.key())->num;
streply.community_num = _datagroup.getstReply(_url, iterPos1.key())->community_num;
streply.body_date = _datagroup.getstBody(_url)->date;
_datagroup.addRealReplyCategory(iterPos1.value()[SInitializer::E_DATA_article_url].trimmed(), iterPos1.key(), iterPos.key());
m_listMap.append(streply); m_listMap.append(streply);
} }
} }
@@ -811,7 +874,7 @@ bool SInfluencer::SReplyInfluencerMap::uploadData(QSqlDatabase &_db, const int &
return false; return false;
} }
strQuery = "insert into reply_influencer_map_" + QString::number(_nCompany) + strQuery = "insert into reply_influencer_map_" + QString::number(_nCompany) +
"_update (num,category_num,id_num,body_num,reply_num,realin)" "_update (num,category_num,id_num,body_num,reply_num,realin,community_num,body_date)"
" values ("; " values (";
query.clear(); query.clear();
@@ -823,7 +886,9 @@ bool SInfluencer::SReplyInfluencerMap::uploadData(QSqlDatabase &_db, const int &
str += QString::number(stmap.id_num) + ","; str += QString::number(stmap.id_num) + ",";
str += QString::number(stmap.body_num) + ","; str += QString::number(stmap.body_num) + ",";
str += QString::number(stmap.reply_num) + ","; str += QString::number(stmap.reply_num) + ",";
str += QString::number(stmap.realin) + ")"; str += QString::number(stmap.realin) + ",";
str += QString::number(stmap.community_num) + ",";
str += "'" + stmap.body_date + "')";
if (query.exec(str.toUtf8()) == false) if (query.exec(str.toUtf8()) == false)
{ {
m_pSInitializer->insertLog(query.lastQuery()); m_pSInitializer->insertLog(query.lastQuery());

View File

@@ -20,7 +20,7 @@ public:
int id_num; int id_num;
int nickname_num; int nickname_num;
int community_num; int community_num;
int company_num; int category_num;
QString id_id; QString id_id;
QString profile; QString profile;
QString profileurl; QString profileurl;
@@ -28,11 +28,15 @@ public:
int replycount; int replycount;
double influencervalue; double influencervalue;
int rank; int rank;
stInfluencer() QString community_title;
{ QString community_url;
id_num = nickname_num = community_num = company_num = bodycount = replycount = rank = 0; QString community_id;
influencervalue = 0.0; QString nickname_nickname;
} QString nickname_exnickname;
QString platformname_name;
int platformname_num;
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 stStatsInfBloggerRank struct stStatsInfBloggerRank
@@ -45,11 +49,7 @@ public:
QString subject; QString subject;
int company_num; int company_num;
int rank; int rank;
stStatsInfBloggerRank() stStatsInfBloggerRank():bodycount(0),replycount(0),rank(0),influencevalue(0.0){}
{
bodycount = replycount = rank = 0;
influencevalue = 0.0;
}
stStatsInfBloggerRank(const QString &_id_id, const QString &_nickname_nickname):id_id(_id_id),nickname_nickname(_nickname_nickname), stStatsInfBloggerRank(const QString &_id_id, const QString &_nickname_nickname):id_id(_id_id),nickname_nickname(_nickname_nickname),
bodycount(0), replycount(0), rank(0), influencevalue(0.0) {} bodycount(0), replycount(0), rank(0), influencevalue(0.0) {}
}; };
@@ -72,7 +72,9 @@ public:
int id_num; int id_num;
int category_num; int category_num;
int realin; int realin;
stBodyInfluencerMap():num(0),body_num(0), id_num(0), category_num(0), realin(0) {} int community_num;
QString body_date;
stBodyInfluencerMap():num(0),body_num(0), id_num(0), category_num(0), realin(0), community_num(0){}
}; };
struct stReplyInfluencerMap struct stReplyInfluencerMap
{ {
@@ -82,10 +84,9 @@ public:
int id_num; int id_num;
int category_num; int category_num;
int realin; int realin;
stReplyInfluencerMap() int community_num;
{ QString body_date;
num = reply_num = body_num = id_num = category_num = realin = 0; stReplyInfluencerMap():num(0),reply_num(0),body_num(0),id_num(0),category_num(0),realin(0),community_num(0){}
}
}; };
class STInfluencer class STInfluencer
{ {
@@ -96,6 +97,7 @@ public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory); void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany); bool uploadData(QSqlDatabase &_db, const int &_nCompany);
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
void clear(){ m_listMap.clear(); } void clear(){ m_listMap.clear(); }
}; };

View File

@@ -214,7 +214,8 @@ bool SInitializer::init(const QString& _strFilterProcessGroupID, const QString&
b_ok &= initFilterProcess(); b_ok &= initFilterProcess();
b_ok &= initCompanyNum(); b_ok &= initCompanyNum();
b_ok &= initPlatform(); b_ok &= initPlatform();
b_ok &= initConsumerCategory(); //b_ok &= initConsumerCategory();
b_ok &= initCategory();
/* /*
if (!b_ok) if (!b_ok)
cout << "FALSE" << endl; cout << "FALSE" << endl;
@@ -234,7 +235,7 @@ bool SInitializer::initInfluencer()
bool SInitializer::initFilterProcess() bool SInitializer::initFilterProcess()
{ {
QString strQuery = QString("select filterprocess_type,datagroup_id,filtergroup_id,company_num,category_num,filterprocess_order " QString strQuery = QString("select filterprocess_type,datagroup_id,filtergroup_id,company_num,category_num,filterprocess_order,service_num "
"from filterprocess where filterprocessgroup_id = ") + QString::number(m_stFilterProcessGroup.m_nFilterProcessGroupID); "from filterprocess where filterprocessgroup_id = ") + QString::number(m_stFilterProcessGroup.m_nFilterProcessGroupID);
QSqlQuery query(m_sDBManager[SDBManager::E_DATABASE_DATA]); QSqlQuery query(m_sDBManager[SDBManager::E_DATABASE_DATA]);
@@ -255,6 +256,7 @@ bool SInitializer::initFilterProcess()
stfilterprocess.m_nCompanyNum = query.value(3).toInt(); stfilterprocess.m_nCompanyNum = query.value(3).toInt();
stfilterprocess.m_nCategoryNum = query.value(4).toInt(); stfilterprocess.m_nCategoryNum = query.value(4).toInt();
stfilterprocess.m_nFilterProcessOrder = query.value(5).toInt(); stfilterprocess.m_nFilterProcessOrder = query.value(5).toInt();
stfilterprocess.m_nServiceNum = query.value(6).toInt();
m_listFilterProcess.append(stfilterprocess); m_listFilterProcess.append(stfilterprocess);
} }
@@ -288,7 +290,79 @@ bool SInitializer::initFilterProcess()
return true; return true;
} }
bool SInitializer::initCategory()
{
for (int i = 0; i < E_SERVICE_MAX; i++)
{
m_anAllCategory[i] = -1;
}
int company_num = -1;
foreach (const stFilterProcess& stfilterprocess, m_listFilterProcess)
{
if (stfilterprocess.m_nFilterProcessType == 2)
{
company_num = stfilterprocess.m_nCompanyNum;
}
}
if (company_num == -1)
return false;
QSqlQuery query(m_sDBManager[SDBManager::E_DATABASE_WEB]);
QString strQuery = "select num, servicenum from category where company_num = ";
strQuery += QString::number(company_num) + " order by servicenum asc, num asc";
if (query.exec(strQuery.toUtf8()) == false)
{
insertLog(query.lastQuery());
insertLog(query.lastError().text());
return false;
}
int nService[E_SERVICE_MAX] = {0,};
while(query.next())
{
switch(query.value(1).toInt())
{
case E_SERVICE_INFLUENCER:
{
if (0 == nService[E_SERVICE_INFLUENCER]++)
{
m_anAllCategory[E_SERVICE_INFLUENCER] = query.value(0).toInt();
}
break;
}
case E_SERVICE_CONSUMER:
{
if (0 == nService[E_SERVICE_CONSUMER]++)
{
m_anAllCategory[E_SERVICE_CONSUMER] = query.value(0).toInt();
}
break;
}
case E_SERVICE_SPAMMER:
{
if (0 == nService[E_SERVICE_SPAMMER]++)
{
m_anAllCategory[E_SERVICE_SPAMMER] = query.value(0).toInt();
}
break;
}
case E_SERVICE_POWERCAFE:
{
if (0 == nService[E_SERVICE_POWERCAFE]++)
{
m_anAllCategory[E_SERVICE_POWERCAFE] = query.value(0).toInt();
}
break;
}
}
}
return true;
}
/*
bool SInitializer::initConsumerCategory() bool SInitializer::initConsumerCategory()
{ {
QSqlQuery query(m_sDBManager[SDBManager::E_DATABASE_WEB]); QSqlQuery query(m_sDBManager[SDBManager::E_DATABASE_WEB]);
@@ -330,6 +404,7 @@ bool SInitializer::initConsumerCategory()
} }
return true; return true;
} }
*/
int SInitializer::getConsumerAllCategory() int SInitializer::getConsumerAllCategory()
{ {
@@ -525,3 +600,9 @@ bool SInitializer::openConnection(const QString& _str)
{ {
return m_sDBManager.open(_str); return m_sDBManager.open(_str);
} }
int SInitializer::getAllCategoryNum(int _nService)
{
return m_anAllCategory[_nService];
}

View File

@@ -26,7 +26,8 @@ private:
bool initInfluencer(); bool initInfluencer();
bool initSpammer(); bool initSpammer();
bool initPlatform(); bool initPlatform();
bool initConsumerCategory(); //bool initConsumerCategory();
bool initCategory();
public: public:
@@ -79,6 +80,14 @@ public:
E_DATA_etc, E_DATA_etc,
E_DATA_MAX, E_DATA_MAX,
}; };
enum E_SERVICE
{
E_SERVICE_INFLUENCER = 1,
E_SERVICE_CONSUMER,
E_SERVICE_SPAMMER,
E_SERVICE_POWERCAFE,
E_SERVICE_MAX
};
struct stDataBaseInfo struct stDataBaseInfo
{ {
@@ -128,6 +137,7 @@ public:
int m_nFilterProcessOrder; int m_nFilterProcessOrder;
int m_nFilterProcessType; int m_nFilterProcessType;
int m_nCompanyNum; int m_nCompanyNum;
int m_nServiceNum;
}; };
struct stFilter struct stFilter
@@ -165,6 +175,7 @@ private:
stPlatform m_stPlatform; stPlatform m_stPlatform;
QMap<int, int> m_mapConsumerCategory; QMap<int, int> m_mapConsumerCategory;
int m_nConsumerAllCategory; int m_nConsumerAllCategory;
int m_anAllCategory[E_SERVICE_MAX];
public: public:
bool init(const QString& _strFilterProcessGroupID, const QString& _strFilterProcessGroupName); bool init(const QString& _strFilterProcessGroupID, const QString& _strFilterProcessGroupName);
@@ -191,6 +202,7 @@ public:
double getInfluencerParam(int _BodyorReply); double getInfluencerParam(int _BodyorReply);
void updateWebDBInfoState(QSqlDatabase &_db, int _nCompany, QString _strStatus); void updateWebDBInfoState(QSqlDatabase &_db, int _nCompany, QString _strStatus);
void updateWebDBInfoComplete(QSqlDatabase _db, QString _mindate, QString _maxdate, QString _lastupdate, int _bodycount, int _replycount, int _nCompany); void updateWebDBInfoComplete(QSqlDatabase _db, QString _mindate, QString _maxdate, QString _lastupdate, int _bodycount, int _replycount, int _nCompany);
int getAllCategoryNum(int _nService);
//bool disableIndex(QSqlDatabase& db, QString _tableName, QStringList _strIndexNames, int _nMode = MODE); //bool disableIndex(QSqlDatabase& db, QString _tableName, QStringList _strIndexNames, int _nMode = MODE);
//bool enableIndex(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 disableSettings(QSqlDatabase& db, int _nMode = MODE);

View File

@@ -53,14 +53,20 @@ bool SPowercafe::changeTable(int _companyNum)
QSqlDatabase dbWeb = m_pSInitializer->getDatabase(SDBManager::E_DATABASE_WEB); QSqlDatabase dbWeb = m_pSInitializer->getDatabase(SDBManager::E_DATABASE_WEB);
if (!m_SBodyPowercafeMap.changeTable(dbWeb, _companyNum)) if (!m_SBodyPowercafeMap.changeTable(dbWeb, _companyNum))
{ {
m_pSInitializer->insertLog("Fail to upload powercafe body map"); m_pSInitializer->insertLog("Fail to change powercafe body map");
return false; return false;
} }
if (!m_SReplyPowercafeMap.changeTable(dbWeb, _companyNum)) if (!m_SReplyPowercafeMap.changeTable(dbWeb, _companyNum))
{ {
m_pSInitializer->insertLog("Fail to upload powercafe reply map"); m_pSInitializer->insertLog("Fail to change powercafe reply map");
return false; return false;
} }
if (!m_STPowercafe.changeTable(dbWeb, _companyNum))
{
m_pSInitializer->insertLog("Fail to change powercafe");
return false;
}
return true; return true;
} }
@@ -97,8 +103,8 @@ bool SPowercafe::makeCategory(SDatagroup &_datagroup, int _nCategory, const QLis
} }
} }
stReal streal; stReal streal;
qDebug() << "filtered size: " << vecData[SInitializer::E_ARTICLE_BODY].size(); m_pSInitializer->insertLog(QString("CategoryNum:") + QString::number(_nCategory) + ",(" +
qDebug() << "filtered size: " << vecData[SInitializer::E_ARTICLE_REPLY].size(); QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + '/' + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ")" + "(Body/Reply)" );
const int *anColumn = m_pSInitializer->getColumnIntArray(); const int *anColumn = m_pSInitializer->getColumnIntArray();
if (bFiltered[SInitializer::E_ARTICLE_BODY]) if (bFiltered[SInitializer::E_ARTICLE_BODY])
{ {
@@ -131,20 +137,43 @@ bool SPowercafe::makeCategory(SDatagroup &_datagroup, int _nCategory, const QLis
bool SPowercafe::makeOverallCategory(int _categoryNum) bool SPowercafe::makeOverallCategory(int _categoryNum)
{ {
if (m_mapCategory.size() < 1)
return true;
stReal streal;
for (QMap<int, stReal>::iterator iterPos = m_mapCategory.begin(); iterPos != m_mapCategory.end(); iterPos++ )
{
stReal& val = iterPos.value();
foreach (const QString& _strurl, val.m_setRealBodyUrl )
streal.m_setRealBodyUrl.insert(_strurl);
foreach (const QString& _strurl, val.m_setRealAllUrl )
streal.m_setRealAllUrl.insert(_strurl);
for (QMap<QString, int>::iterator iterPos1 = val.m_mapRealReplyUniqueUrl.begin(); iterPos1 != val.m_mapRealReplyUniqueUrl.end();
iterPos1++)
{
streal.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value());
}
}
m_mapCategory.insert(_categoryNum, streal);
return true; return true;
} }
bool SPowercafe::makeTable(SDatagroup &_datagroup) bool SPowercafe::makeTable(SDatagroup &_datagroup)
{ {
m_pSInitializer->insertLog("Make powercafe tables"); if (m_mapCategory.size() > 1)
m_pSInitializer->insertLog("Make powercafe body tables"); {
m_SBodyPowercafeMap.makeTable(_datagroup, m_mapCategory); m_pSInitializer->insertLog("Make powercafe tables");
m_pSInitializer->insertLog("Make powercafe reply tables"); m_pSInitializer->insertLog("Make powercafe body tables");
m_SReplyPowercafeMap.makeTable(_datagroup, m_mapCategory); m_SBodyPowercafeMap.makeTable(_datagroup, m_mapCategory);
m_pSInitializer->insertLog("Make powercafe stats_pow_cafe_rank tables"); m_pSInitializer->insertLog("Make powercafe reply tables");
m_SStatsPowCafeRank.makeTable(_datagroup, m_mapCategory); m_SReplyPowercafeMap.makeTable(_datagroup, m_mapCategory);
m_pSInitializer->insertLog("Make powercafe powercafe table"); m_pSInitializer->insertLog("Make powercafe stats_pow_cafe_rank tables");
m_STPowercafe.makeTable(_datagroup, m_mapCategory); m_SStatsPowCafeRank.makeTable(_datagroup, m_mapCategory);
m_pSInitializer->insertLog("Make powercafe powercafe table");
m_STPowercafe.makeTable(_datagroup, m_mapCategory);
}
return true; return true;
} }
@@ -210,6 +239,12 @@ void SPowercafe::STPowercafe::makeTable(SDatagroup &_datagroup, const QMap<int,
mapPowercafeReal[strKey].replycountall = mapPowercafeAll[strKey].replycountall; mapPowercafeReal[strKey].replycountall = mapPowercafeAll[strKey].replycountall;
mapPowercafeReal[strKey].allcountall = mapPowercafeAll[strKey].bodycountall + mapPowercafeAll[strKey].replycountall; mapPowercafeReal[strKey].allcountall = mapPowercafeAll[strKey].bodycountall + mapPowercafeAll[strKey].replycountall;
mapPowercafeReal[strKey].usercountall = mapUserAll[strKey].size(); mapPowercafeReal[strKey].usercountall = mapUserAll[strKey].size();
mapPowercafeReal[strKey].category_num = iterPos.key();
mapPowercafeReal[strKey].community_title = _datagroup.getstCommunity((*mapBody)[url])->title;
mapPowercafeReal[strKey].community_url = _datagroup.getstCommunity((*mapBody)[url])->url;
mapPowercafeReal[strKey].platformname_name = (*mapBody)[url][anColumn[SInitializer::E_DATA_platform_name]].trimmed();
mapPowercafeReal[strKey].platformname_num = m_pSInitializer->getPlatformName(mapPowercafeReal[strKey].platformname_name);
mapUserReal.insert(strKey, QSet<QString>()); mapUserReal.insert(strKey, QSet<QString>());
} }
mapPowercafeReal[strKey].bodycountreal++; mapPowercafeReal[strKey].bodycountreal++;
@@ -228,6 +263,12 @@ void SPowercafe::STPowercafe::makeTable(SDatagroup &_datagroup, const QMap<int,
mapPowercafeReal[strKey].replycountall = mapPowercafeAll[strKey].replycountall; mapPowercafeReal[strKey].replycountall = mapPowercafeAll[strKey].replycountall;
mapPowercafeReal[strKey].allcountall = mapPowercafeAll[strKey].bodycountall + mapPowercafeAll[strKey].replycountall; mapPowercafeReal[strKey].allcountall = mapPowercafeAll[strKey].bodycountall + mapPowercafeAll[strKey].replycountall;
mapPowercafeReal[strKey].usercountall = mapUserAll[strKey].size(); mapPowercafeReal[strKey].usercountall = mapUserAll[strKey].size();
mapPowercafeReal[strKey].category_num = iterPos.key();
mapPowercafeReal[strKey].community_title = _datagroup.getstCommunity((*mapReply)[iterPos1.key()][iterPos1.value()])->title;
mapPowercafeReal[strKey].community_url = _datagroup.getstCommunity((*mapReply)[iterPos1.key()][iterPos1.value()])->url;
mapPowercafeReal[strKey].platformname_name = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_name]].trimmed();
mapPowercafeReal[strKey].platformname_num = m_pSInitializer->getPlatformName(mapPowercafeReal[strKey].platformname_name);
mapUserReal.insert(strKey, QSet<QString>()); mapUserReal.insert(strKey, QSet<QString>());
} }
mapPowercafeReal[strKey].replycountreal++; mapPowercafeReal[strKey].replycountreal++;
@@ -298,7 +339,7 @@ bool SPowercafe::STPowercafe::uploadData(QSqlDatabase &_db, const int &_nCompany
bool SPowercafe::STPowercafe::uploadData(QSqlDatabase &_db, const int &_nCompany) bool SPowercafe::STPowercafe::uploadData(QSqlDatabase &_db, const int &_nCompany)
{ {
QString strQuery = "delete from powercafe where company_num = " + QString::number(_nCompany); QString strQuery = "delete from powercafe_" + QString::number(_nCompany) + "_update";
QSqlQuery query(_db); QSqlQuery query(_db);
if (query.exec(strQuery.toUtf8()) == false) if (query.exec(strQuery.toUtf8()) == false)
{ {
@@ -306,8 +347,8 @@ bool SPowercafe::STPowercafe::uploadData(QSqlDatabase &_db, const int &_nCompany
m_pSInitializer->insertLog(query.lastError().text()); m_pSInitializer->insertLog(query.lastError().text());
return false; return false;
} }
strQuery = "insert into powercafe (company_num,rank,community_num,community_id,bodycountall,replycountall,allcountall,usercountall," strQuery = "insert into powercafe_" + QString::number(_nCompany) + "_update (category_num,rank,community_num,community_id,bodycountall,replycountall,allcountall,usercountall,"
"bodycountreal,replycountreal,allcountreal,usercountreal)" "bodycountreal,replycountreal,allcountreal,usercountreal,community_title,community_url,platformname_num,platformname_name)"
" VALUES ("; " VALUES (";
query.clear(); query.clear();
@@ -315,7 +356,7 @@ bool SPowercafe::STPowercafe::uploadData(QSqlDatabase &_db, const int &_nCompany
foreach (const stPowercafe& stpowercafe, m_listMap) foreach (const stPowercafe& stpowercafe, m_listMap)
{ {
QString str = strQuery; QString str = strQuery;
str += QString::number(_nCompany) + ","; str += QString::number(stpowercafe.category_num) + ",";
str += QString::number(stpowercafe.rank) + ","; str += QString::number(stpowercafe.rank) + ",";
str += QString::number(stpowercafe.community_num) + ","; str += QString::number(stpowercafe.community_num) + ",";
str += "'" + sqlString(stpowercafe.community_id) + "',"; str += "'" + sqlString(stpowercafe.community_id) + "',";
@@ -326,7 +367,11 @@ bool SPowercafe::STPowercafe::uploadData(QSqlDatabase &_db, const int &_nCompany
str += QString::number(stpowercafe.bodycountreal) + ","; str += QString::number(stpowercafe.bodycountreal) + ",";
str += QString::number(stpowercafe.replycountreal) + ","; str += QString::number(stpowercafe.replycountreal) + ",";
str += QString::number(stpowercafe.allcountreal) + ","; str += QString::number(stpowercafe.allcountreal) + ",";
str += QString::number(stpowercafe.usercountreal) + ")"; str += QString::number(stpowercafe.usercountreal) + ",";
str += "'" + sqlString(stpowercafe.community_title) + "',";
str += "'" + stpowercafe.community_url + "',";
str += QString::number(stpowercafe.platformname_num) + ",";
str += "'" + stpowercafe.platformname_name + "')";
if (query.exec(str.toUtf8()) == false) if (query.exec(str.toUtf8()) == false)
{ {
@@ -442,6 +487,25 @@ void SPowercafe::SStatsPowCafeRank::makeTable(SDatagroup &_datagroup, const QMap
} }
} }
bool SPowercafe::STPowercafe::changeTable(QSqlDatabase &_db, const int &_nCompany)
{
QString strQuery;
QSqlQuery query(_db);
strQuery = "RENAME TABLE ";
strQuery += "powercafe_" + QString::number(_nCompany) + " TO " + "powercafe_" + QString::number(_nCompany) + "_temp" + ",";
strQuery += "powercafe_" + QString::number(_nCompany) + "_update" + " TO " + "powercafe_" + QString::number(_nCompany) + ",";
strQuery += "powercafe_" + QString::number(_nCompany) + "_temp" + " TO " + "powercafe_" + QString::number(_nCompany) + "_update";
if (!query.exec(strQuery.toUtf8()))
{
m_pSInitializer->insertLog(query.lastQuery());
m_pSInitializer->insertLog(query.lastError().text());
return false;
}
return true;
}
/* /*
bool SPowercafe::SStatsPowCafeRank::uploadData(QSqlDatabase &_db, const int &_nCompany) bool SPowercafe::SStatsPowCafeRank::uploadData(QSqlDatabase &_db, const int &_nCompany)
{ {
@@ -535,17 +599,19 @@ void SPowercafe::SBodyPowercafeMap::makeTable(SDatagroup &_datagroup, const QMap
stbody.community_num = _datagroup.getstBody(strUrl)->community_num; stbody.community_num = _datagroup.getstBody(strUrl)->community_num;
stbody.category_num = iterPos.key(); stbody.category_num = iterPos.key();
stbody.realin |= REAL_BODY; stbody.realin |= REAL_BODY;
stbody.body_date = _datagroup.getstBody(strUrl)->date;
stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num;
m_listMap.append(stbody); m_listMap.append(stbody);
//_datagroup.addRealBodyCategory(strUrl, iterPos.key()); _datagroup.addRealBodyCategory(strUrl, iterPos.key());
if (streal.m_mapRealReplyUniqueUrl.contains(strUrl)) if (streal.m_mapRealReplyUniqueUrl.contains(strUrl))
{ {
stbody.realin |= REAL_REPLY; stbody.realin |= REAL_REPLY;
/*
foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl)) foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl))
{ {
_datagroup.addRealReplyCategory(strUrl, order, iterPos.key()); _datagroup.addRealReplyCategory(strUrl, order, iterPos.key());
} }
*/
} }
} }
} }
@@ -568,14 +634,10 @@ void SPowercafe::SReplyPowercafeMap::makeTable(SDatagroup &_datagroup, const QMa
streply.realin |= REAL_REPLY; streply.realin |= REAL_REPLY;
streply.community_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->community_num; streply.community_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->community_num;
streply.reply_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->num; streply.reply_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->num;
streply.body_date = _datagroup.getstBody(iterPos1.key())->date;
m_listMap.append(streply); m_listMap.append(streply);
/* _datagroup.addRealReplyCategory(iterPos1.key(), iterPos1.value(), iterPos.key());
foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl))
{
_datagroup.addRealReplyCategory(strUrl, order, iterPos.key());
}
*/
} }
} }
} }
@@ -626,7 +688,7 @@ bool SPowercafe::SBodyPowercafeMap::uploadData(QSqlDatabase &_db, const int &_nC
return false; return false;
} }
strQuery = "insert into body_powercafe_map_" + QString::number(_nCompany) strQuery = "insert into body_powercafe_map_" + QString::number(_nCompany)
+ "_update (num,category_num,community_num,body_num,realin)" + "_update (num,category_num,community_num,body_num,realin,body_date,platformname_num)"
" values ("; " values (";
query.clear(); query.clear();
@@ -637,7 +699,10 @@ bool SPowercafe::SBodyPowercafeMap::uploadData(QSqlDatabase &_db, const int &_nC
str += QString::number(stmap.category_num) + ","; str += QString::number(stmap.category_num) + ",";
str += QString::number(stmap.community_num) + ","; str += QString::number(stmap.community_num) + ",";
str += QString::number(stmap.body_num) + ","; str += QString::number(stmap.body_num) + ",";
str += QString::number(stmap.realin) + ")"; str += QString::number(stmap.realin) + ",";
str += "'" + stmap.body_date + "',";
str += QString::number(stmap.platformname_num) + ")";
if (query.exec(str.toUtf8()) == false) if (query.exec(str.toUtf8()) == false)
{ {
@@ -698,7 +763,7 @@ bool SPowercafe::SReplyPowercafeMap::uploadData(QSqlDatabase &_db, const int &_n
return false; return false;
} }
strQuery = "insert into reply_powercafe_map_" + QString::number(_nCompany) strQuery = "insert into reply_powercafe_map_" + QString::number(_nCompany)
+ "_update (num,category_num,community_num,body_num,reply_num,realin)" + "_update (num,category_num,community_num,body_num,reply_num,realin,body_date)"
" values ("; " values (";
query.clear(); query.clear();
@@ -710,7 +775,8 @@ bool SPowercafe::SReplyPowercafeMap::uploadData(QSqlDatabase &_db, const int &_n
str += QString::number(stmap.community_num) + ","; str += QString::number(stmap.community_num) + ",";
str += QString::number(stmap.body_num) + ","; str += QString::number(stmap.body_num) + ",";
str += QString::number(stmap.reply_num) + ","; str += QString::number(stmap.reply_num) + ",";
str += QString::number(stmap.realin) + ")"; str += QString::number(stmap.realin) + ",";
str += "'" + stmap.body_date + "')";
if (query.exec(str.toUtf8()) == false) if (query.exec(str.toUtf8()) == false)
{ {

View File

@@ -17,7 +17,7 @@ public:
struct stPowercafe struct stPowercafe
{ {
int company_num; int category_num;
int community_num; int community_num;
QString community_id; QString community_id;
int bodycountall; int bodycountall;
@@ -29,8 +29,14 @@ public:
int allcountreal; int allcountreal;
int usercountreal; int usercountreal;
int rank; int rank;
stPowercafe():company_num(0), community_num(0), bodycountall(0), replycountall(0), allcountall(0), usercountall(0), bodycountreal(0),
replycountreal(0), allcountreal(0), usercountreal(0), rank(0){} QString community_title;
QString community_url;
int platformname_num;
QString platformname_name;
stPowercafe():category_num(0), community_num(0), bodycountall(0), replycountall(0), allcountall(0), usercountall(0), bodycountreal(0),
replycountreal(0), allcountreal(0), usercountreal(0), rank(0), platformname_num(0){}
}; };
struct stStatsPowCafeRank struct stStatsPowCafeRank
@@ -53,7 +59,9 @@ public:
int community_num; int community_num;
int category_num; int category_num;
int realin; int realin;
stBodyPowercafeMap():num(0), body_num(0), community_num(0), category_num(0), realin(0){} QString body_date;
int platformname_num;
stBodyPowercafeMap():num(0), body_num(0), community_num(0), category_num(0), realin(0), platformname_num(0){}
}; };
struct stReplyPowercafeMap struct stReplyPowercafeMap
@@ -64,6 +72,7 @@ public:
int community_num; int community_num;
int category_num; int category_num;
int realin; int realin;
QString body_date;
stReplyPowercafeMap():num(0), reply_num(0), body_num(0), community_num(0), category_num(0), realin(0) {} stReplyPowercafeMap():num(0), reply_num(0), body_num(0), community_num(0), category_num(0), realin(0) {}
}; };
@@ -78,6 +87,8 @@ public:
void clear(){ m_listMap.clear(); } void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory); void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany); bool uploadData(QSqlDatabase &_db, const int &_nCompany);
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
}; };
class SStatsPowCafeRank class SStatsPowCafeRank

View File

@@ -55,12 +55,17 @@ bool SSpammer::changeTable(int _companyNum)
QSqlDatabase dbWeb = m_pSInitializer->getDatabase(SDBManager::E_DATABASE_WEB); QSqlDatabase dbWeb = m_pSInitializer->getDatabase(SDBManager::E_DATABASE_WEB);
if (!m_SBodySpammerMap.changeTable(dbWeb, _companyNum)) if (!m_SBodySpammerMap.changeTable(dbWeb, _companyNum))
{ {
m_pSInitializer->insertLog("Fail to upload spammer body map"); m_pSInitializer->insertLog("Fail to change spammer body map");
return false; return false;
} }
if (!m_SReplySpammerMap.changeTable(dbWeb, _companyNum)) if (!m_SReplySpammerMap.changeTable(dbWeb, _companyNum))
{ {
m_pSInitializer->insertLog("Fail to upload spammer reply map"); m_pSInitializer->insertLog("Fail to change spammer reply map");
return false;
}
if (!m_STSpammer.changeTable(dbWeb, _companyNum))
{
m_pSInitializer->insertLog("Fail to change spammer");
return false; return false;
} }
return true; return true;
@@ -100,8 +105,8 @@ bool SSpammer::makeCategory(SDatagroup &_datagroup, int _nCategory, const QList<
} }
} }
stReal streal; stReal streal;
qDebug() << "filtered size: " << vecData[SInitializer::E_ARTICLE_BODY].size(); m_pSInitializer->insertLog(QString("CategoryNum:") + QString::number(_nCategory) + ",(" +
qDebug() << "filtered size: " << vecData[SInitializer::E_ARTICLE_REPLY].size(); QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + '/' + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ")" + "(Body/Reply)" );
const int *anColumn = m_pSInitializer->getColumnIntArray(); const int *anColumn = m_pSInitializer->getColumnIntArray();
if (bFiltered[SInitializer::E_ARTICLE_BODY]) if (bFiltered[SInitializer::E_ARTICLE_BODY])
{ {
@@ -130,20 +135,43 @@ bool SSpammer::makeCategory(SDatagroup &_datagroup, int _nCategory, const QList<
bool SSpammer::makeOverallCategory(int _categoryNum) bool SSpammer::makeOverallCategory(int _categoryNum)
{ {
if (m_mapCategory.size() < 1)
return true;
stReal streal;
for (QMap<int, stReal>::iterator iterPos = m_mapCategory.begin(); iterPos != m_mapCategory.end(); iterPos++ )
{
stReal& val = iterPos.value();
foreach (const QString& _strurl, val.m_setRealBodyUrl )
streal.m_setRealBodyUrl.insert(_strurl);
foreach (const QString& _strurl, val.m_setRealAllUrl )
streal.m_setRealAllUrl.insert(_strurl);
for (QMap<QString, int>::iterator iterPos1 = val.m_mapRealReplyUniqueUrl.begin(); iterPos1 != val.m_mapRealReplyUniqueUrl.end();
iterPos1++)
{
streal.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value());
}
}
m_mapCategory.insert(_categoryNum, streal);
return true; return true;
} }
bool SSpammer::makeTable(SDatagroup &_datagroup) bool SSpammer::makeTable(SDatagroup &_datagroup)
{ {
m_pSInitializer->insertLog("Make spammer tables"); if (m_mapCategory.size() > 1)
m_pSInitializer->insertLog("Make spammer spammer"); {
m_STSpammer.makeTable(_datagroup, m_mapCategory, m_setSpammer); m_pSInitializer->insertLog("Make spammer tables");
m_pSInitializer->insertLog("Make spammer stats_spa_spammer_rank tables"); m_pSInitializer->insertLog("Make spammer spammer");
m_SStatsSpaSpammerRank.makeTable(_datagroup, m_mapCategory); m_STSpammer.makeTable(_datagroup, m_mapCategory, m_setSpammer);
m_pSInitializer->insertLog("Make spammer body tables"); m_pSInitializer->insertLog("Make spammer stats_spa_spammer_rank tables");
m_SBodySpammerMap.makeTable(_datagroup, m_mapCategory, m_setSpammer); m_SStatsSpaSpammerRank.makeTable(_datagroup, m_mapCategory);
m_pSInitializer->insertLog("Make spammer reply tables"); m_pSInitializer->insertLog("Make spammer body tables");
m_SReplySpammerMap.makeTable(_datagroup, m_mapCategory, m_setSpammer); m_SBodySpammerMap.makeTable(_datagroup, m_mapCategory, m_setSpammer);
m_pSInitializer->insertLog("Make spammer reply tables");
m_SReplySpammerMap.makeTable(_datagroup, m_mapCategory, m_setSpammer);
}
return true; return true;
} }
@@ -197,6 +225,9 @@ void SSpammer::STSpammer::makeTable(SDatagroup &_datagroup, const QMap<int, stRe
stspammer.nicknamecount = iterPos1->nickname.size(); stspammer.nicknamecount = iterPos1->nickname.size();
stspammer.id_num = iterPos1->id_num; stspammer.id_num = iterPos1->id_num;
stspammer.id_id = iterPos1.key().split(",").at(0); stspammer.id_id = iterPos1.key().split(",").at(0);
stspammer.category_num = iterPos.key();
stspammer.platformname_name = iterPos1.key().split(",").at(1);
stspammer.platformname_num = m_pSInitializer->getPlatformName(stspammer.platformname_name);
if (stspammer.bodycount > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_CUT] || if (stspammer.bodycount > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_CUT] ||
stspammer.replycount > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT] || stspammer.replycount > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT] ||
iterPos1->nickname.size() > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT]) iterPos1->nickname.size() > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT])
@@ -276,7 +307,7 @@ bool SSpammer::STSpammer::uploadData(QSqlDatabase &_db, const int &_nCompany)
bool SSpammer::STSpammer::uploadData(QSqlDatabase &_db, const int &_nCompany) bool SSpammer::STSpammer::uploadData(QSqlDatabase &_db, const int &_nCompany)
{ {
//_db.transaction(); //_db.transaction();
QString strQuery = "delete from spammer where company_num = " + QString::number(_nCompany); QString strQuery = "delete from spammer_" + QString::number(_nCompany) + "_update";
QSqlQuery query(_db); QSqlQuery query(_db);
if (query.exec(strQuery.toUtf8()) == false) if (query.exec(strQuery.toUtf8()) == false)
{ {
@@ -286,7 +317,7 @@ bool SSpammer::STSpammer::uploadData(QSqlDatabase &_db, const int &_nCompany)
} }
//_db.commit(); //_db.commit();
//_db.transaction(); //_db.transaction();
strQuery = "insert into spammer (rank,id_num,id_id,nicknamecount,bodycount,replycount,spammervalue,company_num) VALUES ("; strQuery = "insert into spammer_" + QString::number(_nCompany) + "_update (rank,id_num,id_id,nicknamecount,bodycount,replycount,spammervalue,category_num,platformname_name,platformname_num) VALUES (";
query.clear(); query.clear();
@@ -300,7 +331,9 @@ bool SSpammer::STSpammer::uploadData(QSqlDatabase &_db, const int &_nCompany)
str += QString::number(stspammer.bodycount) + ","; str += QString::number(stspammer.bodycount) + ",";
str += QString::number(stspammer.replycount) + ","; str += QString::number(stspammer.replycount) + ",";
str += QString::number(stspammer.spammervalue, 'g', 3) + ","; str += QString::number(stspammer.spammervalue, 'g', 3) + ",";
str += QString::number(_nCompany) + ")"; str += QString::number(stspammer.category_num) + ",";
str += "'" + stspammer.platformname_name + "',";
str += QString::number(stspammer.platformname_num) + ")";
if (query.exec(str.toUtf8()) == false) if (query.exec(str.toUtf8()) == false)
{ {
@@ -319,6 +352,26 @@ bool SSpammer::STSpammer::uploadData(QSqlDatabase &_db, const int &_nCompany)
} }
bool SSpammer::STSpammer::changeTable(QSqlDatabase &_db, const int &_nCompany)
{
QString strQuery;
QSqlQuery query(_db);
strQuery = "RENAME TABLE ";
strQuery += "spammer_" + QString::number(_nCompany) + " TO " + "spammer_" + QString::number(_nCompany) + "_temp" + ",";
strQuery += "spammer_" + QString::number(_nCompany) + "_update" + " TO " + "spammer_" + QString::number(_nCompany) + ",";
strQuery += "spammer_" + QString::number(_nCompany) + "_temp" + " TO " + "spammer_" + QString::number(_nCompany) + "_update";
if (!query.exec(strQuery.toUtf8()))
{
m_pSInitializer->insertLog(query.lastQuery());
m_pSInitializer->insertLog(query.lastError().text());
return false;
}
return true;
}
void SSpammer::SStatsSpaSpammerRank::makeTable(SDatagroup &_datagroup, const QMap<int, stReal> &_mapCategory) void SSpammer::SStatsSpaSpammerRank::makeTable(SDatagroup &_datagroup, const QMap<int, stReal> &_mapCategory)
{ {
const QMap<QString, QStringList>* mapBody = _datagroup.getmapBody(); const QMap<QString, QStringList>* mapBody = _datagroup.getmapBody();
@@ -506,20 +559,22 @@ void SSpammer::SBodySpammerMap::makeTable(SDatagroup &_datagroup, const QMap<int
stbody.id_num = _datagroup.getstBody(strUrl)->id_num; stbody.id_num = _datagroup.getstBody(strUrl)->id_num;
stbody.category_num = iterPos.key(); stbody.category_num = iterPos.key();
stbody.realin |= REAL_BODY; stbody.realin |= REAL_BODY;
stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num;
stbody.body_date = _datagroup.getstBody(strUrl)->date;
if (streal.m_mapRealReplyUniqueUrl.contains(strUrl)) if (streal.m_mapRealReplyUniqueUrl.contains(strUrl))
{ {
stbody.realin |= REAL_REPLY; stbody.realin |= REAL_REPLY;
/*
foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl)) foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl))
{ {
_datagroup.addRealReplyCategory(strUrl, order, iterPos.key()); _datagroup.addRealReplyCategory(strUrl, order, iterPos.key());
} }
*/
} }
m_listMap.append(stbody); m_listMap.append(stbody);
//_datagroup.addRealBodyCategory(strUrl, iterPos.key()); _datagroup.addRealBodyCategory(strUrl, iterPos.key());
} }
/*
else if (streal.m_mapRealReplyUniqueUrl.contains(strUrl)) else if (streal.m_mapRealReplyUniqueUrl.contains(strUrl))
{ {
stBodySpammerMap stbody; stBodySpammerMap stbody;
@@ -528,13 +583,16 @@ void SSpammer::SBodySpammerMap::makeTable(SDatagroup &_datagroup, const QMap<int
stbody.category_num = iterPos.key(); stbody.category_num = iterPos.key();
stbody.id_num = _datagroup.getstBody(strUrl)->id_num; stbody.id_num = _datagroup.getstBody(strUrl)->id_num;
stbody.realin |= REAL_REPLY; stbody.realin |= REAL_REPLY;
stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num;
stbody.body_date = _datagroup.getstBody(strUrl)->date;
foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl)) foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl))
{ {
_datagroup.addRealReplyCategory(strUrl, order, iterPos.key()); _datagroup.addRealReplyCategory(strUrl, order, iterPos.key());
} }
m_listMap.append(stbody); m_listMap.append(stbody);
} }
*/
} }
} }
} }
@@ -585,7 +643,7 @@ bool SSpammer::SBodySpammerMap::uploadData(QSqlDatabase &_db, const int &_nCompa
m_pSInitializer->insertLog(query.lastError().text()); m_pSInitializer->insertLog(query.lastError().text());
return false; return false;
} }
strQuery = "insert into body_spammer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,realin)" strQuery = "insert into body_spammer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,realin,body_date,platformname_num)"
" values ("; " values (";
query.clear(); query.clear();
@@ -596,7 +654,9 @@ bool SSpammer::SBodySpammerMap::uploadData(QSqlDatabase &_db, const int &_nCompa
str += QString::number(stmap.category_num) + ","; str += QString::number(stmap.category_num) + ",";
str += QString::number(stmap.id_num) + ","; str += QString::number(stmap.id_num) + ",";
str += QString::number(stmap.body_num) + ","; str += QString::number(stmap.body_num) + ",";
str += QString::number(stmap.realin) + ")"; str += QString::number(stmap.realin) + ",";
str += "'" + stmap.body_date + "',";
str += QString::number(stmap.platformname_num) + ")";
if (query.exec(str.toUtf8()) == false) if (query.exec(str.toUtf8()) == false)
{ {
m_pSInitializer->insertLog(query.lastQuery()); m_pSInitializer->insertLog(query.lastQuery());
@@ -628,7 +688,12 @@ void SSpammer::SReplySpammerMap::makeTable(SDatagroup &_datagroup, const QMap<in
streply.body_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->body_num; streply.body_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->body_num;
streply.id_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->id_num; streply.id_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->id_num;
streply.reply_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->num; streply.reply_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->num;
streply.body_date = _datagroup.getstBody(iterPos1.key())->date;
m_listMap.append(streply); m_listMap.append(streply);
_datagroup.addRealReplyCategory(iterPos1.key(), iterPos1.value(), iterPos.key());
} }
/* /*
@@ -699,7 +764,7 @@ bool SSpammer::SReplySpammerMap::uploadData(QSqlDatabase &_db, const int &_nComp
m_pSInitializer->insertLog(query.lastError().text()); m_pSInitializer->insertLog(query.lastError().text());
return false; return false;
} }
strQuery = "insert into reply_spammer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,reply_num)" strQuery = "insert into reply_spammer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,reply_num,body_date)"
" values ("; " values (";
query.clear(); query.clear();
@@ -710,7 +775,8 @@ bool SSpammer::SReplySpammerMap::uploadData(QSqlDatabase &_db, const int &_nComp
str += QString::number(stmap.category_num) + ","; str += QString::number(stmap.category_num) + ",";
str += QString::number(stmap.id_num) + ","; str += QString::number(stmap.id_num) + ",";
str += QString::number(stmap.body_num) + ","; str += QString::number(stmap.body_num) + ",";
str += QString::number(stmap.reply_num) + ")"; str += QString::number(stmap.reply_num) + ",";
str += "'" + stmap.body_date + "')";
if (query.exec(str.toUtf8()) == false) if (query.exec(str.toUtf8()) == false)
{ {
m_pSInitializer->insertLog(query.lastQuery()); m_pSInitializer->insertLog(query.lastQuery());

View File

@@ -18,14 +18,16 @@ public:
struct stSpammer struct stSpammer
{ {
int id_num; int id_num;
int company_num; int category_num;
QString id_id; QString id_id;
int nicknamecount; int nicknamecount;
int bodycount; int bodycount;
int replycount; int replycount;
double spammervalue; double spammervalue;
int rank; int rank;
stSpammer():id_num(0), company_num(0), nicknamecount(0), bodycount(0), replycount(0), rank(0), spammervalue(0.0){} 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){}
}; };
@@ -52,7 +54,9 @@ public:
int id_num; int id_num;
int category_num; int category_num;
int realin; int realin;
stBodySpammerMap():num(0), body_num(0), id_num(0), category_num(0), realin(0){} QString body_date;
int platformname_num;
stBodySpammerMap():num(0), body_num(0), id_num(0), category_num(0), realin(0), platformname_num(0){}
}; };
@@ -63,6 +67,7 @@ public:
int body_num; int body_num;
int id_num; int id_num;
int category_num; int category_num;
QString body_date;
stReplySpammerMap():num(0), body_num(0), reply_num(0), id_num(0), category_num(0){} stReplySpammerMap():num(0), body_num(0), reply_num(0), id_num(0), category_num(0){}
}; };
@@ -85,6 +90,7 @@ public:
void clear(){ m_listMap.clear(); } void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory, QSet<int>& setSpammer); void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory, QSet<int>& setSpammer);
bool uploadData(QSqlDatabase &_db, const int &_nCompany); bool uploadData(QSqlDatabase &_db, const int &_nCompany);
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
}; };