Files
GUI/src/models/User.cpp

81 lines
2.3 KiB
C++
Raw Normal View History

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),&params);
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-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, &params);
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();
#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
currentUser->isAdminFlag = -1;
2021-11-11 14:09:12 +08:00
return true;
}
return false;
}
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, &params);
isAdminFlag = map["RoleName"].toString() == "admin"?1:0 ;
}
return isAdminFlag;
}