git-svn-id: svn://192.168.0.12/source@41 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
@@ -60,12 +60,10 @@ Widget::Widget(QWidget *parent) : C_MAP_REAL_BODY (0x01) , C_MAP_REAL_REPLY (0x0
|
||||
m_pleCycle = new QLineEdit;
|
||||
hLayoutEdit->addWidget(m_pleCycle);
|
||||
m_pleCycle->setText("172800");
|
||||
m_pleCycle->setEnabled(false);
|
||||
/*
|
||||
QPushButton *ppbLoad = new QPushButton("Load");
|
||||
connect(ppbLoad, SIGNAL(released()),this, SLOT(on_load()));
|
||||
hLayoutEdit->addWidget(ppbLoad);
|
||||
*/
|
||||
m_pleCycle->setEnabled(false);
|
||||
QPushButton *ppbCount = new QPushButton("Count");
|
||||
connect(ppbCount, SIGNAL(released()),this, SLOT(on_count()));
|
||||
hLayoutEdit->addWidget(ppbCount);
|
||||
QPushButton *ppbInsert = new QPushButton("Insert");
|
||||
connect(ppbInsert, SIGNAL(released()),this, SLOT(on_insert()));
|
||||
hLayoutEdit->addWidget(ppbInsert);
|
||||
@@ -863,7 +861,18 @@ 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(":DATA",SqlString(m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_data]]).trimmed());
|
||||
QString strData = m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_data]];
|
||||
strData=strData.replace(QChar(160),"");
|
||||
bool bQuit = true;
|
||||
while(bQuit)
|
||||
{
|
||||
if (strData.contains("\n\n\n"))
|
||||
strData=strData.replace("\n\n\n","");
|
||||
else
|
||||
bQuit = false;
|
||||
}
|
||||
//strData=SeqDelString(strData,QChar('\n'),2);
|
||||
query.bindValue(":DATA",SqlString(strData.replace(QString("\n"),QString("<br>"))).trimmed());
|
||||
query.bindValue(":PROFILEURL",SqlString(m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_profileurl]]).trimmed());
|
||||
QString strArticleUrl = m_mapData[strUrl].m_strlist[m_anData[E_DATA_article_url]].trimmed();
|
||||
query.bindValue(":URL",strArticleUrl.right(strArticleUrl.length() - QString("http://").length()));
|
||||
@@ -906,3 +915,169 @@ void Widget::DataPut(QString _strCompanyNum)
|
||||
}
|
||||
db.close();
|
||||
}
|
||||
|
||||
bool QSortBody(const SInfluenceCount &stInflunce1, const SInfluenceCount &stInflunce2)
|
||||
{
|
||||
return stInflunce1.m_ncBody > stInflunce2.m_ncBody;
|
||||
}
|
||||
|
||||
bool QSortReply(const SInfluenceCount &stInflunce1, const SInfluenceCount &stInflunce2)
|
||||
{
|
||||
return stInflunce1.m_ncReply > stInflunce2.m_ncReply;
|
||||
}
|
||||
|
||||
bool QSortInfulrence(const SInfluenceCount &stInflunce1, const SInfluenceCount &stInflunce2)
|
||||
{
|
||||
return stInflunce1.m_dinfulrence > stInflunce2.m_dinfulrence;
|
||||
}
|
||||
|
||||
void Widget::on_count()
|
||||
{
|
||||
QMap <QString,SInfluenceCount> mapCount;
|
||||
foreach (QListWidgetItem *item,m_plw[E_LIST_COMPANY].selectedItems())
|
||||
{
|
||||
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)
|
||||
{
|
||||
SInfluenceCount stInfluence;
|
||||
stInfluence.m_ncBody = 0;
|
||||
stInfluence.m_ncReply = 0;
|
||||
stInfluence.m_strID = strKey;
|
||||
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]];
|
||||
mapCount.insert(strKey,stInfluence);
|
||||
}
|
||||
mapCount[strKey].m_ncBody++;
|
||||
foreach(SReply stReply , stBody.m_vecReply.values())
|
||||
{
|
||||
if (stReply.m_strlist[m_anData[E_DATA_article_id]].compare(strKey) != 0)
|
||||
mapCount[strKey].m_ncReply++;
|
||||
}
|
||||
}
|
||||
foreach (SInfluenceCount stInfluence,mapCount.values())
|
||||
{
|
||||
mapCount[stInfluence.m_strID].m_dinfulrence = ((double)stInfluence.m_ncBody * 0.4) + ((double)stInfluence.m_ncReply * 0.6);
|
||||
}
|
||||
InsertLog("Influence 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;
|
||||
}
|
||||
|
||||
InsertLog("Influence Rank Count Send Start");
|
||||
QSqlQuery query;
|
||||
QString strQuery;
|
||||
strQuery = "delete from stats_influencerrank where company_num = " + strCompanyNum;
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
strQuery = "delete from influencer where company_num = " + strCompanyNum;
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
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)";
|
||||
|
||||
query.prepare(strQuery.toUtf8());
|
||||
foreach(SInfluenceCount stIn,list)
|
||||
{
|
||||
if (stIn.m_strID.length() > 42) continue;
|
||||
query.bindValue(":ID",stIn.m_strID.toUtf8());
|
||||
query.bindValue(":NICKNAME",stIn.m_strNick.toUtf8());
|
||||
query.bindValue(":TITLE",stIn.m_strTitle.toUtf8());
|
||||
query.bindValue(":PROFILE_URL",stIn.m_strProfileUrl.toUtf8());
|
||||
query.bindValue(":BODY_COUNT",stIn.m_ncBody);
|
||||
query.bindValue(":REPLY_COUNT",stIn.m_ncReply);
|
||||
query.bindValue(":INPL",stIn.m_dinfulrence);
|
||||
if(query.exec() == false) {InsertLog(query.lastError().text());return;}
|
||||
}
|
||||
|
||||
int nCount = 0;
|
||||
foreach(SInfluenceCount stIn,list)
|
||||
{
|
||||
if (nCount >= 10) break; nCount++;
|
||||
strQuery = MakeInfluencerrankQuery(stIn,"influencevalue",strCompanyNum);
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
}
|
||||
nCount = 0;
|
||||
qSort(list.begin(),list.end(),QSortBody);
|
||||
foreach(SInfluenceCount stIn,list)
|
||||
{
|
||||
if (nCount >= 10) break; nCount++;
|
||||
strQuery = MakeInfluencerrankQuery(stIn,"bodycount",strCompanyNum);
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
}
|
||||
|
||||
qSort(list.begin(),list.end(),QSortReply);
|
||||
nCount = 0;
|
||||
foreach(SInfluenceCount stIn,list)
|
||||
{
|
||||
if (nCount >= 10) break; nCount++;
|
||||
strQuery = MakeInfluencerrankQuery(stIn,"replycount",strCompanyNum);
|
||||
if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());return;}
|
||||
}
|
||||
db.close();
|
||||
InsertLog("Influence Rank Count Send End");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QString Widget::MakeInfluencerrankQuery(SInfluenceCount &_stIn,QString _strOrder,QString _strCompanyNum)
|
||||
{
|
||||
QString strOut;
|
||||
strOut = "insert into stats_influencerrank(id,nickname,bodycount,replycount,influencevalue,orderby,company_num) VALUES (";
|
||||
strOut += "'" + _stIn.m_strID + "',";
|
||||
strOut += "'" + _stIn.m_strNick + "',";
|
||||
strOut += QString::number(_stIn.m_ncBody) + ",";
|
||||
strOut += QString::number(_stIn.m_ncReply) + ",";
|
||||
strOut += QString::number(_stIn.m_dinfulrence)+ ",";
|
||||
strOut += "'" + _strOrder + "',";
|
||||
strOut += _strCompanyNum + ")";
|
||||
return strOut;
|
||||
}
|
||||
|
||||
|
||||
|
||||
QString Widget::SeqDelString(QString _strData,QChar _chChar,int _nMax)
|
||||
{
|
||||
static const int C_SEQ_FIND = 0;
|
||||
static const int C_SEQ_DEL = 1;
|
||||
|
||||
QString strOut;
|
||||
int nMode = C_SEQ_FIND,nCount=0;
|
||||
for (int i = 0 ; i < _strData.length(); i++)
|
||||
{
|
||||
switch(nMode)
|
||||
{
|
||||
case C_SEQ_FIND:
|
||||
if (_strData[i] == _chChar)
|
||||
nCount++;
|
||||
else
|
||||
nCount = 0;
|
||||
strOut += _strData[i];
|
||||
if (nCount >= _nMax)
|
||||
nMode = C_SEQ_DEL;
|
||||
break;
|
||||
case C_SEQ_DEL:
|
||||
nCount = 0;
|
||||
if (_strData[i] != _chChar)
|
||||
{
|
||||
strOut += _strData[i];
|
||||
nMode = C_SEQ_FIND;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return strOut;
|
||||
}
|
||||
|
||||
@@ -39,6 +39,18 @@ struct SMap
|
||||
QString m_strURL;
|
||||
};
|
||||
|
||||
struct SInfluenceCount
|
||||
{
|
||||
int m_ncBody;
|
||||
int m_ncReply;
|
||||
double m_dinfulrence;
|
||||
QString m_strID;
|
||||
QString m_strNick;
|
||||
QString m_strOrder;
|
||||
QString m_strProfileUrl;
|
||||
QString m_strTitle;
|
||||
};
|
||||
|
||||
class Widget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -113,6 +125,7 @@ private:
|
||||
QVector <SMap> m_vecMap;
|
||||
QStringList m_strlistOrder;
|
||||
QSqlDatabase db;
|
||||
QVector <SInfluenceCount> m_vecInfluence;
|
||||
//SGetThread *m_pThread;
|
||||
//SPutThread *m_pPutThread;
|
||||
//QVector <QStringList> m_mainData;
|
||||
@@ -131,6 +144,8 @@ private:
|
||||
void FilterReplace(QString strJson);
|
||||
bool ReloadColumn();
|
||||
void ReloadData();
|
||||
QString SeqDelString(QString _strData,QChar _chChar,int _nMax);
|
||||
QString MakeInfluencerrankQuery(SInfluenceCount &_stIn,QString _strOrder,QString _strCompanyNum);
|
||||
|
||||
private slots:
|
||||
void CompanyItemChanged(QListWidgetItem*,QListWidgetItem* _prev = 0);
|
||||
@@ -139,6 +154,7 @@ private slots:
|
||||
void on_send();
|
||||
void on_delete();
|
||||
void on_refresh();
|
||||
void on_count();
|
||||
void Update();
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user