2021-11-11 14:09:12 +08:00
|
|
|
//
|
|
|
|
|
// Created by Krad on 2021/11/11.
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#include "User.h"
|
|
|
|
|
#include "db/SQLHelper.h"
|
|
|
|
|
#include <QMetaProperty>
|
|
|
|
|
#include <qdebug.h>
|
|
|
|
|
User* User::currentUser = nullptr;
|
|
|
|
|
|
|
|
|
|
User::User(QObject *parent) : QObject(parent) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
User::~User() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool User::submitChange() {
|
|
|
|
|
static QString updateSQL = "update Account %1 %2";
|
|
|
|
|
QString setString = "";
|
2021-11-12 14:32:22 +08:00
|
|
|
QMap<QString,QVariant> params;
|
2021-11-11 14:09:12 +08:00
|
|
|
#define USER_READONLY_PROPERTY(name)
|
|
|
|
|
#define USER_PROPERTY(name)\
|
|
|
|
|
USER_READONLY_PROPERTY(name)\
|
2021-11-12 14:32:22 +08:00
|
|
|
if (mf_##name){\
|
|
|
|
|
setString += QString((!setString.isEmpty())?", ":"") + QString(QString("set %1=%2").arg(#name, ":" #name));\
|
|
|
|
|
params[":" #name] = m_##name;\
|
|
|
|
|
}
|
2021-11-11 14:09:12 +08:00
|
|
|
USER_PROPERTIES_MACRO()
|
|
|
|
|
#undef USER_PROPERTY
|
|
|
|
|
#undef USER_READONLY_PROPERTY
|
|
|
|
|
QString whereString = " where "+getIndexName()+" = '"+getIndexValue()+"'";
|
2021-11-12 14:32:22 +08:00
|
|
|
bool result = 1 == SQLHelper::ExecuteNoQuery(updateSQL.arg(setString,whereString),¶ms);
|
|
|
|
|
if (result)
|
|
|
|
|
{
|
|
|
|
|
#define USER_READONLY_PROPERTY(name)
|
|
|
|
|
#define USER_PROPERTY(name) USER_READONLY_PROPERTY(name) mf_##name = false;
|
|
|
|
|
USER_PROPERTIES_MACRO()
|
|
|
|
|
#undef USER_PROPERTY
|
|
|
|
|
#undef USER_READONLY_PROPERTY
|
|
|
|
|
}
|
|
|
|
|
return result;
|
2021-11-11 14:09:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool User::QueryUser(QString userID, QString Pwd) {
|
2021-11-23 09:21:36 +08:00
|
|
|
|
2021-11-12 14:32:22 +08:00
|
|
|
QString sql = QString("select * from Account where UserCode=:userID and Password=:pwd");
|
2021-11-11 14:09:12 +08:00
|
|
|
QMap<QString,QVariant> map;
|
2021-11-12 14:32:22 +08:00
|
|
|
QMap<QString,QVariant> params;
|
|
|
|
|
params[":userID"] = userID;
|
|
|
|
|
params[":pwd"] = Pwd;
|
|
|
|
|
SQLHelper::QueryFirst(sql, map, ¶ms);
|
2021-11-11 14:09:12 +08:00
|
|
|
if(!map.isEmpty())
|
|
|
|
|
{
|
|
|
|
|
if (!currentUser) currentUser = new User;
|
|
|
|
|
#define USER_READONLY_PROPERTY(name) currentUser->m_##name = map[#name].toString();
|
2021-11-23 09:21:36 +08:00
|
|
|
#define USER_PROPERTY(name) currentUser->mf_##name = false;\
|
2021-11-11 14:09:12 +08:00
|
|
|
USER_READONLY_PROPERTY(name)
|
|
|
|
|
USER_PROPERTIES_MACRO()
|
|
|
|
|
#undef USER_PROPERTY
|
|
|
|
|
#undef USER_READONLY_PROPERTY
|
2021-11-23 09:21:36 +08:00
|
|
|
currentUser->isAdminFlag = -1;
|
2021-11-11 14:09:12 +08:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2021-11-23 09:21:36 +08:00
|
|
|
|
|
|
|
|
bool User::isAdmin() {
|
|
|
|
|
if (isAdminFlag<0)
|
|
|
|
|
{
|
|
|
|
|
QString sql = QString("select RoleName from Role where RoleID=:RoleID");
|
|
|
|
|
QMap<QString,QVariant> map;
|
|
|
|
|
QMap<QString,QVariant> params;
|
|
|
|
|
params[":RoleID"] = this->m_RoleID;
|
|
|
|
|
SQLHelper::QueryFirst(sql, map, ¶ms);
|
|
|
|
|
isAdminFlag = map["RoleName"].toString() == "admin"?1:0 ;
|
|
|
|
|
}
|
|
|
|
|
return isAdminFlag;
|
|
|
|
|
}
|