|
|
@ -21,15 +21,15 @@ using namespace nlohmann; |
|
|
|
USER_DB, /**/ \ |
|
|
|
make_table("users", /**/ \ |
|
|
|
make_column("id", &User::id, primary_key().autoincrement()), /**/ \ |
|
|
|
make_column("uid", &User::uid), /**/ \ |
|
|
|
make_column("name", &User::name), /**/ \ |
|
|
|
make_column("passwd", &User::passwd), /**/ \ |
|
|
|
make_column("is_admin", &User::is_admin) /**/ \ |
|
|
|
make_column("role", &User::roleType) /**/ \ |
|
|
|
) |
|
|
|
|
|
|
|
#define USER_BEHAVIOR_RECORD_STRUCT \
|
|
|
|
make_table("user_behavior_records", /**/ \ |
|
|
|
make_column("id", &UserBehaviorRecord::id, primary_key().autoincrement()), /**/ \ |
|
|
|
make_column("uid", &UserBehaviorRecord::uid), /**/ \ |
|
|
|
make_column("usrName", &UserBehaviorRecord::usrName), /**/ \ |
|
|
|
make_column("date", &UserBehaviorRecord::date), /**/ \ |
|
|
|
make_column("behavior", &UserBehaviorRecord::behavior), /**/ \ |
|
|
|
make_column("behaviorinfo", &UserBehaviorRecord::behaviorinfo)) |
|
|
@ -38,21 +38,6 @@ using namespace nlohmann; |
|
|
|
* 配置列表 * |
|
|
|
*******************************************************************************/ |
|
|
|
|
|
|
|
#define SETTING_ITEM(_id, _name, _name_ch, _val_type, _val_lower_limit, _val_upper_limit, _val, _is_editable, _is_visible) \
|
|
|
|
{ \ |
|
|
|
/**/ \ |
|
|
|
.id = _id, /**/ \ |
|
|
|
.name = _name, /**/ \ |
|
|
|
.name_ch = _name_ch, /**/ \ |
|
|
|
.val_type = _val_type, /**/ \ |
|
|
|
.val_lower_limit = _val_lower_limit, /**/ \ |
|
|
|
.val_upper_limit = _val_upper_limit, /**/ \ |
|
|
|
.val = _val, /**/ \ |
|
|
|
.default_val = _val, /**/ \ |
|
|
|
.is_editable = _is_editable, /**/ \ |
|
|
|
.is_visible = _is_visible /**/ \ |
|
|
|
} |
|
|
|
|
|
|
|
#define ZARRARY_SIZE(val) (sizeof(val) / sizeof(val[0]))
|
|
|
|
|
|
|
|
DBService::DBService(/* args */) {} |
|
|
@ -75,13 +60,13 @@ void DBService::init_usr_db() { |
|
|
|
storage.sync_schema(); |
|
|
|
auto allusr = storage.get_all<User>(); |
|
|
|
|
|
|
|
auto admin = storage.get_all<User>(where(c(&User::is_admin) == true)); |
|
|
|
auto admin = storage.get_all<User>(where(c(&User::roleType) == USR_ROLE_ADMIN)); |
|
|
|
if (admin.size() == 0) { |
|
|
|
storage.insert<User>({-1, "管理员", "9973", true}); // 管理员
|
|
|
|
storage.insert<User>({-1, "管理员", "8888", USR_ROLE_ADMIN}); // 管理员
|
|
|
|
} |
|
|
|
auto user = storage.get_all<User>(where(c(&User::is_admin) == false)); |
|
|
|
auto user = storage.get_all<User>(where(c(&User::roleType) == USR_ROLE_USR)); |
|
|
|
if (user.size() == 0) { |
|
|
|
storage.insert<User>({-1, "用户0", "0000", false}); // 普通用户
|
|
|
|
storage.insert<User>({-1, "用户0", "8888", USR_ROLE_USR}); // 普通用户
|
|
|
|
} |
|
|
|
suc = true; |
|
|
|
} catch (const std::exception& e) { |
|
|
@ -104,14 +89,29 @@ list<shared_ptr<User>> DBService::getAllUser() { |
|
|
|
} |
|
|
|
return users; |
|
|
|
} |
|
|
|
void DBService::addUser(string uid, string passwd) { |
|
|
|
void DBService::addUser(string name, string passwd, string roleType) { |
|
|
|
lock_guard<recursive_mutex> lock(lock_); |
|
|
|
|
|
|
|
auto usertable = make_storage(USER_DB_STRUCT); |
|
|
|
usertable.sync_schema(); |
|
|
|
logger->info("add user: {} {} {}", uid, passwd, false); |
|
|
|
usertable.insert(User{-1, uid, passwd, false}); |
|
|
|
logger->info("add user: {} {} {}", name, passwd, roleType); |
|
|
|
usertable.insert(User{-1, name, passwd, roleType}); |
|
|
|
} |
|
|
|
shared_ptr<db::User> DBService::updateUserRoleType(int id, string roleType) { |
|
|
|
lock_guard<recursive_mutex> lock(lock_); |
|
|
|
auto usertable = make_storage(USER_DB_STRUCT); |
|
|
|
usertable.sync_schema(); |
|
|
|
auto user = usertable.get_all<User>(where(c(&User::id) == id)); |
|
|
|
if (user.size() == 0) { |
|
|
|
logger->error("change user role fail, user not found"); |
|
|
|
return nullptr; |
|
|
|
} |
|
|
|
logger->info("change user role: {} {} -> {}", id, user[0].roleType, roleType); |
|
|
|
user[0].roleType = roleType; |
|
|
|
usertable.update(user[0]); |
|
|
|
return make_shared<User>(user[0]); |
|
|
|
} |
|
|
|
|
|
|
|
shared_ptr<db::User> DBService::delUser(int id) { |
|
|
|
lock_guard<recursive_mutex> lock(lock_); |
|
|
|
|
|
|
@ -123,39 +123,39 @@ shared_ptr<db::User> DBService::delUser(int id) { |
|
|
|
logger->error("remove user fail, user not found"); |
|
|
|
return nullptr; |
|
|
|
} |
|
|
|
logger->info("delete user: {}:{}", id, remove_user[0].uid); |
|
|
|
logger->info("delete user: {}:{}", id, remove_user[0].name); |
|
|
|
usertable.remove_all<User>(where(c(&User::id) == id)); |
|
|
|
return make_shared<User>(remove_user[0]); |
|
|
|
} |
|
|
|
|
|
|
|
shared_ptr<db::User> DBService::changePasswd(string uid, string passwd) { |
|
|
|
shared_ptr<db::User> DBService::changePasswd(int id, string passwd) { |
|
|
|
lock_guard<recursive_mutex> lock(lock_); |
|
|
|
|
|
|
|
auto usertable = make_storage(USER_DB_STRUCT); |
|
|
|
usertable.sync_schema(); |
|
|
|
auto user = usertable.get_all<User>(where(c(&User::uid) == uid)); |
|
|
|
auto user = usertable.get_all<User>(where(c(&User::id) == id)); |
|
|
|
if (user.size() == 0) { |
|
|
|
logger->error("change passwd fail, user not found"); |
|
|
|
return nullptr; |
|
|
|
} |
|
|
|
logger->info("change passwd: {} {} -> {}", uid, user[0].passwd, passwd); |
|
|
|
logger->info("change passwd: {} {} -> {}", id, user[0].passwd, passwd); |
|
|
|
user[0].passwd = passwd; |
|
|
|
usertable.update(user[0]); |
|
|
|
return make_shared<User>(user[0]); |
|
|
|
} |
|
|
|
shared_ptr<db::User> DBService::updateUserUid(int id, string uid, string& olduid) { |
|
|
|
shared_ptr<db::User> DBService::updateUserUid(int id, string name, string& oldname) { |
|
|
|
lock_guard<recursive_mutex> lock(lock_); |
|
|
|
|
|
|
|
auto usertable = make_storage(USER_DB_STRUCT); |
|
|
|
usertable.sync_schema(); |
|
|
|
auto user = usertable.get_all<User>(where(c(&User::id) == id)); |
|
|
|
if (user.size() == 0) { |
|
|
|
logger->error("change user uid fail, user not found"); |
|
|
|
logger->error("change user name fail, user not found"); |
|
|
|
return nullptr; |
|
|
|
} |
|
|
|
olduid = user[0].uid; |
|
|
|
logger->info("change user uid: {} {} -> {}", id, user[0].uid, uid); |
|
|
|
user[0].uid = uid; |
|
|
|
oldname = user[0].name; |
|
|
|
logger->info("change user name: {} {} -> {}", id, user[0].name, name); |
|
|
|
user[0].name = name; |
|
|
|
usertable.update(user[0]); |
|
|
|
return make_shared<User>(user[0]); |
|
|
|
} |
|
|
@ -170,60 +170,60 @@ json DBService::getAllUserJson() { |
|
|
|
for (auto& u : all) { |
|
|
|
json j_user; |
|
|
|
j_user["id"] = u.id; |
|
|
|
j_user["uid"] = u.uid; |
|
|
|
j_user["name"] = u.name; |
|
|
|
j_user["passwd"] = u.passwd; |
|
|
|
j_user["is_admin"] = u.is_admin; |
|
|
|
j_user["roleType"] = u.roleType; |
|
|
|
j_users.push_back(j_user); |
|
|
|
} |
|
|
|
return j_users; |
|
|
|
} |
|
|
|
|
|
|
|
json DBService::getUserJson(string uid) { |
|
|
|
json DBService::getUserJson(string name) { |
|
|
|
lock_guard<recursive_mutex> lock(lock_); |
|
|
|
|
|
|
|
auto usertable = make_storage(USER_DB_STRUCT); |
|
|
|
usertable.sync_schema(); |
|
|
|
auto user = usertable.get_all<User>(where(c(&User::uid) == uid)); |
|
|
|
auto user = usertable.get_all<User>(where(c(&User::name) == name)); |
|
|
|
if (user.size() == 0) { |
|
|
|
return json(); |
|
|
|
} |
|
|
|
json j_user; |
|
|
|
j_user["id"] = user[0].id; |
|
|
|
j_user["uid"] = user[0].uid; |
|
|
|
j_user["name"] = user[0].name; |
|
|
|
j_user["passwd"] = user[0].passwd; |
|
|
|
j_user["is_admin"] = user[0].is_admin; |
|
|
|
j_user["roleType"] = user[0].roleType; |
|
|
|
return j_user; |
|
|
|
} |
|
|
|
|
|
|
|
shared_ptr<User> DBService::getUser(string uid) { |
|
|
|
shared_ptr<User> DBService::getUser(string name) { |
|
|
|
lock_guard<recursive_mutex> lock(lock_); |
|
|
|
|
|
|
|
auto usertable = make_storage(USER_DB_STRUCT); |
|
|
|
usertable.sync_schema(); |
|
|
|
auto user = usertable.get_all<User>(where(c(&User::uid) == uid)); |
|
|
|
auto user = usertable.get_all<User>(where(c(&User::name) == name)); |
|
|
|
if (user.size() == 0) { |
|
|
|
return nullptr; |
|
|
|
} |
|
|
|
return make_shared<User>(user[0]); |
|
|
|
} |
|
|
|
|
|
|
|
bool DBService::isUserExist(string uid) { |
|
|
|
bool DBService::isUserExist(string name) { |
|
|
|
lock_guard<recursive_mutex> lock(lock_); |
|
|
|
|
|
|
|
auto usertable = make_storage(USER_DB_STRUCT); |
|
|
|
usertable.sync_schema(); |
|
|
|
auto user = usertable.get_all<User>(where(c(&User::uid) == uid)); |
|
|
|
auto user = usertable.get_all<User>(where(c(&User::name) == name)); |
|
|
|
if (user.size() == 0) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
return true; |
|
|
|
} |
|
|
|
bool DBService::ispasswdCorrect(string uid, string passwd) { |
|
|
|
bool DBService::ispasswdCorrect(string name, string passwd) { |
|
|
|
lock_guard<recursive_mutex> lock(lock_); |
|
|
|
|
|
|
|
auto usertable = make_storage(USER_DB_STRUCT); |
|
|
|
usertable.sync_schema(); |
|
|
|
auto user = usertable.get_all<User>(where(c(&User::uid) == uid)); |
|
|
|
auto user = usertable.get_all<User>(where(c(&User::name) == name)); |
|
|
|
if (user.size() == 0) { |
|
|
|
return false; |
|
|
|
} |
|
|
@ -286,7 +286,7 @@ json DBService::getUserBehaviorRecordDescJson(int page, int page_size) { |
|
|
|
if (i >= from && i < to) { |
|
|
|
json j_user_behavior_record; |
|
|
|
j_user_behavior_record["id"] = u.id; |
|
|
|
j_user_behavior_record["uid"] = u.uid; |
|
|
|
j_user_behavior_record["usrName"] = u.usrName; |
|
|
|
j_user_behavior_record["behavior"] = u.behavior; |
|
|
|
j_user_behavior_record["behaviorZH"] = user_behavior_to_str((user_behavior_t)u.behavior); |
|
|
|
j_user_behavior_record["behaviorinfo"] = u.behaviorinfo; |
|
|
@ -315,13 +315,13 @@ static string getTime() { |
|
|
|
tm.tm_min, tm.tm_sec); |
|
|
|
} |
|
|
|
|
|
|
|
void DBService::addUserBehaviorRecord(string uid, int behavior, string behaviorinfo) { |
|
|
|
void DBService::addUserBehaviorRecord(string name, int behavior, string behaviorinfo) { |
|
|
|
lock_guard<recursive_mutex> lock(lock_); |
|
|
|
|
|
|
|
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT); |
|
|
|
user_behavior_record_table.sync_schema(); |
|
|
|
UserBehaviorRecord u; |
|
|
|
u.uid = uid; |
|
|
|
u.usrName = name; |
|
|
|
u.behavior = behavior; |
|
|
|
u.behaviorinfo = behaviorinfo; |
|
|
|
u.date = getTime(); |
|
|
|