#include "seffectstatistics.h" #include #include #include #include #include #include #include #include int getInteractionCount(const EffectData& _data) { QSet set_id; foreach (const DataForm& row, _data.reply) { if (_data.body.data[ARTICLE_ID].trimmed() != row.data[ARTICLE_ID].trimmed()) set_id.insert(row.data[ARTICLE_ID].trimmed()); } return set_id.size(); } int getReplyCount(const EffectData &_data) { return _data.reply.size(); } int getlikeCount(const EffectData& _data) { //qDebug() << "getlikeCount:" << _data.body.data[REPLY_URL]; return _data.body.data[REPLY_URL].toInt(); } int getViewCount(const EffectData& _data) { return _data.body.data[ARTICLE_HIT].trimmed().replace(",","").toInt(); } QString getViewBuzz(const EffectData& _data) { QString str; return str; } QString getReplyBuzz(const EffectData& _data) { QMap mapDate; QDate firstDate = QDateTime::fromString(_data.body.data[ARTICLE_DATE].trimmed().replace("T", " ").replace(".","-").replace("- "," "), "yyyy-MM-dd hh:mm:ss").date(); QDate lastDate = QDate::currentDate(); for (QDate date = firstDate; date <= lastDate; date = date.addDays(1)) { mapDate.insert(date, 0); } foreach (auto &row, _data.reply) { // qDebug() << row.data[ARTICLE_DATE].trimmed(); QDate date = QDateTime::fromString(row.data[ARTICLE_DATE].trimmed().replace("T", " ").replace(".","-").replace("- "," "), "yyyy-MM-dd hh:mm:ss").date(); if (!mapDate.contains(date)) //mapDate.insert(date, 0); continue; mapDate[date]++; } QJsonArray jArray; for (auto iter = mapDate.cbegin(); iter != mapDate.cend(); ++iter) { QJsonObject jObj; jObj["date"] = iter.key().toString("MM-dd-yyyy"); jObj["value"] = iter.value(); jArray.append(jObj); } QJsonDocument jDoc(jArray); QString result = jDoc.toJson(QJsonDocument::Compact); return result; } QJsonArray getReplyBuzz(const EffectData& _data, const QString& _startdate) { QMap mapDate; QDate firstDate = QDateTime::fromString(_startdate, "yyyy-MM-dd").date(); QDate lastDate = QDate::currentDate(); for (QDate date = firstDate; date <= lastDate; date = date.addDays(1)) { mapDate.insert(date, 0); } foreach (auto &row, _data.reply) { // qDebug() << row.data[ARTICLE_DATE].trimmed(); QDate date = QDateTime::fromString(row.data[ARTICLE_DATE].trimmed().replace("T", " ").replace(".","-").replace("- "," "), "yyyy-MM-dd hh:mm:ss").date(); if (!mapDate.contains(date)) //mapDate.insert(date, 0); continue; mapDate[date]++; } QJsonArray jArray; int nAccReplyCount = 0; for (auto iter = mapDate.cbegin(); iter != mapDate.cend(); ++iter) { int nValue = iter.value(); nAccReplyCount += nValue; QJsonObject jObj; jObj["date"] = iter.key().toString("yyyyMMdd"); jObj["reply_day"] = nValue; jObj["reply_acc"] = nAccReplyCount; jArray.append(jObj); } return jArray; } QJsonArray getLikeBuzz(const EffectData& _data, const QString& _startdate) { QMap mapDate; QDate firstDate = QDateTime::fromString(_startdate, "yyyy-MM-dd").date(); QDate lastDate = QDate::currentDate(); for (QDate date = firstDate; date <= lastDate; date = date.addDays(1)) { mapDate.insert(date.toString("yyyyMMdd"), 0); } QMapIterator iter(_data.like); while (iter.hasNext()) { iter.next(); QString date = iter.key(); mapDate[date] = iter.value(); } QJsonArray jArray; int nAccLikeCount = 0; for (auto iter = mapDate.cbegin(); iter != mapDate.cend(); ++iter) { int nValue = iter.value(); nAccLikeCount += nValue; QJsonObject jObj; jObj["date"] = iter.key(); jObj["like_day"] = nValue; jObj["like_acc"] = nAccLikeCount; jArray.append(jObj); } return jArray; } QString summaryLikeAndReply(QJsonArray _replyBuzz, QJsonArray _likeBuzz) { QJsonArray jArray; for (int i=0; i<_replyBuzz.count(); i++) { QJsonObject jObj; jObj["date"] = _replyBuzz.at(i).toObject()["date"]; jObj["reply_day"] = _replyBuzz.at(i).toObject()["reply_day"]; jObj["reply_acc"] = _replyBuzz.at(i).toObject()["reply_acc"]; jObj["like_day"] = _likeBuzz.at(i).toObject()["like_day"]; jObj["like_acc"] = _likeBuzz.at(i).toObject()["like_acc"]; jArray.append(jObj); } QJsonDocument jDoc(jArray); QString result = jDoc.toJson(QJsonDocument::Compact); return result; }