#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include "iflytop/core/spdlogfactory/logger.hpp" #include "iflytop/core/thread/thread.hpp" #define USER_DB "user.db" #define SETTING_DB "setting.db" #define DISINFECTION_RECORD_DB "disinfection_record.db" /** * @brief * * USER_DB * table: user * id uid passwd permission_level * * * SETTING_DB * table: setting * id setting_name setting_name_ch val_upper_limit val_lower_limit permission_level val * * DISINFECTION_RECORD_DB * table: disinfection_record * id uuid uid date loglevel duration * * * table: sensor_record * id disinfection_id date heating_strip air_compressor sprinkler_pump disinfectant_volume h2o2_1 temp_1 humid_1 saturation_1 h2o2_2 temp_2 humid_2 * saturation_2 h2o2_3 temp_3 humid_3 saturation_3 * */ namespace iflytop { using namespace std; using namespace std; using namespace core; using namespace nlohmann; namespace db { struct User { public: int id; string uid; string passwd; int permission_level; int visible; }; struct Setting { public: int id; string name; string name_ch; int val_lower_limit; int val_upper_limit; int permission_level; int val; }; struct PreSetting { public: int id; int group_id; int stoped_gs; int continued_gs; int stoped_satur; int continued_satur; int stoped_humi; int continued_humi; int injection_pump_speed; }; struct DisinfectionRecord { public: int id; string uuid; string uid; string date; string loglevel; int duration; }; struct SensorRecord { public: int id; string disinfection_id; string date; int heating_strip; int air_compressor; int sprinkler_pump; int disinfectant_volume; int h2o2_1; int temp_1; int humid_1; int saturation_1; int h2o2_2; int temp_2; int humid_2; int saturation_2; int h2o2_3; int temp_3; int humid_3; int saturation_3; }; } // namespace db using namespace db; class DBService : public enable_shared_from_this { ENABLE_LOGGER(DBService); public: DBService(); void initialize(); public: /******************************************************************************* * USER_DB * *******************************************************************************/ list> getAllUser(); json getAllUserJson(); shared_ptr getUser(string uid); vector getUserNames(); /** * @brief 添加用户 * * @param uid 用户名 * @param passwd 密码 * @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); public: /******************************************************************************* * SETTING_DB * *******************************************************************************/ list> getAllSetting(); json getAllSettingJson(); bool setSettingVal(int id, int val); bool setSettingVal(string name, int val); int getSettingVal(string name); public: /******************************************************************************* * SensorRecord_operation * *******************************************************************************/ json getAllRecords(string disinfection_id); void insertSensorRecord(shared_ptr record); void insertDisinfectionRecord(shared_ptr record); void setDisinfectionRecordDuration(string disinfection_id, int duration); private: void init_usr_db(); void init_setting_db(); void init_disinfection_record_db(); }; }; // namespace iflytop