完善数据库用户事件

This commit is contained in:
luoliangyi 2022-12-15 17:46:35 +08:00
parent fd5ba3077b
commit 2a8b23135e
3 changed files with 15 additions and 12 deletions

View File

@ -7,10 +7,12 @@
/* 账户在其他地方登录 */
#define HGPDTTOOLDB_USEREVENT_CONFLICT 1L
/* 网络连接断开 */
#define HGPDTTOOLDB_USEREVENT_DISCONNECT 2L
/* 网络错误 */
#define HGPDTTOOLDB_USEREVENT_NETERROR 2L
/* 被管理员账户强制下线 */
#define HGPDTTOOLDB_USEREVENT_REFUSE 3L
/* 数据库异常 */
#define HGPDTTOOLDB_USEREVENT_DBERROR 4L
/* 管理员账户 */
#define HGPDTTOOLDB_USERTYPE_ROOT 1L

View File

@ -998,18 +998,19 @@ void HGAPI HGPdtToolDbUserMgrImpl::ThreadFunc(HGThread thread, HGPointer param)
{
HGUInt event = 0;
int connectId;
int connectId = -1;
std::string takeUserName;
bool ret = GetUserLoginInfo(p->m_sql, p->m_userName.c_str(), connectId, takeUserName);
if (!ret)
int ret = GetUserLoginInfo(p->m_sql, p->m_userName.c_str(), connectId, takeUserName);
if (0 != ret)
{
event = HGPDTTOOLDB_USEREVENT_DISCONNECT;
int errNo = mysql_errno(p->m_sql);
event = (errNo >= 1158 && errNo <= 1161) ? HGPDTTOOLDB_USEREVENT_NETERROR : HGPDTTOOLDB_USEREVENT_DBERROR;
}
else if (takeUserName == "root" && p->m_userName != takeUserName)
else if (takeUserName == "root" && takeUserName != p->m_userName)
{
event = HGPDTTOOLDB_USEREVENT_REFUSE;
}
else if (connectId != p->m_connectId)
else if (connectId != -1 && connectId != p->m_connectId)
{
event = HGPDTTOOLDB_USEREVENT_CONFLICT;
}
@ -1142,7 +1143,7 @@ bool HGPdtToolDbUserMgrImpl::SetUserLoginInfo(MYSQL* sql, const HGChar* userName
return (0 == ret) ? true : false;
}
bool HGPdtToolDbUserMgrImpl::GetUserLoginInfo(MYSQL* sql, const HGChar* userName, int& connectId, std::string& takeUserName)
int HGPdtToolDbUserMgrImpl::GetUserLoginInfo(MYSQL* sql, const HGChar* userName, int& connectId, std::string& takeUserName)
{
assert(NULL != sql);
assert(NULL != userName && 0 != *userName);
@ -1154,7 +1155,7 @@ bool HGPdtToolDbUserMgrImpl::GetUserLoginInfo(MYSQL* sql, const HGChar* userName
int ret = mysql_query(sql, sqlCmd);
if (0 != ret)
{
return false;
return ret;
}
MYSQL_RES* sqlRes = mysql_use_result(sql);
@ -1171,7 +1172,7 @@ bool HGPdtToolDbUserMgrImpl::GetUserLoginInfo(MYSQL* sql, const HGChar* userName
mysql_free_result(sqlRes);
}
return true;
return 0;
}
int HGPdtToolDbUserMgrImpl::CreateFileTable(MYSQL* sql)

View File

@ -46,7 +46,7 @@ private:
static std::string GetAuthString(MYSQL* sql, const HGChar* pwd);
static int GetConnectId(MYSQL* sql);
static bool SetUserLoginInfo(MYSQL* sql, const HGChar* userName, int connectId, const std::string& takeUserName);
static bool GetUserLoginInfo(MYSQL* sql, const HGChar* userName, int &connectId, std::string &takeUserName);
static int GetUserLoginInfo(MYSQL* sql, const HGChar* userName, int &connectId, std::string &takeUserName);
int CreateFileTable(MYSQL* sql);
int CreateMainTestTable(MYSQL *sql);