#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(true); //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);return;
rstData.retCode = RET_OK;
rstData.msg = RET_MSG[rstData.retCode];
rstData.func = argcs.func;
for (int i = 0; i < 100000; ++i)
{
QVector<QString> tmp(10);
tmp[0] = QString::number(i+1);
tmp[1] = QString("test%1").arg(i+1);
tmp[2] = tmp[1];
tmp[7] = "1";
tmp[8] = "";
tmp[9] = "";
rstData.result.push_back(tmp);
}
handleResults(rstData);
}
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);
}
没有合适的资源?快使用搜索试试~ 我知道了~
Qt5_11QMLDemo-WebAssembly.zip
共32个文件
png:10个
qml:8个
h:7个
4星 · 超过85%的资源 需积分: 14 42 下载量 113 浏览量
2020-08-11
15:05:11
上传
评论 1
收藏 2.93MB ZIP 举报
温馨提示
本资源是Qt for WebAssembly的一个QML演示demo,demo里面有登录页面、3D展示页面、charts图表页面、tableview表格页面
资源推荐
资源详情
资源评论
收起资源包目录
Qt5_11QMLDemo-WebAssembly.zip (32个子文件)
Qt5_11QMLDemo-WebAssembly
images
edit_remove.png 368B
edit.png 503B
edit_add.png 394B
head.png 4KB
TableModel
usertablemodel.h 3KB
tablemodel.h 3KB
logtablemodel.h 3KB
menutreemodel.h 6KB
Common
ccommon.cpp 2KB
ccommon.h 2KB
main.cpp 2KB
qml
LogPage.qml 4KB
UserPage.qml 4KB
Login.qml 4KB
maintest.qml 3KB
images
edit_remove.png 368B
qt_logo.png 6KB
edit.png 503B
edit_add.png 394B
blackborder.png 657B
head.png 4KB
main.qml 11KB
Models3DPage.qml 4KB
font
SIMYOU.TTF 6.39MB
MyProgressBar.qml 1KB
ChartsPage.qml 2KB
qml.qrc 691B
CWorker
worker.h 973B
worker.cpp 5KB
out
Qt5_11QMLDemo.pro 2KB
CDataclass
cdataclass.cpp 7KB
cdataclass.h 2KB
共 32 条
- 1
资源评论
- dzh_感恩2022-10-19代码里数据库相关的,不知道怎么实现的,能再出一篇文章吗,我从网上找了,但都没有任何结果。
丁爸
- 粉丝: 368
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功