2025-08-20 19:00:22 +08:00
# include " Dao1.h "
2025-05-19 09:54:33 +08:00
# include "common/Logger.h"
# include "common/Utils.h"
# include "common/Snowflake.h"
2025-07-18 09:08:09 +08:00
2025-05-19 09:54:33 +08:00
enum class EnDatabaseErr
{
SUCCESS = 0 ,
} ;
std : : shared_ptr < DaoEntity > DAO : : get ( std : : string tableName )
{
return std : : make_shared < DaoEntity > ( tableName ) ;
}
2025-07-18 09:08:09 +08:00
Errcode DAO : : login ( std : : shared_ptr < DaoEntity > dao , std : : string account , std : : string passwd , std : : string & err )
2025-05-19 09:54:33 +08:00
{
2025-08-20 19:00:22 +08:00
std : : string t = Utils : : timeStr ( ) ;
2025-05-19 09:54:33 +08:00
if ( ! dao )
{
dao = std : : make_shared < DaoEntity > ( " " ) ;
}
if ( ! dao - > isConnected ( ) )
{
err = " 数据库连接错误 " ;
DAO : : writeSystemLog ( dao , 2 , " " , account , " 用户登录失败: " + err ) ;
2025-07-18 09:08:09 +08:00
return Errcode : : ERR_DB_CONN ;
2025-05-19 09:54:33 +08:00
}
std : : string sql = " SELECT * FROM user WHERE account=' " + account + " '; " ;
std : : vector < DataFields > res ;
bool ret = dao - > exec ( sql , res ) ;
if ( ! ret )
{
err = " 数据库操作错误 " ;
DAO : : writeSystemLog ( dao , 2 , " " , account , " 用户登录失败: " + err ) ;
2025-07-18 09:08:09 +08:00
return Errcode : : ERR_DB_CONN ;
2025-05-19 09:54:33 +08:00
}
if ( res . size ( ) < = 0 )
{
err = " 用户不存在 " ;
DAO : : writeSystemLog ( dao , 2 , " " , account , " 用户登录失败: " + err ) ;
2025-07-18 09:08:09 +08:00
return Errcode : : ERR_LOGIN_USER_NOTEXIST ;
2025-05-19 09:54:33 +08:00
}
DataFields & fields = res [ 0 ] ;
2025-07-18 09:08:09 +08:00
std : : string userId = fields . getStr ( " user_id " ) ;
int loginCount = fields . getInt ( " login_count " ) ;
2025-05-19 09:54:33 +08:00
// 判断密码
2025-07-18 09:08:09 +08:00
if ( passwd ! = fields . getStr ( " passwd " ) )
2025-05-19 09:54:33 +08:00
{
err = " 密码错误 " ;
DAO : : writeSystemLog ( dao , 2 , userId , account , " 用户登录失败: " + err ) ;
2025-07-18 09:08:09 +08:00
return Errcode : : ERR_LOGIN_PASSWD ;
2025-05-19 09:54:33 +08:00
}
err = " 登录成功 " ;
// 数据库更新用户登录信息
sql = " UPDATE user SET login_time=' " + t + " ', login_count=' " + std : : to_string ( loginCount + 1 ) + " ' WHERE user_id = ' " + userId + " '; " ;
ret = dao - > exec ( sql ) ;
if ( ! ret )
{
XLOGE ( ) < < " 更新用户登录信息失败: sql= " < < sql ;
}
DAO : : writeSystemLog ( dao , 2 , userId , account , " 用户登录成功 " ) ;
2025-07-18 09:08:09 +08:00
return Errcode : : OK ;
2025-05-19 09:54:33 +08:00
}
bool DAO : : writeSystemLog ( std : : shared_ptr < DaoEntity > dao , int type , std : : string userId , std : : string account , std : : string text )
{
if ( ! dao )
{
dao = std : : make_shared < DaoEntity > ( " " ) ;
}
if ( ! dao - > isConnected ( ) )
{
return false ;
}
// 数据库写入登录日志
dao - > setTableName ( " system_log " ) ;
DataFields fieldsLog ;
2025-07-18 09:08:09 +08:00
fieldsLog . set ( " log_id " , Snowflake : : instance ( ) . getIdStr ( ) ) ;
2025-05-19 09:54:33 +08:00
fieldsLog . set ( " type " , 2 ) ;
fieldsLog . set ( " user_id " , userId ) ;
fieldsLog . set ( " user_account " , account ) ;
fieldsLog . set ( " content " , text ) ;
2025-08-20 19:00:22 +08:00
fieldsLog . set ( " create_time " , Utils : : timeStr ( ) ) ;
2025-05-19 09:54:33 +08:00
bool ret = dao - > insertFields ( { fieldsLog } ) ;
return ret ;
}
bool DAO : : queryUser ( std : : vector < DataFields > & res )
{
std : : shared_ptr < DaoEntity > dao = std : : make_shared < DaoEntity > ( " " ) ;
if ( ! dao - > isConnected ( ) )
{
return false ;
}
std : : string sql = " SELECT u.*, r.role_id, r.name role_name from USER u LEFT JOIN user_role ur ON u.user_id = ur.user_id LEFT JOIN `role` r ON r.role_id = ur.role_id; " ;
bool ret = dao - > exec ( sql , res ) ;
return ret ;
}
int DAO : : insertUser ( DataFields & fields )
{
std : : shared_ptr < DaoEntity > dao = std : : make_shared < DaoEntity > ( " user " ) ;
if ( ! dao - > isConnected ( ) )
{
return 1 ;
}
2025-07-18 09:08:09 +08:00
std : : string account = fields . getStr ( " account " ) ;
2025-05-19 09:54:33 +08:00
// step1: 查询
std : : vector < DataFields > res ;
bool ret = dao - > exec ( " SELECT * from user WHERE account=' " + account + " '; " , res ) ;
if ( ! ret )
{
return 1 ;
}
if ( res . size ( ) > 0 )
{
return 1 ;
}
2025-07-18 09:08:09 +08:00
fields . set ( " user_id " , Snowflake : : instance ( ) . getIdStr ( ) ) ;
2025-08-20 19:00:22 +08:00
fields . set ( " create_time " , Utils : : timeStr ( ) ) ;
2025-05-19 09:54:33 +08:00
ret = dao - > insertFields ( fields ) ;
return ( ret ) ? 0 : 1 ;
}
int DAO : : updateUserById ( std : : string id , DataFields & fields )
{
std : : shared_ptr < DaoEntity > dao = std : : make_shared < DaoEntity > ( " user " ) ;
if ( ! dao - > isConnected ( ) )
{
return 1 ;
}
string sqlC = " WHERE user_id=' " + id + " ' " ;
bool ret = dao - > updateFields ( fields , sqlC ) ;
return ( ret ) ? 0 : 1 ;
}