|
|
@ -18,53 +18,53 @@ using namespace nlohmann; |
|
|
|
// auto notJohn = storage.get_all<User>(where(c(&User::firstName) != "John"));
|
|
|
|
// 主键必须是int,或者不要主键
|
|
|
|
|
|
|
|
#define USER_DB_STRUCT \
|
|
|
|
USER_DB, /**/ \ |
|
|
|
make_table("users", /**/ \ |
|
|
|
make_column("uid", &User::uid), /**/ \ |
|
|
|
make_column("passwd", &User::passwd), /**/ \ |
|
|
|
make_column("permission_level", &User::permission_level), /**/ \ |
|
|
|
#define USER_DB_STRUCT \
|
|
|
|
USER_DB, /**/ \ |
|
|
|
make_table("users", /**/ \ |
|
|
|
make_column("id", &User::id, primary_key().autoincrement()), /**/ \ |
|
|
|
make_column("uid", &User::uid), /**/ \ |
|
|
|
make_column("passwd", &User::passwd), /**/ \ |
|
|
|
make_column("permission_level", &User::permission_level), /**/ \ |
|
|
|
make_column("visible", &User::visible)) |
|
|
|
|
|
|
|
#define SETTING_DB_STRUCT \
|
|
|
|
make_table("settings", /**/ \ |
|
|
|
make_column("id", &Setting::id), /**/ \ |
|
|
|
make_column("id", &Setting::id, primary_key()), /**/ \ |
|
|
|
make_column("name", &Setting::name), /**/ \ |
|
|
|
make_column("name_ch", &Setting::name_ch), /**/ \ |
|
|
|
make_column("val_upper_limit", &Setting::val_upper_limit), /**/ \ |
|
|
|
make_column("val_lower_limit", &Setting::val_lower_limit), /**/ \ |
|
|
|
make_column("val_upper_limit", &Setting::val_upper_limit), /**/ \ |
|
|
|
make_column("permission_level", &Setting::permission_level), /**/ \ |
|
|
|
make_column("val", &Setting::val)) |
|
|
|
|
|
|
|
|
|
|
|
#define DISINFECTION_RECORD_DB_STRUCT \
|
|
|
|
DISINFECTION_RECORD_DB, \ |
|
|
|
make_table("disinfection_records", /**/ \ |
|
|
|
make_column("id", &DisinfectionRecord::id), /**/ \ |
|
|
|
make_column("uuid", &DisinfectionRecord::uuid), /**/ \ |
|
|
|
make_column("uid", &DisinfectionRecord::uid), /**/ \ |
|
|
|
make_column("date", &DisinfectionRecord::date), /**/ \ |
|
|
|
make_column("loglevel", &DisinfectionRecord::loglevel), /**/ \ |
|
|
|
make_column("duration", &DisinfectionRecord::duration)), /**/ \ |
|
|
|
make_table("sensor_records", /**/ \ |
|
|
|
make_column("id", &SensorRecord::id), /**/ \ |
|
|
|
make_column("disinfection_id", &SensorRecord::disinfection_id), /**/ \ |
|
|
|
make_column("date", &SensorRecord::date), /**/ \ |
|
|
|
make_column("heating_strip", &SensorRecord::heating_strip), /**/ \ |
|
|
|
make_column("air_compressor", &SensorRecord::air_compressor), /**/ \ |
|
|
|
make_column("sprinkler_pump", &SensorRecord::sprinkler_pump), /**/ \ |
|
|
|
make_column("disinfectant_volume", &SensorRecord::disinfectant_volume), /**/ \ |
|
|
|
make_column("h2o2_1", &SensorRecord::h2o2_1), /**/ \ |
|
|
|
make_column("temp_1", &SensorRecord::temp_1), /**/ \ |
|
|
|
make_column("humid_1", &SensorRecord::humid_1), /**/ \ |
|
|
|
make_column("saturation_1", &SensorRecord::saturation_1), /**/ \ |
|
|
|
make_column("h2o2_2", &SensorRecord::h2o2_2), /**/ \ |
|
|
|
make_column("temp_2", &SensorRecord::temp_2), /**/ \ |
|
|
|
make_column("humid_2", &SensorRecord::humid_2), /**/ \ |
|
|
|
make_column("saturation_2", &SensorRecord::saturation_2), /**/ \ |
|
|
|
make_column("h2o2_3", &SensorRecord::h2o2_3), /**/ \ |
|
|
|
make_column("temp_3", &SensorRecord::temp_3), /**/ \ |
|
|
|
make_column("humid_3", &SensorRecord::humid_3), /**/ \ |
|
|
|
#define DISINFECTION_RECORD_DB_STRUCT \
|
|
|
|
DISINFECTION_RECORD_DB, \ |
|
|
|
make_table("disinfection_records", /**/ \ |
|
|
|
make_column("id", &DisinfectionRecord::id, primary_key().autoincrement()), /**/ \ |
|
|
|
make_column("uuid", &DisinfectionRecord::uuid), /**/ \ |
|
|
|
make_column("uid", &DisinfectionRecord::uid), /**/ \ |
|
|
|
make_column("date", &DisinfectionRecord::date), /**/ \ |
|
|
|
make_column("loglevel", &DisinfectionRecord::loglevel), /**/ \ |
|
|
|
make_column("duration", &DisinfectionRecord::duration)), /**/ \ |
|
|
|
make_table("sensor_records", /**/ \ |
|
|
|
make_column("id", &SensorRecord::id, primary_key().autoincrement()), /**/ \ |
|
|
|
make_column("disinfection_id", &SensorRecord::disinfection_id), /**/ \ |
|
|
|
make_column("date", &SensorRecord::date), /**/ \ |
|
|
|
make_column("heating_strip", &SensorRecord::heating_strip), /**/ \ |
|
|
|
make_column("air_compressor", &SensorRecord::air_compressor), /**/ \ |
|
|
|
make_column("sprinkler_pump", &SensorRecord::sprinkler_pump), /**/ \ |
|
|
|
make_column("disinfectant_volume", &SensorRecord::disinfectant_volume), /**/ \ |
|
|
|
make_column("h2o2_1", &SensorRecord::h2o2_1), /**/ \ |
|
|
|
make_column("temp_1", &SensorRecord::temp_1), /**/ \ |
|
|
|
make_column("humid_1", &SensorRecord::humid_1), /**/ \ |
|
|
|
make_column("saturation_1", &SensorRecord::saturation_1), /**/ \ |
|
|
|
make_column("h2o2_2", &SensorRecord::h2o2_2), /**/ \ |
|
|
|
make_column("temp_2", &SensorRecord::temp_2), /**/ \ |
|
|
|
make_column("humid_2", &SensorRecord::humid_2), /**/ \ |
|
|
|
make_column("saturation_2", &SensorRecord::saturation_2), /**/ \ |
|
|
|
make_column("h2o2_3", &SensorRecord::h2o2_3), /**/ \ |
|
|
|
make_column("temp_3", &SensorRecord::temp_3), /**/ \ |
|
|
|
make_column("humid_3", &SensorRecord::humid_3), /**/ \ |
|
|
|
make_column("saturation_3", &SensorRecord::saturation_3)) |
|
|
|
|
|
|
|
DBService::DBService(/* args */) {} |
|
|
@ -77,6 +77,10 @@ void DBService::initialize() { |
|
|
|
//
|
|
|
|
init_usr_db(); |
|
|
|
init_setting_db(); |
|
|
|
init_disinfection_record_db(); |
|
|
|
|
|
|
|
json settings = getAllSettingJson(); |
|
|
|
logger->info("settings: {}", settings.dump()); |
|
|
|
} |
|
|
|
|
|
|
|
void DBService::init_usr_db() { |
|
|
@ -88,21 +92,21 @@ void DBService::init_usr_db() { |
|
|
|
storage.sync_schema(); |
|
|
|
auto root = storage.get_all<User>(where(c(&User::uid) == "root")); |
|
|
|
if (root.size() == 0) { |
|
|
|
storage.insert(User{"root", "iflytop.com#9973", 0, 0}); // 超级用户
|
|
|
|
storage.insert(User{-1, "root", "iflytop.com#9973", 0, 0}); // 超级用户
|
|
|
|
} |
|
|
|
auto vendor = storage.get_all<User>(where(c(&User::uid) == "vendor")); |
|
|
|
if (vendor.size() == 0) { |
|
|
|
storage.insert<User>({"vendor", "9973", 1, true}); // 厂商
|
|
|
|
storage.insert<User>({-1, "vendor", "9973", 1, true}); // 厂商
|
|
|
|
} |
|
|
|
|
|
|
|
auto admin = storage.get_all<User>(where(c(&User::uid) == "admin")); |
|
|
|
if (admin.size() == 0) { |
|
|
|
storage.insert<User>({"admin", "9973", 2, true}); // 管理员
|
|
|
|
storage.insert<User>({-1, "admin", "9973", 2, true}); // 管理员
|
|
|
|
} |
|
|
|
|
|
|
|
auto user = storage.get_all<User>(where(c(&User::uid) == "user")); |
|
|
|
if (user.size() == 0) { |
|
|
|
storage.insert<User>({"user", "0000", 3, true}); // 普通用户
|
|
|
|
storage.insert<User>({-1, "user", "0000", 3, true}); // 普通用户
|
|
|
|
} |
|
|
|
suc = true; |
|
|
|
} catch (const std::exception& e) { |
|
|
@ -131,20 +135,26 @@ id setting_name setting_name_ch val_upper_limit val_lower_limi |
|
|
|
auto storage = make_storage(SETTING_DB, SETTING_DB_STRUCT); |
|
|
|
storage.sync_schema(); |
|
|
|
|
|
|
|
auto s0 = storage.get_all<Setting>(where(c(&Setting::id) == 0)); |
|
|
|
if (s0.size() == 0) storage.insert(Setting{0, "stoped_gs", "消毒停止过氧化氢溶度", 0, 2000, 1, 1000}); |
|
|
|
auto s1 = storage.get_all<Setting>(where(c(&Setting::id) == 1)); |
|
|
|
if (s1.size() == 0) storage.insert(Setting{1, "continued_gs", "消毒继续过氧化氢溶度", 0, 2000, 1, 800}); |
|
|
|
auto s2 = storage.get_all<Setting>(where(c(&Setting::id) == 2)); |
|
|
|
if (s2.size() == 0) storage.insert(Setting{2, "stoped_satur", "消毒停止过氧化氢相对饱和度", 0, 100, 1, 80}); |
|
|
|
auto s3 = storage.get_all<Setting>(where(c(&Setting::id) == 3)); |
|
|
|
if (s3.size() == 0) storage.insert(Setting{3, "continued_satur", "消毒继续过氧化氢相对饱和度", 0, 100, 1, 60}); |
|
|
|
auto s4 = storage.get_all<Setting>(where(c(&Setting::id) == 4)); |
|
|
|
if (s4.size() == 0) storage.insert(Setting{4, "max_humidity", "允许消毒最大湿度", 0, 100, 1, 90}); |
|
|
|
auto s5 = storage.get_all<Setting>(where(c(&Setting::id) == 5)); |
|
|
|
if (s5.size() == 0) storage.insert(Setting{5, "drainage_pump_speed", "排液蠕动泵转速", 0, 2000, 2, 500}); |
|
|
|
auto s6 = storage.get_all<Setting>(where(c(&Setting::id) == 6)); |
|
|
|
if (s6.size() == 0) storage.insert(Setting{6, "injection_pump_speed", "喷射蠕动泵转速", 0, 2000, 2, 500}); |
|
|
|
if (storage.get_all<Setting>(where(c(&Setting::id) == 1)).size() == 0) //
|
|
|
|
storage.insert(Setting{1, "stoped_gs", "消毒停止过氧化氢溶度", 0, 2000, 1, 1000}); |
|
|
|
|
|
|
|
if (storage.get_all<Setting>(where(c(&Setting::id) == 2)).size() == 0) |
|
|
|
storage.insert(Setting{2, "continued_gs", "消毒继续过氧化氢溶度", 0, 2000, 1, 800}); |
|
|
|
|
|
|
|
if (storage.get_all<Setting>(where(c(&Setting::id) == 3)).size() == 0) |
|
|
|
storage.insert(Setting{3, "stoped_satur", "消毒停止过氧化氢相对饱和度", 0, 100, 1, 80}); |
|
|
|
|
|
|
|
if (storage.get_all<Setting>(where(c(&Setting::id) == 4)).size() == 0) |
|
|
|
storage.insert(Setting{4, "continued_satur", "消毒继续过氧化氢相对饱和度", 0, 100, 1, 60}); |
|
|
|
|
|
|
|
if (storage.get_all<Setting>(where(c(&Setting::id) == 5)).size() == 0) //
|
|
|
|
storage.insert(Setting{5, "max_humidity", "允许消毒最大湿度", 0, 100, 1, 90}); |
|
|
|
|
|
|
|
if (storage.get_all<Setting>(where(c(&Setting::id) == 6)).size() == 0) |
|
|
|
storage.insert(Setting{6, "drainage_pump_speed", "排液蠕动泵转速", 0, 2000, 2, 500}); |
|
|
|
|
|
|
|
if (storage.get_all<Setting>(where(c(&Setting::id) == 7)).size() == 0) |
|
|
|
storage.insert(Setting{7, "injection_pump_speed", "喷射蠕动泵转速", 0, 2000, 2, 500}); |
|
|
|
|
|
|
|
suc = true; |
|
|
|
} catch (const std::exception& e) { |
|
|
@ -252,6 +262,7 @@ bool DBService::setSettingVal(int id, int val) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
bool DBService::setSettingVal(string setting_name, int val) { |
|
|
|
logger->info("set setting val: {} {}", setting_name, val); |
|
|
|
auto settingtable = make_storage(SETTING_DB, SETTING_DB_STRUCT); |
|
|
|
settingtable.sync_schema(); |
|
|
|
auto setting = settingtable.get_all<Setting>(where(c(&Setting::name) == setting_name)); |
|
|
@ -264,7 +275,9 @@ bool DBService::setSettingVal(string setting_name, int val) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
setting[0].val = val; |
|
|
|
settingtable.update(setting[0]); |
|
|
|
Setting s = setting[0]; |
|
|
|
settingtable.update(s); |
|
|
|
settingtable.sync_schema(); |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|