From 12451ce429bf3fbdc5bc063cf0a9b426e103506b Mon Sep 17 00:00:00 2001 From: luoliangyi <87842688@qq.com> Date: Fri, 9 Dec 2022 17:39:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=B4=A6=E6=88=B7=E7=AD=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/HGPdtToolDb/HGPdtToolDb.cpp | 86 +++++++- db/HGPdtToolDb/HGPdtToolDb.def | 8 + db/HGPdtToolDb/HGPdtToolDb.h | 33 ++- db/HGPdtToolDb/HGPdtToolDbImpl.cpp | 276 +++++++++++++++++++++---- db/HGPdtToolDb/HGPdtToolDbImpl.hpp | 12 +- db/HGPdtToolDbTest/HGPdtToolDbTest.cpp | 17 +- 6 files changed, 389 insertions(+), 43 deletions(-) diff --git a/db/HGPdtToolDb/HGPdtToolDb.cpp b/db/HGPdtToolDb/HGPdtToolDb.cpp index c3a50f9..504de18 100644 --- a/db/HGPdtToolDb/HGPdtToolDb.cpp +++ b/db/HGPdtToolDb/HGPdtToolDb.cpp @@ -3,7 +3,7 @@ #include "base/HGInc.h" HGResult HGAPI HGPdtToolDb_CreateUserMgr(const HGChar* host, HGUShort port, - const HGChar* user, const HGChar* pwd, HGPdtToolDbUserMgr* userMgr) + const HGChar* userName, const HGChar* pwd, HGPdtToolDbUserMgr* userMgr) { if (NULL == userMgr) { @@ -11,7 +11,7 @@ HGResult HGAPI HGPdtToolDb_CreateUserMgr(const HGChar* host, HGUShort port, } HGPdtToolDbUserMgrImpl* userMgrImpl = new HGPdtToolDbUserMgrImpl; - HGResult ret = userMgrImpl->Create(host, port, user, pwd); + HGResult ret = userMgrImpl->Create(host, port, userName, pwd); if (HGBASE_ERR_OK != ret) { delete userMgrImpl; @@ -40,6 +40,88 @@ HGResult HGAPI HGPdtToolDb_DestroyUserMgr(HGPdtToolDbUserMgr userMgr) return HGBASE_ERR_OK; } +HGResult HGAPI HGPdtToolDb_GetUserType(HGPdtToolDbUserMgr userMgr, HGUInt* userType) +{ + if (NULL == userMgr) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbUserMgrImpl* userMgrImpl = (HGPdtToolDbUserMgrImpl*)userMgr; + return userMgrImpl->GetUserType(userType); +} + +HGResult HGAPI HGPdtToolDb_GetUserName(HGPdtToolDbUserMgr userMgr, HGChar* userName, HGUInt maxLen) +{ + if (NULL == userMgr) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbUserMgrImpl* userMgrImpl = (HGPdtToolDbUserMgrImpl*)userMgr; + return userMgrImpl->GetUserName(userName, maxLen); +} + +HGResult HGAPI HGPdtToolDb_GetUserList(HGPdtToolDbUserMgr userMgr, HGChar** userNameList, HGUInt maxLen, HGUInt* count) +{ + if (NULL == userMgr) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbUserMgrImpl* userMgrImpl = (HGPdtToolDbUserMgrImpl*)userMgr; + return userMgrImpl->GetUserList(userNameList, maxLen, count); +} + +HGResult HGAPI HGPdtToolDb_ReleaseUserList(HGChar** userNameList, HGUInt count) +{ + return HGPdtToolDbUserMgrImpl::ReleaseUserList(userNameList, count); +} + +HGResult HGAPI HGPdtToolDb_CreateUser(HGPdtToolDbUserMgr userMgr, const HGChar* userName, const HGChar* defPwd) +{ + if (NULL == userMgr) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbUserMgrImpl* userMgrImpl = (HGPdtToolDbUserMgrImpl*)userMgr; + return userMgrImpl->CreateUser(userName, defPwd); +} + +HGResult HGAPI HGPdtToolDb_DestroyUser(HGPdtToolDbUserMgr userMgr, const HGChar* userName) +{ + if (NULL == userMgr) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbUserMgrImpl* userMgrImpl = (HGPdtToolDbUserMgrImpl*)userMgr; + return userMgrImpl->DestroyUser(userName); +} + +HGResult HGAPI HGPdtToolDb_SetPassword(HGPdtToolDbUserMgr userMgr, const HGChar* userName, const HGChar* pwd) +{ + if (NULL == userMgr) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbUserMgrImpl* userMgrImpl = (HGPdtToolDbUserMgrImpl*)userMgr; + return userMgrImpl->SetPassword(userName, pwd); +} + +HGResult HGAPI HGPdtToolDb_ModifyPassword(HGPdtToolDbUserMgr userMgr, const HGChar* newPwd) +{ + if (NULL == userMgr) + { + return HGBASE_ERR_INVALIDARG; + } + + HGPdtToolDbUserMgrImpl* userMgrImpl = (HGPdtToolDbUserMgrImpl*)userMgr; + return userMgrImpl->ModifyPassword(newPwd); +} + HGResult HGAPI HGPdtToolDb_Export(HGPdtToolDbUserMgr userMgr, const HGChar* xlsPath) { if (NULL == userMgr) diff --git a/db/HGPdtToolDb/HGPdtToolDb.def b/db/HGPdtToolDb/HGPdtToolDb.def index 6ff50de..9ab1649 100644 --- a/db/HGPdtToolDb/HGPdtToolDb.def +++ b/db/HGPdtToolDb/HGPdtToolDb.def @@ -4,6 +4,14 @@ EXPORTS HGPdtToolDb_CreateUserMgr HGPdtToolDb_DestroyUserMgr +HGPdtToolDb_GetUserType +HGPdtToolDb_GetUserName +HGPdtToolDb_GetUserList +HGPdtToolDb_ReleaseUserList +HGPdtToolDb_CreateUser +HGPdtToolDb_DestroyUser +HGPdtToolDb_SetPassword +HGPdtToolDb_ModifyPassword HGPdtToolDb_Export HGPdtToolDb_GetUserConfig HGPdtToolDb_SetUserConfig diff --git a/db/HGPdtToolDb/HGPdtToolDb.h b/db/HGPdtToolDb/HGPdtToolDb.h index 6a519c5..5e9d96b 100644 --- a/db/HGPdtToolDb/HGPdtToolDb.h +++ b/db/HGPdtToolDb/HGPdtToolDb.h @@ -4,6 +4,11 @@ #include "base/HGDef.h" #include "base/HGBaseErr.h" +/* 管理员账户 */ +#define HGPDTTOOLDB_USERTYPE_ROOT 1L +/* 普通账户 */ +#define HGPDTTOOLDB_USERTYPE_NORMAL 2L + /* 拨码开关校验 */ #define HGPDTTOOLDB_ENTRYNAME_DIAL_SWITCH 1L /* 检查船型开关功能 */ @@ -91,12 +96,36 @@ HG_DECLARE_HANDLE(HGPdtToolDbDevice); /* 登录 */ HGEXPORT HGResult HGAPI HGPdtToolDb_CreateUserMgr(const HGChar *host, HGUShort port, - const HGChar *user, const HGChar *pwd, HGPdtToolDbUserMgr *userMgr); + const HGChar *userName, const HGChar *pwd, HGPdtToolDbUserMgr *userMgr); /* 登出 */ HGEXPORT HGResult HGAPI HGPdtToolDb_DestroyUserMgr(HGPdtToolDbUserMgr userMgr); -/* 导出所有设备测试信息到XLS文件 */ +/* 获取当前账户类型 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_GetUserType(HGPdtToolDbUserMgr userMgr, HGUInt *userType); + +/* 获取当前账户名称 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_GetUserName(HGPdtToolDbUserMgr userMgr, HGChar *userName, HGUInt maxLen); + +/* 获取账户列表,需要管理员账户才能调用 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_GetUserList(HGPdtToolDbUserMgr userMgr, HGChar **userNameList, HGUInt maxLen, HGUInt* count); + +/* 销毁账户列表 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_ReleaseUserList(HGChar **userNameList, HGUInt count); + +/* 创建账户,需要管理员账户才能调用 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_CreateUser(HGPdtToolDbUserMgr userMgr, const HGChar *userName, const HGChar* defPwd); + +/* 销毁账户,需要管理员账户才能调用 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_DestroyUser(HGPdtToolDbUserMgr userMgr, const HGChar* userName); + +/* 设置账户密码,需要管理员账户才能调用 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_SetPassword(HGPdtToolDbUserMgr userMgr, const HGChar* userName, const HGChar* pwd); + +/* 修改本账户的密码 */ +HGEXPORT HGResult HGAPI HGPdtToolDb_ModifyPassword(HGPdtToolDbUserMgr userMgr, const HGChar* newPwd); + +/* 导出所有设备测试信息到XLS文件,需要管理员账户才能调用 */ HGEXPORT HGResult HGAPI HGPdtToolDb_Export(HGPdtToolDbUserMgr userMgr, const HGChar *xlsPath); /* 获取用户配置 */ diff --git a/db/HGPdtToolDb/HGPdtToolDbImpl.cpp b/db/HGPdtToolDb/HGPdtToolDbImpl.cpp index e64a591..e6c4b72 100644 --- a/db/HGPdtToolDb/HGPdtToolDbImpl.cpp +++ b/db/HGPdtToolDb/HGPdtToolDbImpl.cpp @@ -101,7 +101,7 @@ const HGChar* PRESSURE_INSPECTION_CN[] = HGPdtToolDbUserMgrImpl::HGPdtToolDbUserMgrImpl() { m_sql = NULL; - m_user.clear(); + m_userName.clear(); m_deviceList.clear(); } @@ -110,7 +110,7 @@ HGPdtToolDbUserMgrImpl::~HGPdtToolDbUserMgrImpl() } -HGResult HGPdtToolDbUserMgrImpl::Create(const HGChar* host, HGUShort port, const HGChar* user, const HGChar* pwd) +HGResult HGPdtToolDbUserMgrImpl::Create(const HGChar* host, HGUShort port, const HGChar* userName, const HGChar* pwd) { if (NULL != m_sql) { @@ -123,35 +123,13 @@ HGResult HGPdtToolDbUserMgrImpl::Create(const HGChar* host, HGUShort port, const return HGBASE_ERR_FAIL; } - if (NULL == mysql_real_connect(sql, host, user, pwd, NULL, port, NULL, 0)) + if (NULL == mysql_real_connect(sql, host, userName, pwd, "huago_production_tool", port, NULL, 0)) { mysql_close(sql); return HGBASE_ERR_FAIL; } - int ret = mysql_query(sql, "create database if not exists huago_production_tool;"); - if (0 != ret) - { - mysql_close(sql); - return HGBASE_ERR_FAIL; - } - - ret = mysql_select_db(sql, "huago_production_tool"); - if (0 != ret) - { - mysql_close(sql); - return HGBASE_ERR_FAIL; - } -#if 0 - mysql_query(sql, "drop table main_test;"); - mysql_query(sql, "drop table initial_inspection_test;"); - mysql_query(sql, "drop table initial_inspection_desc;"); - mysql_query(sql, "drop table image_inspection_test;"); - mysql_query(sql, "drop table image_inspection_desc;"); - mysql_query(sql, "drop table pressure_inspection_test;"); - mysql_query(sql, "drop table pressure_inspection_desc;"); -#endif - if (0 != CreateUserConfigTable(sql, user) || 0 != CreateMainTestTable(sql) + if (0 != CreateUserConfigTable(sql, userName) || 0 != CreateMainTestTable(sql) || 0 != CreateInitInspTestTable(sql) || 0 != CreateInitInspDescTable(sql) || 0 != CreateImgInspTestTable(sql) || 0 != CreateImgInspDescTable(sql) || 0 != CreatePreInspTestTable(sql) || 0 != CreatePreInspDescTable(sql)) @@ -161,7 +139,7 @@ HGResult HGPdtToolDbUserMgrImpl::Create(const HGChar* host, HGUShort port, const } m_sql = sql; - m_user = user; + m_userName = userName; return HGBASE_ERR_OK; } @@ -174,10 +152,231 @@ HGResult HGPdtToolDbUserMgrImpl::Destroy() mysql_close(m_sql); m_sql = NULL; - m_user.clear(); + m_userName.clear(); return HGBASE_ERR_OK; } +HGResult HGPdtToolDbUserMgrImpl::GetUserType(HGUInt* userType) +{ + if (NULL == m_sql) + { + return HGBASE_ERR_FAIL; + } + + if (NULL == userType) + { + return HGBASE_ERR_INVALIDARG; + } + + *userType = HGPDTTOOLDB_USERTYPE_NORMAL; + if (0 == strcmp(m_userName.c_str(), "root")) + *userType = HGPDTTOOLDB_USERTYPE_ROOT; + return HGBASE_ERR_OK; +} + +HGResult HGPdtToolDbUserMgrImpl::GetUserName(HGChar* userName, HGUInt maxLen) +{ + if (NULL == m_sql) + { + return HGBASE_ERR_FAIL; + } + + if (NULL == userName || 0 == maxLen) + { + return HGBASE_ERR_INVALIDARG; + } + + if (maxLen < m_userName.size() + 1) + { + return HGBASE_ERR_FAIL; + } + + strcpy(userName, m_userName.c_str()); + return HGBASE_ERR_OK; +} + +HGResult HGPdtToolDbUserMgrImpl::GetUserList(HGChar** userNameList, HGUInt maxLen, HGUInt* count) +{ + if (NULL == m_sql) + { + return HGBASE_ERR_FAIL; + } + + if (NULL == userNameList || 0 == maxLen || NULL == count) + { + return HGBASE_ERR_INVALIDARG; + } + + HGUInt userType = 0; + GetUserType(&userType); + if (HGPDTTOOLDB_USERTYPE_ROOT != userType) + { + return HGBASE_ERR_ACCESSDENIED; + } + + char sqlCmd[1024] = {0}; + sprintf(sqlCmd, "select user, host from mysql.user"); + int ret = mysql_query(m_sql, sqlCmd); + if (0 != ret) + { + return HGBASE_ERR_FAIL; + } + + MYSQL_RES* sqlRes = mysql_use_result(m_sql); + if (NULL == sqlRes) + { + return HGBASE_ERR_FAIL; + } + + *count = 0; + MYSQL_ROW row = NULL; + while ((row = mysql_fetch_row(sqlRes)) != NULL) + { + if (*count >= maxLen) + { + break; + } + + assert(NULL != row[0] && NULL != row[1]); + if (0 == strcmp(row[1], "%")) + { + userNameList[*count] = (HGChar*)malloc(strlen(row[0]) + 1); + assert(NULL != userNameList[*count]); + strcpy(userNameList[*count], row[0]); + ++(*count); + } + } + + mysql_free_result(sqlRes); + return HGBASE_ERR_OK; +} + +HGResult HGPdtToolDbUserMgrImpl::ReleaseUserList(HGChar** userNameList, HGUInt count) +{ + if (NULL == userNameList || 0 == count) + { + return HGBASE_ERR_INVALIDARG; + } + + for (HGUInt i = 0; i < count; ++i) + { + free(userNameList[i]); + } + + return HGBASE_ERR_OK; +} + +HGResult HGPdtToolDbUserMgrImpl::CreateUser(const HGChar* userName, const HGChar* defPwd) +{ + if (NULL == m_sql) + { + return HGBASE_ERR_FAIL; + } + + if (NULL == userName || 0 == *userName || NULL == defPwd || 0 == *defPwd) + { + return HGBASE_ERR_INVALIDARG; + } + + HGUInt userType = 0; + GetUserType(&userType); + if (HGPDTTOOLDB_USERTYPE_ROOT != userType) + { + return HGBASE_ERR_ACCESSDENIED; + } + + if (0 == strcmp(userName, "root")) + { + return HGBASE_ERR_FAIL; + } + + char sqlCmd[1024] = {0}; + sprintf(sqlCmd, "create user '%s'@'%%' identified by '%s';", userName, defPwd); + int ret = mysql_query(m_sql, sqlCmd); + if (0 != ret) + { + return HGBASE_ERR_FAIL; + } + + sprintf(sqlCmd, "grant all privileges on huago_production_tool.* to '%s'@'%%' with grant option;", userName); + ret = mysql_query(m_sql, sqlCmd); + assert(0 == ret); + return HGBASE_ERR_OK; +} + +HGResult HGPdtToolDbUserMgrImpl::DestroyUser(const HGChar* userName) +{ + if (NULL == m_sql) + { + return HGBASE_ERR_FAIL; + } + + if (NULL == userName || 0 == *userName) + { + return HGBASE_ERR_INVALIDARG; + } + + HGUInt userType = 0; + GetUserType(&userType); + if (HGPDTTOOLDB_USERTYPE_ROOT != userType) + { + return HGBASE_ERR_ACCESSDENIED; + } + + if (0 == strcmp(userName, "root")) + { + return HGBASE_ERR_FAIL; + } + + char sqlCmd[1024] = { 0 }; + sprintf(sqlCmd, "drop user '%s'@'%%';", userName); + int ret = mysql_query(m_sql, sqlCmd); + return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; +} + +HGResult HGPdtToolDbUserMgrImpl::SetPassword(const HGChar* userName, const HGChar* pwd) +{ + if (NULL == m_sql) + { + return HGBASE_ERR_FAIL; + } + + if (NULL == userName || 0 == *userName || NULL == pwd || 0 == *pwd) + { + return HGBASE_ERR_INVALIDARG; + } + + HGUInt userType = 0; + GetUserType(&userType); + if (HGPDTTOOLDB_USERTYPE_ROOT != userType) + { + return HGBASE_ERR_ACCESSDENIED; + } + + char sqlCmd[1024] = { 0 }; + sprintf(sqlCmd, "set password for '%s'@'%%' = password('%s');", userName, pwd); + int ret = mysql_query(m_sql, sqlCmd); + return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; +} + +HGResult HGPdtToolDbUserMgrImpl::ModifyPassword(const HGChar* newPwd) +{ + if (NULL == m_sql) + { + return HGBASE_ERR_FAIL; + } + + if (NULL == newPwd || 0 == *newPwd) + { + return HGBASE_ERR_INVALIDARG; + } + + char sqlCmd[1024] = { 0 }; + sprintf(sqlCmd, "set password for '%s'@'%%' = password('%s');", m_userName.c_str(), newPwd); + int ret = mysql_query(m_sql, sqlCmd); + return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; +} + HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath) { if (NULL == m_sql) @@ -190,6 +389,13 @@ HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath) return HGBASE_ERR_INVALIDARG; } + HGUInt userType = 0; + GetUserType(&userType); + if (HGPDTTOOLDB_USERTYPE_ROOT != userType) + { + return HGBASE_ERR_ACCESSDENIED; + } + std::string cmd = "select main_test.sn"; cmd += ", main_test.create_time"; cmd += ", main_test.create_user"; @@ -336,7 +542,7 @@ HGResult HGPdtToolDbUserMgrImpl::GetConfig(const HGChar* key, HGChar* value, HGU } char sqlCmd[1024] = { 0 }; - sprintf(sqlCmd, "select config_value from %s_config where config_key = '%s';", m_user.c_str(), key); + sprintf(sqlCmd, "select config_value from %s_config where config_key = '%s';", m_userName.c_str(), key); int ret = mysql_query(m_sql, sqlCmd); if (0 != ret) { @@ -388,7 +594,7 @@ HGResult HGPdtToolDbUserMgrImpl::SetConfig(const HGChar* key, const HGChar* valu char sqlCmd[1024] = {0}; sprintf(sqlCmd, "insert into %s_config (config_key, config_value) values ('%s', '%s')", - m_user.c_str(), key, (NULL != value) ? value : ""); + m_userName.c_str(), key, (NULL != value) ? value : ""); int ret = mysql_query(m_sql, sqlCmd); if (0 == ret) { @@ -398,7 +604,7 @@ HGResult HGPdtToolDbUserMgrImpl::SetConfig(const HGChar* key, const HGChar* valu if (1062 == mysql_errno(m_sql)) { sprintf(sqlCmd, "update %s_config set config_value = '%s' where config_key = '%s'", - m_user.c_str(), (NULL != value) ? value : "", key); + m_userName.c_str(), (NULL != value) ? value : "", key); int ret = mysql_query(m_sql, sqlCmd); return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; } @@ -596,7 +802,7 @@ int HGPdtToolDbUserMgrImpl::InitMainTestItem(const HGChar* sn) assert(NULL != sn && 0 != *sn && NULL != m_sql); std::string title = "(sn, create_time, create_user, last_modify_time, last_modify_user)"; - std::string value = "('" + (std::string)sn + "', now(), '" + m_user + "', now(), '" + m_user + "')"; + std::string value = "('" + (std::string)sn + "', now(), '" + m_userName + "', now(), '" + m_userName + "')"; std::string cmd = (std::string)"insert into main_test " + title + " values " + value + ";"; int ret = mysql_query(m_sql, cmd.c_str()); return (1062 == mysql_errno(m_sql)) ? 0 : ret; @@ -672,7 +878,7 @@ HGResult HGPdtToolDbDeviceImpl::SetCurrEntry(HGUInt entryName) char sqlCmd[1024] = { 0 }; sprintf(sqlCmd, "update main_test set current_entry = %u, last_modify_time = now(), last_modify_user = '%s' where sn = '%s';", - entryName, m_userMgr->m_user.c_str(), m_sn.c_str()); + entryName, m_userMgr->m_userName.c_str(), m_sn.c_str()); int ret = mysql_query(m_userMgr->m_sql, sqlCmd); return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; } @@ -750,7 +956,7 @@ HGResult HGPdtToolDbDeviceImpl::SetEntryStatus(HGUInt entryName, HGUInt entrySta } sprintf(sqlCmd, "update main_test set last_modify_time = now(), last_modify_user = '%s' where sn = '%s';", - m_userMgr->m_user.c_str(), m_sn.c_str()); + m_userMgr->m_userName.c_str(), m_sn.c_str()); ret = mysql_query(m_userMgr->m_sql, sqlCmd); if (0 != ret) { @@ -846,7 +1052,7 @@ HGResult HGPdtToolDbDeviceImpl::SetEntryExcepDesc(HGUInt entryName, const HGChar } sprintf(sqlCmd, "update main_test set last_modify_time = now(), last_modify_user = '%s' where sn = '%s';", - m_userMgr->m_user.c_str(), m_sn.c_str()); + m_userMgr->m_userName.c_str(), m_sn.c_str()); ret = mysql_query(m_userMgr->m_sql, sqlCmd); if (0 != ret) { diff --git a/db/HGPdtToolDb/HGPdtToolDbImpl.hpp b/db/HGPdtToolDb/HGPdtToolDbImpl.hpp index 1131e04..a160b0a 100644 --- a/db/HGPdtToolDb/HGPdtToolDbImpl.hpp +++ b/db/HGPdtToolDb/HGPdtToolDbImpl.hpp @@ -14,8 +14,16 @@ public: HGPdtToolDbUserMgrImpl(); ~HGPdtToolDbUserMgrImpl(); - HGResult Create(const HGChar* host, HGUShort port, const HGChar* user, const HGChar* pwd); + HGResult Create(const HGChar* host, HGUShort port, const HGChar* userName, const HGChar* pwd); HGResult Destroy(); + HGResult GetUserType(HGUInt* userType); + HGResult GetUserName(HGChar* userName, HGUInt maxLen); + HGResult GetUserList(HGChar** userNameList, HGUInt maxLen, HGUInt *count); + static HGResult ReleaseUserList(HGChar** userNameList, HGUInt count); + HGResult CreateUser(const HGChar* userName, const HGChar* defPwd); + HGResult DestroyUser(const HGChar* userName); + HGResult SetPassword(const HGChar* userName, const HGChar* pwd); + HGResult ModifyPassword(const HGChar* newPwd); HGResult Export(const HGChar* xlsPath); HGResult GetConfig(const HGChar *key, HGChar *value, HGUInt maxLen); HGResult SetConfig(const HGChar* key, const HGChar *value); @@ -39,7 +47,7 @@ private: private: MYSQL* m_sql; - std::string m_user; + std::string m_userName; std::list m_deviceList; }; diff --git a/db/HGPdtToolDbTest/HGPdtToolDbTest.cpp b/db/HGPdtToolDbTest/HGPdtToolDbTest.cpp index bbf5c7e..fdfe3a5 100644 --- a/db/HGPdtToolDbTest/HGPdtToolDbTest.cpp +++ b/db/HGPdtToolDbTest/HGPdtToolDbTest.cpp @@ -5,11 +5,24 @@ int main() { HGPdtToolDbUserMgr userMgr = NULL; - HGPdtToolDb_CreateUserMgr("127.0.0.1", 3306, "huago", "huago", &userMgr); + HGPdtToolDb_CreateUserMgr("192.168.1.70", 3306, "root", "123456", &userMgr); if (NULL != userMgr) { - HGPdtToolDb_Export(userMgr, "D:\\1.xls"); + HGChar* name[256]; + HGUInt count; + HGPdtToolDb_GetUserList(userMgr, name, 256, &count); + //HGPdtToolDb_DestroyUser(userMgr, "huago"); + + HGPdtToolDb_CreateUser(userMgr, "huago", "huago"); + //HGPdtToolDb_ModifyPassword(userMgr, "654321"); + //HGPdtToolDb_SetPassword(userMgr, "huago", "qqq"); + + HGPdtToolDbDevice device = NULL; + HGPdtToolDb_OpenDevice(userMgr, "G123456", &device); + HGPdtToolDb_CloseDevice(device); + + HGPdtToolDb_Export(userMgr, "D:\\1.xls"); HGPdtToolDb_DestroyUserMgr(userMgr); }