实现系统管理表格操作接口、分页操作

This commit is contained in:
lixiaoyuan
2025-08-22 19:06:50 +08:00
parent 7e965b6fb4
commit 7fe51ea362
56 changed files with 2234 additions and 1304 deletions

View File

@@ -1,204 +0,0 @@
#include "DataFields.h"
#include "common/Utils.h"
void DataFields::set(string key, string val)
{
mapFields_[key] = val;
}
void DataFields::set(string key, float val)
{
mapFields_[key] = std::to_string(val);
}
void DataFields::set(string key, int val)
{
mapFields_[key] = std::to_string(val);
}
void DataFields::set(string key, int64_t val)
{
mapFields_[key] = std::to_string(val);
}
string DataFields::getStr(string key)
{
if (mapFields_.count(key) > 0)
{
return mapFields_[key];
}
else
{
return "";
}
}
int DataFields::getInt(string key)
{
return mapFields_.count(key) > 0 ? Utils::toInt(mapFields_[key]) : 0;
}
float DataFields::getFloat(string key)
{
return mapFields_.count(key) > 0 ? Utils::toFloat(mapFields_[key]) : 0.0f;
}
double DataFields::getDouble(string key)
{
return mapFields_.count(key) > 0 ? Utils::toDouble(mapFields_[key]) : 0.0;
}
void DataFields::remove(string key)
{
auto it = mapFields_.find(key);
if (it != mapFields_.end())
{
mapFields_.erase(it);
}
}
void DataFields::append(DataFields& datafield)
{
auto& map_f = datafield.fields();
for (auto it = map_f.begin(); it != map_f.end(); it++)
{
mapFields_[it->first] = it->second;
}
}
map<string, string>& DataFields::fields()
{
return mapFields_;
}
void DataFields::check(string key, string val, string d)
{
if (mapFields_.count(key) > 0 && mapFields_[key] == val)
{
mapFields_[key] = d;
}
}
string DataFields::get_insert_sql(string tbname)
{
string key;
string val;
for (auto it = mapFields_.begin(); it != mapFields_.end(); it++)
{
if (!key.empty())
{
key += ",";
val += ",";
}
key += ("`" + it->first + "`");
if (it->second == "null" || it->second == "NULL")
{
val += "NULL";
}
else
{
val += ("'" + it->second + "'");
}
}
return "INSERT INTO `" + tbname + "` (" + key + ") VALUES(" + val + ");";
}
string DataFields::get_update_sql(string tbname, string sql_c)
{
ostringstream oss;
oss << "update " << tbname << " set ";
for (auto iter = mapFields_.begin(); iter != mapFields_.end(); iter++)
{
if (iter != mapFields_.begin())
{
oss << ",";
};
oss << "`" << iter->first << "`=";
if (iter->second == "null" || iter->second == "NULL")
{
oss << "NULL";
}
else
{
oss << "'" << iter->second << "'";
}
}
oss << " " << sql_c << ";";
return oss.str();
}
string DataFields::get_update_sql(string tbname, std::vector<std::string> vec_keys, string sql_c)
{
std::map<std::string, bool> map_keys;
for (auto& k : vec_keys) { map_keys[k] = true; }
ostringstream oss;
oss << "update " << tbname << " set ";
for (auto iter = mapFields_.begin(); iter != mapFields_.end(); iter++)
{
auto& k = iter->first;
auto& v = iter->second;
if (!map_keys[k]) { continue; }
if (iter != mapFields_.begin())
{
oss << ",";
};
oss << "`" << k << "`=";
if (v == "null" || v == "NULL")
{
oss << "NULL";
}
else
{
oss << "'" << v << "'";
}
}
oss << " " << sql_c << ";";
return oss.str();
}
void DataFields::foreachItem(function<void(string key, string val)> on_foraach)
{
for (auto it = mapFields_.begin(); it != mapFields_.end(); it++)
{
if (on_foraach)
{
on_foraach(it->first, it->second);
}
}
}
bool DataFields::isEmpty(string key)
{
auto& s = mapFields_[key];
return s.empty();
}
bool DataFields::is_float_number(string key)
{
auto& s = mapFields_[key];
if (s.empty())
{
return false;
}
for (auto& c : s)
{
if (std::isdigit(c) == 0 && c != '.')
{
return false;
}
}
return true;
}
string DataFields::toStr()
{
string s;
for (auto it = mapFields_.begin(); it != mapFields_.end(); it++)
{
s += ("{" + it->first + ":" + it->second + "} ");
}
return s;
}
int DataFields::size()
{
return mapFields_.size();
}
void DataFields::clear()
{
mapFields_.clear();
}

213
src/common/Fields.cpp Normal file
View File

@@ -0,0 +1,213 @@
#include "Fields.h"
#include "common/Utils.h"
void Fields::set(string key, string val)
{
mapFields[key] = val;
}
void Fields::set(string key, float val)
{
mapFields[key] = std::to_string(val);
}
void Fields::set(string key, int val)
{
mapFields[key] = std::to_string(val);
}
void Fields::set(string key, int64_t val)
{
mapFields[key] = std::to_string(val);
}
std::string& Fields::value(std::string key)
{
static std::string tmp;
auto it = mapFields.find(key);
return (it != mapFields.end()) ? it->second : (tmp = "");
}
//string Fields::getStr(string key)
//{
// return (mapFields.count(key) > 0) ? mapFields[key] : "";
//}
int Fields::getInt(string key)
{
return mapFields.count(key) > 0 ? Utils::toInt(mapFields[key]) : 0;
}
float Fields::getFloat(string key)
{
return mapFields.count(key) > 0 ? Utils::toFloat(mapFields[key]) : 0.0f;
}
double Fields::getDouble(string key)
{
return mapFields.count(key) > 0 ? Utils::toDouble(mapFields[key]) : 0.0;
}
std::map<string, string>::iterator Fields::remove(string key)
{
auto it = mapFields.find(key);
if (it != mapFields.end())
{
it = mapFields.erase(it);
}
return it;
}
void Fields::append(Fields& datafield)
{
auto& map_f = datafield.fields();
for (auto it = map_f.begin(); it != map_f.end(); it++)
{
mapFields[it->first] = it->second;
}
}
map<string, string>& Fields::fields()
{
return mapFields;
}
void Fields::check(string key, string val, string d)
{
if (mapFields.count(key) > 0 && mapFields[key] == val)
{
mapFields[key] = d;
}
}
string Fields::get_insert_sql(string tbname)
{
string key;
string val;
for (auto it = mapFields.begin(); it != mapFields.end(); it++)
{
if (!key.empty())
{
key += ",";
val += ",";
}
key += ("`" + it->first + "`");
if (it->second == "null" || it->second == "NULL")
{
val += "NULL";
}
else
{
val += ("'" + it->second + "'");
}
}
return "INSERT INTO `" + tbname + "` (" + key + ") VALUES(" + val + ");";
}
string Fields::get_update_sql(string tbname, string sql_c)
{
ostringstream oss;
oss << "update " << tbname << " set ";
for (auto iter = mapFields.begin(); iter != mapFields.end(); iter++)
{
if (iter != mapFields.begin())
{
oss << ",";
};
oss << "`" << iter->first << "`=";
if (iter->second == "null" || iter->second == "NULL")
{
oss << "NULL";
}
else
{
oss << "'" << iter->second << "'";
}
}
oss << " " << sql_c << ";";
return oss.str();
}
string Fields::get_update_sql(string tbname, std::vector<std::string> vec_keys, string sql_c)
{
std::map<std::string, bool> map_keys;
for (auto& k : vec_keys) { map_keys[k] = true; }
ostringstream oss;
oss << "update " << tbname << " set ";
for (auto iter = mapFields.begin(); iter != mapFields.end(); iter++)
{
auto& k = iter->first;
auto& v = iter->second;
if (!map_keys[k]) { continue; }
if (iter != mapFields.begin())
{
oss << ",";
};
oss << "`" << k << "`=";
if (v == "null" || v == "NULL")
{
oss << "NULL";
}
else
{
oss << "'" << v << "'";
}
}
oss << " " << sql_c << ";";
return oss.str();
}
void Fields::foreachItem(function<void(string key, string& val)> onForaach)
{
for (auto it = mapFields.begin(); it != mapFields.end(); it++)
{
if (onForaach)
{
onForaach(it->first, it->second);
}
}
}
bool Fields::isEmpty(string key)
{
auto& s = mapFields[key];
return s.empty();
}
bool Fields::is_float_number(string key)
{
auto& s = mapFields[key];
if (s.empty())
{
return false;
}
for (auto& c : s)
{
if (std::isdigit(c) == 0 && c != '.')
{
return false;
}
}
return true;
}
string Fields::toStr()
{
string s;
for (auto it = mapFields.begin(); it != mapFields.end(); it++)
{
s += ("{" + it->first + ":" + it->second + "} ");
}
return s;
}
int Fields::size()
{
return mapFields.size();
}
void Fields::clear()
{
mapFields.clear();
}
bool Fields::hasKey(std::string key)
{
auto iter = mapFields.find(key);
return (iter != mapFields.end());
}

View File

@@ -1,5 +1,5 @@
#ifndef _DataFields_H_
#define _DataFields_H_
#ifndef _Fields_H_
#define _Fields_H_
#include <string>
#include <vector>
@@ -11,12 +11,11 @@ using namespace std;
struct PageInfo
{
int total {0};
int pageIndex {0};
int pageSize {10};
int pageCount {0};
int index {0};
int size {10};
};
class DataFields
class Fields
{
public:
/**
@@ -48,10 +47,10 @@ public:
void set(string key, int64_t val);
/**
* string
*
* @param: [string key]
*/
string getStr(string key);
std::string& value(std::string key);
/**
* int
@@ -75,13 +74,13 @@ public:
*
* @param: [string key]
*/
void remove(string key);
std::map<string, string>::iterator remove(string key);
/**
*
* @param: [DataFields& fields]
*/
void append(DataFields& fields);
void append(Fields& fields);
/**
* map
@@ -98,31 +97,31 @@ public:
/**
* sql
* @param: [string tbname]
* @param: [string tableName]
*/
string get_insert_sql(string tbname);
string get_insert_sql(string tableName);
/**
* sql
* @param: [string tbname]
* @param: [string sql_c] sql的更新条件 where id='1'
* @param: [string tableName]
* @param: [string condition] sql的更新条件 where id='1'
*/
string get_update_sql(string tbname, string sql_c);
string get_update_sql(string tableName, string condition);
/**
* sql
* @param: [string tbname]
* @param: [string vec_keys]
* @param: [string sql_c] sql的更新条件 where id='1'
* @param: [string tableName]
* @param: [string vecKeys]
* @param: [string condition] sql的更新条件 where id='1'
*/
string get_update_sql(string tbname, std::vector<std::string> vec_keys, string sql_c);
string get_update_sql(string tableName, std::vector<std::string> vecKeys, string condition);
/**
*
* @param: [function... on_foraach]
* @param: [function... onForaach]
*/
void foreachItem(function<void(string key, string val)> on_foraach);
void foreachItem(function<void(string key, string& val)> onForaach);
/**
*
@@ -148,8 +147,14 @@ public:
void clear();
bool hasKey(std::string key);
std::map<string, string>& map() { return mapFields; }
private:
map<string, string> mapFields_;
std::map<string, string> mapFields;
};
#endif