Files
clients/FilterProcess/sinfluencer.h

261 lines
8.5 KiB
C++

#ifndef SINFLUENCER
#define SINFLUENCER
#include "sservice.h"
#include "sfilteralgorithm.h"
#include "sinitializer.h"
#include <QVector>
class QString;
class QStringList;
class SInfluencer:public SService
{
public:
struct stReal
{
QSet<QString> m_setRealAllUrl;
QSet<QString> m_setRealBodyUrl;
QMap<QString, int> m_mapRealReplyUniqueUrl; //multiple
};
struct stInfluencer
{
int id_num;
int nickname_num;
int community_num;
int category_num;
QString id_id;
QString profile;
QString profileurl;
int bodycount;
int replycount;
double influencervalue;
int rank;
QString community_title;
QString community_url;
QString community_id;
QString nickname_nickname;
QString nickname_exnickname;
QString platformname_name;
int platformname_num;
int sharecount;
int likecount;
stInfluencer():id_num(0),nickname_num(0),community_num(0),category_num(0),bodycount(0),replycount(0),rank(0),influencervalue(0.0),platformname_num(0),
sharecount(0), likecount(0){}
};
struct stStatsInfBloggerRank
{
QString id_id;
QString nickname_nickname;
int bodycount;
int replycount;
double influencevalue;
QString subject;
int company_num;
int rank;
stStatsInfBloggerRank():bodycount(0),replycount(0),rank(0),influencevalue(0.0){}
stStatsInfBloggerRank(const QString &_id_id, const QString &_nickname_nickname):id_id(_id_id),nickname_nickname(_nickname_nickname),
bodycount(0), replycount(0), rank(0), influencevalue(0.0) {}
};
struct stStatsInfBloggerBuzzbyday
{
QString date;
int formateddate;
int idcount;
int bodycount;
int replycount;
int company_num;
stStatsInfBloggerBuzzbyday():formateddate(0), idcount(0), bodycount(0), replycount(0), company_num(0){}
};
struct stBodyInfluencerMap
{
int num;
int body_num;
int id_num;
int category_num;
int realin;
int community_num;
QString date;
stBodyInfluencerMap():num(0),body_num(0), id_num(0), category_num(0), realin(0), community_num(0){}
};
struct stReplyInfluencerMap
{
int num;
int reply_num;
int body_num;
int id_num;
int category_num;
int realin;
int community_num;
QString body_date;
stReplyInfluencerMap():num(0),reply_num(0),body_num(0),id_num(0),category_num(0),realin(0),community_num(0){}
};
class SReplyInfluencerMap
{
private:
SInitializer *m_pSInitializer;
QList<stReplyInfluencerMap> m_listMap;
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
};
class STInfluencer
{
private:
SInitializer *m_pSInitializer;
QList<stInfluencer> m_listMap;
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
void clear(){ m_listMap.clear(); }
};
class SStatsInfBloggerRank
{
private:
SInitializer *m_pSInitializer;
QList<stStatsInfBloggerRank> m_listMap;
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
};
class SStatsInfBloggerBuzzbyday
{
private:
SInitializer *m_pSInitializer;
QList<stStatsInfBloggerBuzzbyday> m_listMap;
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
};
class SBodyInfluencerMap
{
private:
SInitializer *m_pSInitializer;
QList<stBodyInfluencerMap> m_listMap;
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
};
struct stStatsJson
{
int company_num;
int servicenum;
QString title;
QString subtitle;
int platformname_num;
QString jdata;
int category_num;
stStatsJson():company_num(0), servicenum(2), platformname_num(1), category_num(0){}
};
class SStatsJson
{
private:
SInitializer *m_pSInitializer;
QList<stStatsJson> m_listMap;
public:
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
void clear(){ m_listMap.clear(); }
};
struct isGreaterInfluencerValue
{
bool operator()(const stInfluencer& first, const stInfluencer& second)
{
if (first.influencervalue > second.influencervalue)
return true;
else if (first.influencervalue == second.influencervalue)
return first.bodycount > second.bodycount;
else
return false;
//return first.influencervalue > second.influencervalue;
}
bool operator()(const stStatsInfBloggerRank& first, const stStatsInfBloggerRank& second)
{
if (first.influencevalue > second.influencevalue)
return true;
else if (first.influencevalue == second.influencevalue)
return first.bodycount > second.bodycount;
else
return false;
//return first.influencevalue > second.influencevalue;
}
};
struct isGreaterBodyCount
{
bool operator()(const stStatsInfBloggerRank& first, const stStatsInfBloggerRank& second)
{
return first.bodycount > second.bodycount;
}
bool operator()(const stInfluencer& first, const stInfluencer& second)
{
return first.bodycount > second.bodycount;
}
};
struct isGreaterReplyCount
{
bool operator()(const stStatsInfBloggerRank& first, const stStatsInfBloggerRank& second)
{
return first.replycount > second.replycount;
}
bool operator()(const stInfluencer& first, const stInfluencer& second)
{
return first.replycount > second.replycount;
}
};
struct stInfluenceBuzz
{
int bodycount;
int replycount;
QSet<QString> idcount;
stInfluenceBuzz():bodycount(0), replycount(0) {}
};
private:
SFilterAlgorithm m_SFilterAlgorithm;
QMap<int, stReal> m_mapCategory;
SBodyInfluencerMap m_SBodyInfluencerMap;
SReplyInfluencerMap m_SReplyInfluencerMap;
//SStatsInfBloggerBuzzbyday m_SStatsInfBloggerBuzzbyday;
//SStatsInfBloggerRank m_SStatsInfBloggerRank;
STInfluencer m_STInfluencer;
SStatsJson m_SStatsJson;
public:
virtual void setInitiaizer(SInitializer &_initializer);
virtual bool uploadData(int _companyNum);
virtual bool changeTable(int _companyNum);
virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList<SInitializer::stFilter> &_listFilter);
virtual bool makeOverallCategory(int _categoryNum);
virtual bool makeTable(SDatagroup &_datagroup);
};
#endif // SINFLUENCER