Browse Source

update

master
zhaohe 2 years ago
parent
commit
e2dc55b80c
  1. 4
      README.md
  2. 47
      src/db/db_service.cpp
  3. 15
      src/db/db_service.hpp
  4. 8
      src/db/user_behavior_des.cpp
  5. 24
      src/db/user_behavior_des.hpp
  6. 73
      src/main_control_service.cpp

4
README.md

@ -24,6 +24,8 @@
通过getState可以获得到log,小数 OK 通过getState可以获得到log,小数 OK
数据库操作加锁 OK 数据库操作加锁 OK
-------------------------------- --------------------------------
记录用户操作 (TODO) 记录用户操作 (TODO)
添加U盘数据导出 添加U盘数据导出
@ -31,7 +33,7 @@
排液自动停止 排液自动停止
水禁传感器测试 水禁传感器测试
磁盘管理(磁盘容量不足时,弹出提示,且停止记录数据)
``` ```

47
src/db/db_service.cpp

@ -191,7 +191,7 @@ void DBService::addUser(string uid, string passwd, int permission_level) {
logger->info("add user: {} {} {}", uid, passwd, permission_level); logger->info("add user: {} {} {}", uid, passwd, permission_level);
usertable.insert(User{-1, uid, passwd, permission_level, true}); usertable.insert(User{-1, uid, passwd, permission_level, true});
} }
void DBService::delUser(int id) {
shared_ptr<db::User> DBService::delUser(int id) {
lock_guard<recursive_mutex> lock(lock_); lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT); auto usertable = make_storage(USER_DB_STRUCT);
@ -203,18 +203,19 @@ void DBService::delUser(int id) {
ZCHECK(admin.size() == 1, "admin user not found"); ZCHECK(admin.size() == 1, "admin user not found");
if (admin[0].id == id) { if (admin[0].id == id) {
logger->error("can not delete admin user"); logger->error("can not delete admin user");
return;
return nullptr;
} }
auto remove_user = usertable.get_all<User>(where(c(&User::id) == id)); auto remove_user = usertable.get_all<User>(where(c(&User::id) == id));
if (remove_user.size() == 0) { if (remove_user.size() == 0) {
logger->error("remove user fail, user not found"); logger->error("remove user fail, user not found");
return;
return nullptr;
} }
logger->info("delete user: {}:{}", id, remove_user[0].uid); logger->info("delete user: {}:{}", id, remove_user[0].uid);
usertable.remove_all<User>(where(c(&User::id) == id)); usertable.remove_all<User>(where(c(&User::id) == id));
return make_shared<User>(remove_user[0]);
} }
void DBService::updateUserPermissionLevel(int id, int permission_level) {
shared_ptr<db::User> DBService::updateUserPermissionLevel(int id, int permission_level) {
lock_guard<recursive_mutex> lock(lock_); lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT); auto usertable = make_storage(USER_DB_STRUCT);
@ -223,14 +224,15 @@ void DBService::updateUserPermissionLevel(int id, int permission_level) {
auto user = usertable.get_all<User>(where(c(&User::id) == id)); auto user = usertable.get_all<User>(where(c(&User::id) == id));
if (user.size() == 0) { if (user.size() == 0) {
logger->error("update user permission level fail, user not found"); logger->error("update user permission level fail, user not found");
return;
return nullptr;
} }
logger->info("update user permission level: {} {} -> {}", id, user[0].permission_level, permission_level); logger->info("update user permission level: {} {} -> {}", id, user[0].permission_level, permission_level);
user[0].permission_level = permission_level; user[0].permission_level = permission_level;
usertable.update(user[0]); usertable.update(user[0]);
return make_shared<User>(user[0]);
} }
void DBService::changePasswd(string uid, string passwd) {
shared_ptr<db::User> DBService::changePasswd(string uid, string passwd) {
lock_guard<recursive_mutex> lock(lock_); lock_guard<recursive_mutex> lock(lock_);
auto usertable = make_storage(USER_DB_STRUCT); auto usertable = make_storage(USER_DB_STRUCT);
@ -238,11 +240,28 @@ void DBService::changePasswd(string uid, string passwd) {
auto user = usertable.get_all<User>(where(c(&User::uid) == uid)); auto user = usertable.get_all<User>(where(c(&User::uid) == uid));
if (user.size() == 0) { if (user.size() == 0) {
logger->error("change passwd fail, user not found"); logger->error("change passwd fail, user not found");
return;
return nullptr;
} }
logger->info("change passwd: {} {} -> {}", uid, user[0].passwd, passwd); logger->info("change passwd: {} {} -> {}", uid, user[0].passwd, passwd);
user[0].passwd = passwd; user[0].passwd = passwd;
usertable.update(user[0]); usertable.update(user[0]);
return make_shared<User>(user[0]);
}
shared_ptr<db::User> DBService::updateUserUid(int id, string uid, string& olduid) {
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");
return nullptr;
}
olduid = user[0].uid;
logger->info("change user uid: {} {} -> {}", id, user[0].uid, uid);
user[0].uid = uid;
usertable.update(user[0]);
return make_shared<User>(user[0]);
} }
json DBService::getAllUserJson() { json DBService::getAllUserJson() {
@ -457,23 +476,30 @@ void DBService::addFormula(string formula_id, int stoped_gs, int continued_gs, i
addFormula(formula_id, to_string(stoped_gs), to_string(continued_gs), to_string(stoped_satur), to_string(continued_satur), to_string(stoped_humi), addFormula(formula_id, to_string(stoped_gs), to_string(continued_gs), to_string(stoped_satur), to_string(continued_satur), to_string(stoped_humi),
to_string(continued_humi), to_string(injection_pump_speed)); to_string(continued_humi), to_string(injection_pump_speed));
} }
void DBService::delFormula(int id) {
shared_ptr<db::Formula> DBService::delFormula(int id) {
lock_guard<recursive_mutex> lock(lock_); lock_guard<recursive_mutex> lock(lock_);
// remove_all // remove_all
auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT); auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT);
formulatable.sync_schema(); formulatable.sync_schema();
auto formula = formulatable.get_all<Formula>(where(c(&Formula::id) == id));
formulatable.remove_all<Formula>(where(c(&Formula::id) == id)); formulatable.remove_all<Formula>(where(c(&Formula::id) == id));
formulatable.sync_schema(); formulatable.sync_schema();
if (formula.size() == 0) {
return nullptr;
}
return make_shared<Formula>(formula[0]);
} }
void DBService::updateFormula(int id, string column, string val) {
shared_ptr<db::Formula> DBService::updateFormula(int id, string column, string val) {
lock_guard<recursive_mutex> lock(lock_); lock_guard<recursive_mutex> lock(lock_);
auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT); auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT);
formulatable.sync_schema(); formulatable.sync_schema();
auto formula = formulatable.get_all<Formula>(where(c(&Formula::id) == id)); auto formula = formulatable.get_all<Formula>(where(c(&Formula::id) == id));
if (formula.size() == 0) { if (formula.size() == 0) {
return;
return nullptr;
} }
if (column == "formula_id") { if (column == "formula_id") {
formula[0].formula_id = val; formula[0].formula_id = val;
@ -494,6 +520,7 @@ void DBService::updateFormula(int id, string column, string val) {
} }
formulatable.update(formula[0]); formulatable.update(formula[0]);
formulatable.sync_schema(); formulatable.sync_schema();
return make_shared<Formula>(formula[0]);
} }
int DBService::getUserBehaviorRecordCount() { int DBService::getUserBehaviorRecordCount() {

15
src/db/db_service.hpp

@ -102,7 +102,7 @@ struct UserBehaviorRecord {
using namespace db; using namespace db;
class DBService : public enable_shared_from_this<DBService> { class DBService : public enable_shared_from_this<DBService> {
ENABLE_LOGGER(DBService); ENABLE_LOGGER(DBService);
recursive_mutex lock_;
recursive_mutex lock_;
public: public:
DBService(); DBService();
@ -126,10 +126,11 @@ class DBService : public enable_shared_from_this<DBService> {
* @param passwd * @param passwd
* @param permission_level ,0 3 * @param permission_level ,0 3
*/ */
void addUser(string uid, string passwd, int permission_level);
void delUser(int id);
void updateUserPermissionLevel(int id, int permission_level);
void changePasswd(string uid, string passwd);
void addUser(string uid, string passwd, int permission_level);
shared_ptr<db::User> delUser(int id);
shared_ptr<db::User> updateUserPermissionLevel(int id, int permission_level);
shared_ptr<db::User> changePasswd(string uid, string passwd);
shared_ptr<db::User> updateUserUid(int id, string uid, string& olduid);
public: public:
/******************************************************************************* /*******************************************************************************
@ -152,8 +153,8 @@ class DBService : public enable_shared_from_this<DBService> {
string continued_humi, string injection_pump_speed); string continued_humi, string injection_pump_speed);
void addFormula(string formula_id, int stoped_gs, int continued_gs, int stoped_satur, int continued_satur, int stoped_humi, int continued_humi, void addFormula(string formula_id, int stoped_gs, int continued_gs, int stoped_satur, int continued_satur, int stoped_humi, int continued_humi,
int injection_pump_speed); int injection_pump_speed);
void delFormula(int id);
void updateFormula(int id, string column, string val);
shared_ptr<db::Formula> delFormula(int id);
shared_ptr<db::Formula> updateFormula(int id, string column, string val);
shared_ptr<db::Formula> getFormula(int id); shared_ptr<db::Formula> getFormula(int id);

8
src/db/user_behavior_des.cpp

@ -20,6 +20,8 @@ string user_behavior_to_str(user_behavior_t behavior) {
return "更新用户权限"; return "更新用户权限";
case kbehavior_update_user_passwd: case kbehavior_update_user_passwd:
return "更新用户密码"; return "更新用户密码";
case kbehavior_update_user_uid:
return "更新用户ID";
case kbehavior_set_setting_val: case kbehavior_set_setting_val:
return "设置参数"; return "设置参数";
case kbehavior_add_formula: case kbehavior_add_formula:
@ -36,8 +38,10 @@ string user_behavior_to_str(user_behavior_t behavior) {
return "执行配方"; return "执行配方";
case kbehavior_update_setting_val_on_disinfection: case kbehavior_update_setting_val_on_disinfection:
return "消毒中更新参数"; return "消毒中更新参数";
case kbehavior_export_data:
return "导出数据";
case kbehavior_export_disinfection_data:
return "导出消毒数据";
case kbehavior_export_user_action_data:
return "导出用户操作数据";
default: default:
break; break;
} }

24
src/db/user_behavior_des.hpp

@ -18,17 +18,19 @@ typedef enum {
kbehavior_logout = 1, kbehavior_logout = 1,
kbehavior_add_user = 2, kbehavior_add_user = 2,
kbehavior_del_user = 3, kbehavior_del_user = 3,
kbehavior_update_user_permission_level = 4,
kbehavior_update_user_passwd = 5,
kbehavior_set_setting_val = 6,
kbehavior_add_formula = 7,
kbehavior_del_formula = 8,
kbehavior_update_formula = 9,
kbehavior_do_disinfection = 10,
kbehavior_stop_disinfection = 11,
kbehavior_do_formula = 12,
kbehavior_update_setting_val_on_disinfection = 13,
kbehavior_export_data = 14,
kbehavior_update_user_uid = 5,
kbehavior_update_user_permission_level = 6,
kbehavior_update_user_passwd = 7,
kbehavior_set_setting_val = 8,
kbehavior_add_formula = 9,
kbehavior_del_formula = 10,
kbehavior_update_formula = 11,
kbehavior_do_disinfection = 12,
kbehavior_stop_disinfection = 13,
kbehavior_do_formula = 14,
kbehavior_update_setting_val_on_disinfection = 15,
kbehavior_export_disinfection_data = 16,
kbehavior_export_user_action_data = 17,
} user_behavior_t; } user_behavior_t;
string user_behavior_to_str(user_behavior_t behavior); string user_behavior_to_str(user_behavior_t behavior);

73
src/main_control_service.cpp

@ -199,6 +199,7 @@ void MainControlService::processFrontEndMessage_userOperate(weak_ptr<WebSocket>
return; return;
} }
m_deviceStateService->setLoginState(uid, m_dbService->getUser(uid)->permission_level, m_dbService->getUser(uid)->visible); m_deviceStateService->setLoginState(uid, m_dbService->getUser(uid)->permission_level, m_dbService->getUser(uid)->visible);
m_dbService->addUserBehaviorRecord(uid, kbehavior_login, "");
logger->info("user {} login success", uid); logger->info("user {} login success", uid);
} }
@ -211,6 +212,7 @@ void MainControlService::processFrontEndMessage_userOperate(weak_ptr<WebSocket>
if (cmdstr == "unlogin") { if (cmdstr == "unlogin") {
m_deviceStateService->unlogin(); m_deviceStateService->unlogin();
logger->info("user unlogin success"); logger->info("user unlogin success");
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_logout, "");
return; return;
} }
@ -232,7 +234,10 @@ void MainControlService::processFrontEndMessage_userOperate(weak_ptr<WebSocket>
receipt["ackcodeInfo"] = err::error_code_get_desc(err::kce, err::kpasswd_error, ""); receipt["ackcodeInfo"] = err::error_code_get_desc(err::kce, err::kpasswd_error, "");
return; return;
} }
m_dbService->changePasswd(uid, newpasswd);
auto user = m_dbService->changePasswd(uid, newpasswd);
// kbehavior_update_user_passwd
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_user_passwd, fmt::format("({})", uid));
return; return;
} }
@ -241,19 +246,45 @@ void MainControlService::processFrontEndMessage_userOperate(weak_ptr<WebSocket>
string passwd = cmd["passwd"]; string passwd = cmd["passwd"];
int permission_level = jsonGet<int>(cmd["permission_level"]); int permission_level = jsonGet<int>(cmd["permission_level"]);
m_dbService->addUser(uid, passwd, permission_level); m_dbService->addUser(uid, passwd, permission_level);
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_add_user, fmt::format("({})", uid));
return; return;
} }
if (cmdstr == "delUser") { if (cmdstr == "delUser") {
int id = jsonGet<int>(cmd["id"]);
m_dbService->delUser(id);
int id = jsonGet<int>(cmd["id"]);
auto user = m_dbService->delUser(id);
if (!user) {
receipt["ackcode"] = err::error_code_get_get_ecode(err::kce, err::kuser_not_exist);
receipt["ackcodeInfo"] = err::error_code_get_desc(err::kce, err::kuser_not_exist, "");
return;
}
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_del_user, fmt::format("({})", user->uid));
return; return;
} }
if (cmdstr == "updateUserPermissionLevel") { if (cmdstr == "updateUserPermissionLevel") {
int id = jsonGet<int>(cmd["id"]);
int permission_level = jsonGet<int>(cmd["permission_level"]);
m_dbService->updateUserPermissionLevel(id, permission_level);
int id = jsonGet<int>(cmd["id"]);
int permission_level = jsonGet<int>(cmd["permission_level"]);
auto user = m_dbService->updateUserPermissionLevel(id, permission_level);
if (!user) {
receipt["ackcode"] = err::error_code_get_get_ecode(err::kce, err::kuser_not_exist);
receipt["ackcodeInfo"] = err::error_code_get_desc(err::kce, err::kuser_not_exist, "");
return;
}
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_user_permission_level,
fmt::format("({},{})", user->uid, permission_level));
return; return;
} }
if (cmdstr == "updateUserUid") {
int id = jsonGet<int>(cmd["id"]);
string uid = cmd["uid"];
string olduid;
auto user = m_dbService->updateUserUid(id, uid, olduid);
if (!user) {
receipt["ackcode"] = err::error_code_get_get_ecode(err::kce, err::kuser_not_exist);
receipt["ackcodeInfo"] = err::error_code_get_desc(err::kce, err::kuser_not_exist, "");
return;
}
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_user_uid, fmt::format("({}->{})", olduid, uid));
}
if (cmdstr == "getAllUser") { if (cmdstr == "getAllUser") {
auto users = m_dbService->getAllUserJson(); auto users = m_dbService->getAllUserJson();
receipt["dbval"] = users; receipt["dbval"] = users;
@ -334,6 +365,8 @@ void MainControlService::processFrontEndMessage_Disinfection(weak_ptr<WebSocket>
m_dbService->getSettingVal("continued_satur"), // m_dbService->getSettingVal("continued_satur"), //
m_dbService->getSettingVal("stoped_humi"), // m_dbService->getSettingVal("stoped_humi"), //
m_dbService->getSettingVal("continued_humi")); m_dbService->getSettingVal("continued_humi"));
// kbehavior_do_disinfection
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_do_disinfection, fmt::format("({})", jsonGet<int>(cmd["loglevel"])));
return; return;
} }
if (cmdstr == "changeDisinfectionParameter") { if (cmdstr == "changeDisinfectionParameter") {
@ -349,6 +382,7 @@ void MainControlService::processFrontEndMessage_Disinfection(weak_ptr<WebSocket>
if (cmdstr == "stopDisinfection") { if (cmdstr == "stopDisinfection") {
m_disinfectionCtrlService->stopDisinfection(); m_disinfectionCtrlService->stopDisinfection();
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_stop_disinfection, "");
return; return;
} }
@ -436,11 +470,13 @@ void MainControlService::processFrontEndMessage_setting(weak_ptr<WebSocket> webS
string settingName = cmd["settingName"]; string settingName = cmd["settingName"];
int settingVal = jsonGet<int>(cmd["settingVal"]); int settingVal = jsonGet<int>(cmd["settingVal"]);
bool suc = m_dbService->setSettingVal(settingName, settingVal); bool suc = m_dbService->setSettingVal(settingName, settingVal);
if (!suc) { if (!suc) {
receipt["ackcode"] = err::error_code_get_get_ecode(err::kce, err::kdb_operate_error); receipt["ackcode"] = err::error_code_get_get_ecode(err::kce, err::kdb_operate_error);
receipt["ackcodeInfo"] = err::error_code_get_desc(err::kce, err::kdb_operate_error, "setSettingVal fail"); receipt["ackcodeInfo"] = err::error_code_get_desc(err::kce, err::kdb_operate_error, "setSettingVal fail");
return;
} }
return;
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_set_setting_val, fmt::format("({},{})", settingName, settingVal));
} }
} }
@ -466,6 +502,9 @@ void MainControlService::processFrontEndMessage_processFormulaCmd(weak_ptr<WebSo
atoi(formul->continued_satur.c_str()), // atoi(formul->continued_satur.c_str()), //
atoi(formul->stoped_humi.c_str()), // atoi(formul->stoped_humi.c_str()), //
atoi(formul->continued_humi.c_str())); // atoi(formul->continued_humi.c_str())); //
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_do_formula, fmt::format("({})", formul->formula_id));
return; return;
} }
if (cmdstr == "getAllFormula") { if (cmdstr == "getAllFormula") {
@ -474,6 +513,7 @@ void MainControlService::processFrontEndMessage_processFormulaCmd(weak_ptr<WebSo
} }
if (cmdstr == "addFormula") { if (cmdstr == "addFormula") {
string formula_id = cmd["formula_id"];
m_dbService->addFormula(cmd["formula_id"], // m_dbService->addFormula(cmd["formula_id"], //
jsonGet<int>(cmd["stoped_gs"]), // jsonGet<int>(cmd["stoped_gs"]), //
jsonGet<int>(cmd["continued_gs"]), // jsonGet<int>(cmd["continued_gs"]), //
@ -482,11 +522,16 @@ void MainControlService::processFrontEndMessage_processFormulaCmd(weak_ptr<WebSo
jsonGet<int>(cmd["stoped_humi"]), // jsonGet<int>(cmd["stoped_humi"]), //
jsonGet<int>(cmd["continued_humi"]), // jsonGet<int>(cmd["continued_humi"]), //
jsonGet<int>(cmd["injection_pump_speed"])); jsonGet<int>(cmd["injection_pump_speed"]));
// kbehavior_add_formula
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_add_formula, fmt::format("({})", formula_id));
return; return;
} }
if (cmdstr == "delFormula") { if (cmdstr == "delFormula") {
m_dbService->delFormula(jsonGet<int>(cmd["id"]));
auto formula = m_dbService->delFormula(jsonGet<int>(cmd["id"]));
if (formula) {
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_del_formula, fmt::format("({})", formula->formula_id));
}
return; return;
} }
@ -497,7 +542,11 @@ void MainControlService::processFrontEndMessage_processFormulaCmd(weak_ptr<WebSo
} else { } else {
val_str = std::to_string(cmd["val"].get<int>()); val_str = std::to_string(cmd["val"].get<int>());
} }
m_dbService->updateFormula(jsonGet<int>(cmd["id"]), cmd["column"], val_str);
auto formula = m_dbService->updateFormula(jsonGet<int>(cmd["id"]), cmd["column"], val_str);
if (formula) {
m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_formula,
fmt::format("({},{},{})", formula->formula_id, cmd["column"], val_str));
}
return; return;
} }
} }
@ -521,16 +570,20 @@ void MainControlService::processFrontEndMessage_processBehaviorRecordCmd(weak_pt
m_dbService->addUserBehaviorRecord("admin", kbehavior_add_user, "(zhaohe)"); m_dbService->addUserBehaviorRecord("admin", kbehavior_add_user, "(zhaohe)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_del_user, "(zhaohe)"); m_dbService->addUserBehaviorRecord("admin", kbehavior_del_user, "(zhaohe)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_update_user_permission_level, "(zhaohe,3)"); m_dbService->addUserBehaviorRecord("admin", kbehavior_update_user_permission_level, "(zhaohe,3)");
// kbehavior_update_user_uid
m_dbService->addUserBehaviorRecord("admin", kbehavior_update_user_passwd, "()"); m_dbService->addUserBehaviorRecord("admin", kbehavior_update_user_passwd, "()");
m_dbService->addUserBehaviorRecord("admin", kbehavior_set_setting_val, "(....)"); m_dbService->addUserBehaviorRecord("admin", kbehavior_set_setting_val, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_add_formula, "(....)"); m_dbService->addUserBehaviorRecord("admin", kbehavior_add_formula, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_del_formula, "(....)"); m_dbService->addUserBehaviorRecord("admin", kbehavior_del_formula, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_update_formula, "(....)"); m_dbService->addUserBehaviorRecord("admin", kbehavior_update_formula, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_do_disinfection, "(....)"); m_dbService->addUserBehaviorRecord("admin", kbehavior_do_disinfection, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_stop_disinfection, "(....)"); m_dbService->addUserBehaviorRecord("admin", kbehavior_stop_disinfection, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_do_formula, "(....)"); m_dbService->addUserBehaviorRecord("admin", kbehavior_do_formula, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_update_setting_val_on_disinfection, "(....)"); m_dbService->addUserBehaviorRecord("admin", kbehavior_update_setting_val_on_disinfection, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_export_data, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_export_disinfection_data, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_export_user_action_data, "(....)");
} }
return; return;
} }

Loading…
Cancel
Save