#include "sysconfigthread.h" #include #include #include #include #include SysConfigThread::SysConfigThread(QObject *iParent) : TopClassThreadAbs(iParent) { } SysConfigThread::~SysConfigThread() { } void SysConfigThread::run() { if (invokeName() == "SAVE_DATA") { saveData(invokeParameter().toMap()); } } void SysConfigThread::saveData(const QVariantMap &iDataMap) { TDataResponse dataRes; TSqlQueryV2 sqlQuery(T_SQLCNT_POOL->getSqlDatabase()); sqlQuery.begin(); try { TSqlSelectorV2 sqlSelector; sqlSelector.setTable("pub_conf"); sqlSelector.setField("COUNT(1)"); QVariantMap formatMap; formatMap["tags"] = "array"; sqlSelector.setFieldFormat(formatMap); sqlSelector.addWhere("path", iDataMap["path"]); sqlSelector.addWhere("name", iDataMap["name"]); sqlSelector.addWhere("id", iDataMap.value("id").toInt(), "!="); int count = sqlQuery.selectCount(sqlSelector); if (count > 0) { throw TError(ttr("'%1'/%2 already exists!").arg(iDataMap.value("path").toString()) .arg(iDataMap.value("name").toString()), "ERROR", "ALREADY_EXISTS"); } QVariantMap dataMap = TDataParse::replaceVariantMapEmptyItem(iDataMap); TSqlInserterV2 sqlInserter; sqlInserter.setTable("pub_conf"); sqlInserter.setData(dataMap); QStringList fieldLst = dataMap.keys(); fieldLst.removeOne("id"); sqlInserter.setField(fieldLst); sqlInserter.setUniqueField("id"); sqlInserter.setAutoIncrementField("id"); sqlInserter.setUpdatePolicy("action_data", "json_merge"); QVariant dataId = sqlQuery.replaceRow(sqlInserter); if (sqlQuery.lastError().isValid()) { throw sqlQuery.lastError(); } sqlQuery.commit(); dataRes.setData(dataId); setInvokeResult(dataRes.toVariantMap()); return; } catch (const TError &err) { dataRes.setError(err); } catch (...) { dataRes.setErrText(ttr("Unknow Error!")); } sqlQuery.rollback(); setInvokeResult(dataRes.toVariantMap()); }