git-svn-id: svn://192.168.0.12/source@41 8346c931-da38-4b9b-9d4c-e48b93cbd075

This commit is contained in:
admin
2015-03-11 07:37:51 +00:00
parent d6be1890cb
commit eb3639da70
2 changed files with 198 additions and 7 deletions

View File

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

View File

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