Browse Source

v1.1.3

storage-in-realtime
zhaohe 11 months ago
parent
commit
63086c3c81
  1. 5
      README.md
  2. 1
      appsrc/appbase/appbase.hpp
  3. 2
      appsrc/appbase/appbean/usr_role_type.cpp
  4. 14
      appsrc/appbase/appbean/usr_role_type.hpp
  5. 2
      appsrc/appsetting/project_port/basic/zappversion.hpp
  6. 98
      appsrc/baseservice/db/db_service.cpp
  7. 34
      appsrc/baseservice/db/db_service.hpp
  8. 4
      appsrc/baseservice/db/setting_db_dao.cpp
  9. 16
      appsrc/baseservice/devicestate/device_state_service.hpp
  10. 6
      appsrc/service/app/disinfection_ctrl_service_ext.cpp
  11. 9
      appsrc/service/app_core.cpp
  12. 4
      appsrc/service/audit_mgr_service.cpp
  13. 2
      appsrc/service/disinfection_logs_service.cpp
  14. 62
      appsrc/service/user_mgr_service.cpp
  15. 10
      appsrc/service/user_mgr_service.hpp

5
README.md

@ -58,5 +58,10 @@ VERSION 1.1.1
VERSION 1.1.2
1.修复TestPageMgrService 风机电流错误的BUG
VERSION 1.1.3
1. 修改用户接口
TODO:
添加用户增加用户查重检查
```

1
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"

2
appsrc/appbase/appbean/usr_role_type.cpp

@ -0,0 +1,2 @@
#include "usr_role_type.hpp"
RoleTypeZENUM_IMPL

14
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);

2
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"

98
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<User>();
auto admin = storage.get_all<User>(where(c(&User::is_admin) == true));
auto admin = storage.get_all<User>(where(c(&User::roleType) == USR_ROLE_ADMIN));
if (admin.size() == 0) {
storage.insert<User>({-1, "管理员", "9973", true}); // 管理员
storage.insert<User>({-1, "管理员", "8888", USR_ROLE_ADMIN}); // 管理员
}
auto user = storage.get_all<User>(where(c(&User::is_admin) == false));
auto user = storage.get_all<User>(where(c(&User::roleType) == USR_ROLE_USR));
if (user.size() == 0) {
storage.insert<User>({-1, "用户0", "0000", false}); // 普通用户
storage.insert<User>({-1, "用户0", "8888", USR_ROLE_USR}); // 普通用户
}
suc = true;
} catch (const std::exception& e) {
@ -104,14 +89,29 @@ list<shared_ptr<User>> DBService::getAllUser() {
}
return users;
}
void DBService::addUser(string uid, string passwd) {
void DBService::addUser(string name, string passwd, string roleType) {
lock_guard<recursive_mutex> 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<db::User> DBService::updateUserRoleType(int id, string roleType) {
lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto user = usertable.get_all<User>(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>(user[0]);
}
shared_ptr<db::User> DBService::delUser(int id) {
lock_guard<recursive_mutex> lock(lock_);
@ -123,39 +123,39 @@ shared_ptr<db::User> 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<User>(where(c(&User::id) == id));
return make_shared<User>(remove_user[0]);
}
shared_ptr<db::User> DBService::changePasswd(string uid, string passwd) {
shared_ptr<db::User> DBService::changePasswd(int id, string passwd) {
lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto user = usertable.get_all<User>(where(c(&User::uid) == uid));
auto user = usertable.get_all<User>(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>(user[0]);
}
shared_ptr<db::User> DBService::updateUserUid(int id, string uid, string& olduid) {
shared_ptr<db::User> DBService::updateUserUid(int id, string name, string& oldname) {
lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto user = usertable.get_all<User>(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>(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<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto user = usertable.get_all<User>(where(c(&User::uid) == uid));
auto user = usertable.get_all<User>(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<User> DBService::getUser(string uid) {
shared_ptr<User> DBService::getUser(string name) {
lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto user = usertable.get_all<User>(where(c(&User::uid) == uid));
auto user = usertable.get_all<User>(where(c(&User::name) == name));
if (user.size() == 0) {
return nullptr;
}
return make_shared<User>(user[0]);
}
bool DBService::isUserExist(string uid) {
bool DBService::isUserExist(string name) {
lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto user = usertable.get_all<User>(where(c(&User::uid) == uid));
auto user = usertable.get_all<User>(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<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT);
usertable.sync_schema();
auto user = usertable.get_all<User>(where(c(&User::uid) == uid));
auto user = usertable.get_all<User>(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<recursive_mutex> 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();

34
appsrc/baseservice/db/db_service.hpp

@ -16,6 +16,7 @@
#include <vector>
#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<DBService> {
*******************************************************************************/
list<shared_ptr<db::User>> getAllUser();
json getAllUserJson();
json getUserJson(string uid);
shared_ptr<db::User> getUser(string uid);
json getUserJson(string name);
shared_ptr<db::User> getUser(string name);
vector<string> 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<db::User> delUser(int id);
shared_ptr<db::User> changePasswd(string uid, string passwd);
shared_ptr<db::User> updateUserUid(int id, string uid, string& olduid);
// shared_ptr<db::User> changePasswd(string name, string passwd);
shared_ptr<db::User> changePasswd(int id, string passwd);
shared_ptr<db::User> updateUserUid(int id, string name, string& oldname);
shared_ptr<db::User> updateUserRoleType(int id, string roleType);
public:
/*******************************************************************************
@ -115,7 +123,7 @@ class DBService : public enable_shared_from_this<DBService> {
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<DBService> {
}; // namespace iflytop
#define ADD_USER_BEHAVIOR(uid, behavior, behaviorinfo) GET_SERVICE(DBService)->addUserBehaviorRecord(uid, behavior, behaviorinfo)
#define ADD_USER_BEHAVIOR(name, behavior, behaviorinfo) GET_SERVICE(DBService)->addUserBehaviorRecord(name, behavior, behaviorinfo)

4
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),

16
appsrc/baseservice/devicestate/device_state_service.hpp

@ -35,8 +35,8 @@ class DeviceStateService : public enable_shared_from_this<DeviceStateService> {
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<DeviceStateService> {
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; }

6
appsrc/service/app/disinfection_ctrl_service_ext.cpp

@ -58,15 +58,15 @@ void DisinfectionCtrlServiceExt::start(shared_ptr<MsgProcessContext> 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<MsgProcessContext> 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<MsgProcessContext> cxt) {
ADD_USER_BEHAVIOR(ds->getLoginUid(), kbehavior_stop_disinfection, "");
ADD_USER_BEHAVIOR(ds->getLoginName(), kbehavior_stop_disinfection, "");
dcs->stop();
}

9
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();

4
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();
// 文件编码转换

2
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);

62
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<MsgProcessContext> cxt, string uid, string pwd) {
void UserMgrService::login(shared_ptr<MsgProcessContext> 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<MsgProcessContext> 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<MsgProcessContext> 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<MsgProcessContext> cxt, int id, string newpasswd, string passwd) { auto user = m_db->changePasswd(id, newpasswd); }
void UserMgrService::changeUsrRoleType(shared_ptr<MsgProcessContext> 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<MsgProcessContext> cxt, string name, string passwd, UsrRoleType roleType) { //
m_db->addUser(name, passwd, roleType);
}
void UserMgrService::addUser(shared_ptr<MsgProcessContext> cxt, string uid, string passwd) { m_db->addUser(uid, passwd); }
void UserMgrService::delUser(shared_ptr<MsgProcessContext> 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<MsgProcessContext> cxt, int id, string uid) {
string olduid;
auto user = m_db->updateUserUid(id, uid, olduid);
void UserMgrService::updateUserName(shared_ptr<MsgProcessContext> 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<MsgProcessContext> cxt) {
@ -69,12 +71,12 @@ void UserMgrService::getAllUser(shared_ptr<MsgProcessContext> cxt) {
}
void UserMgrService::getLoginUser(shared_ptr<MsgProcessContext> 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"] = {};
}

10
appsrc/service/user_mgr_service.hpp

@ -22,12 +22,14 @@ class UserMgrService : public enable_shared_from_this<UserMgrService> {
void initialize();
private:
void login(shared_ptr<MsgProcessContext> cxt, string uid, string pwd);
void login(shared_ptr<MsgProcessContext> cxt, string name, string pwd);
void unlogin(shared_ptr<MsgProcessContext> cxt);
void chpasswd(shared_ptr<MsgProcessContext> cxt, string uid, string newpasswd, string passwd);
void addUser(shared_ptr<MsgProcessContext> cxt, string uid, string passwd);
// void chrole(shared_ptr<MsgProcessContext> cxt, string name, string role);
void addUser(shared_ptr<MsgProcessContext> cxt, string name, string passwd, UsrRoleType roleType);
void chpasswd(shared_ptr<MsgProcessContext> cxt, int id, string newpasswd, string passwd);
void changeUsrRoleType(shared_ptr<MsgProcessContext> cxt, int id, UsrRoleType roleType);
void delUser(shared_ptr<MsgProcessContext> cxt, int id);
void updateUserUid(shared_ptr<MsgProcessContext> cxt, int id, string uid);
void updateUserName(shared_ptr<MsgProcessContext> cxt, int id, string name);
void getAllUser(shared_ptr<MsgProcessContext> cxt);
void getLoginUser(shared_ptr<MsgProcessContext> cxt);
};

Loading…
Cancel
Save