스패머 추가

git-svn-id: svn://192.168.0.12/source@64 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
admin
2015-03-24 01:53:56 +00:00
parent 90fef1c884
commit 8e666eec57
2 changed files with 453 additions and 15 deletions

View File

@@ -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 ");
}
}

View File

@@ -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();
};