#pragma execution_character_set("utf-8") #include "SystemSettingModule.h" #include "DataManager.h" #include "SysManager.h" #include #include "DictData.h" #include "DictItem.h" #include SystemSettingModule::SystemSettingModule(QObject* /*parent*/, DataManager* manager) : BaseEventModule(manager, "SystemSettingModule") { } SystemSettingModule::~SystemSettingModule() { } bool SystemSettingModule::onMessage(const std::string& eventName, json& parameter) { LOG(INFO) << CommonHelper::utf8ToStdString("SystemSettingModule receive message......."); LOG(INFO) << eventName; LOG(INFO) << CommonHelper::jsonToString(parameter); LOG(INFO) << parameter; TRY { // auto & param = parameter["data"]; if (eventName == "read-dictionary") { if (!pDataManager->_dbConnected) { parameter["error"] = "数据库连接失败"; return true; } return readDictionary(parameter); } else if (eventName == "read-profile") { return readProfile(parameter); } else if (eventName == "save-profile") { saveProfile(parameter["data"],false); return true; } else if (eventName == "add-dictionary") { return addDictionary(parameter); } else if (eventName == "save-dictionary") { return saveDictionary(parameter); } else if (eventName == "delete-dictionary") { return deleteDictionary(parameter); } } CATCH(parameter); return EventModule::onMessage(eventName, parameter); } //参数 newfile =true 时表示刚启动程序时新生成的profile void SystemSettingModule::saveProfile(json& profile,bool newfile) { LOG(INFO) << CommonHelper::utf8ToStdString("SystemSettingModule::saveProfile"); SysManager& sysMgr = GetSysManager(); sysMgr.getSettingData(profile); if (newfile) { sysMgr.setProfileData(profile); } sysMgr.save(profile); broadcast("update-profile"); } bool SystemSettingModule::readProfile(json& parameter) { SysManager& sysMnr = GetSysManager(); QFileInfo fileInfo(sysMnr._profilePath); if (!fileInfo.isFile()) { QFile file(sysMnr._profilePath); //文件不存在,生成一个空文件 file.open(QIODevice::ReadWrite | QIODevice::Text); file.close(); auto j = json::object(); saveProfile(j,true); parameter["response"] = j; LOG(INFO) << CommonHelper::utf8ToStdString("readProfile Sendto web......."); LOG(INFO) << CommonHelper::jsonToString(parameter); return true; } std::fstream profile; std::string profilePath = CommonHelper::qstringToStdString(sysMnr._profilePath); profile.open(profilePath, std::ios::in); if (!profile.is_open()) { auto j = json({}); saveProfile(j,false); } profile.open(profilePath, std::ios::in); try { if (profile.is_open()) { auto _profile = json::parse(profile); profile.close(); parameter["response"] = _profile; SysManager& sysMgr = GetSysManager(); sysMgr.getSettingData(_profile); } else { parameter["error"] = "can't open file"; LOG(INFO) << CommonHelper::utf8ToStdString("can't open file"); } } catch (exception& e) { LOG(ERROR) << e.what(); auto j = json::object(); parameter["response"] = j; LOG(INFO) << CommonHelper::utf8ToStdString("readProfile parse failed"); return true; } LOG(INFO) << CommonHelper::utf8ToStdString("readProfile Sendto web......."); LOG(INFO) << CommonHelper::jsonToString(parameter); return true; } bool SystemSettingModule::addDictionary(json& parameter) { //增加二级字典项 auto data = parameter["data"]; //数据字典项目id int id = data["parentid"]; SysManager& sysMgr = GetSysManager(); //查找数据字典项 DictItem* pItem = qobject_cast(sysMgr.findDictItem(id)); if (pItem) { DictData* pNew = new DictData(); pNew->setNewData(parameter); pNew->_bUsed = false; if (pItem->addChild(pNew)) { json j; pNew->toJson(j); parameter["response"] = j; } } else { parameter["error"] = "can't find dictItem"; } LOG(INFO) << CommonHelper::utf8ToStdString("addDictionary Sendto web......."); LOG(INFO) << CommonHelper::jsonToString(parameter); return true; } bool SystemSettingModule::readDictionary(json& parameter) { SysManager& sysMgr = GetSysManager(); json j = json::array(); //先读取一级字典 if (sysMgr.getAllDictItem()) { //读二级字典 sysMgr.getAllDictChildren(); } //返回json串 if (sysMgr.getDictSize() == 0) { parameter["response"] = j; } else { sysMgr.getDictJson(parameter); } LOG(INFO) << CommonHelper::utf8ToStdString("readDictionary Sendto web......."); LOG(INFO) << CommonHelper::jsonToString(parameter); return true; } bool SystemSettingModule::saveDictionary(json& parameter) { auto data = parameter["data"]; int id = data["id"]; SysManager& sysMgr = GetSysManager(); DPData* pDictData = sysMgr.findDictData(id); if (pDictData) { pDictData->setNewData(parameter); if (pDictData->saveSelf()) { json j; pDictData->toJson(j); parameter["response"] = j; } else { parameter["error"] = "save dictionary failed"; } } else { parameter["error"] = "该字典数据项不存在"; } LOG(INFO) << CommonHelper::utf8ToStdString("saveDictionary Sendto web......."); LOG(INFO) << CommonHelper::jsonToString(parameter); return true; } bool SystemSettingModule::deleteDictionary(json& parameter) { auto data = parameter["data"]; int id = data["id"]; SysManager& sysMgr = GetSysManager(); DPData* pDictData = sysMgr.findDictData(id); QString msg; if (pDictData) { if (qobject_cast(pDictData)->deleteSelf(msg)) { delete pDictData; pDictData = nullptr; parameter["response"] = { {"status",true} }; } else { parameter["error"] = CommonHelper::qstringToUtf8(msg); } } else { parameter["error"] = "该字典数据项不存在"; } LOG(INFO) << CommonHelper::utf8ToStdString("deleteDictionary Sendto web......."); LOG(INFO) << CommonHelper::jsonToString(parameter); return true; }