From ccf45829dd51bdc426fb6b72c05c3ee592e2f3a5 Mon Sep 17 00:00:00 2001 From: Gouzuang <87839812+Gouzuang@users.noreply.github.com> Date: Sun, 13 Jul 2025 16:35:32 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=8F=90=E9=86=92=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=AE=A1=E6=A0=B8=E6=B5=81=E7=A8=8B=E5=8F=8A?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 2 ++ main.cpp | 2 ++ module/data/data_UserControl.cpp | 19 +++++++--- module/data/data_UserControl.h | 1 + module/data/data_mail.cpp | 7 ++-- module/scanner/InventoryAlert.cpp | 2 ++ module/scanner/WorkAlert.cpp | 20 +++++++++++ module/scanner/WorkAlert.h | 10 ++++++ view/RegisterCenter/checkuserblock.cpp | 5 +++ view/RegisterCenter/checkuserblock.h | 50 ++++++++++++++------------ 10 files changed, 89 insertions(+), 29 deletions(-) create mode 100644 module/scanner/WorkAlert.cpp create mode 100644 module/scanner/WorkAlert.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 6c00e95..bb8fedb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -143,6 +143,8 @@ set(SHARED_SOURCES view/SplashScreen/nativesplash.cpp view/SplashScreen/nativesplash.h view/SplashScreen/nativesplash.ui + module/scanner/WorkAlert.cpp + module/scanner/WorkAlert.h ) list(REMOVE_DUPLICATES SHARED_SOURCES) diff --git a/main.cpp b/main.cpp index ec93ff0..3eb2336 100644 --- a/main.cpp +++ b/main.cpp @@ -22,11 +22,13 @@ #include "view/RegisterCenter/checknewuser.h" #include "view/SplashScreen/nativesplash.h" //#include "view/SplashScreen/splashscreen.h" +#include "module/scanner/WorkAlert.h" void setup_tasks() { // 后台定时每1分钟扫描库存告警 service::taskManager::getTimer().scheduleTask(60000, []() { bot::InventoryAlert::sendAlert(); + bot::WorkAlert::sendAdminCheckNewUserAlert(); }); } diff --git a/module/data/data_UserControl.cpp b/module/data/data_UserControl.cpp index 482897c..da6ff58 100644 --- a/module/data/data_UserControl.cpp +++ b/module/data/data_UserControl.cpp @@ -503,7 +503,7 @@ namespace data::UserControl { QList getAllUserId(int page, int pageSize) { service::DatabaseManager db(service::Path::user()); QString query = R"( - SELECT id FROM users WHERE status != 'Deleted' AND id_number NOT LIKE '-%' + SELECT id FROM users WHERE status != 'Deleted' AND id_number NOT LIKE 'System' ORDER BY created_at DESC LIMIT ? OFFSET ? )"; @@ -521,7 +521,7 @@ namespace data::UserControl { QList getUncheckedUserId(int page, int pageSize) { service::DatabaseManager db(service::Path::user()); QString query = R"( - SELECT id FROM users WHERE status == 'Unchecked' AND id_number NOT LIKE '-%' + SELECT id FROM users WHERE status == 'Unchecked' AND id_number NOT LIKE 'System' ORDER BY created_at DESC LIMIT ? OFFSET ? )"; @@ -537,7 +537,7 @@ namespace data::UserControl { QList getAllUserId() { service::DatabaseManager db(service::Path::user()); QString query = R"( - SELECT id FROM users WHERE status != 'Deleted' AND id_number NOT LIKE '-%' + SELECT id FROM users WHERE status != 'Deleted' AND id_number NOT LIKE 'System' )"; auto results = db.executePreparedQueryAndFetchAll(query, {}); QList userIds; @@ -550,7 +550,7 @@ namespace data::UserControl { QList getUncheckedUserId() { service::DatabaseManager db(service::Path::user()); QString query = R"( - SELECT id FROM users WHERE status == 'Unchecked' AND id_number NOT LIKE '-%' + SELECT id FROM users WHERE status == 'Unchecked' AND id_number NOT LIKE 'System' )"; auto results = db.executePreparedQueryAndFetchAll(query, {}); QList userIds; @@ -621,6 +621,17 @@ namespace data::UserControl { return true; } + bool rejectUserRegister(int userId) { + service::DatabaseManager db(service::Path::user()); + QString query = R"( + UPDATE users SET status = 'Rejected' WHERE id = ? AND status = 'Unchecked' + )"; + if (!db.executePreparedNonQuery(query, {userId})) { + return false; + } + return true; + } + QString getUserStatus(int userId) { service::DatabaseManager db(service::Path::user()); QString query = R"( diff --git a/module/data/data_UserControl.h b/module/data/data_UserControl.h index 554984a..11a8921 100644 --- a/module/data/data_UserControl.h +++ b/module/data/data_UserControl.h @@ -289,6 +289,7 @@ namespace data::UserControl { bool allowUserRegister(int userId); bool banUser(int userId); bool unbanUser(int userId); + bool rejectUserRegister(int userId); QString getUserStatus(int userId); } diff --git a/module/data/data_mail.cpp b/module/data/data_mail.cpp index a6ba2db..cceec56 100644 --- a/module/data/data_mail.cpp +++ b/module/data/data_mail.cpp @@ -24,12 +24,13 @@ namespace data::mail { } void registerSystemUser() { - data::UserControl::Login::createNewUser("-1", "库存预警", "huidbauiuicbabiabduiab", "System"); - data::UserControl::Login::createNewUser("-2", "LabNexus团队", "bcfuiasbiasuibcviuab", "System"); + data::UserControl::Login::createNewUser("System_3", "库存预警", "huidbauiuicbabiabduiab", "System"); + data::UserControl::Login::createNewUser("System_2", "LabNexus团队", "bcfuiasbiasuibcviuab", "System"); + data::UserControl::Login::createNewUser("System_1", "工作提醒", "bcfuiasbiasuibcviuab", "System"); } void findSystemUser() { - std::vector searchIds = {"-1","-2"}; + std::vector searchIds = {"System_1", "System_2", "System_3",}; for (QString id : searchIds) { auto userNameResult = data::UserControl::UserInfo::getUserNameByIdNumber(id); auto id2 = data::UserControl::Login::foundUserIdByIdNumber(id); diff --git a/module/scanner/InventoryAlert.cpp b/module/scanner/InventoryAlert.cpp index 972b919..1726206 100644 --- a/module/scanner/InventoryAlert.cpp +++ b/module/scanner/InventoryAlert.cpp @@ -8,6 +8,8 @@ namespace bot::InventoryAlert { void sendAlert() { + if (!data::UserControl::permission::isUserInGroup(data::UserControl::currentUserId,"Admin")) return; + service::DatabaseManager db(service::Path::equipment()); QString query = R"( diff --git a/module/scanner/WorkAlert.cpp b/module/scanner/WorkAlert.cpp new file mode 100644 index 0000000..aba5ca1 --- /dev/null +++ b/module/scanner/WorkAlert.cpp @@ -0,0 +1,20 @@ +// +// Created by gouzuang on 25-7-13. +// + +#include "WorkAlert.h" + +#include "module/data/data_mail.h" + +namespace bot::WorkAlert { + void sendAdminCheckNewUserAlert() { + if (!data::UserControl::permission::isUserInGroup(data::UserControl::currentUserId, "Admin")) return; + auto count = data::UserControl::check::getUncheckedUserCount(); + if (count == 0) return; + data::mail::send_mail(data::UserControl::currentUserId, + data::mail::systemReservedAccounts["工作提醒"], + "还有" + QString::number(count) + "个新用户待审核", + "请前往注册中心查看新用户信息并进行审核。", + "{}"); + } +} diff --git a/module/scanner/WorkAlert.h b/module/scanner/WorkAlert.h new file mode 100644 index 0000000..6c87373 --- /dev/null +++ b/module/scanner/WorkAlert.h @@ -0,0 +1,10 @@ +// +// Created by gouzuang on 25-7-13. +// + +#ifndef WORKALERT_H +#define WORKALERT_H +namespace bot::WorkAlert { + void sendAdminCheckNewUserAlert(); +} +#endif //WORKALERT_H diff --git a/view/RegisterCenter/checkuserblock.cpp b/view/RegisterCenter/checkuserblock.cpp index fe6eea6..b718f41 100644 --- a/view/RegisterCenter/checkuserblock.cpp +++ b/view/RegisterCenter/checkuserblock.cpp @@ -34,6 +34,7 @@ namespace view::RegisterCenter { } connect(&acceptButton, &QPushButton::clicked, this, &CheckUserBlock::AcceptCheck); + connect(&rejectButton, &QPushButton::clicked, this, &CheckUserBlock::RejectCheck); } CheckUserBlock::~CheckUserBlock() { @@ -115,6 +116,10 @@ namespace view::RegisterCenter { rejectButton.setStyleSheet(styleSheet2); } + void CheckUserBlock::RejectCheck() { + data::UserControl::check::rejectUserRegister(userId); + } + void CheckUserBlock::AcceptCheck() { if (data::UserControl::check::allowUserRegister(userId)) { acceptButton.setVisible(false); diff --git a/view/RegisterCenter/checkuserblock.h b/view/RegisterCenter/checkuserblock.h index 4ebb9f9..db91984 100644 --- a/view/RegisterCenter/checkuserblock.h +++ b/view/RegisterCenter/checkuserblock.h @@ -9,38 +9,44 @@ #include namespace view::RegisterCenter { -QT_BEGIN_NAMESPACE -namespace Ui { class CheckUserBlock; } -QT_END_NAMESPACE + QT_BEGIN_NAMESPACE -class CheckUserBlock : public QWidget { -Q_OBJECT + namespace Ui { + class CheckUserBlock; + } -public: -explicit CheckUserBlock(QWidget *parent = nullptr) = delete; + QT_END_NAMESPACE -explicit CheckUserBlock(int userId, QWidget *parent = nullptr); + class CheckUserBlock : public QWidget { + Q_OBJECT -~CheckUserBlock() override; + public: + explicit CheckUserBlock(QWidget *parent = nullptr) = delete; - void addCheckButton(); + explicit CheckUserBlock(int userId, QWidget *parent = nullptr); -void addStatusString(QString status); + ~CheckUserBlock() override; -void addStatusString(); + void addCheckButton(); -void setButtonStyle(); + void addStatusString(QString status); -public slots: -void AcceptCheck(); + void addStatusString(); -private: -Ui::CheckUserBlock *ui; - int userId; - QPushButton acceptButton, - rejectButton; -QLabel label_status; -}; + void setButtonStyle(); + + void RejectCheck(); + + public slots: + void AcceptCheck(); + + private: + Ui::CheckUserBlock *ui; + int userId; + QPushButton acceptButton, + rejectButton; + QLabel label_status; + }; } // view::RegisterCenter #endif //CHECKUSERBLOCK_H From c085d24e32481f64a0a403231346d3a3d3fef57d Mon Sep 17 00:00:00 2001 From: Gouzuang <87839812+Gouzuang@users.noreply.github.com> Date: Sun, 13 Jul 2025 16:40:35 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=8F=90=E9=86=92=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=AE=A1=E6=A0=B8=E6=B5=81=E7=A8=8B=E5=8F=8A?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/data/data_UserControl.cpp | 8 ++++---- module/scanner/InventoryAlert.cpp | 4 ++-- module/scanner/WorkAlert.cpp | 8 ++++---- module/scanner/WorkAlert.h | 1 + 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/module/data/data_UserControl.cpp b/module/data/data_UserControl.cpp index da6ff58..a4c9cc4 100644 --- a/module/data/data_UserControl.cpp +++ b/module/data/data_UserControl.cpp @@ -503,7 +503,7 @@ namespace data::UserControl { QList getAllUserId(int page, int pageSize) { service::DatabaseManager db(service::Path::user()); QString query = R"( - SELECT id FROM users WHERE status != 'Deleted' AND id_number NOT LIKE 'System' + SELECT id FROM users WHERE status != 'Deleted' AND id_number NOT LIKE 'System%' ORDER BY created_at DESC LIMIT ? OFFSET ? )"; @@ -521,7 +521,7 @@ namespace data::UserControl { QList getUncheckedUserId(int page, int pageSize) { service::DatabaseManager db(service::Path::user()); QString query = R"( - SELECT id FROM users WHERE status == 'Unchecked' AND id_number NOT LIKE 'System' + SELECT id FROM users WHERE status == 'Unchecked' AND id_number NOT LIKE 'System%' ORDER BY created_at DESC LIMIT ? OFFSET ? )"; @@ -537,7 +537,7 @@ namespace data::UserControl { QList getAllUserId() { service::DatabaseManager db(service::Path::user()); QString query = R"( - SELECT id FROM users WHERE status != 'Deleted' AND id_number NOT LIKE 'System' + SELECT id FROM users WHERE status != 'Deleted' AND id_number NOT LIKE 'System%' )"; auto results = db.executePreparedQueryAndFetchAll(query, {}); QList userIds; @@ -550,7 +550,7 @@ namespace data::UserControl { QList getUncheckedUserId() { service::DatabaseManager db(service::Path::user()); QString query = R"( - SELECT id FROM users WHERE status == 'Unchecked' AND id_number NOT LIKE 'System' + SELECT id FROM users WHERE status == 'Unchecked' AND id_number NOT LIKE 'System%' )"; auto results = db.executePreparedQueryAndFetchAll(query, {}); QList userIds; diff --git a/module/scanner/InventoryAlert.cpp b/module/scanner/InventoryAlert.cpp index 1726206..af0d1f1 100644 --- a/module/scanner/InventoryAlert.cpp +++ b/module/scanner/InventoryAlert.cpp @@ -8,9 +8,9 @@ namespace bot::InventoryAlert { void sendAlert() { - if (!data::UserControl::permission::isUserInGroup(data::UserControl::currentUserId,"Admin")) return; + if (!data::UserControl::permission::isUserInGroup(data::UserControl::currentUserId, "Admin")) return; - service::DatabaseManager db(service::Path::equipment()); + service::DatabaseManager db(service::Path::equipment()); QString query = R"( SELECT diff --git a/module/scanner/WorkAlert.cpp b/module/scanner/WorkAlert.cpp index aba5ca1..8af5c2e 100644 --- a/module/scanner/WorkAlert.cpp +++ b/module/scanner/WorkAlert.cpp @@ -12,9 +12,9 @@ namespace bot::WorkAlert { auto count = data::UserControl::check::getUncheckedUserCount(); if (count == 0) return; data::mail::send_mail(data::UserControl::currentUserId, - data::mail::systemReservedAccounts["工作提醒"], - "还有" + QString::number(count) + "个新用户待审核", - "请前往注册中心查看新用户信息并进行审核。", - "{}"); + data::mail::systemReservedAccounts["工作提醒"], + "还有" + QString::number(count) + "个新用户待审核", + "请前往注册中心查看新用户信息并进行审核。", + "{}"); } } diff --git a/module/scanner/WorkAlert.h b/module/scanner/WorkAlert.h index 6c87373..c26f9e2 100644 --- a/module/scanner/WorkAlert.h +++ b/module/scanner/WorkAlert.h @@ -4,6 +4,7 @@ #ifndef WORKALERT_H #define WORKALERT_H + namespace bot::WorkAlert { void sendAdminCheckNewUserAlert(); } From 74dcea21c2f8606e9a8b3d5bb59da782b4b6ccdb Mon Sep 17 00:00:00 2001 From: Gouzuang <87839812+Gouzuang@users.noreply.github.com> Date: Sun, 13 Jul 2025 16:44:03 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=8F=90=E9=86=92=E9=82=AE=E4=BB=B6=E5=8F=91=E9=80=81=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E8=B0=83=E6=95=B4=E5=8F=91=E4=BB=B6=E4=BA=BA?= =?UTF-8?q?=E4=B8=8E=E6=94=B6=E4=BB=B6=E4=BA=BA=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/scanner/WorkAlert.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/scanner/WorkAlert.cpp b/module/scanner/WorkAlert.cpp index 8af5c2e..d903cb9 100644 --- a/module/scanner/WorkAlert.cpp +++ b/module/scanner/WorkAlert.cpp @@ -11,8 +11,8 @@ namespace bot::WorkAlert { if (!data::UserControl::permission::isUserInGroup(data::UserControl::currentUserId, "Admin")) return; auto count = data::UserControl::check::getUncheckedUserCount(); if (count == 0) return; - data::mail::send_mail(data::UserControl::currentUserId, - data::mail::systemReservedAccounts["工作提醒"], + data::mail::send_mail(data::mail::systemReservedAccounts["工作提醒"], + data::UserControl::currentUserId, "还有" + QString::number(count) + "个新用户待审核", "请前往注册中心查看新用户信息并进行审核。", "{}");