New method for User
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
#include "User.h"
|
#include "User.h"
|
||||||
#include "db/SQLHelper.h"
|
#include "db/SQLHelper.h"
|
||||||
#include <QMetaProperty>
|
#include <QMetaProperty>
|
||||||
|
#include <QUuid>
|
||||||
#include <qdebug.h>
|
#include <qdebug.h>
|
||||||
User* User::currentUser = nullptr;
|
User* User::currentUser = nullptr;
|
||||||
|
|
||||||
@@ -66,15 +67,109 @@ bool User::QueryUser(QString userID, QString Pwd) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool User::existsUser(QString userCode) {
|
||||||
|
QString sql = QString("select * from Account where UserCode=:userID");
|
||||||
|
QMap<QString,QVariant> map;
|
||||||
|
QMap<QString,QVariant> params;
|
||||||
|
params[":userID"] = userCode;
|
||||||
|
SQLHelper::QueryFirst(sql, map, ¶ms);
|
||||||
|
return !map.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool User::getUser(QString userUID, User& user) {
|
||||||
|
QString sql = QString("select * from Account where UserID=:userUID");
|
||||||
|
QMap<QString,QVariant> map;
|
||||||
|
QMap<QString,QVariant> params;
|
||||||
|
params[":userUID"] = userUID;
|
||||||
|
SQLHelper::QueryFirst(sql, map, ¶ms);
|
||||||
|
if(!map.isEmpty())
|
||||||
|
{
|
||||||
|
#define USER_READONLY_PROPERTY(name) user.m_##name = map[#name].toString();
|
||||||
|
#define USER_PROPERTY(name) user.mf_##name = false;\
|
||||||
|
USER_READONLY_PROPERTY(name)
|
||||||
|
USER_PROPERTIES_MACRO()
|
||||||
|
#undef USER_PROPERTY
|
||||||
|
#undef USER_READONLY_PROPERTY
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool User::isAdmin() {
|
bool User::isAdmin() {
|
||||||
if (isAdminFlag<0)
|
if (isAdminFlag<0)
|
||||||
{
|
{
|
||||||
QString sql = QString("select RoleName from Role where RoleID=:RoleID");
|
auto RoleName = getRoleName(this->m_RoleID);
|
||||||
QMap<QString,QVariant> map;
|
isAdminFlag = RoleName == "admin"?1:0 ;
|
||||||
QMap<QString,QVariant> params;
|
|
||||||
params[":RoleID"] = this->m_RoleID;
|
|
||||||
SQLHelper::QueryFirst(sql, map, ¶ms);
|
|
||||||
isAdminFlag = map["RoleName"].toString() == "admin"?1:0 ;
|
|
||||||
}
|
}
|
||||||
return isAdminFlag;
|
return isAdminFlag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool LOAD_ALL_ROLE = false;
|
||||||
|
static QMap<QString,QString> roleCache;
|
||||||
|
|
||||||
|
QString User::getRoleName(QString RoleID) {
|
||||||
|
if (roleCache.contains(RoleID)) return roleCache[RoleID];
|
||||||
|
QString sql = QString("select RoleName from Role where RoleID=:RoleID");
|
||||||
|
QMap<QString,QVariant> map;
|
||||||
|
QMap<QString,QVariant> params;
|
||||||
|
params[":RoleID"] = RoleID;
|
||||||
|
SQLHelper::QueryFirst(sql, map, ¶ms);
|
||||||
|
roleCache[RoleID] = map["RoleName"].toString();
|
||||||
|
return map["RoleName"].toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString User::getRoleID(QString RoleName) {
|
||||||
|
if (roleCache.values().contains(RoleName)) {
|
||||||
|
int index = roleCache.values().indexOf(RoleName);
|
||||||
|
return roleCache.keys()[index];
|
||||||
|
}
|
||||||
|
QString sql = QString("select RoleID from Role where RoleName=:RoleName");
|
||||||
|
QMap<QString,QVariant> map;
|
||||||
|
QMap<QString,QVariant> params;
|
||||||
|
params[":RoleName"] = RoleName;
|
||||||
|
SQLHelper::QueryFirst(sql, map, ¶ms);
|
||||||
|
roleCache[map["RoleID"].toString()] = RoleName;
|
||||||
|
return map["RoleID"].toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList User::getAllRoleName() {
|
||||||
|
if (!LOAD_ALL_ROLE)
|
||||||
|
{
|
||||||
|
auto table = SQLHelper::getTable("Role");
|
||||||
|
table->select();
|
||||||
|
for (int i = 0; i < table->rowCount(); i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
roleCache[table->data(table->index(i, 0)).toString()] =
|
||||||
|
table->data(table->index(i,1)).toString();
|
||||||
|
qDebug()<<i<<", "<< table->data(table->index(i, 0)).toString()<<", "
|
||||||
|
<<table->data(table->index(i,1)).toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return roleCache.values();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool User::insertUser(QString UserCode, User &user) {
|
||||||
|
user.m_UserID = QUuid::createUuid().toString();
|
||||||
|
user.m_UserCode = UserCode;
|
||||||
|
static QString updateSQL = "insert into Account (%1) values (%2)";
|
||||||
|
QString namesString = "";
|
||||||
|
QString valuesString = "";
|
||||||
|
QMap<QString,QVariant> params;
|
||||||
|
#define USER_READONLY_PROPERTY(name)\
|
||||||
|
namesString += QString((!namesString.isEmpty())?", %1":"%1").arg(#name);\
|
||||||
|
valuesString += QString((!valuesString.isEmpty())?", :%1":":%1").arg(#name);\
|
||||||
|
params[":" #name] = user.m_##name;
|
||||||
|
#define USER_PROPERTY(name)\
|
||||||
|
USER_READONLY_PROPERTY(name)
|
||||||
|
USER_PROPERTIES_MACRO()
|
||||||
|
#undef USER_PROPERTY
|
||||||
|
#undef USER_READONLY_PROPERTY
|
||||||
|
bool result = 1 == SQLHelper::ExecuteNoQuery(updateSQL.arg(namesString,valuesString),¶ms);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ class User:public QObject {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
static bool QueryUser(QString userID, QString Pwd);
|
static bool QueryUser(QString userID, QString Pwd);
|
||||||
|
static bool existsUser(QString userCode);
|
||||||
static QString getEncryptedPassword(const QString& password)
|
static QString getEncryptedPassword(const QString& password)
|
||||||
{
|
{
|
||||||
QByteArray bytePwd = password.toLatin1();
|
QByteArray bytePwd = password.toLatin1();
|
||||||
@@ -30,6 +31,8 @@ public:
|
|||||||
static User* Current(){
|
static User* Current(){
|
||||||
return currentUser;
|
return currentUser;
|
||||||
}
|
}
|
||||||
|
static bool getUser(QString userUID,User& user);
|
||||||
|
static bool insertUser(QString UserCode,User& user);
|
||||||
explicit User(QObject *parent=nullptr);
|
explicit User(QObject *parent=nullptr);
|
||||||
~User();
|
~User();
|
||||||
QString getIndexName(){
|
QString getIndexName(){
|
||||||
@@ -60,9 +63,11 @@ public:
|
|||||||
}
|
}
|
||||||
bool submitChange();
|
bool submitChange();
|
||||||
bool isAdmin();
|
bool isAdmin();
|
||||||
|
static QString getRoleName(QString RoleID);
|
||||||
|
static QString getRoleID(QString RoleName);
|
||||||
|
static QStringList getAllRoleName();
|
||||||
private:
|
private:
|
||||||
static User* currentUser;
|
static User* currentUser;
|
||||||
|
|
||||||
// add properties store and modify flag
|
// add properties store and modify flag
|
||||||
#define USER_READONLY_PROPERTY(name) QString m_##name;
|
#define USER_READONLY_PROPERTY(name) QString m_##name;
|
||||||
#define USER_PROPERTY(name)\
|
#define USER_PROPERTY(name)\
|
||||||
|
|||||||
Reference in New Issue
Block a user