diff --git a/CMakeLists.txt b/CMakeLists.txt index 3215b1f..19ffa3f 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 view/RegisterCenter/registernewuser.cpp view/RegisterCenter/registernewuser.h view/RegisterCenter/registernewuser.ui 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 f46e6ba..7377641 100644 --- a/module/data/data_UserControl.cpp +++ b/module/data/data_UserControl.cpp @@ -717,7 +717,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 ? )"; @@ -735,7 +735,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 ? )"; @@ -751,7 +751,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; @@ -764,7 +764,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; @@ -835,6 +835,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 d0505b6..df0ab76 100644 --- a/module/data/data_UserControl.h +++ b/module/data/data_UserControl.h @@ -311,6 +311,7 @@ namespace data::UserControl { 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..af0d1f1 100644 --- a/module/scanner/InventoryAlert.cpp +++ b/module/scanner/InventoryAlert.cpp @@ -8,7 +8,9 @@ namespace bot::InventoryAlert { void sendAlert() { - service::DatabaseManager db(service::Path::equipment()); + if (!data::UserControl::permission::isUserInGroup(data::UserControl::currentUserId, "Admin")) return; + + service::DatabaseManager db(service::Path::equipment()); QString query = R"( SELECT diff --git a/module/scanner/WorkAlert.cpp b/module/scanner/WorkAlert.cpp new file mode 100644 index 0000000..d903cb9 --- /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::mail::systemReservedAccounts["工作提醒"], + data::UserControl::currentUserId, + "还有" + QString::number(count) + "个新用户待审核", + "请前往注册中心查看新用户信息并进行审核。", + "{}"); + } +} diff --git a/module/scanner/WorkAlert.h b/module/scanner/WorkAlert.h new file mode 100644 index 0000000..c26f9e2 --- /dev/null +++ b/module/scanner/WorkAlert.h @@ -0,0 +1,11 @@ +// +// 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 09094cf..b13abfd 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() { @@ -137,6 +138,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);