Browse Source

v2.3.3 | 修复一些BUG

master
zhaohe 1 month ago
parent
commit
03be091414
  1. 5752
      appdep/iflytop/core/basic/nlohmann/json.hpp
  2. 13
      appdep/iflytop/core/spdlogfactory/logger_factory.cpp
  3. 1
      appdep/iflytop/core/spdlogfactory/logger_factory.hpp
  4. 1
      appsrc/appbase/appbean/setting_id.hpp
  5. 2
      appsrc/appconfig/basic/zappversion.hpp
  6. 226
      appsrc/baseservice/db/setting_db_dao.cpp
  7. 19
      appsrc/baseservice/db/setting_db_dao.hpp
  8. 42
      appsrc/main.cpp
  9. 4
      appsrc/service/user_mgr_service.cpp

5752
appdep/iflytop/core/basic/nlohmann/json.hpp
File diff suppressed because it is too large
View File

13
appdep/iflytop/core/spdlogfactory/logger_factory.cpp

@ -519,10 +519,15 @@ void core::SpdLoggerFactory::parseSphLogConfig(string path) {
__parseSphLogConfig(j); __parseSphLogConfig(j);
} }
} }
// 组装logger and sink // 组装logger and sink
for (auto& las : s_loggerAndSinks) { for (auto& las : s_loggerAndSinks) {
logger_t logger = s_loggers[las->loggerName]; logger_t logger = s_loggers[las->loggerName];
if (logger == nullptr) { if (logger == nullptr) {
spdlog::critical("can't find logger", las->loggerName); spdlog::critical("can't find logger", las->loggerName);
exit(-1); exit(-1);
@ -538,7 +543,10 @@ void core::SpdLoggerFactory::parseSphLogConfig(string path) {
} }
for (auto& sink : sinks) logger->sinks().push_back(sink); for (auto& sink : sinks) logger->sinks().push_back(sink);
} }
for (auto& var : s_loggers) myRegLogger(var.second); for (auto& var : s_loggers) myRegLogger(var.second);
// 如果没有rootLogger,构造rootLogger // 如果没有rootLogger,构造rootLogger
if (!get(kRootLogerName)) { if (!get(kRootLogerName)) {
@ -561,6 +569,8 @@ void core::SpdLoggerFactory::parseSphLogConfig(string path) {
} }
} }
} }
// 如果依然没有构造rootLogger则构造默认logger // 如果依然没有构造rootLogger则构造默认logger
if (!get(kRootLogerName)) myRegLogger(createRootLogger()); if (!get(kRootLogerName)) myRegLogger(createRootLogger());
@ -573,6 +583,7 @@ void core::SpdLoggerFactory::parseSphLogConfig(string path) {
myRegLogger(newlogger); myRegLogger(newlogger);
} }
} }
// spdlog::info("Logger initialize ok"); // spdlog::info("Logger initialize ok");
} catch (const exception& e) { } catch (const exception& e) {
@ -612,7 +623,7 @@ void SpdLoggerFactory::initialize(string configContent) {
spdlog::warn("can't find logger config file use default config {}", configFilePath); spdlog::warn("can't find logger config file use default config {}", configFilePath);
// 写字符串default_config到文件中configFilePath // 写字符串default_config到文件中configFilePath
ofstream outfile(configFilePath); ofstream outfile(configFilePath);
if(configContent.empty()) {
if (configContent.empty()) {
outfile << default_config; outfile << default_config;
} else { } else {
outfile << configContent; outfile << configContent;

1
appdep/iflytop/core/spdlogfactory/logger_factory.hpp

@ -35,7 +35,6 @@ typedef shared_ptr<logger> logger_t;
#define GET_LOGGER(loggerName) iflytop::core::SpdLoggerFactory::Instance().createLogger(#loggerName) #define GET_LOGGER(loggerName) iflytop::core::SpdLoggerFactory::Instance().createLogger(#loggerName)
#define ENABLE_LOGGER_STATIC(loggerName) static iflytop::core::logger_t logger = iflytop::core::SpdLoggerFactory::Instance().createLogger(#loggerName);
class SpdLoggerFactory { class SpdLoggerFactory {
SpdLoggerFactory() {}; SpdLoggerFactory() {};

1
appsrc/appbase/appbean/setting_id.hpp

@ -13,7 +13,6 @@
marco(type, pre_heat_time_s) /**/ \ marco(type, pre_heat_time_s) /**/ \
marco(type, stoped_humi) /**/ \ marco(type, stoped_humi) /**/ \
marco(type, continued_humi) /**/ \ marco(type, continued_humi) /**/ \
marco(type, proportional_valve_default_value) /**/ \
marco(type, record_period_min) /**/ \ marco(type, record_period_min) /**/ \
marco(type, record_printer_period_min) /**/ \ marco(type, record_printer_period_min) /**/ \
marco(type, loglevel) /*消毒等级*/ \ marco(type, loglevel) /*消毒等级*/ \

2
appsrc/appconfig/basic/zappversion.hpp

@ -1,3 +1,3 @@
#pragma once #pragma once
#define VERSION "2.3.1"
#define VERSION "2.3.3"
#define PROJECT_NAME "TRANSMIT_DM" #define PROJECT_NAME "TRANSMIT_DM"

226
appsrc/baseservice/db/setting_db_dao.cpp

@ -4,7 +4,7 @@
* BASIC * * BASIC *
*******************************************************************************/ *******************************************************************************/
#define SETTING_DB "setting.db" #define SETTING_DB "setting.db"
#define DB_VERSION "1.0.5" // 更新这个参数,会自动重置数据库
#define DB_VERSION "1.0.6" // 更新这个参数,会自动重置数据库
namespace iflytop { namespace iflytop {
namespace db { namespace db {
@ -54,41 +54,170 @@ void to_json(json& j, list<shared_ptr<Setting>> settings) {
using namespace iflytop; using namespace iflytop;
using namespace db; using namespace db;
#define INT_SETTING(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) \
Setting { setting_id, name_ch, "int", default_val, 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 }
#define ENUM_SETTING(setting_id, name_ch, default_val, enums, enum_display_names, is_editable, is_visible_in_setting_page, is_visible_in_formula_page, is_visible_in_rt_page) \
Setting { setting_id, name_ch, "enum", default_val, default_val, "", "", enums, enum_display_names, is_editable, is_visible_in_setting_page, is_visible_in_formula_page, is_visible_in_rt_page }
#define BOOL_SETTING(setting_id, name_ch, default_val, is_editable, is_visible_in_setting_page, is_visible_in_formula_page, is_visible_in_rt_page) \
Setting { setting_id, name_ch, "bool", default_val, default_val, "", "", {}, {}, is_editable, is_visible_in_setting_page, is_visible_in_formula_page, is_visible_in_rt_page }
#define FLOAT_SETTING(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) \
Setting { setting_id, name_ch, "float", default_val, 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 }
static Setting settingInitTable[] = { 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_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),
INT_SETTING(SettingId::kdrainage_pump_speed, "排液蠕动泵最大转速", "300", "0", "400", /* */ true, false, false, false),
INT_SETTING(SettingId::kinjection_pump_speed, "喷射蠕动泵转速", "10", "0", "40", /* */ true, true, true, true),
INT_SETTING(SettingId::kpre_heat_time_s, "预热时间", "120", "0", "1200", /* */ true, true, true, true),
INT_SETTING(SettingId::kstoped_humi, "消毒停止相对湿度", "85", "0", "100", /* */ true, true, true, true),
INT_SETTING(SettingId::kcontinued_humi, "消毒继续相对湿度", "60", "0", "100", /* */ true, true, true, true),
INT_SETTING(SettingId::kproportional_valve_default_value, "正负压默认开合比例", "10", "0", "100", /* */ false, false, false, false), // delete in the future....
INT_SETTING(SettingId::krecord_period_min, "消毒日志记录间隔(Min)", "2", "1", "30", /* */ true, true, false, false),
INT_SETTING(SettingId::krecord_printer_period_min, "消毒日志打印间隔(Min)", "5", "1", "30", /* */ true, true, false, false),
ENUM_SETTING(SettingId::kloglevel, "消毒等级", "6", vector<string>({"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"}), //
vector<string>({"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"}), /* */ true, false, true, true),
BOOL_SETTING(SettingId::kenable_bd_dehumidify, "是否启用消毒前除湿", "false", /* */ true, false, false, false),
INT_SETTING(SettingId::kbd_dehumidify_threshold, "消毒前除湿阈值", "0", "0", "100", /* */ true, false, false, false),
BOOL_SETTING(SettingId::kenable_ad_dehumidify, "是否启用消毒后除湿", "false", true, /* */ false, false, false),
INT_SETTING(SettingId::kad_dehumidify_threshold, "消毒后除湿阈值", "0", "0", "100", /* */ true, false, false, false),
BOOL_SETTING(SettingId::kenable_ad_degrade, "是否启用消毒后降解", "false", /* */ true, false, false, false),
INT_SETTING(SettingId::kad_degrade_threshold, "消毒后降解阈值", "0", "0", "100", /* */ true, false, false, false),
{.setting_id = SettingId::kstoped_gs},
{.setting_id = SettingId::kcontinued_gs},
{.setting_id = SettingId::kstoped_satur},
{.setting_id = SettingId::kcontinued_satur},
{.setting_id = SettingId::kmax_humidity},
{.setting_id = SettingId::kdrainage_pump_speed},
{.setting_id = SettingId::kinjection_pump_speed},
{.setting_id = SettingId::kpre_heat_time_s},
{.setting_id = SettingId::kstoped_humi},
{.setting_id = SettingId::kcontinued_humi},
{.setting_id = SettingId::krecord_period_min},
{.setting_id = SettingId::krecord_printer_period_min},
{.setting_id = SettingId::kloglevel},
{.setting_id = SettingId::kenable_bd_dehumidify},
{.setting_id = SettingId::kbd_dehumidify_threshold},
{.setting_id = SettingId::kenable_ad_dehumidify},
{.setting_id = SettingId::kad_dehumidify_threshold},
{.setting_id = SettingId::kenable_ad_degrade},
{.setting_id = SettingId::kad_degrade_threshold},
}; };
void SettingDBDao::initSettingDefaultValTable() {
for (auto& setting : settingInitTable) {
switch (setting.setting_id) //
{
case SettingId::kstoped_gs: {
setting.name_ch = "消毒停止过氧化氢浓度";
setting.setValConfig("int", "300", "0", "800");
setting.setVisibleRangeConfig(true, true, true, true);
break;
}
case SettingId::kcontinued_gs: {
setting.name_ch = "消毒继续过氧化氢浓度";
setting.setValConfig("int", "200", "0", "800");
setting.setVisibleRangeConfig(true, true, true, true);
break;
}
case SettingId::kstoped_satur: {
setting.name_ch = "消毒停止过氧化氢相对饱和度";
setting.setValConfig("int", "85", "0", "100");
setting.setVisibleRangeConfig(true, true, true, true);
break;
}
case SettingId::kcontinued_satur: {
setting.name_ch = "消毒继续过氧化氢相对饱和度";
setting.setValConfig("int", "60", "0", "100");
setting.setVisibleRangeConfig(true, true, true, true);
break;
}
case SettingId::kmax_humidity: {
setting.name_ch = "允许消毒最大湿度";
setting.setValConfig("int", "90", "0", "100");
setting.setVisibleRangeConfig(true, true, true, true);
break;
}
case SettingId::kdrainage_pump_speed: {
setting.name_ch = "排液蠕动泵最大转速";
setting.setValConfig("int", "300", "0", "400");
setting.setVisibleRangeConfig(true, false, false, false);
break;
}
case SettingId::kinjection_pump_speed: {
setting.name_ch = "喷射蠕动泵转速";
setting.setValConfig("int", "10", "0", "40");
setting.setVisibleRangeConfig(true, true, true, true);
break;
}
case SettingId::kpre_heat_time_s: {
setting.name_ch = "预热时间";
setting.setValConfig("int", "120", "0", "1200");
setting.setVisibleRangeConfig(true, true, true, true);
break;
}
case SettingId::kstoped_humi: {
setting.name_ch = "消毒停止相对湿度";
setting.setValConfig("int", "85", "0", "100");
setting.setVisibleRangeConfig(true, true, true, true);
break;
}
case SettingId::kcontinued_humi: {
setting.name_ch = "消毒继续相对湿度";
setting.setValConfig("int", "60", "0", "100");
setting.setVisibleRangeConfig(true, true, true, true);
break;
}
case SettingId::krecord_period_min: {
setting.name_ch = "消毒日志记录间隔(Min)";
setting.setValConfig("int", "2", "1", "30");
setting.setVisibleRangeConfig(true, true, false, false);
break;
}
case SettingId::krecord_printer_period_min: {
setting.name_ch = "消毒日志打印间隔(Min)";
setting.setValConfig("int", "5", "1", "30");
setting.setVisibleRangeConfig(true, true, false, false);
break;
}
case SettingId::kloglevel: {
setting.name_ch = "消毒等级";
setting.setValConfig("enum", "6", "", "");
setting.enums = vector<string>({"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"});
setting.enum_display_names = vector<string>({"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"});
break;
}
case SettingId::kenable_bd_dehumidify: {
setting.name_ch = "是否启用消毒前除湿";
setting.setValConfig("bool", "false", "", "");
setting.setVisibleRangeConfig(true, false, false, false);
break;
}
case SettingId::kbd_dehumidify_threshold: {
setting.name_ch = "消毒前除湿阈值";
setting.setValConfig("int", "0", "0", "100");
setting.setVisibleRangeConfig(true, false, false, false);
break;
}
case SettingId::kenable_ad_dehumidify: {
setting.name_ch = "是否启用消毒后除湿";
setting.setValConfig("bool", "false", "", "");
setting.setVisibleRangeConfig(true, false, false, false);
break;
}
case SettingId::kad_dehumidify_threshold: {
setting.name_ch = "消毒后除湿阈值";
setting.setValConfig("int", "0", "0", "100");
setting.setVisibleRangeConfig(true, false, false, false);
break;
}
case SettingId::kenable_ad_degrade: {
setting.name_ch = "是否启用消毒后降解";
setting.setValConfig("bool", "false", "", "");
setting.setVisibleRangeConfig(true, false, false, false);
break;
}
case SettingId::kad_degrade_threshold: {
setting.name_ch = "消毒后降解阈值";
setting.setValConfig("int", "0", "0", "100");
setting.setVisibleRangeConfig(true, false, false, false);
break;
}
default:
break;
}
}
}
Setting SettingDBDao::getSettingConfig(SettingId setting_id) {
for (auto& setting : settingInitTable) {
if (setting.setting_id.eq(setting_id.getId())) {
return setting;
}
}
THROW_APP_EXCEPTION(err::kappe_code_error, fmt::format("SettingDBDao::getSettingConfig not found setting_id:{}", setting_id));
}
Setting SettingDBDao::getSettingConfig(string setting_id) {
for (auto& setting : settingInitTable) {
if (setting.setting_id.eq(setting_id)) {
return setting;
}
}
THROW_APP_EXCEPTION(err::kappe_code_error, fmt::format("SettingDBDao::getSettingConfig not found setting_id:{}", setting_id));
}
list<shared_ptr<Setting>> SettingDBDao::getRealtimeSetting() { list<shared_ptr<Setting>> SettingDBDao::getRealtimeSetting() {
list<shared_ptr<Setting>> settings; list<shared_ptr<Setting>> settings;
auto all = getAllSetting(); auto all = getAllSetting();
@ -105,13 +234,12 @@ void SettingDBDao::initialize() { //
mkdir("db", 0755); mkdir("db", 0755);
keyvaldb.initialize("db/setting.db", "setting"); keyvaldb.initialize("db/setting.db", "setting");
string version = keyvaldb.get("version"); string version = keyvaldb.get("version");
initSettingDefaultValTable();
if (version != DB_VERSION) { if (version != DB_VERSION) {
keyvaldb.clear(); keyvaldb.clear();
keyvaldb.set("version", DB_VERSION); keyvaldb.set("version", DB_VERSION);
// auto projSetting = ProjectPort::ins();
for (auto& setting : settingInitTable) { for (auto& setting : settingInitTable) {
auto settingJson = setting.toJson();
keyvaldb.set(setting.setting_id, settingJson.dump());
keyvaldb.set(setting.setting_id, setting.default_val);
} }
} }
} catch (const std::exception& e) { } catch (const std::exception& e) {
@ -121,33 +249,29 @@ void SettingDBDao::initialize() { //
} }
list<shared_ptr<Setting>> SettingDBDao::getAllSetting() { // list<shared_ptr<Setting>> SettingDBDao::getAllSetting() { //
auto allkeyVal = keyvaldb.getAll();
list<shared_ptr<Setting>> allSetting; list<shared_ptr<Setting>> allSetting;
for (auto& kv : allkeyVal) {
auto setting = make_shared<Setting>();
if (kv->key == "version") {
continue;
for (auto& kv : settingInitTable) {
shared_ptr<Setting> setting = make_shared<Setting>(kv);
setting->val = keyvaldb.get(kv.setting_id);
if (setting->val.empty()) {
setting->val = kv.default_val; // 如果没有设置值,则使用默认值
} }
json val = json::parse(kv->val);
*setting = val;
allSetting.push_back(setting); allSetting.push_back(setting);
} }
return allSetting; return allSetting;
} }
shared_ptr<Setting> SettingDBDao::getSetting(string name) { shared_ptr<Setting> SettingDBDao::getSetting(string name) {
string settingContent = keyvaldb.get(name);
if (settingContent.empty()) {
THROW_APP_EXCEPTION(err::kappe_code_error, "SettingDBDao::getSettingValAsString setting is null");
Setting settingConfig = getSettingConfig(name);
shared_ptr<Setting> setting = make_shared<Setting>(settingConfig);
setting->val = keyvaldb.get(name);
if (setting->val.empty()) {
setting->val = settingConfig.default_val; // 如果没有设置值,则使用默认值
} }
auto setting = make_shared<Setting>();
json val = json::parse(settingContent);
*setting = val;
return setting; return setting;
} }
void SettingDBDao::updateSetting(shared_ptr<Setting> setting) { // void SettingDBDao::updateSetting(shared_ptr<Setting> setting) { //
keyvaldb.set(setting->setting_id, setting->toJson().dump());
keyvaldb.set(setting->setting_id, setting->val);
} }
bool SettingDBDao::setSettingVal(string name, string val) { bool SettingDBDao::setSettingVal(string name, string val) {

19
appsrc/baseservice/db/setting_db_dao.hpp

@ -55,6 +55,20 @@ class Setting {
bool is_visible_in_formula_page = true; bool is_visible_in_formula_page = true;
bool is_visible_in_rt_page = true; bool is_visible_in_rt_page = true;
void setValConfig(string val_type, string default_val, string val_lower_limit, string val_upper_limit) {
this->val_type = val_type;
this->default_val = default_val;
this->val_lower_limit = val_lower_limit;
this->val_upper_limit = val_upper_limit;
}
void setVisibleRangeConfig(bool is_editable, bool is_visible_in_setting_page, bool is_visible_in_formula_page, bool is_visible_in_rt_page) {
this->is_editable = is_editable;
this->is_visible_in_setting_page = is_visible_in_setting_page;
this->is_visible_in_formula_page = is_visible_in_formula_page;
this->is_visible_in_rt_page = is_visible_in_rt_page;
}
public: public:
json toJson(); json toJson();
}; };
@ -116,7 +130,10 @@ class SettingDBDao : public enable_shared_from_this<SettingDBDao> {
} }
} }
void factoryReset();
void factoryReset();
void initSettingDefaultValTable();
Setting getSettingConfig(SettingId setting_id);
Setting getSettingConfig(string setting_id);
public: public:
}; };

42
appsrc/main.cpp

@ -48,22 +48,9 @@ class Main {
*******************************************************************************/ *******************************************************************************/
Main *Main::g_main; Main *Main::g_main;
extern "C" { extern "C" {
int main(int argc, char *argv[]) {
Main main;
Main::g_main = &main;
main.run(argc, argv);
}
}
namespace iflytop {}
void Main::onsignal(int signo) { exit(0); }
void Main::run(int argc, char *argv[]) {
// ::signal(SIGINT, Main::_onsignal);
thread.reset(new Thread("main", [&]() { exit(main(argc, argv)); }));
while (true) sleep(1000);
}
json build_default_logger_cfg() { json build_default_logger_cfg() {
json config;
json config = json::array();
json infologger; json infologger;
infologger["name"] = "infologger"; infologger["name"] = "infologger";
@ -122,15 +109,32 @@ json build_default_logger_cfg() {
return config; return config;
} }
int main(int argc, char *argv[]) {
spdlog::flush_on(spdlog::level::debug);
string config = build_default_logger_cfg().dump();
SpdLoggerFactory::Instance().initialize(config);
Main main;
Main::g_main = &main;
main.run(argc, argv);
}
}
namespace iflytop {}
void Main::onsignal(int signo) { exit(0); }
void Main::run(int argc, char *argv[]) {
// ::signal(SIGINT, Main::_onsignal);
thread.reset(new Thread("main", [&]() { exit(main(argc, argv)); }));
while (true) sleep(1000);
}
int Main::main(int argc, char *argv[]) { int Main::main(int argc, char *argv[]) {
/** /**
* @brief * @brief
*/ */
SpdLoggerFactory::Instance().initialize(build_default_logger_cfg());
logger->info("system setup start."); logger->info("system setup start.");
spdlog::flush_on(spdlog::level::debug);
logger->info("#"); logger->info("#");
logger->info("# company:{}", "ifytop"); logger->info("# company:{}", "ifytop");
logger->info("# version:{}", VERSION); logger->info("# version:{}", VERSION);
@ -138,9 +142,9 @@ int Main::main(int argc, char *argv[]) {
logger->info("#"); logger->info("#");
logger->info("build {}.....", "Config"); logger->info("build {}.....", "Config");
logger->info("VolumeConvertor::largeSpaceParam:{}", VolumeConvertor(VolumeConvertor::largeSpaceParam).getFullVolumeG());
logger->info("VolumeConvertor::smallSpaceParam:{}", VolumeConvertor(VolumeConvertor::smallSpaceParam).getFullVolumeG());
logger->info("VolumeConvertor::pipeParam:{}", VolumeConvertor(VolumeConvertor::pipeParam).getFullVolumeG());
// logger->info("VolumeConvertor::largeSpaceParam:{}", VolumeConvertor(VolumeConvertor::largeSpaceParam).getFullVolumeG());
// logger->info("VolumeConvertor::smallSpaceParam:{}", VolumeConvertor(VolumeConvertor::smallSpaceParam).getFullVolumeG());
// logger->info("VolumeConvertor::pipeParam:{}", VolumeConvertor(VolumeConvertor::pipeParam).getFullVolumeG());
// 构造MainControlService // 构造MainControlService
BUILD_AND_REG_SERRVICE(AppCore); BUILD_AND_REG_SERRVICE(AppCore);

4
appsrc/service/user_mgr_service.cpp

@ -52,8 +52,8 @@ void UserMgrService::changeUsrRoleType(shared_ptr<MsgProcessContext> cxt, int id
} }
void UserMgrService::addUser(shared_ptr<MsgProcessContext> cxt, string name, string passwd, UsrRoleType roleType) { // void UserMgrService::addUser(shared_ptr<MsgProcessContext> cxt, string name, string passwd, UsrRoleType roleType) { //
if (!UserDao::ins()->isUserExist(name)) {
THROW_APP_EXCEPTION(err::kappe_user_not_exist, fmt::format("user {} already exist", name));
if (UserDao::ins()->isUserExist(name)) {
THROW_APP_EXCEPTION(err::kappe_user_exist,"");
} }
UserDao::ins()->addUser(name, passwd, roleType); UserDao::ins()->addUser(name, passwd, roleType);

Loading…
Cancel
Save