전체 카테고리 전부 삭제
컨슈머 마케터/즐겨찾기 업데이트 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.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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -17,6 +17,8 @@ private:
|
||||
SInfluencer m_SInfluencer;
|
||||
SSpammer m_SSpammer;
|
||||
SPowercafe m_SPowercafe;
|
||||
SConsumerMarketer m_SConsumerMarketer;
|
||||
SConsumerCheckList m_SConsumerCheckList;
|
||||
|
||||
public:
|
||||
enum E_SERVICE
|
||||
|
||||
@@ -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">"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="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</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.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)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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){}
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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){}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user