From 63086c3c810e3d73439b14983c755b747ec05d8e Mon Sep 17 00:00:00 2001 From: zhaohe Date: Tue, 10 Sep 2024 15:12:27 +0800 Subject: [PATCH] v1.1.3 --- README.md | 5 ++ appsrc/appbase/appbase.hpp | 1 + appsrc/appbase/appbean/usr_role_type.cpp | 2 + appsrc/appbase/appbean/usr_role_type.hpp | 14 ++++ .../appsetting/project_port/basic/zappversion.hpp | 2 +- appsrc/baseservice/db/db_service.cpp | 98 +++++++++++----------- appsrc/baseservice/db/db_service.hpp | 34 +++++--- appsrc/baseservice/db/setting_db_dao.cpp | 4 +- .../devicestate/device_state_service.hpp | 16 ++-- .../service/app/disinfection_ctrl_service_ext.cpp | 6 +- appsrc/service/app_core.cpp | 9 +- appsrc/service/audit_mgr_service.cpp | 4 +- appsrc/service/disinfection_logs_service.cpp | 2 +- appsrc/service/user_mgr_service.cpp | 62 +++++++------- appsrc/service/user_mgr_service.hpp | 10 ++- 15 files changed, 152 insertions(+), 117 deletions(-) create mode 100644 appsrc/appbase/appbean/usr_role_type.cpp create mode 100644 appsrc/appbase/appbean/usr_role_type.hpp diff --git a/README.md b/README.md index c91a4fd..48953b4 100644 --- a/README.md +++ b/README.md @@ -58,5 +58,10 @@ VERSION 1.1.1 VERSION 1.1.2 1.修复TestPageMgrService 风机电流错误的BUG +VERSION 1.1.3 + 1. 修改用户接口 + +TODO: + 添加用户增加用户查重检查 ``` \ No newline at end of file diff --git a/appsrc/appbase/appbase.hpp b/appsrc/appbase/appbase.hpp index c0e1710..84f6837 100644 --- a/appsrc/appbase/appbase.hpp +++ b/appsrc/appbase/appbase.hpp @@ -11,6 +11,7 @@ #include "appbase/appbean/setting_id.hpp" #include "appbase/appbean/pumpid.hpp" #include "appbase/appbean/test_page_iterm.hpp" +#include "appbase/appbean/usr_role_type.hpp" #include "appbean/device_state.hpp" #include "appbase/appbean/h2o2_sensor_data_snapshot.hpp" #include "appbase/appbean/air_leak_test_mode.hpp" diff --git a/appsrc/appbase/appbean/usr_role_type.cpp b/appsrc/appbase/appbean/usr_role_type.cpp new file mode 100644 index 0000000..32394e7 --- /dev/null +++ b/appsrc/appbase/appbean/usr_role_type.cpp @@ -0,0 +1,2 @@ +#include "usr_role_type.hpp" +RoleTypeZENUM_IMPL \ No newline at end of file diff --git a/appsrc/appbase/appbean/usr_role_type.hpp b/appsrc/appbase/appbean/usr_role_type.hpp new file mode 100644 index 0000000..e1caa90 --- /dev/null +++ b/appsrc/appbase/appbean/usr_role_type.hpp @@ -0,0 +1,14 @@ +#pragma once +#include "iflytop/core/components/zenum_template/zenum_template.hpp" + +#define USR_ROLE_ADMIN "admin" +#define USR_ROLE_MAINTAINER "maintainer" +#define USR_ROLE_USR "usr" + +#define RoleTypeZENUM_IMPL ZENUM_IMPL(UsrRoleType, RoleTypeLIST) +#define RoleTypeLIST(type, marco) /**/ \ + marco(type, admin) /**/ \ + marco(type, maintainer) /**/ \ + marco(type, usr) /**/ + +ZENUM_DECLAR(UsrRoleType, RoleTypeLIST); diff --git a/appsrc/appsetting/project_port/basic/zappversion.hpp b/appsrc/appsetting/project_port/basic/zappversion.hpp index 8da5ec3..2d5ff5f 100644 --- a/appsrc/appsetting/project_port/basic/zappversion.hpp +++ b/appsrc/appsetting/project_port/basic/zappversion.hpp @@ -1,3 +1,3 @@ #pragma once -#define VERSION "1.1.2" +#define VERSION "1.1.3" #define PROJECT_NAME "TRANSMIT_DM" \ No newline at end of file diff --git a/appsrc/baseservice/db/db_service.cpp b/appsrc/baseservice/db/db_service.cpp index 8b5af0b..e7b839b 100644 --- a/appsrc/baseservice/db/db_service.cpp +++ b/appsrc/baseservice/db/db_service.cpp @@ -21,15 +21,15 @@ using namespace nlohmann; USER_DB, /**/ \ make_table("users", /**/ \ make_column("id", &User::id, primary_key().autoincrement()), /**/ \ - make_column("uid", &User::uid), /**/ \ + make_column("name", &User::name), /**/ \ make_column("passwd", &User::passwd), /**/ \ - make_column("is_admin", &User::is_admin) /**/ \ + make_column("role", &User::roleType) /**/ \ ) #define USER_BEHAVIOR_RECORD_STRUCT \ make_table("user_behavior_records", /**/ \ make_column("id", &UserBehaviorRecord::id, primary_key().autoincrement()), /**/ \ - make_column("uid", &UserBehaviorRecord::uid), /**/ \ + make_column("usrName", &UserBehaviorRecord::usrName), /**/ \ make_column("date", &UserBehaviorRecord::date), /**/ \ make_column("behavior", &UserBehaviorRecord::behavior), /**/ \ make_column("behaviorinfo", &UserBehaviorRecord::behaviorinfo)) @@ -38,21 +38,6 @@ using namespace nlohmann; * 配置列表 * *******************************************************************************/ -#define SETTING_ITEM(_id, _name, _name_ch, _val_type, _val_lower_limit, _val_upper_limit, _val, _is_editable, _is_visible) \ - { \ - /**/ \ - .id = _id, /**/ \ - .name = _name, /**/ \ - .name_ch = _name_ch, /**/ \ - .val_type = _val_type, /**/ \ - .val_lower_limit = _val_lower_limit, /**/ \ - .val_upper_limit = _val_upper_limit, /**/ \ - .val = _val, /**/ \ - .default_val = _val, /**/ \ - .is_editable = _is_editable, /**/ \ - .is_visible = _is_visible /**/ \ - } - #define ZARRARY_SIZE(val) (sizeof(val) / sizeof(val[0])) DBService::DBService(/* args */) {} @@ -75,13 +60,13 @@ void DBService::init_usr_db() { storage.sync_schema(); auto allusr = storage.get_all(); - auto admin = storage.get_all(where(c(&User::is_admin) == true)); + auto admin = storage.get_all(where(c(&User::roleType) == USR_ROLE_ADMIN)); if (admin.size() == 0) { - storage.insert({-1, "管理员", "9973", true}); // 管理员 + storage.insert({-1, "管理员", "8888", USR_ROLE_ADMIN}); // 管理员 } - auto user = storage.get_all(where(c(&User::is_admin) == false)); + auto user = storage.get_all(where(c(&User::roleType) == USR_ROLE_USR)); if (user.size() == 0) { - storage.insert({-1, "用户0", "0000", false}); // 普通用户 + storage.insert({-1, "用户0", "8888", USR_ROLE_USR}); // 普通用户 } suc = true; } catch (const std::exception& e) { @@ -104,14 +89,29 @@ list> DBService::getAllUser() { } return users; } -void DBService::addUser(string uid, string passwd) { +void DBService::addUser(string name, string passwd, string roleType) { lock_guard lock(lock_); auto usertable = make_storage(USER_DB_STRUCT); usertable.sync_schema(); - logger->info("add user: {} {} {}", uid, passwd, false); - usertable.insert(User{-1, uid, passwd, false}); + logger->info("add user: {} {} {}", name, passwd, roleType); + usertable.insert(User{-1, name, passwd, roleType}); +} +shared_ptr DBService::updateUserRoleType(int id, string roleType) { + lock_guard lock(lock_); + auto usertable = make_storage(USER_DB_STRUCT); + usertable.sync_schema(); + auto user = usertable.get_all(where(c(&User::id) == id)); + if (user.size() == 0) { + logger->error("change user role fail, user not found"); + return nullptr; + } + logger->info("change user role: {} {} -> {}", id, user[0].roleType, roleType); + user[0].roleType = roleType; + usertable.update(user[0]); + return make_shared(user[0]); } + shared_ptr DBService::delUser(int id) { lock_guard lock(lock_); @@ -123,39 +123,39 @@ shared_ptr DBService::delUser(int id) { logger->error("remove user fail, user not found"); return nullptr; } - logger->info("delete user: {}:{}", id, remove_user[0].uid); + logger->info("delete user: {}:{}", id, remove_user[0].name); usertable.remove_all(where(c(&User::id) == id)); return make_shared(remove_user[0]); } -shared_ptr DBService::changePasswd(string uid, string passwd) { +shared_ptr DBService::changePasswd(int id, string passwd) { lock_guard lock(lock_); auto usertable = make_storage(USER_DB_STRUCT); usertable.sync_schema(); - auto user = usertable.get_all(where(c(&User::uid) == uid)); + auto user = usertable.get_all(where(c(&User::id) == id)); if (user.size() == 0) { logger->error("change passwd fail, user not found"); return nullptr; } - logger->info("change passwd: {} {} -> {}", uid, user[0].passwd, passwd); + logger->info("change passwd: {} {} -> {}", id, user[0].passwd, passwd); user[0].passwd = passwd; usertable.update(user[0]); return make_shared(user[0]); } -shared_ptr DBService::updateUserUid(int id, string uid, string& olduid) { +shared_ptr DBService::updateUserUid(int id, string name, string& oldname) { lock_guard lock(lock_); auto usertable = make_storage(USER_DB_STRUCT); usertable.sync_schema(); auto user = usertable.get_all(where(c(&User::id) == id)); if (user.size() == 0) { - logger->error("change user uid fail, user not found"); + logger->error("change user name fail, user not found"); return nullptr; } - olduid = user[0].uid; - logger->info("change user uid: {} {} -> {}", id, user[0].uid, uid); - user[0].uid = uid; + oldname = user[0].name; + logger->info("change user name: {} {} -> {}", id, user[0].name, name); + user[0].name = name; usertable.update(user[0]); return make_shared(user[0]); } @@ -170,60 +170,60 @@ json DBService::getAllUserJson() { for (auto& u : all) { json j_user; j_user["id"] = u.id; - j_user["uid"] = u.uid; + j_user["name"] = u.name; j_user["passwd"] = u.passwd; - j_user["is_admin"] = u.is_admin; + j_user["roleType"] = u.roleType; j_users.push_back(j_user); } return j_users; } -json DBService::getUserJson(string uid) { +json DBService::getUserJson(string name) { lock_guard lock(lock_); auto usertable = make_storage(USER_DB_STRUCT); usertable.sync_schema(); - auto user = usertable.get_all(where(c(&User::uid) == uid)); + auto user = usertable.get_all(where(c(&User::name) == name)); if (user.size() == 0) { return json(); } json j_user; j_user["id"] = user[0].id; - j_user["uid"] = user[0].uid; + j_user["name"] = user[0].name; j_user["passwd"] = user[0].passwd; - j_user["is_admin"] = user[0].is_admin; + j_user["roleType"] = user[0].roleType; return j_user; } -shared_ptr DBService::getUser(string uid) { +shared_ptr DBService::getUser(string name) { lock_guard lock(lock_); auto usertable = make_storage(USER_DB_STRUCT); usertable.sync_schema(); - auto user = usertable.get_all(where(c(&User::uid) == uid)); + auto user = usertable.get_all(where(c(&User::name) == name)); if (user.size() == 0) { return nullptr; } return make_shared(user[0]); } -bool DBService::isUserExist(string uid) { +bool DBService::isUserExist(string name) { lock_guard lock(lock_); auto usertable = make_storage(USER_DB_STRUCT); usertable.sync_schema(); - auto user = usertable.get_all(where(c(&User::uid) == uid)); + auto user = usertable.get_all(where(c(&User::name) == name)); if (user.size() == 0) { return false; } return true; } -bool DBService::ispasswdCorrect(string uid, string passwd) { +bool DBService::ispasswdCorrect(string name, string passwd) { lock_guard lock(lock_); auto usertable = make_storage(USER_DB_STRUCT); usertable.sync_schema(); - auto user = usertable.get_all(where(c(&User::uid) == uid)); + auto user = usertable.get_all(where(c(&User::name) == name)); if (user.size() == 0) { return false; } @@ -286,7 +286,7 @@ json DBService::getUserBehaviorRecordDescJson(int page, int page_size) { if (i >= from && i < to) { json j_user_behavior_record; j_user_behavior_record["id"] = u.id; - j_user_behavior_record["uid"] = u.uid; + j_user_behavior_record["usrName"] = u.usrName; j_user_behavior_record["behavior"] = u.behavior; j_user_behavior_record["behaviorZH"] = user_behavior_to_str((user_behavior_t)u.behavior); j_user_behavior_record["behaviorinfo"] = u.behaviorinfo; @@ -315,13 +315,13 @@ static string getTime() { tm.tm_min, tm.tm_sec); } -void DBService::addUserBehaviorRecord(string uid, int behavior, string behaviorinfo) { +void DBService::addUserBehaviorRecord(string name, int behavior, string behaviorinfo) { lock_guard lock(lock_); auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT); user_behavior_record_table.sync_schema(); UserBehaviorRecord u; - u.uid = uid; + u.usrName = name; u.behavior = behavior; u.behaviorinfo = behaviorinfo; u.date = getTime(); diff --git a/appsrc/baseservice/db/db_service.hpp b/appsrc/baseservice/db/db_service.hpp index 8beeaae..523af4b 100644 --- a/appsrc/baseservice/db/db_service.hpp +++ b/appsrc/baseservice/db/db_service.hpp @@ -16,6 +16,7 @@ #include #include "appbase/appbase.hpp" +#include "appbase/appbean/usr_role_type.hpp" #include "appsetting/appsetting.hpp" #include "formula_db_dao.hpp" #include "setting_db_dao.hpp" @@ -54,17 +55,22 @@ using namespace std; using namespace core; using namespace nlohmann; namespace db { + +#define USR_ROLE_ADMIN "admin" +#define USR_ROLE_MAINTAINER "maintainer" +#define USR_ROLE_USR "usr" + struct User { public: int id; - string uid; + string name; string passwd; - bool is_admin; + string roleType; // "admin/maintainer/usr/" }; struct UserBehaviorRecord { int id; - string uid; + string usrName; string date; int behavior; string behaviorinfo; @@ -86,23 +92,25 @@ class DBService : public enable_shared_from_this { *******************************************************************************/ list> getAllUser(); json getAllUserJson(); - json getUserJson(string uid); - shared_ptr getUser(string uid); + json getUserJson(string name); + shared_ptr getUser(string name); vector getUserNames(); - bool isUserExist(string uid); - bool ispasswdCorrect(string uid, string passwd); + bool isUserExist(string name); + bool ispasswdCorrect(string name, string passwd); /** * @brief 添加用户 * - * @param uid 用户名 + * @param name 用户名 * @param passwd 密码 * @param permission_level 许可等级,0超级管理员 3普通用户 */ - void addUser(string uid, string passwd); + void addUser(string name, string passwd, string roleType); shared_ptr delUser(int id); - shared_ptr changePasswd(string uid, string passwd); - shared_ptr updateUserUid(int id, string uid, string& olduid); + // shared_ptr changePasswd(string name, string passwd); + shared_ptr changePasswd(int id, string passwd); + shared_ptr updateUserUid(int id, string name, string& oldname); + shared_ptr updateUserRoleType(int id, string roleType); public: /******************************************************************************* @@ -115,7 +123,7 @@ class DBService : public enable_shared_from_this { int getUserBehaviorRecordTheFirstId(); json getUserBehaviorRecordDescJson(int page, int page_size); - void addUserBehaviorRecord(string uid, int behavior, string behaviorinfo); + void addUserBehaviorRecord(string name, int behavior, string behaviorinfo); void cleanUserBehaviorRecord(); private: @@ -124,4 +132,4 @@ class DBService : public enable_shared_from_this { }; // namespace iflytop -#define ADD_USER_BEHAVIOR(uid, behavior, behaviorinfo) GET_SERVICE(DBService)->addUserBehaviorRecord(uid, behavior, behaviorinfo) \ No newline at end of file +#define ADD_USER_BEHAVIOR(name, behavior, behaviorinfo) GET_SERVICE(DBService)->addUserBehaviorRecord(name, behavior, behaviorinfo) \ No newline at end of file diff --git a/appsrc/baseservice/db/setting_db_dao.cpp b/appsrc/baseservice/db/setting_db_dao.cpp index 38c2eb5..97a46bf 100644 --- a/appsrc/baseservice/db/setting_db_dao.cpp +++ b/appsrc/baseservice/db/setting_db_dao.cpp @@ -66,8 +66,8 @@ using namespace db; static Setting settingInitTable[] = { // setting_id, name_ch, default_val, val_lower_limit, val_upper_limit, // is_editable, is_visible_in_setting_page, is_visible_in_formula_page, is_visible_in_rt_page - INT_SETTING(SettingId::kstoped_gs, "消毒停止过氧化氢溶度", "300", "0", "800", /* */ true, true, true, true), - INT_SETTING(SettingId::kcontinued_gs, "消毒继续过氧化氢溶度", "200", "0", "800", /* */ true, true, true, true), + INT_SETTING(SettingId::kstoped_gs, "消毒停止过氧化氢浓度", "300", "0", "800", /* */ true, true, true, true), + INT_SETTING(SettingId::kcontinued_gs, "消毒继续过氧化氢浓度", "200", "0", "800", /* */ true, true, true, true), INT_SETTING(SettingId::kstoped_satur, "消毒停止过氧化氢相对饱和度", "85", "0", "100", /* */ true, true, true, true), INT_SETTING(SettingId::kcontinued_satur, "消毒继续过氧化氢相对饱和度", "60", "0", "100", /* */ true, true, true, true), INT_SETTING(SettingId::kmax_humidity, "允许消毒最大湿度", "90", "0", "100", /* */ true, true, true, true), diff --git a/appsrc/baseservice/devicestate/device_state_service.hpp b/appsrc/baseservice/devicestate/device_state_service.hpp index 1ad8fad..f465a98 100644 --- a/appsrc/baseservice/devicestate/device_state_service.hpp +++ b/appsrc/baseservice/devicestate/device_state_service.hpp @@ -35,8 +35,8 @@ class DeviceStateService : public enable_shared_from_this { THISCLASS(DeviceStateService); bool loginFlag = false; - bool m_isLoginAdmin = false; - string loginUid; + string m_roleType = ""; + string loginName; DeviceState state = DeviceState::Idle; @@ -52,19 +52,19 @@ class DeviceStateService : public enable_shared_from_this { public: DeviceStateService() {}; - void setLoginState(string uid, bool isadmin) { + void setLoginState(string name, string roleType) { loginFlag = true; - loginUid = uid; - m_isLoginAdmin = isadmin; + loginName = name; + m_roleType = roleType; } void unlogin() { loginFlag = false; - loginUid = ""; + loginName = ""; } bool isLogin() { return loginFlag; } - string getLoginUid() { return loginUid; } - bool isLoginAdmin() { return m_isLoginAdmin; } + string getLoginName() { return loginName; } + string getRoleType() { return m_roleType; } bool isTestMode() { return m_testMode; } void setTestMode(bool testMode) { m_testMode = testMode; } diff --git a/appsrc/service/app/disinfection_ctrl_service_ext.cpp b/appsrc/service/app/disinfection_ctrl_service_ext.cpp index e829d99..44c1021 100644 --- a/appsrc/service/app/disinfection_ctrl_service_ext.cpp +++ b/appsrc/service/app/disinfection_ctrl_service_ext.cpp @@ -58,15 +58,15 @@ void DisinfectionCtrlServiceExt::start(shared_ptr cxt, string // 从setting中获取实时参数 int level = atoi(loglevel.c_str()); dcs->start(level); - ADD_USER_BEHAVIOR(ds->getLoginUid(), kbehavior_do_disinfection, fmt::format("开始消毒,level:{}", level)); + ADD_USER_BEHAVIOR(ds->getLoginName(), kbehavior_do_disinfection, fmt::format("开始消毒,level:{}", level)); // m_state = DisinfectionState::preheat; } void DisinfectionCtrlServiceExt::startWithFormula(shared_ptr cxt, string formulaid) { // json formula = dcs->startWithFormula(formulaid); - ADD_USER_BEHAVIOR(ds->getLoginUid(), kbehavior_do_formula, fmt::format("启动配置方,{}", formula["name"])); + ADD_USER_BEHAVIOR(ds->getLoginName(), kbehavior_do_formula, fmt::format("启动配置方,{}", formula["name"])); } void DisinfectionCtrlServiceExt::stop(shared_ptr cxt) { - ADD_USER_BEHAVIOR(ds->getLoginUid(), kbehavior_stop_disinfection, ""); + ADD_USER_BEHAVIOR(ds->getLoginName(), kbehavior_stop_disinfection, ""); dcs->stop(); } diff --git a/appsrc/service/app_core.cpp b/appsrc/service/app_core.cpp index 2e11fdd..bd6661e 100644 --- a/appsrc/service/app_core.cpp +++ b/appsrc/service/app_core.cpp @@ -1,7 +1,7 @@ #include "app_core.hpp" -#include "baseservice/baseservice.hpp" #include "baseservice/app_http_server/app_http_server.hpp" +#include "baseservice/baseservice.hpp" #include "service/audit_mgr_service.hpp" #include "service/debug_page_test_service.hpp" #include "service/device_info_mgr_service.hpp" @@ -55,6 +55,7 @@ static void installEcodeInfo() { REG_ENUM_TYPE(SettingId, SettingId::getEnumStrList()); REG_ENUM_TYPE(AirLeakTestMode, AirLeakTestMode::getEnumStrList()); + REG_ENUM_TYPE(UsrRoleType, UsrRoleType::getEnumStrList()); AppEcodeInfoMgr::ins().regEcodeInfo(kerr_motor_reset_error, "电机复位错误"); AppEcodeInfoMgr::ins().regEcodeInfo(kerr_motor_subdevice_offline, "电机子设备离线"); @@ -369,9 +370,9 @@ json AppCore::getState() { json ret; ret["state"] = DS->getDeviceState(); - ret["loginInfo"]["loginFlag"] = DS->isLogin(); - ret["loginInfo"]["loginUid"] = DS->getLoginUid(); - ret["loginInfo"]["isLoginAdmin"] = DS->isLoginAdmin(); + ret["loginUsr"]["isLogin"] = DS->isLogin(); + ret["loginUsr"]["name"] = DS->getLoginName(); + ret["loginUsr"]["roleType"] = DS->getRoleType(); ret["testMode"]["isInTestMode"] = DS->isTestMode(); diff --git a/appsrc/service/audit_mgr_service.cpp b/appsrc/service/audit_mgr_service.cpp index 6c0a592..c3cb549 100644 --- a/appsrc/service/audit_mgr_service.cpp +++ b/appsrc/service/audit_mgr_service.cpp @@ -50,9 +50,9 @@ int AuditMgrService::callExportData() { return err::kappe_open_file_error; } - ofs << "date,uid,operation" << endl; + ofs << "Date,UsrName,Operation" << endl; for (auto& record : records) { - ofs << fmt::format("{},{},\"{}{}\"", record->date, record->uid, db::user_behavior_to_str((user_behavior_t)record->behavior), record->behaviorinfo) << endl; + ofs << fmt::format("{},{},\"{}{}\"", record->date, record->usrName, db::user_behavior_to_str((user_behavior_t)record->behavior), record->behaviorinfo) << endl; } ofs.close(); // 文件编码转换 diff --git a/appsrc/service/disinfection_logs_service.cpp b/appsrc/service/disinfection_logs_service.cpp index 128ccc6..f82d3d8 100644 --- a/appsrc/service/disinfection_logs_service.cpp +++ b/appsrc/service/disinfection_logs_service.cpp @@ -388,7 +388,7 @@ void DisinfectionLogsService::dumpDisinfectionToPrinterLog(string sessionId, lis content += fmt::format("= = = = = = = = = = = = = = = \n"); content += fmt::format(" 全思美特 \n"); content += fmt::format("消毒ID: {}\n", sessionId); - content += fmt::format("操作人员: {}\n", GET_SERVICE(DeviceStateService)->getLoginUid()); + content += fmt::format("操作人员: {}\n", GET_SERVICE(DeviceStateService)->getLoginName()); content += fmt::format("开始时间: {}\n", format_zsystem_tp(m_statistics->start_tp)); content += fmt::format("结束时间: {}\n", format_zsystem_tp(m_statistics->complete_tp)); content += fmt::format("总耗时: {}:{}:{}\n", total_hours, total_mins, total_secs); diff --git a/appsrc/service/user_mgr_service.cpp b/appsrc/service/user_mgr_service.cpp index 84b297b..3a11b4c 100644 --- a/appsrc/service/user_mgr_service.cpp +++ b/appsrc/service/user_mgr_service.cpp @@ -8,58 +8,60 @@ void UserMgrService::initialize() { GET_TO_SERVICE(m_db); GET_TO_SERVICE(m_deviceStateService); - REG_EXTFN(login, void(string, string), uid, pwd); + REG_EXTFN(login, void(string, string), name, pwd); REG_EXTFN_VOID(unlogin, void()); - REG_EXTFN(chpasswd, void(string, string, string), uid, newpasswd, passwd); - REG_EXTFN(addUser, void(string, string), uid, passwd); + REG_EXTFN(addUser, void(string, string, UsrRoleType), name, passwd, roleType); + REG_EXTFN(chpasswd, void(int, string, string), id, newpasswd, passwd); + REG_EXTFN(changeUsrRoleType, void(int, UsrRoleType), name, roleType); REG_EXTFN(delUser, void(int), id); - REG_EXTFN(updateUserUid, void(int, string), id, uid); + REG_EXTFN(updateUserName, void(int, string), id, name); REG_EXTFN_VOID(getAllUser, void()); REG_EXTFN_VOID(getLoginUser, void()); }; -void UserMgrService::login(shared_ptr cxt, string uid, string pwd) { +void UserMgrService::login(shared_ptr cxt, string name, string pwd) { // 超超级用户 - if (uid == "admin" && pwd == "iflytop9973") { - m_deviceStateService->setLoginState("admin", true); - logger->info("user {} login success", "admin"); - return; - } + // if (name == "admin" && pwd == "iflytop9973") { + // m_deviceStateService->setLoginState("admin", USR_ROLE_ADMIN); + // logger->info("user {} login success", "admin"); + // return; + // } - if (!m_db->isUserExist(uid)) // + if (!m_db->isUserExist(name)) // THROW_APP_EXCEPTION(err::kappe_user_not_exist, ""); - if (!m_db->ispasswdCorrect(uid, pwd)) // + if (!m_db->ispasswdCorrect(name, pwd)) // THROW_APP_EXCEPTION(err::kappe_passwd_error, ""); - m_deviceStateService->setLoginState(uid, m_db->getUser(uid)->is_admin); - logger->info("user {} login success", uid); - ADD_USER_BEHAVIOR(uid, kbehavior_login, ""); + m_deviceStateService->setLoginState(name, m_db->getUser(name)->roleType); + logger->info("user {} login success", name); + ADD_USER_BEHAVIOR(name, kbehavior_login, ""); return; } void UserMgrService::unlogin(shared_ptr cxt) { - string loginuid = m_deviceStateService->getLoginUid(); + string name = m_deviceStateService->getLoginName(); m_deviceStateService->unlogin(); logger->info("user unlogin success"); - ADD_USER_BEHAVIOR(loginuid, kbehavior_logout, ""); + ADD_USER_BEHAVIOR(name, kbehavior_logout, ""); return; } -void UserMgrService::chpasswd(shared_ptr cxt, string uid, string newpasswd, string passwd) { - if (!m_deviceStateService->isLoginAdmin()) { - APPCHECK(!m_db->ispasswdCorrect(uid, passwd), err::kappe_passwd_error, fmt::format("user {} passwd error", uid)); - } +void UserMgrService::chpasswd(shared_ptr cxt, int id, string newpasswd, string passwd) { auto user = m_db->changePasswd(id, newpasswd); } + +void UserMgrService::changeUsrRoleType(shared_ptr cxt, int id, UsrRoleType roleType) { + auto user = m_db->updateUserRoleType(id, roleType); + APPCHECK(!user, err::kappe_user_not_exist, fmt::format("user {} not exist", id)); +} - logger->info("changet passwd {} {}", uid, passwd); - auto user = m_db->changePasswd(uid, newpasswd); +void UserMgrService::addUser(shared_ptr cxt, string name, string passwd, UsrRoleType roleType) { // + m_db->addUser(name, passwd, roleType); } -void UserMgrService::addUser(shared_ptr cxt, string uid, string passwd) { m_db->addUser(uid, passwd); } void UserMgrService::delUser(shared_ptr cxt, int id) { auto user = m_db->delUser(id); APPCHECK(!user, err::kappe_user_not_exist, fmt::format("user {} not exist", id)); } -void UserMgrService::updateUserUid(shared_ptr cxt, int id, string uid) { - string olduid; - auto user = m_db->updateUserUid(id, uid, olduid); +void UserMgrService::updateUserName(shared_ptr cxt, int id, string name) { + string oldname; + auto user = m_db->updateUserUid(id, name, oldname); APPCHECK(user, err::kappe_user_not_exist, fmt::format("user {} not exist", id)); } void UserMgrService::getAllUser(shared_ptr cxt) { @@ -69,12 +71,12 @@ void UserMgrService::getAllUser(shared_ptr cxt) { } void UserMgrService::getLoginUser(shared_ptr cxt) { - string loginuid = m_deviceStateService->getLoginUid(); - bool isLogin = m_deviceStateService->isLogin(); + string loginName = m_deviceStateService->getLoginName(); + bool isLogin = m_deviceStateService->isLogin(); cxt->receipt["rely"]["isLogin"] = isLogin; if (isLogin) { - cxt->receipt["rely"]["loginUser"] = m_db->getUserJson(loginuid); + cxt->receipt["rely"]["loginUser"] = m_db->getUserJson(loginName); } else { cxt->receipt["rely"]["loginUser"] = {}; } diff --git a/appsrc/service/user_mgr_service.hpp b/appsrc/service/user_mgr_service.hpp index 2643263..b77344e 100644 --- a/appsrc/service/user_mgr_service.hpp +++ b/appsrc/service/user_mgr_service.hpp @@ -22,12 +22,14 @@ class UserMgrService : public enable_shared_from_this { void initialize(); private: - void login(shared_ptr cxt, string uid, string pwd); + void login(shared_ptr cxt, string name, string pwd); void unlogin(shared_ptr cxt); - void chpasswd(shared_ptr cxt, string uid, string newpasswd, string passwd); - void addUser(shared_ptr cxt, string uid, string passwd); + // void chrole(shared_ptr cxt, string name, string role); + void addUser(shared_ptr cxt, string name, string passwd, UsrRoleType roleType); + void chpasswd(shared_ptr cxt, int id, string newpasswd, string passwd); + void changeUsrRoleType(shared_ptr cxt, int id, UsrRoleType roleType); void delUser(shared_ptr cxt, int id); - void updateUserUid(shared_ptr cxt, int id, string uid); + void updateUserName(shared_ptr cxt, int id, string name); void getAllUser(shared_ptr cxt); void getLoginUser(shared_ptr cxt); };