#include "cdataclass.h"
#include <QProcess>
#include <QCryptographicHash>
#include <QDir>
#include <QDateTime>
#include "CWorker/worker.h"
CDataClass::CDataClass(QObject *parent) : QObject(parent)
{
Worker *worker = new Worker;
worker->moveToThread(&mWorkerThread);
connect(&mWorkerThread, &QThread::finished, worker, &QObject::deleteLater);
connect(this, &CDataClass::operate, worker, &Worker::doWork);
connect(worker, &Worker::resultReady, this, &CDataClass::handleResults); // Qt接口
mWorkerThread.start();
mFuncMap["checkUserPwd"] = &CDataClass::checkUserPwd;
mFuncMap["getUsersData"] = &CDataClass::getUsersData;
mFuncMap["addUsersData"] = &CDataClass::addUsersData;
mFuncMap["editUsersData"] = &CDataClass::editUsersData;
mFuncMap["getLogsData"] = &CDataClass::getLogsData;
}
void CDataClass::testSlotGetData(const QString &func, const QVariantMap ¶ms)
{
qDebug() << "[CDataClass::testSlotGetData]" << func << params;
emit testSignalGetData("QVariant CDataClass::testHandleGetData(int count)");
}
QVariant CDataClass::testGetData(int count)
{
emit operate(WORK_DB_QUERY, "testGetData", "select * from co_prd_data limit 0,10000;");
return "{}";
}
void CDataClass::handleResults(const RstData &rstData)
{
if (rstData.func == "checkUserPwd")
{
if (rstData.result.size() > 0)
{
emit signalLoginResult(true);
}
else
{
emit signalLoginResult(false);
}
}
else
{
emit operateResult(rstData);
}
}
void CDataClass::handleCmdDataQML(const QString &func, const QStringList &keys,
const QStringList &values)
{
qDebug() << "[CDataClass::handleCmdDataQML]" << func << keys << values;
CmdData argcs;
argcs.func = func;
if (keys.size() != values.size())
{
return;
}
for (int var = 0; var < keys.size(); ++var)
{
argcs.params[keys[var]] = values[var];
}
handleCmdData(argcs);
}
void CDataClass::handleCmdData(const CmdData &argcs)
{
RstData rstData;
if (!mFuncMap.contains(argcs.func))
{
rstData.retCode = RET_NOFUNC;
rstData.msg = RET_MSG[rstData.retCode];
rstData.func = argcs.func;
emit signalMeaasge(rstData.msg);
return;
}
(this->*mFuncMap[argcs.func])(argcs);
}
void CDataClass::checkUserPwd(const CmdData &argcs)
{
RstData rstData;
if (!argcs.params.contains("user") || !argcs.params.contains("pwd"))
{
rstData.retCode = RET_PARAMERR;
rstData.msg = RET_MSG[rstData.retCode];
rstData.func = argcs.func;
emit signalMeaasge(rstData.msg);
return;
}
QString cmd = QString("select Id from account_users where Name='%1' and Pwd='%2';")
.arg(argcs.params["user"]).arg(argcs.params["pwd"]);
emit operate(WORK_DB_QUERY, argcs.func, cmd);
}
void CDataClass::getUsersData(const CmdData &argcs)
{
QString cmd;
if (argcs.params.contains("search")) // 模糊搜索
{
QString search = "%" + argcs.params["search"] + "%";
cmd = QString("SELECT t1.Id,t1.Name,t1.Nick,t1.Mobile,t1.Email,t3.Name,t2.Name,t1.Valid FROM "
"account_users t1,account_post t2,account_depart t3 WHERE t1.PostId=t2.Id AND "
"t2.DepartId=t3.Id AND (t1.Name LIKE '%1' OR t1.Nick LIKE '%1');").arg(search);
}
else // 普通搜索
{
cmd = QString("SELECT t1.Id,t1.Name,t1.Nick,t1.Mobile,t1.Email,t3.Name,t2.Name,t1.Valid FROM "
"account_users t1,account_post t2,account_depart t3 WHERE t1.PostId=t2.Id "
"AND t2.DepartId=t3.Id limit %1,%2;").arg(argcs.params["index"]).arg(argcs.params["count"]);
}
emit operate(WORK_DB_QUERY, argcs.func, cmd);
}
void CDataClass::addUsersData(const CmdData &argcs)
{
for (int var = 80; var < 100; ++var)
{
QString cmd = QString("INSERT INTO account_users (`Name`, `Pwd`, `Nick`, `PostId`, `Mobile`, `Email`, "
"`RoleIds`, `GroupIds`, `Authview`, `Authoper`, `Valid`) VALUES ");
int start = 0 + 10000 * var;
int n = start + 10000;
for (int i = start; i < n; ++i)
{
if (i == n - 1)
{
cmd += QString("('test%1', 'test%1', 'test%1', '2', NULL, NULL, NULL, NULL, '{}', '{}', '1');").arg(i+1);
}
else
{
cmd += QString("('test%1', 'test%1', 'test%1', '2', NULL, NULL, NULL, NULL, '{}', '{}', '1'),").arg(i+1);
}
}
emit operate(WORK_DB_RUN, argcs.func, cmd);
}
// QString cmd = QString("INSERT INTO account_users (`Name`, `Pwd`, `Nick`, `PostId`, `Mobile`, `Email`, "
// "`RoleIds`, `GroupIds`, `Authview`, `Authoper`, `Valid`) VALUES ");
// int start = 0;
// int n = start + 10000;
// for (int i = start; i < n; ++i)
// {
// if (i == n - 1)
// {
// cmd += QString("('test%1', 'test%1', 'test%1', '2', NULL, NULL, NULL, NULL, '{}', '{}', '1');").arg(i+1);
// }
// else
// {
// cmd += QString("('test%1', 'test%1', 'test%1', '2', NULL, NULL, NULL, NULL, '{}', '{}', '1'),").arg(i+1);
// }
// }
// emit operate(WORK_DB_RUN, argcs.func, cmd);
}
void CDataClass::editUsersData(const CmdData &argcs)
{
RstData rstData;
if (!argcs.params.contains("user") || !argcs.params.contains("name") ||
!argcs.params.contains("post") || !argcs.params.contains("mobile") ||
!argcs.params.contains("mail") || !argcs.params.contains("id"))
{
rstData.retCode = RET_PARAMERR;
rstData.msg = RET_MSG[rstData.retCode];
rstData.func = argcs.func;
emit signalMeaasge(rstData.msg);
return;
}
QString cmd = QString("UPDATE account_users SET Nick='%1',Mobile='%2',Email='%3' where Id='%4';").
arg(argcs.params["name"]).arg(argcs.params["mobile"]).arg(argcs.params["mail"]).arg(argcs.params["id"]);
emit operate(WORK_DB_RUN, argcs.func, cmd);
}
void CDataClass::getLogsData(const CmdData &argcs)
{
QString cmd;
if (argcs.params.contains("search")) // 模糊搜索
{
QString search = "%" + argcs.params["search"] + "%";
cmd = QString("select SYSL_Id,SYSL_User,SYSL_Ip,SYSL_Module,SYSL_Action,"
"SYSL_Content,SYSL_Time from sys_log WHERE SYSL_User LIKE '%1' "
"OR SYSL_Ip LIKE '%1' OR SYSL_Module LIKE '%1' OR SYSL_Action LIKE '%1' "
"OR SYSL_Content LIKE '%1';").arg(search);
}
else // 普通搜索
{
cmd = QString("select SYSL_Id,SYSL_User,SYSL_Ip,SYSL_Module,SYSL_Action,"
"SYSL_Content,SYSL_Time from sys_log limit %1,%2;").
arg(argcs.params["index"]).arg(argcs.params["count"]);
}
emit operate(WORK_DB_QUERY, argcs.func, cmd);
}