Explorar o código

feat:使用登录人员信息进行人脸识别

Yao hai 6 días
pai
achega
52a89975d3

+ 7 - 7
blastProject/blastprojectpage.cpp

@@ -137,8 +137,8 @@ void BlastProjectPage::onComboBoxIndexChanged(int index) {
 }
 
 void BlastProjectPage::personOptionsByType(const QJsonArray &dataArray) {
-    QJsonArray bapoYuanArray;
-    QJsonArray anQuanYuanArray;
+    QJsonArray blasterDeployerArray;
+    QJsonArray operatorArray;
     for (const QJsonValue &value : dataArray) {
         if (value.isObject()) {
             QJsonObject obj = value.toObject();
@@ -146,16 +146,16 @@ void BlastProjectPage::personOptionsByType(const QJsonArray &dataArray) {
                 QJsonArray roleIdsArray = obj["roleIds"].toArray();
                 // TODO: 角色ID改成常量
                 if (roleIdsArray.contains(4)) {  // 爆破员
-                    bapoYuanArray.append(obj);
-                } else if (roleIdsArray.contains(5)) {  // 安全
-                    anQuanYuanArray.append(obj);
+                    blasterDeployerArray.append(obj);
+                } else if (roleIdsArray.contains(7)) {  // 操作
+                    operatorArray.append(obj);
                 }
             }
         }
     }
 
-    dialog->SetComboBoxBlast(bapoYuanArray);
-    dialog->SetComboBoxOperator(anQuanYuanArray);
+    dialog->SetComboBoxBlast(blasterDeployerArray);
+    dialog->SetComboBoxOperator(operatorArray);
 }
 
 void BlastProjectPage::addressOptions(const QJsonArray &dataArrayAddress) {

+ 22 - 17
blastopepage.cpp

@@ -8,19 +8,21 @@
 #include "global.h"
 #include "loadingwidget.h"
 #include "logger.h"
+#include "loginwindow.h"
 #include "registryManager/registrymanager.h"
 #include "ui_blastopepage.h"
 
 BlastOpePage::BlastOpePage(QWidget *parent)
     : QWidget(parent), ui(new Ui::BlastOpePage), dao(DatabaseManager::getInstance().getDatabase()) {
     QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
-    QString useFaceVerify = env.value("UseFaceVerify", "true");
-    if (useFaceVerify.toLower() == "true") {
-        InitFace();
-    } else {
-        ui->setupUi(this);
-        initPagination();
-    }
+    InitFace();
+    // QString useFaceVerify = env.value("UseFaceVerify", "true");
+    // if (useFaceVerify.toLower() == "true") {
+    //     InitFace();
+    // } else {
+    //     ui->setupUi(this);
+    //     initPagination();
+    // }
 }
 
 void BlastOpePage::showDownWidget(QString uuid, const QString &topic, const QString &message) {
@@ -48,6 +50,7 @@ void BlastOpePage::InitFace() {
     LoadingWidget::showLoading(this, "请求创建人脸识别...");
 
     layout = new QVBoxLayout(this);
+    // TODO: relase the qwebengineview when not successfully verified
     view = new QWebEngineView(this);
     view->setAttribute(Qt::WA_OpaquePaintEvent);
 
@@ -217,19 +220,21 @@ void BlastOpePage::handleFeaturePermission(QWebEnginePage *page, const QUrl &sec
 
 QJsonObject BlastOpePage::getMetaInfo() {
     QJsonObject metaInfo;
+    QString certName;
+    QString certNo;
 
     // TODO: 获取登录用户信息
     QProcessEnvironment env = QProcessEnvironment::systemEnvironment();  //  获取系统环境变量
-    if (env.contains("certName") && env.contains("certNo")) {
-        qDebug() << "Environment variables 'certName' or 'certNo' not found.";
-        return metaInfo;  // 如果没有找到相关环境变量,返回空的 QJsonObject
-    } /*else {
-        certName = RegistryManager::getInstance().getCertName(env.value("certName", ""));
-        certID = RegistryManager::getInstance().setCertNo(env.value("certNo", ""));
-    }
-        */
-    QString certName = env.value("certName", "");  // 第二个参数为默认值
-    QString certNo = env.value("certNo", "");
+    // if (env.contains("certName") && env.contains("certNo")) {
+    //     certName = env.value("certName", "");  // 第二个参数为默认值
+    //     certNo = env.value("certNo", "");
+    //     qDebug() << "Environment variables 'certName' or 'certNo' not found.";
+    //     return metaInfo;  // 如果没有找到相关环境变量,返回空的 QJsonObject
+    // } else {
+    QMap<QString, QString> userInfo = RegistryManager::instance()->getCurentLoginUser();
+    certName = userInfo.value("certName", "");
+    certNo = userInfo.value("identity", "");
+    //}
     metaInfo["certName"] = certName;
     metaInfo["certNo"] = certNo;
     qDebug() << certName << certNo << "<certInfo";

+ 5 - 5
login/loginwindow.cpp

@@ -6,7 +6,6 @@
 LoginWindow::LoginWindow(QWidget *parent)
     : QWidget(parent), ui(new Ui::LoginWindow), manager(new QNetworkAccessManager(this)) {
     ui->setupUi(this);
-    registryManager = new RegistryManager();
     ui->username->lineEdit()->setPlaceholderText("请输入用户名");
     QMovie *movie = new QMovie(this);
     movie->setFileName(":/icons/icons/hxgc.gif");
@@ -17,7 +16,7 @@ LoginWindow::LoginWindow(QWidget *parent)
 }
 
 void LoginWindow::initUesrCombox() {
-    QStringList allUsernames = registryManager->getAllUsernames();
+    QStringList allUsernames = RegistryManager::instance()->getAllUsernames();
     for (const QString &username : allUsernames) {
         ui->username->addItem(username);
     }
@@ -101,8 +100,9 @@ void LoginWindow::on_btnLogin_clicked() {
                                 int userId = userObj["userId"].toInt();
                                 QString identity = userObj["identity"].toString();
                                 QString userIdStr = QString::number(userId);
-                                registryManager->saveUserInfo(userIdStr, username, password,
-                                                              identity);
+                                QString certName = userObj["nickName"].toString();
+                                RegistryManager::instance()->saveUserInfo(
+                                    userIdStr, username, password, identity, certName);
                                 QString Authority = responseObj["currentAuthority"].toString();
                                 globalAuthority = "Bearer " + Authority;
                                 this->close();
@@ -205,7 +205,7 @@ void LoginWindow::on_username_activated(int index) { qDebug() << index; }
 void LoginWindow::on_username_currentIndexChanged(int index) {
     QString name = ui->username->currentText();
 
-    QString pass = registryManager->getPasswordByUsername(name);
+    QString pass = RegistryManager::instance()->getPasswordByUsername(name);
 
     ui->password->setText(pass);
 }

+ 14 - 16
login/loginwindow.h

@@ -1,33 +1,32 @@
 #ifndef LOGINWINDOW_H
 #define LOGINWINDOW_H
 
-#include <QWidget>
-#include "../mainwindow.h"
-#include "../registryManager/registrymanager.h"
-#include "../global.h"
-#include <QNetworkAccessManager>
 #include <QMessageBox>
-#include <QTimer>
 #include <QMovie>
+#include <QNetworkAccessManager>
+#include <QTimer>
+#include <QWidget>
 
+#include "../global.h"
+#include "../mainwindow.h"
+#include "../registryManager/registrymanager.h"
 
 namespace Ui {
 class LoginWindow;
 }
 
-class LoginWindow : public QWidget
-{
+class LoginWindow : public QWidget {
     Q_OBJECT
 
-public:
+   public:
     explicit LoginWindow(QWidget *parent = nullptr);
     ~LoginWindow();
 
-protected:
+   protected:
     void mousePressEvent(QMouseEvent *event) override;
     void mouseMoveEvent(QMouseEvent *event) override;
 
-private slots:
+   private slots:
     void on_btnLogin_clicked();
 
     void on_btnClose_clicked();
@@ -38,14 +37,13 @@ private slots:
 
     void on_username_currentIndexChanged(int index);
 
-private:
+   private:
     void initUesrCombox();
-private:
+
+   private:
     Ui::LoginWindow *ui;
     QNetworkAccessManager *manager;
     QPoint m_dragPosition;
-    RegistryManager *registryManager;
-
 };
 
-#endif // LOGINWINDOW_H
+#endif  // LOGINWINDOW_H

+ 36 - 2
registryManager/registrymanager.cpp

@@ -3,17 +3,35 @@
 #include <QDebug>
 #include <QSettings>
 
+RegistryManager *RegistryManager::s_instance = nullptr;
+
+RegistryManager *RegistryManager::instance() {
+    if (!s_instance) {
+        s_instance = new RegistryManager();
+    }
+    return s_instance;
+}
+
+void RegistryManager::cleanup() {
+    if (s_instance) {
+        delete s_instance;
+        s_instance = nullptr;
+    }
+}
+
 RegistryManager::RegistryManager(QObject *parent) : QObject(parent) {}
 
 RegistryManager::~RegistryManager() {}
 
 bool RegistryManager::saveUserInfo(const QString &userId, const QString &username,
-                                   const QString &password, const QString &identity) {
+                                   const QString &password, const QString &identity,
+                                   const QString &certName) {
     QSettings settings(organizationName, applicationName);
     settings.beginGroup(userId);
     settings.setValue("Username", username);
     settings.setValue("Password", password);
     settings.setValue("Identity", identity);
+    settings.setValue("CertName", certName);
     qDebug() << "saved user info" << username << password << identity;
     settings.endGroup();
 
@@ -66,8 +84,8 @@ QString RegistryManager::getPasswordByUsername(const QString &username) {
 
 QMap<QString, QPair<QString, QString>> RegistryManager::getAllUserInfos() {
     QMap<QString, QPair<QString, QString>> allUserInfos;
-    QStringList userIds = getAllUserIds();
 
+    QStringList userIds = getAllUserIds();
     for (const QString &userId : userIds) {
         QString username, password;
         if (readUserInfo(userId, username, password)) {
@@ -77,3 +95,19 @@ QMap<QString, QPair<QString, QString>> RegistryManager::getAllUserInfos() {
 
     return allUserInfos;
 }
+
+QMap<QString, QString> RegistryManager::getCurentLoginUser() {
+    QString userId = getAllUserIds().first();
+    QMap<QString, QString> currentUserInfo;
+
+    QSettings settings(organizationName, applicationName);
+    settings.beginGroup(userId);
+    settings.value("Username").toString();
+    currentUserInfo["username"] = settings.value("Username").toString();
+    currentUserInfo["certName"] = settings.value("CertName").toString();
+    currentUserInfo["identity"] = settings.value("Identity").toString();
+
+    settings.endGroup();
+
+    return currentUserInfo;
+}

+ 18 - 15
registryManager/registrymanager.h

@@ -1,25 +1,28 @@
-#ifndef REGISTRYMANAGER_H
-#define REGISTRYMANAGER_H
-
+#pragma once
+#include <QMap>
 #include <QObject>
-#include <QString>
-
+#include <QPair>
 
-class RegistryManager : public QObject
-{
+class RegistryManager : public QObject {
     Q_OBJECT
-public:
-    explicit RegistryManager(QObject *parent = nullptr);
-    ~RegistryManager();
-    bool saveUserInfo(const QString &userId,const QString &username, const QString &password,const QString &identity);
+   public:
+    static RegistryManager *instance();
+    static void cleanup();
+
+    bool saveUserInfo(const QString &userId, const QString &username, const QString &password,
+                      const QString &identity, const QString &certName);
     bool readUserInfo(const QString &userId, QString &username, QString &password);
     QStringList getAllUserIds();
     QStringList getAllUsernames();
-    QMap<QString, QPair<QString, QString> > getAllUserInfos();
     QString getPasswordByUsername(const QString &username);
+    QMap<QString, QPair<QString, QString>> getAllUserInfos();
+    QMap<QString, QString> getCurentLoginUser();
+
+   private:
+    explicit RegistryManager(QObject *parent = nullptr);
+    ~RegistryManager();
 
-private:
+    static RegistryManager *s_instance;
     const QString organizationName = "HXGC";
-    const QString applicationName = "smart_system";
+    const QString applicationName = "Smart Mine";
 };
-#endif // REGISTRYMANAGER_H