전체 카테고리 전부 삭제

컨슈머 마케터/즐겨찾기 업데이트

git-svn-id: svn://192.168.0.12/source@282 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
admin
2016-07-19 09:25:57 +00:00
parent b59813c4cd
commit 8212a845d0
14 changed files with 600 additions and 49 deletions

View File

@@ -183,10 +183,12 @@ void SConsumer::SBodyConsumerMap::makeTable(SDatagroup &_datagroup, const QMap<i
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;
stbody.date = _datagroup.getstBody(strUrl)->date;
stbody.replycount = _datagroup.getstBody(strUrl)->replycount;
stbody.view = _datagroup.getstBody(strUrl)->view;
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))
{
@@ -210,10 +212,12 @@ void SConsumer::SBodyConsumerMap::makeTable(SDatagroup &_datagroup, const QMap<i
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;
stbody.date = _datagroup.getstBody(strUrl)->date;
stbody.replycount = _datagroup.getstBody(strUrl)->replycount;
stbody.view = _datagroup.getstBody(strUrl)->view;
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))
{
@@ -288,7 +292,7 @@ bool SConsumer::SBodyConsumerMap::uploadData(QSqlDatabase &_db, const int &_nCom
}
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();
@@ -301,10 +305,12 @@ bool SConsumer::SBodyConsumerMap::uploadData(QSqlDatabase &_db, const int &_nCom
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) + ")";
str += "'" + stbody.date + "',";
str += QString::number(stbody.replycount) + ",";
str += QString::number(stbody.view) + ",";
str += QString::number(stbody.id_num) + ",";
str += QString::number(stbody.community_num) + ",";
str += QString::number(stbody.nickname_num) + ")";
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);
QList<stBuzzy> listBuzzy;
stReal allCategory;
// filtered
{
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();
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();
//if (date.isNull())
// 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++)
{
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();
if (date.year() == 1990)
continue;
@@ -400,6 +412,37 @@ void SConsumer::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap<int, st
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
{
stBuzzy stbuzzy;
@@ -435,9 +478,8 @@ void SConsumer::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap<int, st
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++;
nTotalReplyCount += (*mapReply)[strUrl].size();
@@ -477,10 +519,12 @@ void SConsumer::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap<int, st
QJsonObject jsNameAll;
QJsonObject jsNameBody;
if (stbuzzy.m_nCategory != 0)
if (stbuzzy.m_nCategory > 0)
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";
else
jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = "ALLCATEGORY";
jsNameAll["value"] = jsValueAll;
jsNameBody["value"] = jsValueBody;
@@ -523,6 +567,7 @@ void SConsumer::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap<int, st
QJsonDocument jdBody(jobjBody);
QJsonDocument jdReply(jobjReply);
stbodybuzz.jdata = jdBody.toJson(QJsonDocument::Compact);
streplybuzz.jdata = jdReply.toJson(QJsonDocument::Compact);
stallbuzz.jdata = jdAll.toJson(QJsonDocument::Compact);
@@ -826,3 +871,99 @@ bool SConsumer::SStatsConUserBuzzybyday::uploadData(QSqlDatabase &_db, const int
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;
}

View File

@@ -21,11 +21,13 @@ public:
int realin;
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){}
QString date;
int replycount;
int view;
int id_num;
int community_num;
int nickname_num;
stBodyConsumerMap():num(0), body_num(0), category_num(0), realin(0), platformname_num(0), platformform_num(0), replycount(0), view(0), id_num(0), community_num(0), nickname_num(0){}
};
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);
};

View File

@@ -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_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());
m_slOrderedBodyUrl.append(strList[anColumn[SInitializer::E_DATA_article_url]].trimmed());
m_mapBody.insert(strList[anColumn[SInitializer::E_DATA_article_url]].trimmed(), strList);
@@ -205,7 +207,8 @@ void SDatagroup::addRealReplyCategory(const QString& _strUrl, const int& _order,
void SDatagroup::addRealUrl(const QString& _strUrl)
{
m_setFilteredUrl.insert(_strUrl.trimmed());
if (_strUrl.trimmed().startsWith("http"))
m_setFilteredUrl.insert(_strUrl.trimmed());
}

View File

@@ -20,6 +20,8 @@ bool SFilterProcess::init(QString _strFilterProcessGroupID, QString _strFilterPr
m_SInfluencer.setInitiaizer(m_SInitializer);
m_SSpammer.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);
return true;
}
@@ -72,12 +74,14 @@ bool SFilterProcess::run()
}
case E_PROCSS_TYPE_SEND:
{
m_SConsumerMarketer.makeTable(m_SDatagroup);
m_SConsumerCheckList.makeTable(m_SDatagroup);
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_SSpammer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_SPAMMER));
m_SPowercafe.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_POWERCAFE));
//m_SSpammer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_SPAMMER));
//m_SPowercafe.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_POWERCAFE));
m_SConsumer.makeTable(m_SDatagroup);
m_SInfluencer.makeTable(m_SDatagroup);

View File

@@ -17,6 +17,8 @@ private:
SInfluencer m_SInfluencer;
SSpammer m_SSpammer;
SPowercafe m_SPowercafe;
SConsumerMarketer m_SConsumerMarketer;
SConsumerCheckList m_SConsumerCheckList;
public:
enum E_SERVICE

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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>
<data>
<variable>EnvironmentId</variable>
@@ -787,7 +787,7 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">sfilterprocess</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="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments">&quot;514&quot; &quot;testall&quot;</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments">&quot;527&quot; &quot;testall2&quot;</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.UseTerminal">true</value>

View File

@@ -722,7 +722,7 @@ void SInfluencer::SBodyInfluencerMap::makeTable(SDatagroup &_datagroup, const QM
stbody.category_num = iterPos.key();
stbody.realin |= REAL_BODY;
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);
_datagroup.addRealBodyCategory(strUrl, iterPos.key());
if (streal.m_mapRealReplyUniqueUrl.contains(strUrl))
@@ -784,7 +784,7 @@ bool SInfluencer::SBodyInfluencerMap::uploadData(QSqlDatabase &_db, const int &_
m_pSInitializer->insertLog(query.lastError().text());
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 (";
query.clear();
@@ -798,7 +798,7 @@ bool SInfluencer::SBodyInfluencerMap::uploadData(QSqlDatabase &_db, const int &_
str += QString::number(stmap.body_num) + ",";
str += QString::number(stmap.realin) + ",";
str += QString::number(stmap.community_num) + ",";
str += "'" + stmap.body_date + "')";
str += "'" + stmap.date + "')";
if (query.exec(str.toUtf8()) == false)
{

View File

@@ -73,7 +73,7 @@ public:
int category_num;
int realin;
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){}
};
struct stReplyInfluencerMap

View File

@@ -237,6 +237,8 @@ bool SInitializer::init(const QString& _strFilterProcessGroupID, const QString&
b_ok &= initPlatform();
//b_ok &= initConsumerCategory();
b_ok &= initCategory();
b_ok &= initConsumerMarketer();
b_ok &= initConsumerCheckList();
/*
if (!b_ok)
@@ -385,6 +387,74 @@ bool SInitializer::initCategory()
}
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
{
return m_mapCategory.value(_nCategory);

View File

@@ -29,6 +29,8 @@ private:
//bool initConsumerCategory();
bool initCategory();
bool initBlogPageNum();
bool initConsumerMarketer();
bool initConsumerCheckList();
public:
@@ -179,6 +181,9 @@ private:
int m_anAllCategory[E_SERVICE_MAX];
QMap<int, QString> m_mapCategory;
int m_nBlogPageNum;
QMap<int, QString> m_mapConsumerMaketers;
QMap<int, QString> m_mapConsumerCheckListUser;
QStringList m_slConsumerCheckList;
public:
bool init(const QString& _strFilterProcessGroupID, const QString& _strFilterProcessGroupName);
@@ -208,6 +213,9 @@ public:
int getAllCategoryNum(int _nService);
QString getCategoryName(int _nCategory) const;
int getBlogPageNum();
QMap<int, QString> getConsumerMaketer();
QStringList getConsumerCheckList();
QMap<int, QString> getConsumerCheckListUser();
//bool disableIndex(QSqlDatabase& db, QString _tableName, QStringList _strIndexNames, int _nMode = MODE);
//bool enableIndex(QSqlDatabase& db, QString _tableName, QStringList _strIndexNames, int _nMode = MODE);
//bool disableSettings(QSqlDatabase& db, int _nMode = MODE);

View File

@@ -183,7 +183,7 @@ bool SPowercafe::makeOverallCategory(int _categoryNum)
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 body tables");
@@ -628,7 +628,7 @@ void SPowercafe::SBodyPowercafeMap::makeTable(SDatagroup &_datagroup, const QMap
stbody.community_num = _datagroup.getstBody(strUrl)->community_num;
stbody.category_num = iterPos.key();
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;
m_listMap.append(stbody);
_datagroup.addRealBodyCategory(strUrl, iterPos.key());
@@ -717,7 +717,7 @@ bool SPowercafe::SBodyPowercafeMap::uploadData(QSqlDatabase &_db, const int &_nC
return false;
}
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 (";
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.body_num) + ",";
str += QString::number(stmap.realin) + ",";
str += "'" + stmap.body_date + "',";
str += "'" + stmap.date + "',";
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++)
{
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")||
((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" ))
continue;
allCategory.m_setRealBodyUrl.insert(_url);
allCategory.m_setRealAllUrl.insert(_url);
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();
@@ -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")||
((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" ))
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 strKey = (*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_id]].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();
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)
{
QSqlQuery query(_db);
{
QString strQuery = "delete from stats_json where company_num = " + QString::number(_nCompany) + " and servicenum = 4";

View File

@@ -59,7 +59,7 @@ public:
int community_num;
int category_num;
int realin;
QString body_date;
QString date;
int platformname_num;
stBodyPowercafeMap():num(0), body_num(0), community_num(0), category_num(0), realin(0), platformname_num(0){}
};

View File

@@ -582,7 +582,7 @@ void SSpammer::SBodySpammerMap::makeTable(SDatagroup &_datagroup, const QMap<int
stbody.category_num = iterPos.key();
stbody.realin |= REAL_BODY;
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))
{
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.realin |= REAL_REPLY;
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))
{
@@ -665,7 +665,7 @@ bool SSpammer::SBodySpammerMap::uploadData(QSqlDatabase &_db, const int &_nCompa
m_pSInitializer->insertLog(query.lastError().text());
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 (";
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.body_num) + ",";
str += QString::number(stmap.realin) + ",";
str += "'" + stmap.body_date + "',";
str += "'" + stmap.date + "',";
str += QString::number(stmap.platformname_num) + ")";
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);
QList<stBuzzy> listBuzzy;
stReal allCategory;
// filtered
{
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();
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();
//if (date.isNull())
// 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++)
{
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();
if (date.year() == 1990)
continue;
@@ -901,6 +908,38 @@ void SSpammer::SStatsJson::makeTableBuzz(SDatagroup &_datagroup, const QMap<int,
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
{
stBuzzy stbuzzy;
@@ -936,9 +975,8 @@ void SSpammer::SStatsJson::makeTableBuzz(SDatagroup &_datagroup, const QMap<int,
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++;
nTotalReplyCount += (*mapReply)[strUrl].size();
@@ -978,10 +1016,12 @@ void SSpammer::SStatsJson::makeTableBuzz(SDatagroup &_datagroup, const QMap<int,
QJsonObject jsNameAll;
QJsonObject jsNameBody;
if (stbuzzy.m_nCategory != 0)
if (stbuzzy.m_nCategory > 0)
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";
else
jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = "ALLCATEGORY";
jsNameAll["value"] = jsValueAll;
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 int* anColumn = m_pSInitializer->getColumnIntArray();
stReal allCategory;
for (QMap<int, stReal>::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++)
{
QMap<QString, stSpammerScore> mapScore;
@@ -1083,6 +1125,125 @@ void SSpammer::SStatsJson::makeTableRank(SDatagroup &_datagroup, const QMap<int,
QDate dateStart(2030, 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)
{
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;
stStatsJson stjsonRank;
{
stjsonRank.category_num = iterPos.key();
stjsonRank.category_num = -1;
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);

View File

@@ -54,7 +54,7 @@ public:
int id_num;
int category_num;
int realin;
QString body_date;
QString date;
int platformname_num;
stBodySpammerMap():num(0), body_num(0), id_num(0), category_num(0), realin(0), platformname_num(0){}