전체 카테고리 전부 삭제
컨슈머 마케터/즐겨찾기 업데이트 git-svn-id: svn://192.168.0.12/source@282 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
@@ -183,10 +183,12 @@ void SConsumer::SBodyConsumerMap::makeTable(SDatagroup &_datagroup, const QMap<i
|
|||||||
|
|
||||||
stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num;
|
stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num;
|
||||||
stbody.platformform_num = _datagroup.getstBody(strUrl)->platformform_num;
|
stbody.platformform_num = _datagroup.getstBody(strUrl)->platformform_num;
|
||||||
stbody.body_date = _datagroup.getstBody(strUrl)->date;
|
stbody.date = _datagroup.getstBody(strUrl)->date;
|
||||||
stbody.body_replycount = _datagroup.getstBody(strUrl)->replycount;
|
stbody.replycount = _datagroup.getstBody(strUrl)->replycount;
|
||||||
stbody.body_view = _datagroup.getstBody(strUrl)->view;
|
stbody.view = _datagroup.getstBody(strUrl)->view;
|
||||||
stbody.body_id_num = _datagroup.getstBody(strUrl)->id_num;
|
stbody.id_num = _datagroup.getstBody(strUrl)->id_num;
|
||||||
|
stbody.community_num = _datagroup.getstBody(strUrl)->community_num;
|
||||||
|
stbody.nickname_num = _datagroup.getstBody(strUrl)->nickname_num;
|
||||||
|
|
||||||
if (streal.m_mapRealReplyUniqueUrl.contains(strUrl))
|
if (streal.m_mapRealReplyUniqueUrl.contains(strUrl))
|
||||||
{
|
{
|
||||||
@@ -210,10 +212,12 @@ void SConsumer::SBodyConsumerMap::makeTable(SDatagroup &_datagroup, const QMap<i
|
|||||||
|
|
||||||
stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num;
|
stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num;
|
||||||
stbody.platformform_num = _datagroup.getstBody(strUrl)->platformform_num;
|
stbody.platformform_num = _datagroup.getstBody(strUrl)->platformform_num;
|
||||||
stbody.body_date = _datagroup.getstBody(strUrl)->date;
|
stbody.date = _datagroup.getstBody(strUrl)->date;
|
||||||
stbody.body_replycount = _datagroup.getstBody(strUrl)->replycount;
|
stbody.replycount = _datagroup.getstBody(strUrl)->replycount;
|
||||||
stbody.body_view = _datagroup.getstBody(strUrl)->view;
|
stbody.view = _datagroup.getstBody(strUrl)->view;
|
||||||
stbody.body_id_num = _datagroup.getstBody(strUrl)->id_num;
|
stbody.id_num = _datagroup.getstBody(strUrl)->id_num;
|
||||||
|
stbody.community_num = _datagroup.getstBody(strUrl)->community_num;
|
||||||
|
stbody.nickname_num = _datagroup.getstBody(strUrl)->nickname_num;
|
||||||
|
|
||||||
foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl))
|
foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl))
|
||||||
{
|
{
|
||||||
@@ -288,7 +292,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,platformname_num,platformform_num,body_date,body_replycount,body_view,body_id_num) VALUES (");
|
"_update (num,body_num,category_num,realin,platformname_num,platformform_num,date,replycount,view,id_num,community_num,nickname_num) VALUES (");
|
||||||
|
|
||||||
query.clear();
|
query.clear();
|
||||||
|
|
||||||
@@ -301,10 +305,12 @@ bool SConsumer::SBodyConsumerMap::uploadData(QSqlDatabase &_db, const int &_nCom
|
|||||||
str += QString::number(stbody.realin) + ",";
|
str += QString::number(stbody.realin) + ",";
|
||||||
str += QString::number(stbody.platformname_num) + ",";
|
str += QString::number(stbody.platformname_num) + ",";
|
||||||
str += QString::number(stbody.platformform_num) + ",";
|
str += QString::number(stbody.platformform_num) + ",";
|
||||||
str += "'" + stbody.body_date + "',";
|
str += "'" + stbody.date + "',";
|
||||||
str += QString::number(stbody.body_replycount) + ",";
|
str += QString::number(stbody.replycount) + ",";
|
||||||
str += QString::number(stbody.body_view) + ",";
|
str += QString::number(stbody.view) + ",";
|
||||||
str += QString::number(stbody.body_id_num) + ")";
|
str += QString::number(stbody.id_num) + ",";
|
||||||
|
str += QString::number(stbody.community_num) + ",";
|
||||||
|
str += QString::number(stbody.nickname_num) + ")";
|
||||||
|
|
||||||
if (query.exec(str.toUtf8()) == false)
|
if (query.exec(str.toUtf8()) == false)
|
||||||
{
|
{
|
||||||
@@ -354,6 +360,7 @@ void SConsumer::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap<int, st
|
|||||||
QDate dateStartReply(2100,1,1),dateEndReply(2000,1,1);
|
QDate dateStartReply(2100,1,1),dateEndReply(2000,1,1);
|
||||||
|
|
||||||
QList<stBuzzy> listBuzzy;
|
QList<stBuzzy> listBuzzy;
|
||||||
|
stReal allCategory;
|
||||||
// filtered
|
// filtered
|
||||||
{
|
{
|
||||||
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++)
|
||||||
@@ -363,6 +370,8 @@ void SConsumer::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap<int, st
|
|||||||
const stReal &streal = iterPos.value();
|
const stReal &streal = iterPos.value();
|
||||||
foreach (const QString& strUrl, streal.m_setRealBodyUrl)
|
foreach (const QString& strUrl, streal.m_setRealBodyUrl)
|
||||||
{
|
{
|
||||||
|
allCategory.m_setRealBodyUrl.insert(strUrl);
|
||||||
|
allCategory.m_setRealAllUrl.insert(strUrl);
|
||||||
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();
|
||||||
@@ -383,6 +392,9 @@ void SConsumer::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap<int, st
|
|||||||
for (QMap<QString, int>::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++)
|
for (QMap<QString, int>::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++)
|
||||||
{
|
{
|
||||||
const QStringList &slReply = (*mapReply)[iterPos1.key()][iterPos1.value()];
|
const QStringList &slReply = (*mapReply)[iterPos1.key()][iterPos1.value()];
|
||||||
|
if (!allCategory.m_mapRealReplyUniqueUrl.contains(iterPos1.key()) || !allCategory.m_mapRealReplyUniqueUrl.values(iterPos1.key()).contains(iterPos1.value()))
|
||||||
|
allCategory.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value());
|
||||||
|
allCategory.m_setRealAllUrl.insert(iterPos1.key());
|
||||||
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)
|
if (date.year() == 1990)
|
||||||
continue;
|
continue;
|
||||||
@@ -400,6 +412,37 @@ void SConsumer::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap<int, st
|
|||||||
listBuzzy.append(stbuzzy);
|
listBuzzy.append(stbuzzy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//all filtered category
|
||||||
|
{
|
||||||
|
stBuzzy stbuzzy;
|
||||||
|
stbuzzy.m_nCategory = -1;
|
||||||
|
foreach (const QString& strUrl, allCategory.m_setRealBodyUrl)
|
||||||
|
{
|
||||||
|
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.year() == 1990)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (stbuzzy.m_mapBodyBuzz.contains(date))
|
||||||
|
stbuzzy.m_mapBodyBuzz[date]++;
|
||||||
|
else
|
||||||
|
stbuzzy.m_mapBodyBuzz.insert(date, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (QMap<QString, int>::const_iterator iterPos1 = allCategory.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != allCategory.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++)
|
||||||
|
{
|
||||||
|
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();
|
||||||
|
if (date.year() == 1990)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (stbuzzy.m_mapReplyBuzz.contains(date))
|
||||||
|
stbuzzy.m_mapReplyBuzz[date]++;
|
||||||
|
else
|
||||||
|
stbuzzy.m_mapReplyBuzz.insert(date, 1);
|
||||||
|
}
|
||||||
|
listBuzzy.append(stbuzzy);
|
||||||
|
}
|
||||||
|
|
||||||
//all buzzy
|
//all buzzy
|
||||||
{
|
{
|
||||||
stBuzzy stbuzzy;
|
stBuzzy stbuzzy;
|
||||||
@@ -435,9 +478,8 @@ void SConsumer::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap<int, st
|
|||||||
|
|
||||||
int nTotalCount = 0, nTotalBodyCount = 0, nTotalReplyCount = 0;
|
int nTotalCount = 0, nTotalBodyCount = 0, nTotalReplyCount = 0;
|
||||||
|
|
||||||
if (_mapCategory.contains(m_pSInitializer->getAllCategoryNum(2)))
|
|
||||||
{
|
{
|
||||||
foreach (const QString& strUrl, _mapCategory[m_pSInitializer->getAllCategoryNum(2)].m_setRealAllUrl)
|
foreach (const QString& strUrl, allCategory.m_setRealAllUrl)
|
||||||
{
|
{
|
||||||
nTotalBodyCount++;
|
nTotalBodyCount++;
|
||||||
nTotalReplyCount += (*mapReply)[strUrl].size();
|
nTotalReplyCount += (*mapReply)[strUrl].size();
|
||||||
@@ -477,10 +519,12 @@ void SConsumer::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap<int, st
|
|||||||
QJsonObject jsNameAll;
|
QJsonObject jsNameAll;
|
||||||
QJsonObject jsNameBody;
|
QJsonObject jsNameBody;
|
||||||
|
|
||||||
if (stbuzzy.m_nCategory != 0)
|
if (stbuzzy.m_nCategory > 0)
|
||||||
jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = m_pSInitializer->getCategoryName(stbuzzy.m_nCategory);
|
jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = m_pSInitializer->getCategoryName(stbuzzy.m_nCategory);
|
||||||
else
|
else if (stbuzzy.m_nCategory == 0)
|
||||||
jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = "ALL";
|
jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = "ALL";
|
||||||
|
else
|
||||||
|
jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = "ALLCATEGORY";
|
||||||
|
|
||||||
jsNameAll["value"] = jsValueAll;
|
jsNameAll["value"] = jsValueAll;
|
||||||
jsNameBody["value"] = jsValueBody;
|
jsNameBody["value"] = jsValueBody;
|
||||||
@@ -523,6 +567,7 @@ void SConsumer::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap<int, st
|
|||||||
QJsonDocument jdBody(jobjBody);
|
QJsonDocument jdBody(jobjBody);
|
||||||
QJsonDocument jdReply(jobjReply);
|
QJsonDocument jdReply(jobjReply);
|
||||||
|
|
||||||
|
|
||||||
stbodybuzz.jdata = jdBody.toJson(QJsonDocument::Compact);
|
stbodybuzz.jdata = jdBody.toJson(QJsonDocument::Compact);
|
||||||
streplybuzz.jdata = jdReply.toJson(QJsonDocument::Compact);
|
streplybuzz.jdata = jdReply.toJson(QJsonDocument::Compact);
|
||||||
stallbuzz.jdata = jdAll.toJson(QJsonDocument::Compact);
|
stallbuzz.jdata = jdAll.toJson(QJsonDocument::Compact);
|
||||||
@@ -826,3 +871,99 @@ bool SConsumer::SStatsConUserBuzzybyday::uploadData(QSqlDatabase &_db, const int
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
bool SConsumerMarketer::makeTable(SDatagroup &_datagroup)
|
||||||
|
{
|
||||||
|
|
||||||
|
const QMap<QString, QStringList>* mapBody = _datagroup.getmapBody();
|
||||||
|
const QMap<QString, QMap<int, QStringList> >* mapReply = _datagroup.getmapReply();
|
||||||
|
const int* anColumn = m_pSInitializer->getColumnIntArray();
|
||||||
|
|
||||||
|
QMap<int, QString> mapConsumerMarketer = m_pSInitializer->getConsumerMaketer();
|
||||||
|
|
||||||
|
for (QMap<int, QString>::iterator iterPos = mapConsumerMarketer.begin(); iterPos != mapConsumerMarketer.end(); ++iterPos)
|
||||||
|
{
|
||||||
|
if (iterPos.value().trimmed().isEmpty())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
|
||||||
|
for (QMap<QString, QStringList>::const_iterator iterPos1 = mapBody->cbegin(); iterPos1 != mapBody->cend(); ++iterPos1)
|
||||||
|
{
|
||||||
|
if ((m_pSInitializer->getPlatformName(iterPos1.value()[anColumn[SInitializer::E_DATA_platform_name]].trimmed()) == iterPos.key())
|
||||||
|
&& (iterPos.value() == iterPos1.value()[anColumn[SInitializer::E_DATA_article_id]].trimmed()))
|
||||||
|
{
|
||||||
|
_datagroup.addRealUrl(iterPos1.value()[anColumn[SInitializer::E_DATA_article_url]].trimmed());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (QMap<QString, QMap<int, QStringList> >::const_iterator iterPos1 = mapReply->cbegin(); iterPos1 != mapReply->cend(); ++iterPos1)
|
||||||
|
{
|
||||||
|
for(QMap<int, QStringList>::const_iterator iterPos2 = iterPos1->cbegin(); iterPos2 != iterPos1->cend(); ++iterPos2)
|
||||||
|
{
|
||||||
|
if ((m_pSInitializer->getPlatformName(iterPos2.value()[anColumn[SInitializer::E_DATA_platform_name]].trimmed()) == iterPos.key())
|
||||||
|
&& (iterPos.value() == iterPos2.value()[anColumn[SInitializer::E_DATA_article_id]].trimmed()))
|
||||||
|
{
|
||||||
|
_datagroup.addRealUrl(iterPos2.value()[anColumn[SInitializer::E_DATA_article_url]].trimmed());
|
||||||
|
//_datagroup.addRealUrl(iterPos1.key().trimmed());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SConsumerCheckList::makeTable(SDatagroup &_datagroup)
|
||||||
|
{
|
||||||
|
|
||||||
|
QStringList slUrl = m_pSInitializer->getConsumerCheckList();
|
||||||
|
QMap<int, QString> mapUsers = m_pSInitializer->getConsumerCheckListUser();
|
||||||
|
if (slUrl.isEmpty() && mapUsers.isEmpty())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
const QMap<QString, QStringList>* mapBody = _datagroup.getmapBody();
|
||||||
|
const QMap<QString, QMap<int, QStringList> >* mapReply = _datagroup.getmapReply();
|
||||||
|
const int* anColumn = m_pSInitializer->getColumnIntArray();
|
||||||
|
|
||||||
|
const QStringList* pslorderedUrl = _datagroup.getOrderedUrl();
|
||||||
|
|
||||||
|
foreach (const QString& strUrl, *pslorderedUrl)
|
||||||
|
{
|
||||||
|
foreach (const QString& url, slUrl)
|
||||||
|
{
|
||||||
|
if (!url.trimmed().isEmpty() && strUrl.contains(url.trimmed()))
|
||||||
|
_datagroup.addRealUrl(strUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(QMap<int, QString>::iterator iterPos = mapUsers.begin(); iterPos != mapUsers.end(); ++iterPos)
|
||||||
|
{
|
||||||
|
if (iterPos.value().trimmed().isEmpty())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (m_pSInitializer->getPlatformName((*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_name]].trimmed()) == iterPos.key()
|
||||||
|
&& (*mapBody)[strUrl][anColumn[SInitializer::E_DATA_article_id]].trimmed() == iterPos.value().trimmed())
|
||||||
|
{
|
||||||
|
_datagroup.addRealUrl((*mapBody)[strUrl][anColumn[SInitializer::E_DATA_article_url]].trimmed());
|
||||||
|
//_datagroup.addRealUrl(strUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mapReply->contains(strUrl))
|
||||||
|
{
|
||||||
|
for (QMap<int, QStringList>::const_iterator iterPos1 = (*mapReply)[strUrl].cbegin(); iterPos1 != (*mapReply)[strUrl].cend(); ++iterPos1)
|
||||||
|
{
|
||||||
|
if (m_pSInitializer->getPlatformName(iterPos1.value()[anColumn[SInitializer::E_DATA_platform_name]].trimmed()) == iterPos.key()
|
||||||
|
&& iterPos1.value()[anColumn[SInitializer::E_DATA_article_id]].trimmed() == iterPos.value().trimmed())
|
||||||
|
{
|
||||||
|
//_datagroup.addRealUrl(strUrl);
|
||||||
|
_datagroup.addRealUrl(iterPos1.value()[anColumn[SInitializer::E_DATA_article_url]].trimmed());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,11 +21,13 @@ public:
|
|||||||
int realin;
|
int realin;
|
||||||
int platformname_num;
|
int platformname_num;
|
||||||
int platformform_num;
|
int platformform_num;
|
||||||
QString body_date;
|
QString date;
|
||||||
int body_replycount;
|
int replycount;
|
||||||
int body_view;
|
int view;
|
||||||
int body_id_num;
|
int 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){}
|
int community_num;
|
||||||
|
int nickname_num;
|
||||||
|
stBodyConsumerMap():num(0), body_num(0), category_num(0), realin(0), platformname_num(0), platformform_num(0), replycount(0), view(0), id_num(0), community_num(0), nickname_num(0){}
|
||||||
};
|
};
|
||||||
struct stReplyConsumerMap
|
struct stReplyConsumerMap
|
||||||
{
|
{
|
||||||
@@ -139,6 +141,34 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class SConsumerAssist:public SService
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual void setInitiaizer(SInitializer &_initializer)
|
||||||
|
{
|
||||||
|
m_pSInitializer = &_initializer;
|
||||||
|
}
|
||||||
|
virtual bool uploadData(int _companyNum){ return true; }
|
||||||
|
virtual bool changeTable(int _companyNum){ return true; }
|
||||||
|
virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList<SInitializer::stFilter> &_listFilter){ return true; }
|
||||||
|
virtual bool makeOverallCategory(int _nCategory){ return true; }
|
||||||
|
virtual bool makeTable(SDatagroup &_datagroup){return true;}
|
||||||
|
};
|
||||||
|
|
||||||
|
class SConsumerMarketer:public SConsumerAssist
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
virtual bool makeTable(SDatagroup &_datagroup);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class SConsumerCheckList:public SConsumerAssist
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
virtual bool makeTable(SDatagroup &_datagroup);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -114,6 +114,8 @@ bool SDatagroup::loadData(const int& _nDatagroupNumber)
|
|||||||
if (strList[anColumn[SInitializer::E_DATA_article_nickname]].trimmed().isEmpty()) continue;
|
if (strList[anColumn[SInitializer::E_DATA_article_nickname]].trimmed().isEmpty()) continue;
|
||||||
if (strList[anColumn[SInitializer::E_DATA_platform_id]].trimmed().isEmpty()) continue;
|
if (strList[anColumn[SInitializer::E_DATA_platform_id]].trimmed().isEmpty()) continue;
|
||||||
if (strList[anColumn[SInitializer::E_DATA_platform_id]].trimmed().isEmpty()) continue;
|
if (strList[anColumn[SInitializer::E_DATA_platform_id]].trimmed().isEmpty()) continue;
|
||||||
|
if (!strList[anColumn[SInitializer::E_DATA_article_url]].trimmed().startsWith("http")) continue;
|
||||||
|
|
||||||
setCheckDupUrl.insert(strList[anColumn[SInitializer::E_DATA_article_url]].trimmed());
|
setCheckDupUrl.insert(strList[anColumn[SInitializer::E_DATA_article_url]].trimmed());
|
||||||
m_slOrderedBodyUrl.append(strList[anColumn[SInitializer::E_DATA_article_url]].trimmed());
|
m_slOrderedBodyUrl.append(strList[anColumn[SInitializer::E_DATA_article_url]].trimmed());
|
||||||
m_mapBody.insert(strList[anColumn[SInitializer::E_DATA_article_url]].trimmed(), strList);
|
m_mapBody.insert(strList[anColumn[SInitializer::E_DATA_article_url]].trimmed(), strList);
|
||||||
@@ -205,6 +207,7 @@ void SDatagroup::addRealReplyCategory(const QString& _strUrl, const int& _order,
|
|||||||
|
|
||||||
void SDatagroup::addRealUrl(const QString& _strUrl)
|
void SDatagroup::addRealUrl(const QString& _strUrl)
|
||||||
{
|
{
|
||||||
|
if (_strUrl.trimmed().startsWith("http"))
|
||||||
m_setFilteredUrl.insert(_strUrl.trimmed());
|
m_setFilteredUrl.insert(_strUrl.trimmed());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ bool SFilterProcess::init(QString _strFilterProcessGroupID, QString _strFilterPr
|
|||||||
m_SInfluencer.setInitiaizer(m_SInitializer);
|
m_SInfluencer.setInitiaizer(m_SInitializer);
|
||||||
m_SSpammer.setInitiaizer(m_SInitializer);
|
m_SSpammer.setInitiaizer(m_SInitializer);
|
||||||
m_SPowercafe.setInitiaizer(m_SInitializer);
|
m_SPowercafe.setInitiaizer(m_SInitializer);
|
||||||
|
m_SConsumerMarketer.setInitiaizer(m_SInitializer);
|
||||||
|
m_SConsumerCheckList.setInitiaizer(m_SInitializer);
|
||||||
m_SInitializer.closeConnection(SDBManager::E_DATABASE_WEB);
|
m_SInitializer.closeConnection(SDBManager::E_DATABASE_WEB);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -72,12 +74,14 @@ bool SFilterProcess::run()
|
|||||||
}
|
}
|
||||||
case E_PROCSS_TYPE_SEND:
|
case E_PROCSS_TYPE_SEND:
|
||||||
{
|
{
|
||||||
|
m_SConsumerMarketer.makeTable(m_SDatagroup);
|
||||||
|
m_SConsumerCheckList.makeTable(m_SDatagroup);
|
||||||
m_SDatagroup.makeTable();
|
m_SDatagroup.makeTable();
|
||||||
|
|
||||||
m_SConsumer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_CONSUMER));
|
//m_SConsumer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_CONSUMER));
|
||||||
//m_SInfluencer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_INFLUENCER));
|
//m_SInfluencer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_INFLUENCER));
|
||||||
m_SSpammer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_SPAMMER));
|
//m_SSpammer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_SPAMMER));
|
||||||
m_SPowercafe.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_POWERCAFE));
|
//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);
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ private:
|
|||||||
SInfluencer m_SInfluencer;
|
SInfluencer m_SInfluencer;
|
||||||
SSpammer m_SSpammer;
|
SSpammer m_SSpammer;
|
||||||
SPowercafe m_SPowercafe;
|
SPowercafe m_SPowercafe;
|
||||||
|
SConsumerMarketer m_SConsumerMarketer;
|
||||||
|
SConsumerCheckList m_SConsumerCheckList;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum E_SERVICE
|
enum E_SERVICE
|
||||||
|
|||||||
@@ -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-07-08T16:55:53. -->
|
<!-- Written by QtCreator 3.3.0, 2016-07-18T16:46:48. -->
|
||||||
<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">"514" "testall"</value>
|
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments">"527" "testall2"</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>
|
||||||
|
|||||||
@@ -722,7 +722,7 @@ void SInfluencer::SBodyInfluencerMap::makeTable(SDatagroup &_datagroup, const QM
|
|||||||
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.community_num = _datagroup.getstBody(strUrl)->community_num;
|
||||||
stbody.body_date = _datagroup.getstBody(strUrl)->date;
|
stbody.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))
|
||||||
@@ -784,7 +784,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,community_num,body_date)"
|
strQuery = "insert into body_influencer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,realin,community_num,date)"
|
||||||
" values (";
|
" values (";
|
||||||
query.clear();
|
query.clear();
|
||||||
|
|
||||||
@@ -798,7 +798,7 @@ bool SInfluencer::SBodyInfluencerMap::uploadData(QSqlDatabase &_db, const int &_
|
|||||||
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 += QString::number(stmap.community_num) + ",";
|
||||||
str += "'" + stmap.body_date + "')";
|
str += "'" + stmap.date + "')";
|
||||||
|
|
||||||
if (query.exec(str.toUtf8()) == false)
|
if (query.exec(str.toUtf8()) == false)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ public:
|
|||||||
int category_num;
|
int category_num;
|
||||||
int realin;
|
int realin;
|
||||||
int community_num;
|
int community_num;
|
||||||
QString body_date;
|
QString date;
|
||||||
stBodyInfluencerMap():num(0),body_num(0), id_num(0), category_num(0), realin(0), community_num(0){}
|
stBodyInfluencerMap():num(0),body_num(0), id_num(0), category_num(0), realin(0), community_num(0){}
|
||||||
};
|
};
|
||||||
struct stReplyInfluencerMap
|
struct stReplyInfluencerMap
|
||||||
|
|||||||
@@ -237,6 +237,8 @@ bool SInitializer::init(const QString& _strFilterProcessGroupID, const QString&
|
|||||||
b_ok &= initPlatform();
|
b_ok &= initPlatform();
|
||||||
//b_ok &= initConsumerCategory();
|
//b_ok &= initConsumerCategory();
|
||||||
b_ok &= initCategory();
|
b_ok &= initCategory();
|
||||||
|
b_ok &= initConsumerMarketer();
|
||||||
|
b_ok &= initConsumerCheckList();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (!b_ok)
|
if (!b_ok)
|
||||||
@@ -385,6 +387,74 @@ bool SInitializer::initCategory()
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SInitializer::initConsumerMarketer()
|
||||||
|
{
|
||||||
|
if (m_listFilterProcess.isEmpty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
QString strQuery = QString("select id_id, platformname_num from marketer where company_num = ")
|
||||||
|
+ QString::number(m_listFilterProcess.last().m_nCompanyNum);
|
||||||
|
|
||||||
|
QSqlQuery query(m_sDBManager[SDBManager::E_DATABASE_WEB]);
|
||||||
|
|
||||||
|
if(query.exec(strQuery.toUtf8()) == false)
|
||||||
|
{
|
||||||
|
insertLog(query.lastQuery());
|
||||||
|
insertLog(query.lastError().text());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
while(query.next())
|
||||||
|
m_mapConsumerMaketers.insertMulti(query.value(1).toInt(),
|
||||||
|
query.value(0).toString().trimmed());
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SInitializer::initConsumerCheckList()
|
||||||
|
{
|
||||||
|
if (m_listFilterProcess.isEmpty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
QString strQuery = QString("select body_url, id_id, platformname_num from checklist_consumer where company_num = ")
|
||||||
|
+ QString::number(m_listFilterProcess.last().m_nCompanyNum);
|
||||||
|
|
||||||
|
QSqlQuery query(m_sDBManager[SDBManager::E_DATABASE_WEB]);
|
||||||
|
|
||||||
|
if(query.exec(strQuery.toUtf8()) == false)
|
||||||
|
{
|
||||||
|
insertLog(query.lastQuery());
|
||||||
|
insertLog(query.lastError().text());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
while(query.next())
|
||||||
|
{
|
||||||
|
if (!query.value(0).toString().trimmed().isEmpty())
|
||||||
|
m_slConsumerCheckList.append(query.value(0).toString().trimmed());
|
||||||
|
if (!query.value(1).toString().trimmed().isEmpty())
|
||||||
|
m_mapConsumerCheckListUser.insertMulti(query.value(2).toInt(), query.value(1).toString().trimmed());
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
QMap<int, QString> SInitializer::getConsumerMaketer()
|
||||||
|
{
|
||||||
|
return m_mapConsumerMaketers;
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList SInitializer::getConsumerCheckList()
|
||||||
|
{
|
||||||
|
return m_slConsumerCheckList;
|
||||||
|
}
|
||||||
|
|
||||||
|
QMap<int, QString> SInitializer::getConsumerCheckListUser()
|
||||||
|
{
|
||||||
|
return m_mapConsumerCheckListUser;
|
||||||
|
}
|
||||||
|
|
||||||
QString SInitializer::getCategoryName(int _nCategory) const
|
QString SInitializer::getCategoryName(int _nCategory) const
|
||||||
{
|
{
|
||||||
return m_mapCategory.value(_nCategory);
|
return m_mapCategory.value(_nCategory);
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ private:
|
|||||||
//bool initConsumerCategory();
|
//bool initConsumerCategory();
|
||||||
bool initCategory();
|
bool initCategory();
|
||||||
bool initBlogPageNum();
|
bool initBlogPageNum();
|
||||||
|
bool initConsumerMarketer();
|
||||||
|
bool initConsumerCheckList();
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -179,6 +181,9 @@ private:
|
|||||||
int m_anAllCategory[E_SERVICE_MAX];
|
int m_anAllCategory[E_SERVICE_MAX];
|
||||||
QMap<int, QString> m_mapCategory;
|
QMap<int, QString> m_mapCategory;
|
||||||
int m_nBlogPageNum;
|
int m_nBlogPageNum;
|
||||||
|
QMap<int, QString> m_mapConsumerMaketers;
|
||||||
|
QMap<int, QString> m_mapConsumerCheckListUser;
|
||||||
|
QStringList m_slConsumerCheckList;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool init(const QString& _strFilterProcessGroupID, const QString& _strFilterProcessGroupName);
|
bool init(const QString& _strFilterProcessGroupID, const QString& _strFilterProcessGroupName);
|
||||||
@@ -208,6 +213,9 @@ public:
|
|||||||
int getAllCategoryNum(int _nService);
|
int getAllCategoryNum(int _nService);
|
||||||
QString getCategoryName(int _nCategory) const;
|
QString getCategoryName(int _nCategory) const;
|
||||||
int getBlogPageNum();
|
int getBlogPageNum();
|
||||||
|
QMap<int, QString> getConsumerMaketer();
|
||||||
|
QStringList getConsumerCheckList();
|
||||||
|
QMap<int, QString> getConsumerCheckListUser();
|
||||||
//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);
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ bool SPowercafe::makeOverallCategory(int _categoryNum)
|
|||||||
|
|
||||||
bool SPowercafe::makeTable(SDatagroup &_datagroup)
|
bool SPowercafe::makeTable(SDatagroup &_datagroup)
|
||||||
{
|
{
|
||||||
if (m_mapCategory.size() > 1)
|
if (m_mapCategory.size() > 0)
|
||||||
{
|
{
|
||||||
m_pSInitializer->insertLog("Make powercafe tables");
|
m_pSInitializer->insertLog("Make powercafe tables");
|
||||||
m_pSInitializer->insertLog("Make powercafe body tables");
|
m_pSInitializer->insertLog("Make powercafe body tables");
|
||||||
@@ -628,7 +628,7 @@ 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.date = _datagroup.getstBody(strUrl)->date;
|
||||||
stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num;
|
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());
|
||||||
@@ -717,7 +717,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,body_date,platformname_num)"
|
+ "_update (num,category_num,community_num,body_num,realin,date,platformname_num)"
|
||||||
" values (";
|
" values (";
|
||||||
query.clear();
|
query.clear();
|
||||||
|
|
||||||
@@ -729,7 +729,7 @@ bool SPowercafe::SBodyPowercafeMap::uploadData(QSqlDatabase &_db, const int &_nC
|
|||||||
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 += "'" + stmap.date + "',";
|
||||||
str += QString::number(stmap.platformname_num) + ")";
|
str += QString::number(stmap.platformname_num) + ")";
|
||||||
|
|
||||||
|
|
||||||
@@ -911,6 +911,8 @@ void SPowercafe::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap<int, s
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
stReal allCategory;
|
||||||
|
|
||||||
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<QString, stPowercafeRank> mapScore;
|
QMap<QString, stPowercafeRank> mapScore;
|
||||||
@@ -923,7 +925,8 @@ void SPowercafe::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap<int, s
|
|||||||
if (((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "blog")||
|
if (((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "blog")||
|
||||||
((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" ))
|
((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" ))
|
||||||
continue;
|
continue;
|
||||||
|
allCategory.m_setRealBodyUrl.insert(_url);
|
||||||
|
allCategory.m_setRealAllUrl.insert(_url);
|
||||||
QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ",";
|
QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ",";
|
||||||
strKey += ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ",");
|
strKey += ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ",");
|
||||||
strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed();
|
strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed();
|
||||||
@@ -949,6 +952,10 @@ void SPowercafe::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap<int, s
|
|||||||
if (((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "blog")||
|
if (((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "blog")||
|
||||||
((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" ))
|
((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" ))
|
||||||
continue;
|
continue;
|
||||||
|
allCategory.m_setRealAllUrl.insert(iterPos1.key());
|
||||||
|
if (!allCategory.m_mapRealReplyUniqueUrl.contains(iterPos1.key()) || !allCategory.m_mapRealReplyUniqueUrl.values(iterPos1.key()).contains(iterPos1.value()))
|
||||||
|
allCategory.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value());
|
||||||
|
|
||||||
QString strUrl = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_url]].trimmed();
|
QString strUrl = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_url]].trimmed();
|
||||||
QString strKey = (*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ",";
|
QString strKey = (*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ",";
|
||||||
strKey += ((*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ",");
|
strKey += ((*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ",");
|
||||||
@@ -1036,12 +1043,136 @@ void SPowercafe::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap<int, s
|
|||||||
stjsonRank.jdata = jsonDoc.toJson();
|
stjsonRank.jdata = jsonDoc.toJson();
|
||||||
m_listMap.append(stjsonRank);
|
m_listMap.append(stjsonRank);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//all Category
|
||||||
|
{
|
||||||
|
QMap<QString, stPowercafeRank> mapScore;
|
||||||
|
const stReal& streal = allCategory;
|
||||||
|
QDate dateStart(2030, 1, 1);
|
||||||
|
QDate dateEnd(2000, 1, 1);
|
||||||
|
|
||||||
|
foreach (const QString& _url, streal.m_setRealBodyUrl)
|
||||||
|
{
|
||||||
|
if (((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "blog")||
|
||||||
|
((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" ))
|
||||||
|
continue;
|
||||||
|
QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ",";
|
||||||
|
strKey += ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ",");
|
||||||
|
strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed();
|
||||||
|
if (!mapScore.contains(strKey))
|
||||||
|
{
|
||||||
|
mapScore.insert(strKey, stPowercafeRank());
|
||||||
|
mapScore[strKey].url = _datagroup.getstCommunity((*mapBody)[_url])->url;
|
||||||
|
mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[_url])->title ;
|
||||||
|
if (mapScore[strKey].community.trimmed().isEmpty())
|
||||||
|
mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[_url])->id;
|
||||||
|
}
|
||||||
|
mapScore[strKey].count++;
|
||||||
|
QDate dateThis = QDateTime::fromString((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date();
|
||||||
|
if (dateThis.isValid() && dateThis.year() > 1990)
|
||||||
|
{
|
||||||
|
dateStart = (dateStart < dateThis) ? dateStart : dateThis;
|
||||||
|
dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (QMap<QString, int>::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++)
|
||||||
|
{
|
||||||
|
if (((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "blog")||
|
||||||
|
((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" ))
|
||||||
|
continue;
|
||||||
|
QString strUrl = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_url]].trimmed();
|
||||||
|
QString strKey = (*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ",";
|
||||||
|
strKey += ((*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ",");
|
||||||
|
strKey += (*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_form]].trimmed();
|
||||||
|
if (!mapScore.contains(strKey))
|
||||||
|
{
|
||||||
|
mapScore.insert(strKey, stPowercafeRank());
|
||||||
|
mapScore[strKey].url = _datagroup.getstCommunity((*mapBody)[strUrl])->url;
|
||||||
|
mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[strUrl])->title;
|
||||||
|
if (mapScore[strKey].community.trimmed().isEmpty())
|
||||||
|
mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[strUrl])->id;
|
||||||
|
}
|
||||||
|
mapScore[strKey].count++;
|
||||||
|
QDate dateThis = QDateTime::fromString((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date();
|
||||||
|
if (dateThis.isValid() && dateThis.year() > 1990)
|
||||||
|
{
|
||||||
|
dateStart = (dateStart < dateThis) ? dateStart : dateThis;
|
||||||
|
dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//QList<stSpammerRank> listSpammer;
|
||||||
|
QMap<int, QList<stPowercafeRank> > mapRank;
|
||||||
|
for (QMap<QString, stPowercafeRank>::iterator iterPos1 = mapScore.begin(); iterPos1 != mapScore.end(); iterPos1++)
|
||||||
|
{
|
||||||
|
QString strPlatformName = iterPos1.key().split(",").at(1);
|
||||||
|
if (!mapRank.contains(m_pSInitializer->getPlatformName(strPlatformName)))
|
||||||
|
mapRank.insert(m_pSInitializer->getPlatformName(strPlatformName), QList<stPowercafeRank>());
|
||||||
|
|
||||||
|
mapRank[m_pSInitializer->getPlatformName(strPlatformName)].append(iterPos1.value());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (QMap<int, QList<stPowercafeRank> >::iterator iterPos1 = mapRank.begin(); iterPos1 != mapRank.end(); iterPos1++)
|
||||||
|
qSort(iterPos1.value().begin(), iterPos1.value().end(), isGreaterCountReal());
|
||||||
|
|
||||||
|
QList<int> keys = mapRank.keys().toSet().toList();
|
||||||
|
|
||||||
|
QJsonArray jsonArray;
|
||||||
|
stStatsJson stjsonRank;
|
||||||
|
{
|
||||||
|
stjsonRank.category_num = -1;
|
||||||
|
stjsonRank.servicenum = 4;
|
||||||
|
stjsonRank.title = "rank";
|
||||||
|
stjsonRank.subtitle = "";
|
||||||
|
stjsonRank.platformname_num = 1;
|
||||||
|
}
|
||||||
|
int nTotalCount = 0;
|
||||||
|
for (QList<int>::iterator iterPos1 = keys.begin(); iterPos1 != keys.end(); iterPos1++)
|
||||||
|
{
|
||||||
|
QList<stPowercafeRank> values = mapRank.value(*iterPos1);
|
||||||
|
int nRankLimit = (values.size() <= 10) ? values.size() : 10;
|
||||||
|
QJsonObject jsonObj;
|
||||||
|
jsonObj["platformname_num"] = *iterPos1;
|
||||||
|
QJsonArray jsonSubArray;
|
||||||
|
for (int i = 0; i < nRankLimit; i++)
|
||||||
|
{
|
||||||
|
QJsonObject jsonSubObj;
|
||||||
|
jsonSubObj["rank"] = i + 1;
|
||||||
|
jsonSubObj["realcount"] = values.at(i).count;
|
||||||
|
jsonSubObj["community"] = values.at(i).community;
|
||||||
|
if (values.at(i).url.contains("instagram.com"))
|
||||||
|
jsonSubObj["url"] = "https://www." + values.at(i).url;
|
||||||
|
else if (values.at(i).url.contains("cafe.naver.com"))
|
||||||
|
jsonSubObj["url"] = "http://" + values.at(i).url;
|
||||||
|
else if (values.at(i).url.contains("facebook.com"))
|
||||||
|
jsonSubObj["url"] = "https://www." + values.at(i).url;
|
||||||
|
else if (values.at(i).url.contains("kakaostory.com"))
|
||||||
|
jsonSubObj["url"] = "https://" + values.at(i).url;
|
||||||
|
else if (values.at(i).url.contains("cafe.daum.net"))
|
||||||
|
jsonSubObj["url"] = "http://" + values.at(i).url;
|
||||||
|
else
|
||||||
|
jsonSubObj["url"] = "http://" + values.at(i).url;
|
||||||
|
jsonSubArray.append(jsonSubObj);
|
||||||
|
}
|
||||||
|
jsonObj["data"] = jsonSubArray;
|
||||||
|
jsonArray.append(jsonObj);
|
||||||
|
nTotalCount += values.size();
|
||||||
|
}
|
||||||
|
QJsonObject jObj;
|
||||||
|
jObj["data"] = jsonArray;
|
||||||
|
jObj["mindate"] = dateStart.toString("yyyy.MM.dd");
|
||||||
|
jObj["maxdate"] = dateEnd.toString("yyyy.MM.dd");
|
||||||
|
jObj["totalcount"] = nTotalCount;
|
||||||
|
QJsonDocument jsonDoc(jObj);
|
||||||
|
stjsonRank.jdata = jsonDoc.toJson();
|
||||||
|
m_listMap.append(stjsonRank);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SPowercafe::SStatsJson::uploadData(QSqlDatabase &_db, const int &_nCompany)
|
bool SPowercafe::SStatsJson::uploadData(QSqlDatabase &_db, const int &_nCompany)
|
||||||
{
|
{
|
||||||
|
|
||||||
QSqlQuery query(_db);
|
QSqlQuery query(_db);
|
||||||
{
|
{
|
||||||
QString strQuery = "delete from stats_json where company_num = " + QString::number(_nCompany) + " and servicenum = 4";
|
QString strQuery = "delete from stats_json where company_num = " + QString::number(_nCompany) + " and servicenum = 4";
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public:
|
|||||||
int community_num;
|
int community_num;
|
||||||
int category_num;
|
int category_num;
|
||||||
int realin;
|
int realin;
|
||||||
QString body_date;
|
QString date;
|
||||||
int platformname_num;
|
int platformname_num;
|
||||||
stBodyPowercafeMap():num(0), body_num(0), community_num(0), category_num(0), realin(0), platformname_num(0){}
|
stBodyPowercafeMap():num(0), body_num(0), community_num(0), category_num(0), realin(0), platformname_num(0){}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -582,7 +582,7 @@ void SSpammer::SBodySpammerMap::makeTable(SDatagroup &_datagroup, const QMap<int
|
|||||||
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.platformname_num = _datagroup.getstBody(strUrl)->platformname_num;
|
||||||
stbody.body_date = _datagroup.getstBody(strUrl)->date;
|
stbody.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;
|
||||||
@@ -606,7 +606,7 @@ 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.realin |= REAL_REPLY;
|
stbody.realin |= REAL_REPLY;
|
||||||
stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num;
|
stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num;
|
||||||
stbody.body_date = _datagroup.getstBody(strUrl)->date;
|
stbody.date = _datagroup.getstBody(strUrl)->date;
|
||||||
|
|
||||||
foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl))
|
foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl))
|
||||||
{
|
{
|
||||||
@@ -665,7 +665,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,body_date,platformname_num)"
|
strQuery = "insert into body_spammer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,realin,date,platformname_num)"
|
||||||
" values (";
|
" values (";
|
||||||
query.clear();
|
query.clear();
|
||||||
|
|
||||||
@@ -677,7 +677,7 @@ bool SSpammer::SBodySpammerMap::uploadData(QSqlDatabase &_db, const int &_nCompa
|
|||||||
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 += "'" + stmap.date + "',";
|
||||||
str += QString::number(stmap.platformname_num) + ")";
|
str += QString::number(stmap.platformname_num) + ")";
|
||||||
if (query.exec(str.toUtf8()) == false)
|
if (query.exec(str.toUtf8()) == false)
|
||||||
{
|
{
|
||||||
@@ -855,6 +855,7 @@ void SSpammer::SStatsJson::makeTableBuzz(SDatagroup &_datagroup, const QMap<int,
|
|||||||
QDate dateStartReply(2100,1,1),dateEndReply(2000,1,1);
|
QDate dateStartReply(2100,1,1),dateEndReply(2000,1,1);
|
||||||
|
|
||||||
QList<stBuzzy> listBuzzy;
|
QList<stBuzzy> listBuzzy;
|
||||||
|
stReal allCategory;
|
||||||
// filtered
|
// filtered
|
||||||
{
|
{
|
||||||
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++)
|
||||||
@@ -864,6 +865,8 @@ void SSpammer::SStatsJson::makeTableBuzz(SDatagroup &_datagroup, const QMap<int,
|
|||||||
const stReal &streal = iterPos.value();
|
const stReal &streal = iterPos.value();
|
||||||
foreach (const QString& strUrl, streal.m_setRealBodyUrl)
|
foreach (const QString& strUrl, streal.m_setRealBodyUrl)
|
||||||
{
|
{
|
||||||
|
allCategory.m_setRealBodyUrl.insert(strUrl);
|
||||||
|
allCategory.m_setRealAllUrl.insert(strUrl);
|
||||||
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();
|
||||||
@@ -884,6 +887,10 @@ void SSpammer::SStatsJson::makeTableBuzz(SDatagroup &_datagroup, const QMap<int,
|
|||||||
for (QMap<QString, int>::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++)
|
for (QMap<QString, int>::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++)
|
||||||
{
|
{
|
||||||
const QStringList &slReply = (*mapReply)[iterPos1.key()][iterPos1.value()];
|
const QStringList &slReply = (*mapReply)[iterPos1.key()][iterPos1.value()];
|
||||||
|
if (!allCategory.m_mapRealReplyUniqueUrl.contains(iterPos1.key()) || !allCategory.m_mapRealReplyUniqueUrl.values(iterPos1.key()).contains(iterPos1.value()))
|
||||||
|
allCategory.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value());
|
||||||
|
allCategory.m_setRealAllUrl.insert(iterPos1.key());
|
||||||
|
|
||||||
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)
|
if (date.year() == 1990)
|
||||||
continue;
|
continue;
|
||||||
@@ -901,6 +908,38 @@ void SSpammer::SStatsJson::makeTableBuzz(SDatagroup &_datagroup, const QMap<int,
|
|||||||
listBuzzy.append(stbuzzy);
|
listBuzzy.append(stbuzzy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//all filtered category
|
||||||
|
{
|
||||||
|
stBuzzy stbuzzy;
|
||||||
|
stbuzzy.m_nCategory = -1;
|
||||||
|
foreach (const QString& strUrl, allCategory.m_setRealBodyUrl)
|
||||||
|
{
|
||||||
|
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.year() == 1990)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (stbuzzy.m_mapBodyBuzz.contains(date))
|
||||||
|
stbuzzy.m_mapBodyBuzz[date]++;
|
||||||
|
else
|
||||||
|
stbuzzy.m_mapBodyBuzz.insert(date, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (QMap<QString, int>::const_iterator iterPos1 = allCategory.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != allCategory.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++)
|
||||||
|
{
|
||||||
|
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();
|
||||||
|
if (date.year() == 1990)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (stbuzzy.m_mapReplyBuzz.contains(date))
|
||||||
|
stbuzzy.m_mapReplyBuzz[date]++;
|
||||||
|
else
|
||||||
|
stbuzzy.m_mapReplyBuzz.insert(date, 1);
|
||||||
|
}
|
||||||
|
listBuzzy.append(stbuzzy);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//all buzzy
|
//all buzzy
|
||||||
{
|
{
|
||||||
stBuzzy stbuzzy;
|
stBuzzy stbuzzy;
|
||||||
@@ -936,9 +975,8 @@ void SSpammer::SStatsJson::makeTableBuzz(SDatagroup &_datagroup, const QMap<int,
|
|||||||
|
|
||||||
int nTotalCount = 0, nTotalBodyCount = 0, nTotalReplyCount = 0;
|
int nTotalCount = 0, nTotalBodyCount = 0, nTotalReplyCount = 0;
|
||||||
|
|
||||||
if (_mapCategory.contains(m_pSInitializer->getAllCategoryNum(3)))
|
|
||||||
{
|
{
|
||||||
foreach (const QString& strUrl, _mapCategory[m_pSInitializer->getAllCategoryNum(3)].m_setRealAllUrl)
|
foreach (const QString& strUrl, allCategory.m_setRealAllUrl)
|
||||||
{
|
{
|
||||||
nTotalBodyCount++;
|
nTotalBodyCount++;
|
||||||
nTotalReplyCount += (*mapReply)[strUrl].size();
|
nTotalReplyCount += (*mapReply)[strUrl].size();
|
||||||
@@ -978,10 +1016,12 @@ void SSpammer::SStatsJson::makeTableBuzz(SDatagroup &_datagroup, const QMap<int,
|
|||||||
QJsonObject jsNameAll;
|
QJsonObject jsNameAll;
|
||||||
QJsonObject jsNameBody;
|
QJsonObject jsNameBody;
|
||||||
|
|
||||||
if (stbuzzy.m_nCategory != 0)
|
if (stbuzzy.m_nCategory > 0)
|
||||||
jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = m_pSInitializer->getCategoryName(stbuzzy.m_nCategory);
|
jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = m_pSInitializer->getCategoryName(stbuzzy.m_nCategory);
|
||||||
else
|
else if (stbuzzy.m_nCategory == 0)
|
||||||
jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = "ALL";
|
jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = "ALL";
|
||||||
|
else
|
||||||
|
jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = "ALLCATEGORY";
|
||||||
|
|
||||||
jsNameAll["value"] = jsValueAll;
|
jsNameAll["value"] = jsValueAll;
|
||||||
jsNameBody["value"] = jsValueBody;
|
jsNameBody["value"] = jsValueBody;
|
||||||
@@ -1076,6 +1116,8 @@ void SSpammer::SStatsJson::makeTableRank(SDatagroup &_datagroup, const QMap<int,
|
|||||||
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();
|
||||||
|
|
||||||
|
stReal allCategory;
|
||||||
|
|
||||||
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<QString, stSpammerScore> mapScore;
|
QMap<QString, stSpammerScore> mapScore;
|
||||||
@@ -1083,6 +1125,125 @@ void SSpammer::SStatsJson::makeTableRank(SDatagroup &_datagroup, const QMap<int,
|
|||||||
QDate dateStart(2030, 1, 1);
|
QDate dateStart(2030, 1, 1);
|
||||||
QDate dateEnd(2000, 1, 1);
|
QDate dateEnd(2000, 1, 1);
|
||||||
|
|
||||||
|
foreach (const QString& _url, streal.m_setRealBodyUrl)
|
||||||
|
{
|
||||||
|
allCategory.m_setRealBodyUrl.insert(_url);
|
||||||
|
allCategory.m_setRealAllUrl.insert(_url);
|
||||||
|
|
||||||
|
QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ",";
|
||||||
|
strKey += ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ",");
|
||||||
|
strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed();
|
||||||
|
if (!mapScore.contains(strKey))
|
||||||
|
{
|
||||||
|
mapScore.insert(strKey, stSpammerScore());
|
||||||
|
mapScore[strKey].id_num = _datagroup.getstBody(_url)->id_num;
|
||||||
|
}
|
||||||
|
mapScore[strKey].body++;
|
||||||
|
mapScore[strKey].nickname.insert((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_nickname]].trimmed());
|
||||||
|
QDate dateThis = QDateTime::fromString((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date();
|
||||||
|
if (dateThis.isValid() && dateThis.year() > 1990)
|
||||||
|
{
|
||||||
|
dateStart = (dateStart < dateThis) ? dateStart : dateThis;
|
||||||
|
dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (QMap<QString, int>::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++)
|
||||||
|
{
|
||||||
|
allCategory.m_setRealAllUrl.insert(iterPos1.key());
|
||||||
|
if (!allCategory.m_mapRealReplyUniqueUrl.contains(iterPos1.key()) || !allCategory.m_mapRealReplyUniqueUrl.values(iterPos1.key()).contains(iterPos1.value()))
|
||||||
|
allCategory.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value());
|
||||||
|
QString strKey = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ",";
|
||||||
|
strKey += ((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ",");
|
||||||
|
strKey += (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed();
|
||||||
|
if (!mapScore.contains(strKey))
|
||||||
|
{
|
||||||
|
mapScore.insert(strKey, stSpammerScore());
|
||||||
|
mapScore[strKey].id_num = _datagroup.getstBody(iterPos1.key())->id_num;
|
||||||
|
}
|
||||||
|
mapScore[strKey].reply++;
|
||||||
|
mapScore[strKey].nickname.insert((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_nickname]].trimmed());
|
||||||
|
QDate dateThis = QDateTime::fromString((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date();
|
||||||
|
if (dateThis.isValid() && dateThis.year() > 1990)
|
||||||
|
{
|
||||||
|
dateStart = (dateStart < dateThis) ? dateStart : dateThis;
|
||||||
|
dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//QList<stSpammerRank> listSpammer;
|
||||||
|
QMap<int, stSpammerRank> mapSpammer;
|
||||||
|
for (QMap<QString, stSpammerScore>::iterator iterPos1 = mapScore.begin(); iterPos1 != mapScore.end(); iterPos1++)
|
||||||
|
{
|
||||||
|
if (iterPos1->body >= m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_CUT] ||
|
||||||
|
iterPos1->reply >= m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT] ||
|
||||||
|
iterPos1->nickname.size() >= m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT])
|
||||||
|
{
|
||||||
|
double value = iterPos1->body * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_RATIO]
|
||||||
|
+ iterPos1->reply * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_REPLY_COUNT_RATIO]
|
||||||
|
+ iterPos1->nickname.size() * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_RATIO];
|
||||||
|
stSpammerRank rank;
|
||||||
|
rank.value = value;
|
||||||
|
rank.id = iterPos1.key().split(",").at(0);
|
||||||
|
rank.platformform_num = m_pSInitializer->getPlatformName(iterPos1.key().split(",").at(1));
|
||||||
|
rank.id_num = iterPos1.value().id_num;
|
||||||
|
mapSpammer.insertMulti(rank.platformform_num, rank);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<int> keys = mapSpammer.keys().toSet().toList();
|
||||||
|
|
||||||
|
QJsonArray jsonArray;
|
||||||
|
stStatsJson stjsonRank;
|
||||||
|
{
|
||||||
|
stjsonRank.category_num = iterPos.key();
|
||||||
|
stjsonRank.servicenum = 3;
|
||||||
|
stjsonRank.title = "rank";
|
||||||
|
stjsonRank.subtitle = "";
|
||||||
|
stjsonRank.platformname_num = 1;
|
||||||
|
}
|
||||||
|
int nTotalCount = 0;
|
||||||
|
|
||||||
|
for (QList<int>::iterator iterPos1 = keys.begin(); iterPos1 != keys.end(); iterPos1++)
|
||||||
|
{
|
||||||
|
QList<stSpammerRank> values = mapSpammer.values(*iterPos1);
|
||||||
|
qSort(values.begin(), values.end(), isGreaterSpammerValue());
|
||||||
|
int nRankLimit = (values.size() <= 10) ? values.size() : 10;
|
||||||
|
QJsonObject jsonObj;
|
||||||
|
jsonObj["platformname_num"] = *iterPos1;
|
||||||
|
QJsonArray jsonSubArray;
|
||||||
|
for (int i = 0; i < nRankLimit; i++)
|
||||||
|
{
|
||||||
|
QJsonObject jsonSubObj;
|
||||||
|
jsonSubObj["rank"] = i + 1;
|
||||||
|
jsonSubObj["value"] = values.at(i).value;
|
||||||
|
jsonSubObj["id"] = values.at(i).id;
|
||||||
|
jsonSubObj["id_num"] = values.at(i).id_num;
|
||||||
|
jsonSubArray.append(jsonSubObj);
|
||||||
|
}
|
||||||
|
jsonObj["data"] = jsonSubArray;
|
||||||
|
jsonArray.append(jsonObj);
|
||||||
|
|
||||||
|
nTotalCount += values.size();
|
||||||
|
}
|
||||||
|
QJsonObject jObj;
|
||||||
|
jObj["data"] = jsonArray;
|
||||||
|
jObj["mindate"] = dateStart.toString("yyyy.MM.dd");
|
||||||
|
jObj["maxdate"] = dateEnd.toString("yyyy.MM.dd");
|
||||||
|
jObj["totalcount"] = nTotalCount;
|
||||||
|
QJsonDocument jsonDoc(jObj);
|
||||||
|
stjsonRank.jdata = jsonDoc.toJson();
|
||||||
|
m_listMap.append(stjsonRank);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//all filtered Category
|
||||||
|
{
|
||||||
|
QMap<QString, stSpammerScore> mapScore;
|
||||||
|
const stReal& streal = allCategory;
|
||||||
|
QDate dateStart(2030, 1, 1);
|
||||||
|
QDate dateEnd(2000, 1, 1);
|
||||||
|
|
||||||
foreach (const QString& _url, streal.m_setRealBodyUrl)
|
foreach (const QString& _url, streal.m_setRealBodyUrl)
|
||||||
{
|
{
|
||||||
QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ",";
|
QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ",";
|
||||||
@@ -1148,13 +1309,14 @@ void SSpammer::SStatsJson::makeTableRank(SDatagroup &_datagroup, const QMap<int,
|
|||||||
QJsonArray jsonArray;
|
QJsonArray jsonArray;
|
||||||
stStatsJson stjsonRank;
|
stStatsJson stjsonRank;
|
||||||
{
|
{
|
||||||
stjsonRank.category_num = iterPos.key();
|
stjsonRank.category_num = -1;
|
||||||
stjsonRank.servicenum = 3;
|
stjsonRank.servicenum = 3;
|
||||||
stjsonRank.title = "rank";
|
stjsonRank.title = "rank";
|
||||||
stjsonRank.subtitle = "";
|
stjsonRank.subtitle = "";
|
||||||
stjsonRank.platformname_num = 1;
|
stjsonRank.platformname_num = 1;
|
||||||
}
|
}
|
||||||
int nTotalCount = 0;
|
int nTotalCount = 0;
|
||||||
|
|
||||||
for (QList<int>::iterator iterPos1 = keys.begin(); iterPos1 != keys.end(); iterPos1++)
|
for (QList<int>::iterator iterPos1 = keys.begin(); iterPos1 != keys.end(); iterPos1++)
|
||||||
{
|
{
|
||||||
QList<stSpammerRank> values = mapSpammer.values(*iterPos1);
|
QList<stSpammerRank> values = mapSpammer.values(*iterPos1);
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public:
|
|||||||
int id_num;
|
int id_num;
|
||||||
int category_num;
|
int category_num;
|
||||||
int realin;
|
int realin;
|
||||||
QString body_date;
|
QString date;
|
||||||
int platformname_num;
|
int platformname_num;
|
||||||
stBodySpammerMap():num(0), body_num(0), id_num(0), category_num(0), realin(0), platformname_num(0){}
|
stBodySpammerMap():num(0), body_num(0), id_num(0), category_num(0), realin(0), platformname_num(0){}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user