스패머 추가
git-svn-id: svn://192.168.0.12/source@64 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
@@ -65,12 +65,29 @@ Widget::Widget(QWidget *parent) : C_MAP_REAL_BODY (0x01) , C_MAP_REAL_REPLY (0x0
|
||||
QPushButton *ppbCount = new QPushButton("Influence Count");
|
||||
connect(ppbCount, SIGNAL(released()),this, SLOT(on_influence_count()));
|
||||
hLayoutEdit->addWidget(ppbCount);
|
||||
}
|
||||
{
|
||||
QPushButton *ppbCount = new QPushButton("Consumer Supervison Count");
|
||||
connect(ppbCount, SIGNAL(released()),this, SLOT(on_consumer_supervison_count()));
|
||||
hLayoutEdit->addWidget(ppbCount);
|
||||
}
|
||||
{
|
||||
QPushButton *ppbCount = new QPushButton("Spammers Count");
|
||||
connect(ppbCount, SIGNAL(released()),this, SLOT(on_spammers_count()));
|
||||
hLayoutEdit->addWidget(ppbCount);
|
||||
}
|
||||
{
|
||||
QPushButton *ppbCount = new QPushButton("Power Cafe Count");
|
||||
connect(ppbCount, SIGNAL(released()),this, SLOT(on_power_cafe_count()));
|
||||
hLayoutEdit->addWidget(ppbCount);
|
||||
}
|
||||
|
||||
{
|
||||
QPushButton *ppbCount = new QPushButton("Power Cafe Real Count");
|
||||
connect(ppbCount, SIGNAL(released()),this, SLOT(on_power_cafe_real_count()));
|
||||
hLayoutEdit->addWidget(ppbCount);
|
||||
}
|
||||
|
||||
QPushButton *ppbInsert = new QPushButton("Insert");
|
||||
connect(ppbInsert, SIGNAL(released()),this, SLOT(on_insert()));
|
||||
hLayoutEdit->addWidget(ppbInsert);
|
||||
@@ -659,6 +676,7 @@ bool Widget::ReloadColumn()
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("reply_url")) m_anData[E_DATA_reply_url] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("keyword_id")) m_anData[E_DATA_keyword_id] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("article_profileurl")) m_anData[E_DATA_article_profileurl] = i;
|
||||
if (m_listDataBaseColumn[i].trimmed() == QString("article_profile")) m_anData[E_DATA_article_profile] = i;
|
||||
}
|
||||
|
||||
m_nUrlColumn = m_anData[E_DATA_article_url];
|
||||
@@ -937,7 +955,7 @@ void Widget::DataPut(QString _strCompanyNum)
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
|
||||
QString strReplyQuery = QString("insert into reply_" + _strCompanyNum + " (num,id,nickname,parent,data,date,body_num,realbycategorynum) VALUES (:NUM,:ID,:NICKNAME,:PARENT,:DATA,:DATE,:BODY_NUM,:REALBYCATEGORYNUM)").toUtf8();
|
||||
QString strBodyQuery = QString("insert into body_" + _strCompanyNum + " (num,platformname,platformform,platformtitle,id,nickname,title,data,profileurl,url,hit,date,reply_startnum,reply_endnum,lastupdate,realbycategorynum,profile) VALUES (:NUM,:PLATFORMNAME,:PLATFORMFORM,:PLATFORMTITLE,:ID,:NICKNAME,:TITLE,:DATA,:PROFILEURL,:URL,:VIEW,:DATE,:REPLY_STARTNUM,:REPLY_ENDNUM,:LASTUPDATE,:REALBYCATEGORYNUM,'')").toUtf8();
|
||||
QString strBodyQuery = QString("insert into body_" + _strCompanyNum + " (num,platformname,platformform,platformtitle,id,nickname,title,data,profileurl,url,view,date,reply_startnum,reply_endnum,lastupdate,realbycategorynum,profile) VALUES (:NUM,:PLATFORMNAME,:PLATFORMFORM,:PLATFORMTITLE,:ID,:NICKNAME,:TITLE,:DATA,:PROFILEURL,:URL,:VIEW,:DATE,:REPLY_STARTNUM,:REPLY_ENDNUM,:LASTUPDATE,:REALBYCATEGORYNUM,:PROFILE)").toUtf8();
|
||||
QString strMapQuery = QString("insert into body_category_map_" + _strCompanyNum + " (num,body_num,category_num,realin) VALUES (:NUM,:BODY_NUM,:CATEGORY_NUM,:REALIN)").toUtf8();
|
||||
|
||||
int nReplyCount = 0;
|
||||
@@ -966,6 +984,7 @@ void Widget::DataPut(QString _strCompanyNum)
|
||||
query.bindValue(":ID",m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_id]].trimmed());
|
||||
query.bindValue(":NICKNAME",m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_nickname]].trimmed());
|
||||
query.bindValue(":TITLE",SqlString(m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_title]]).trimmed());
|
||||
query.bindValue(":PROFILE",SqlString(m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_profile]]).trimmed());
|
||||
QString strData = m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_data]];
|
||||
strData=strData.replace(QChar(160),"");
|
||||
bool bQuit = true;
|
||||
@@ -1042,10 +1061,10 @@ void Widget::DataPut(QString _strCompanyNum)
|
||||
foreach(SBuzzyCount stCount,vecCount)
|
||||
{
|
||||
strQuery += "category_";
|
||||
if (stCount.m_nCategory)
|
||||
//if (stCount.m_nCategory)
|
||||
strQuery += QString::number(stCount.m_nCategory);
|
||||
else
|
||||
strQuery += "all";
|
||||
//else
|
||||
//strQuery += "all";
|
||||
strQuery += " = ";
|
||||
strQuery += QString::number(stCount.m_anCount[i]);
|
||||
strQuery += ",";
|
||||
@@ -1071,6 +1090,7 @@ bool QSortPowerCafe(const SPowerCafeCount &st1, const SPowerCafeCount &st2)
|
||||
return st1.m_ncAll > st2.m_ncAll;
|
||||
}
|
||||
|
||||
|
||||
void Widget::on_power_cafe_count()
|
||||
{
|
||||
QMap <QString,SPowerCafeCount> mapCount;
|
||||
@@ -1085,8 +1105,6 @@ void Widget::on_power_cafe_count()
|
||||
if (mapCount.contains(strKey)==false)
|
||||
{
|
||||
SPowerCafeCount stPowerCafe;
|
||||
stPowerCafe.m_ncBodyAll = 0;
|
||||
stPowerCafe.m_ncReplyAll = 0;
|
||||
stPowerCafe.m_strCafeID = strKey;
|
||||
stPowerCafe.m_strTitle = stBody.m_strlist[m_anData[E_DATA_platform_title]];
|
||||
mapCount.insert(strKey,stPowerCafe);
|
||||
@@ -1123,7 +1141,7 @@ void Widget::on_power_cafe_count()
|
||||
QString strQuery;
|
||||
strQuery = "delete from powercafe where company_num = " + strCompanyNum;
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
strQuery = "delete from stats_powercaferank where company_num = " + strCompanyNum;
|
||||
strQuery = "delete from stats_powercaferank where company_num = " + strCompanyNum + " and orderby = 'articlecountall'";
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
QList<SPowerCafeCount> list = mapCount.values();
|
||||
qSort(list.begin(),list.end(),QSortPowerCafe);
|
||||
@@ -1143,7 +1161,6 @@ void Widget::on_power_cafe_count()
|
||||
query.bindValue(":USER_COUNT_ALL",stIn.m_mapUser.size());
|
||||
if(query.exec() == false) {InsertLog(query.lastError().text());return;}
|
||||
}
|
||||
|
||||
int nCount = 0;
|
||||
strQuery = "insert into stats_powercaferank (articlecountreal,usercountreal,orderby,company_num,id,title,articlecountall)"
|
||||
" VALUES (0,0,'articlecountall'," + strCompanyNum + ",:ID,:TITLE,:COUNT_ALL)";
|
||||
@@ -1160,9 +1177,95 @@ void Widget::on_power_cafe_count()
|
||||
InsertLog("PowerCafe Rank Count Send End");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bool QSortPowerCafeReal(const SPowerCafeCount &st1, const SPowerCafeCount &st2)
|
||||
{
|
||||
return st1.m_ncAllReal > st2.m_ncAllReal;
|
||||
}
|
||||
|
||||
void Widget::on_power_cafe_real_count()
|
||||
{
|
||||
ReloadData();
|
||||
foreach (QListWidgetItem *item,m_plw[E_LIST_FILTER].selectedItems())
|
||||
{
|
||||
InsertLog("Power Cafe Data Filter Run Start : " + item->text());
|
||||
DataFilter(item->data(Qt::UserRole).toString());
|
||||
InsertLog("Power Cafe Data Filter Run End ");
|
||||
}
|
||||
QMap <QString,SPowerCafeCount> mapCount;
|
||||
foreach (QListWidgetItem *item,m_plw[E_LIST_COMPANY].selectedItems())
|
||||
{
|
||||
InsertLog("Power Cafe Real Rank Count Make Start " + item->text());
|
||||
if (m_bDataFlag[E_ARTICLE_BODY] == true)
|
||||
{
|
||||
foreach(QStringList strlist,m_data[E_ARTICLE_BODY])
|
||||
{
|
||||
if (strlist[m_anData[E_DATA_platform_form]].trimmed().compare(QString("cafe")) != 0) continue;
|
||||
QString strKey = strlist[m_anData[E_DATA_platform_id]];
|
||||
if (mapCount.contains(strKey)==false)
|
||||
{
|
||||
SPowerCafeCount stPowerCafe;
|
||||
stPowerCafe.m_strCafeID = strKey;
|
||||
stPowerCafe.m_strTitle = strlist[m_anData[E_DATA_platform_title]];
|
||||
mapCount.insert(strKey,stPowerCafe);
|
||||
}
|
||||
mapCount[strKey].m_ncBodyReal++;
|
||||
mapCount[strKey].m_ncAllReal++;
|
||||
}
|
||||
}
|
||||
if (m_bDataFlag[E_ARTICLE_REPLY] == true)
|
||||
{
|
||||
foreach(QStringList strlist,m_data[E_ARTICLE_REPLY])
|
||||
{
|
||||
if (strlist[m_anData[E_DATA_platform_form]].trimmed().compare(QString("cafe")) != 0) continue;
|
||||
QString strKey = strlist[m_anData[E_DATA_platform_id]];
|
||||
if (mapCount.contains(strKey)==false)
|
||||
{
|
||||
SPowerCafeCount stPowerCafe;
|
||||
stPowerCafe.m_strCafeID = strKey;
|
||||
stPowerCafe.m_strTitle = strlist[m_anData[E_DATA_platform_title]];
|
||||
mapCount.insert(strKey,stPowerCafe);
|
||||
}
|
||||
mapCount[strKey].m_ncReplyReal++;
|
||||
mapCount[strKey].m_ncAllReal++;
|
||||
}
|
||||
}
|
||||
InsertLog("Power Cafe Real Rank Count Make End ");
|
||||
|
||||
db.setHostName(D_DB_WEB_HOST);
|
||||
db.setUserName(D_DB_WEB_USER);
|
||||
db.setPassword(D_DB_WEB_PASS);
|
||||
db.setDatabaseName(D_DB_WEB_NAME);
|
||||
if (db.open() == false)
|
||||
{
|
||||
InsertLog(db.lastError().text());
|
||||
return;
|
||||
}
|
||||
|
||||
QList<SPowerCafeCount> list = mapCount.values();
|
||||
qSort(list.begin(),list.end(),QSortPowerCafeReal);
|
||||
InsertLog("Power Cafe Real Rank Count Send Start " + item->text());
|
||||
int nCount = 0;
|
||||
QString strQuery = "insert into stats_powercaferank (articlecountall,usercountreal,orderby,company_num,id,title,articlecountreal)"
|
||||
" VALUES (0,0,'articlecountreal'," + item->data(Qt::UserRole).toString() + ",:ID,:TITLE,:COUNT_ALL)";
|
||||
QSqlQuery query;
|
||||
query.prepare(strQuery.toUtf8());
|
||||
|
||||
foreach(SPowerCafeCount stIn,list)
|
||||
{
|
||||
if (nCount >= 10) break; nCount++;
|
||||
query.bindValue(":ID",stIn.m_strCafeID.trimmed().toUtf8());
|
||||
query.bindValue(":TITLE",stIn.m_strTitle.trimmed().toUtf8());
|
||||
query.bindValue(":COUNT_ALL",stIn.m_ncAllReal);
|
||||
if(query.exec() == false) {InsertLog(query.lastError().text());return;}
|
||||
}
|
||||
db.close();
|
||||
InsertLog("Power Cafe Real Rank Count Send End");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool QSortBody(const SInfluenceCount &stInflunce1, const SInfluenceCount &stInflunce2)
|
||||
{
|
||||
return stInflunce1.m_ncBody > stInflunce2.m_ncBody;
|
||||
@@ -1178,7 +1281,7 @@ bool QSortInfulrence(const SInfluenceCount &stInflunce1, const SInfluenceCount &
|
||||
return stInflunce1.m_dinfulrence > stInflunce2.m_dinfulrence;
|
||||
}
|
||||
|
||||
void Widget::on_influence_count()
|
||||
void Widget::InfluenceCount()
|
||||
{
|
||||
QMap <QString,SInfluenceCount> mapCount;
|
||||
foreach (QListWidgetItem *item,m_plw[E_LIST_COMPANY].selectedItems())
|
||||
@@ -1186,7 +1289,7 @@ void Widget::on_influence_count()
|
||||
InsertLog("Influence Rank Count Make Start " + item->text());
|
||||
QString strCompanyNum = item->data(Qt::UserRole).toString();
|
||||
foreach(SBody stBody, m_mapData.values())
|
||||
{
|
||||
{
|
||||
if (stBody.m_strlist[m_anData[E_DATA_platform_form]].trimmed().compare(QString("blog")) != 0) continue;
|
||||
QString strKey = stBody.m_strlist[m_anData[E_DATA_article_id]];
|
||||
if (mapCount.contains(strKey)==false)
|
||||
@@ -1198,6 +1301,7 @@ void Widget::on_influence_count()
|
||||
stInfluence.m_strNick = stBody.m_strlist[m_anData[E_DATA_article_nickname]];
|
||||
stInfluence.m_strTitle = stBody.m_strlist[m_anData[E_DATA_platform_title]];
|
||||
stInfluence.m_strProfileUrl = stBody.m_strlist[m_anData[E_DATA_article_profileurl]];
|
||||
stInfluence.m_strProfile = stBody.m_strlist[m_anData[E_DATA_article_profile]];
|
||||
mapCount.insert(strKey,stInfluence);
|
||||
}
|
||||
mapCount[strKey].m_ncBody++;
|
||||
@@ -1233,8 +1337,8 @@ void Widget::on_influence_count()
|
||||
QList<SInfluenceCount> list = mapCount.values();
|
||||
qSort(list.begin(),list.end(),QSortInfulrence);
|
||||
|
||||
strQuery = "insert into influencer (cost,company_num,id,nickname,title,profileurl,bodycount,replycount,influencevalue)"
|
||||
" VALUES (0," + strCompanyNum + ",:ID,:NICKNAME,:TITLE,:PROFILE_URL,:BODY_COUNT,:REPLY_COUNT,:INPL)";
|
||||
strQuery = "insert into influencer (cost,company_num,id,nickname,title,profileurl,bodycount,replycount,influencevalue,profile)"
|
||||
" VALUES (0," + strCompanyNum + ",:ID,:NICKNAME,:TITLE,:PROFILE_URL,:BODY_COUNT,:REPLY_COUNT,:INPL,:PROFILE)";
|
||||
|
||||
query.prepare(strQuery.toUtf8());
|
||||
foreach(SInfluenceCount stIn,list)
|
||||
@@ -1245,8 +1349,9 @@ void Widget::on_influence_count()
|
||||
query.bindValue(":TITLE",stIn.m_strTitle.trimmed().toUtf8());
|
||||
query.bindValue(":PROFILE_URL",stIn.m_strProfileUrl.trimmed().toUtf8());
|
||||
query.bindValue(":BODY_COUNT",stIn.m_ncBody);
|
||||
query.bindValue(":REPLY_COUNT",stIn.m_ncReply);
|
||||
query.bindValue(":REPLY_COUNT",stIn.m_ncReply);
|
||||
query.bindValue(":INPL",QString::number(stIn.m_dinfulrence,'g',3));
|
||||
query.bindValue(":PROFILE",stIn.m_strProfile.trimmed());
|
||||
if(query.exec() == false) {InsertLog(query.lastError().text());return;}
|
||||
}
|
||||
|
||||
@@ -1280,6 +1385,158 @@ void Widget::on_influence_count()
|
||||
}
|
||||
}
|
||||
|
||||
struct SMaketer
|
||||
{
|
||||
int m_nBodyCount;
|
||||
int m_nReplyCount;
|
||||
int m_nAllCount;
|
||||
QString m_strID;
|
||||
QString m_strPlatformName;
|
||||
|
||||
SMaketer()
|
||||
{
|
||||
m_nBodyCount=0;
|
||||
m_nReplyCount=0;
|
||||
}
|
||||
};
|
||||
|
||||
bool QSortMarketer(const SMaketer &stMaketer1, const SMaketer &stMaketer2)
|
||||
{
|
||||
return stMaketer1.m_nAllCount > stMaketer2.m_nAllCount;
|
||||
}
|
||||
|
||||
void Widget::ConsumerSupervisionCount()
|
||||
{
|
||||
db.setHostName(D_DB_WEB_HOST);
|
||||
db.setUserName(D_DB_WEB_USER);
|
||||
db.setPassword(D_DB_WEB_PASS);
|
||||
db.setDatabaseName(D_DB_WEB_NAME);
|
||||
if (db.open() == false)
|
||||
{
|
||||
InsertLog(db.lastError().text());
|
||||
return;
|
||||
}
|
||||
QMap <QString,SMaketer> mapMaketer;
|
||||
QMap <QString,SMaketer> mapCafe;
|
||||
|
||||
foreach (QListWidgetItem *item,m_plw[E_LIST_COMPANY].selectedItems())
|
||||
{
|
||||
InsertLog("Markter Rank Count Make Start " + item->text());
|
||||
QString strCompanyNum = item->data(Qt::UserRole).toString();
|
||||
|
||||
QSqlQuery query;
|
||||
QString strQuery;
|
||||
strQuery = "delete from stats_response where company_num = " + strCompanyNum;
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
|
||||
strQuery = "select id,platformname from marketer where company_num = " + strCompanyNum;
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
while(query.next())
|
||||
{
|
||||
SMaketer stMaketer;
|
||||
stMaketer.m_strID = query.value(0).toString();
|
||||
stMaketer.m_strPlatformName = query.value(1).toString();
|
||||
mapMaketer.insert(stMaketer.m_strID,stMaketer);
|
||||
}
|
||||
|
||||
foreach(SBody stBody, m_mapData.values())
|
||||
{
|
||||
QString strKey = stBody.m_strlist[m_anData[E_DATA_article_id]].trimmed();
|
||||
if (mapMaketer.contains(strKey))
|
||||
{
|
||||
if (stBody.m_strlist[m_anData[E_DATA_platform_name]].trimmed().compare(mapMaketer[strKey].m_strPlatformName) == 0)
|
||||
{
|
||||
mapMaketer[strKey].m_nBodyCount++;
|
||||
QString strCafe = stBody.m_strlist[m_anData[E_DATA_platform_id]].trimmed();
|
||||
if (stBody.m_strlist[m_anData[E_DATA_platform_form]].trimmed().compare("cafe") == 0)
|
||||
{
|
||||
if (mapCafe.contains(strCafe) == false)
|
||||
{
|
||||
SMaketer stCafe;
|
||||
stCafe.m_strID = strCafe;
|
||||
mapCafe.insert(strCafe,stCafe);
|
||||
}
|
||||
mapCafe[strCafe].m_nBodyCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach(SReply stReply , stBody.m_vecReply.values())
|
||||
{
|
||||
strKey = stReply.m_strlist[m_anData[E_DATA_article_id]].trimmed();
|
||||
if (mapMaketer.contains(strKey))
|
||||
{
|
||||
if (stReply.m_strlist[m_anData[E_DATA_platform_name]].trimmed().compare(mapMaketer[strKey].m_strPlatformName) == 0)
|
||||
{
|
||||
mapMaketer[strKey].m_nReplyCount++;
|
||||
QString strCafe = stBody.m_strlist[m_anData[E_DATA_platform_id]].trimmed();
|
||||
if (stBody.m_strlist[m_anData[E_DATA_platform_form]].trimmed().compare("cafe") == 0)
|
||||
{
|
||||
if (mapCafe.contains(strCafe) == false)
|
||||
{
|
||||
SMaketer stCafe;
|
||||
stCafe.m_strID = strCafe;
|
||||
mapCafe.insert(strCafe,stCafe);
|
||||
}
|
||||
mapCafe[strCafe].m_nReplyCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach (SMaketer stMaketer,mapMaketer.values())
|
||||
mapMaketer[stMaketer.m_strID].m_nAllCount = stMaketer.m_nBodyCount + stMaketer.m_nReplyCount;
|
||||
|
||||
foreach (SMaketer stCafe,mapCafe.values())
|
||||
mapCafe[stCafe.m_strID].m_nAllCount = stCafe.m_nBodyCount + stCafe.m_nReplyCount;
|
||||
{
|
||||
QList<SMaketer> list = mapMaketer.values();
|
||||
qSort(list.begin(),list.end(),QSortMarketer);
|
||||
InsertLog("Markter Rank Count Make End");
|
||||
{
|
||||
InsertLog("Markter Rank Count Send Start");
|
||||
foreach(SMaketer stMaket,list)
|
||||
{
|
||||
strQuery = "insert into stats_response (platformid,orderby,marketerid,marketernickname,bodycount,replycount,company_num) values (' ' , 'marketerid' , ";
|
||||
strQuery += "'" + stMaket.m_strID + "',";
|
||||
strQuery += "' ',";
|
||||
strQuery += QString::number(stMaket.m_nBodyCount) + ",";
|
||||
strQuery += QString::number(stMaket.m_nReplyCount) + ",";
|
||||
strQuery += strCompanyNum + ")";
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
}
|
||||
InsertLog("Markter Rank Count Send End");
|
||||
}
|
||||
}
|
||||
{
|
||||
QList<SMaketer> list = mapCafe.values();
|
||||
qSort(list.begin(),list.end(),QSortMarketer);
|
||||
{
|
||||
InsertLog("Maketer in Cafe Rank Count Send Start");
|
||||
foreach(SMaketer stMaket,list)
|
||||
{
|
||||
if (stMaket.m_nAllCount == 0) break;
|
||||
strQuery = "insert into stats_response (marketerid,orderby,platformid,marketernickname,bodycount,replycount,company_num) values (' ' , 'platformid' , ";
|
||||
strQuery += "'" + stMaket.m_strID + "',";
|
||||
strQuery += "' ',";
|
||||
strQuery += QString::number(stMaket.m_nBodyCount) + ",";
|
||||
strQuery += QString::number(stMaket.m_nReplyCount) + ",";
|
||||
strQuery += strCompanyNum + ")";
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
}
|
||||
InsertLog("Maketer in Cafe Rank Count Send End");
|
||||
}
|
||||
}
|
||||
}
|
||||
db.close();
|
||||
}
|
||||
|
||||
void Widget::on_influence_count()
|
||||
{
|
||||
InfluenceCount();
|
||||
}
|
||||
|
||||
QString Widget::MakeInfluencerrankQuery(SInfluenceCount &_stIn,QString _strOrder,QString _strCompanyNum)
|
||||
{
|
||||
QString strOut;
|
||||
@@ -1294,6 +1551,11 @@ QString Widget::MakeInfluencerrankQuery(SInfluenceCount &_stIn,QString _strOrder
|
||||
return strOut;
|
||||
}
|
||||
|
||||
void Widget::on_consumer_supervison_count()
|
||||
{
|
||||
ConsumerSupervisionCount();
|
||||
}
|
||||
|
||||
QString Widget::SeqDelString(QString _strData,QChar _chChar,int _nMax)
|
||||
{
|
||||
static const int C_SEQ_FIND = 0;
|
||||
@@ -1326,3 +1588,154 @@ QString Widget::SeqDelString(QString _strData,QChar _chChar,int _nMax)
|
||||
}
|
||||
return strOut;
|
||||
}
|
||||
|
||||
struct SSpamer
|
||||
{
|
||||
QString m_strKey;
|
||||
QString m_strTitle;
|
||||
QString m_strNickname;
|
||||
double m_dBodycount;
|
||||
double m_dSpammerValue;
|
||||
SSpamer()
|
||||
{
|
||||
m_dBodycount = 0.0;
|
||||
}
|
||||
QSet <QString> m_setNick;
|
||||
};
|
||||
|
||||
bool QSortSpamer(const SSpamer &st1, const SSpamer &st2)
|
||||
{
|
||||
return st1.m_dSpammerValue > st2.m_dSpammerValue;
|
||||
}
|
||||
|
||||
void Widget::on_spammers_count()
|
||||
{
|
||||
QFile inputFile("spammers.txt");
|
||||
double dRead[E_SPAMER_MAX];
|
||||
/*
|
||||
Body_Count_Cut = 5
|
||||
Body_Count_Ratio = 0.7
|
||||
Nick_Count_Cut = 10
|
||||
Nick_Count_Ratio = 0.3
|
||||
*/
|
||||
//id,platformname,platformform
|
||||
//nickname,platformtitle,nicknamecount,bodycount,spammervalue,company_num,
|
||||
|
||||
if (inputFile.open(QIODevice::ReadOnly))
|
||||
{
|
||||
QTextStream in(&inputFile);
|
||||
while (!in.atEnd())
|
||||
{
|
||||
QString line = in.readLine();
|
||||
QStringList list = line.split("=");
|
||||
if (list.size() < 2) continue;
|
||||
if (list[0].trimmed().compare("Body_Count_Cut") == 0) dRead[E_SPAMER_BODY_COUNT_CUT]=list[1].toDouble();
|
||||
if (list[0].trimmed().compare("Body_Count_Ratio") == 0) dRead[E_SPAMER_BODY_COUNT_RATIO]=list[1].toDouble();
|
||||
if (list[0].trimmed().compare("Nick_Count_Cut") == 0) dRead[E_SPAMER_NICK_COUNT_CUT]=list[1].toDouble();
|
||||
if (list[0].trimmed().compare("Nick_Count_Ratio") == 0) dRead[E_SPAMER_NICK_COUNT_RATIO]=list[1].toDouble();
|
||||
}
|
||||
inputFile.close();
|
||||
}
|
||||
QMap<QString,SSpamer> mapSpamer;
|
||||
foreach (QListWidgetItem *item,m_plw[E_LIST_COMPANY].selectedItems())
|
||||
{
|
||||
InsertLog("Spamer Rank Count Make Start " + item->text());
|
||||
foreach(SBody stBody, m_mapData.values())
|
||||
{
|
||||
if (stBody.m_strlist[m_anData[E_DATA_article_id]].trimmed().isEmpty()) continue;
|
||||
QString strKey = stBody.m_strlist[m_anData[E_DATA_platform_name]].trimmed() + QString(",");
|
||||
strKey += stBody.m_strlist[m_anData[E_DATA_platform_form]].trimmed() + QString(",");
|
||||
strKey += stBody.m_strlist[m_anData[E_DATA_article_id]].trimmed();
|
||||
if (mapSpamer.contains(strKey) == false)
|
||||
{
|
||||
SSpamer stSpamer;
|
||||
stSpamer.m_strKey = strKey;
|
||||
stSpamer.m_strNickname = stBody.m_strlist[m_anData[E_DATA_article_nickname]].trimmed();
|
||||
mapSpamer.insert(strKey,stSpamer);
|
||||
}
|
||||
mapSpamer[strKey].m_dBodycount+=1.0;
|
||||
mapSpamer[strKey].m_setNick.insert(stBody.m_strlist[m_anData[E_DATA_article_nickname]].trimmed());
|
||||
foreach(SReply stReply , stBody.m_vecReply.values())
|
||||
{
|
||||
QString strKey = stReply.m_strlist[m_anData[E_DATA_platform_name]].trimmed() + QString(",");
|
||||
strKey += stReply.m_strlist[m_anData[E_DATA_platform_form]].trimmed() + QString(",");
|
||||
strKey += stReply.m_strlist[m_anData[E_DATA_article_id]].trimmed();
|
||||
if (mapSpamer.contains(strKey) == false)
|
||||
{
|
||||
SSpamer stSpamer;
|
||||
stSpamer.m_strKey = strKey;
|
||||
stSpamer.m_strNickname = stReply.m_strlist[m_anData[E_DATA_article_nickname]].trimmed();
|
||||
mapSpamer.insert(strKey,stSpamer);
|
||||
}
|
||||
QString strReKey = stReply.m_strlist[m_anData[E_DATA_article_nickname]].trimmed();
|
||||
if (mapSpamer[strKey].m_setNick.contains(strReKey) == false)
|
||||
mapSpamer[strKey].m_setNick.insert(strReKey);
|
||||
}
|
||||
}
|
||||
|
||||
QList <SSpamer> list;
|
||||
foreach(SSpamer stSpamer,mapSpamer.values())
|
||||
{
|
||||
bool bFlag = false;
|
||||
if (stSpamer.m_dBodycount > dRead[E_SPAMER_BODY_COUNT_CUT])
|
||||
bFlag = true;
|
||||
if ((double)stSpamer.m_setNick.size() > dRead[E_SPAMER_BODY_COUNT_CUT])
|
||||
bFlag = true;
|
||||
if (bFlag)
|
||||
{
|
||||
stSpamer.m_dSpammerValue = (dRead[E_SPAMER_BODY_COUNT_RATIO]*stSpamer.m_dBodycount)+
|
||||
(dRead[E_SPAMER_NICK_COUNT_RATIO]*(double)stSpamer.m_setNick.size());
|
||||
list.push_back(stSpamer);
|
||||
}
|
||||
}
|
||||
qSort(list.begin(),list.end(),QSortSpamer);
|
||||
|
||||
InsertLog("Spamer Rank Count Make End ");
|
||||
InsertLog("Spamer Rank Count Send Start ");
|
||||
db.setHostName(D_DB_WEB_HOST);
|
||||
db.setUserName(D_DB_WEB_USER);
|
||||
db.setPassword(D_DB_WEB_PASS);
|
||||
db.setDatabaseName(D_DB_WEB_NAME);
|
||||
if (db.open() == false)
|
||||
{
|
||||
InsertLog(db.lastError().text());
|
||||
return;
|
||||
}
|
||||
QSqlQuery query;
|
||||
QString strQuery;
|
||||
QString strCompanyNum = item->data(Qt::UserRole).toString();
|
||||
strQuery = "delete from stats_spammerrank where company_num = " + strCompanyNum;
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
strQuery = "delete from spammer where company_num = " + strCompanyNum;
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
|
||||
int nCount = 0;
|
||||
foreach(SSpamer stIn,list)
|
||||
{
|
||||
QStringList strList = stIn.m_strKey.split(",");
|
||||
if (strList[2].trimmed().isEmpty()) continue;
|
||||
|
||||
QString strValue = "0,'";
|
||||
strValue += strList[0] + "','";
|
||||
strValue += strList[1] + "','";
|
||||
strValue += strList[2] + "','";
|
||||
strValue += stIn.m_strNickname + "',";
|
||||
strValue += QString::number(stIn.m_setNick.size()) + ",";
|
||||
strValue += QString::number((int)stIn.m_dBodycount) + ",";
|
||||
strValue += QString::number(stIn.m_dSpammerValue,'g',3) + ",";
|
||||
strValue += strCompanyNum;
|
||||
strQuery = "insert into spammer (rank,platformname,platformform,id,nickname,nicknamecount,bodycount,spammervalue,company_num) VALUES (";
|
||||
strQuery += strValue + ")";
|
||||
if(query.exec(strQuery.toUtf8()) == false) {qDebug() << strQuery;InsertLog(query.lastError().text());return;}
|
||||
if (nCount < 10)
|
||||
{
|
||||
strQuery = "insert into stats_spammerrank (rank,platformname,platformform,id,nickname,nicknamecount,bodycount,spammervalue,company_num,orderby) VALUES (";
|
||||
strQuery += strValue + ",'spammervalue')";
|
||||
if(query.exec(strQuery.toUtf8()) == false) {qDebug() << strQuery;InsertLog(query.lastError().text());return;}
|
||||
}
|
||||
nCount++;
|
||||
}
|
||||
db.close();
|
||||
InsertLog("Spamer Rank Count Send End ");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,6 +51,7 @@ struct SInfluenceCount
|
||||
QString m_strOrder;
|
||||
QString m_strProfileUrl;
|
||||
QString m_strTitle;
|
||||
QString m_strProfile;
|
||||
};
|
||||
|
||||
struct SPowerCafeCount
|
||||
@@ -65,6 +66,16 @@ struct SPowerCafeCount
|
||||
int m_ncAllReal;
|
||||
int m_ncUserReal;
|
||||
QMap <QString,bool> m_mapUser;
|
||||
SPowerCafeCount()
|
||||
{
|
||||
m_ncBodyAll = 0;
|
||||
m_ncReplyAll = 0;
|
||||
m_ncAll = 0;
|
||||
m_ncBodyReal = 0;
|
||||
m_ncReplyReal = 0;
|
||||
m_ncAllReal = 0;
|
||||
m_ncUserReal = 0;
|
||||
}
|
||||
};
|
||||
|
||||
struct SBuzzyArticle
|
||||
@@ -128,9 +139,19 @@ public:
|
||||
E_DATA_reply_url,
|
||||
E_DATA_keyword_id,
|
||||
E_DATA_article_profileurl,
|
||||
E_DATA_article_profile,
|
||||
E_DATA_MAX,
|
||||
};
|
||||
|
||||
enum E_SPAMER
|
||||
{
|
||||
E_SPAMER_BODY_COUNT_CUT = 0,
|
||||
E_SPAMER_BODY_COUNT_RATIO,
|
||||
E_SPAMER_NICK_COUNT_CUT,
|
||||
E_SPAMER_NICK_COUNT_RATIO,
|
||||
E_SPAMER_MAX
|
||||
};
|
||||
|
||||
struct SBuzzy
|
||||
{
|
||||
SBuzzyArticle m_astArticle[E_ARTICLE_MAX];
|
||||
@@ -186,7 +207,8 @@ private:
|
||||
void MakeBuzzyAll();
|
||||
void MakeBuzzy(int _nCategory);
|
||||
QVariant GetWebData(QString _strTable,QString _strColumn,int _nNum);
|
||||
|
||||
void InfluenceCount();
|
||||
void ConsumerSupervisionCount();
|
||||
private slots:
|
||||
void CompanyItemChanged(QListWidgetItem*,QListWidgetItem* _prev = 0);
|
||||
void DataItemClicked(QListWidgetItem*);
|
||||
@@ -196,6 +218,9 @@ private slots:
|
||||
void on_refresh();
|
||||
void on_influence_count();
|
||||
void on_power_cafe_count();
|
||||
void on_power_cafe_real_count();
|
||||
void on_consumer_supervison_count();
|
||||
void on_spammers_count();
|
||||
void Update();
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user