Files
2026-07-09 11:27:59 +08:00

213 lines
9.7 KiB
C++

#ifdef _WIN32
#include <windows.h>
#else
#include "typedef.h"
#include "commonstruct.h"
#include "ProCommon.h"
#include "ServerInner.h"
#include "Param.h"
#include "StoredProcedure.h"
#endif
#include "DBInterface.h"
#include "debug.h"
typedef DLLAPI int (*DB_INITDATABASES)(char* strHost, char* strUser, char* strPwd);
typedef DLLAPI int (*DB_RELEASE)();
DB_INITDATABASES f_DB_InitDatabases = NULL;
DB_RELEASE f_DB_Release = NULL;
PM_HANDLEPARAM f_PM_HandleParam = NULL;
DB_GETCLIENTVERSION f_DB_GetClientVersion = NULL;
DB_GETCLIENTTYPENUMBER f_DB_GetClientTypeNumber = NULL;
DB_GETPATH f_DB_GetPath = NULL;
DB_CLEANVIPLOG f_DB_CleanVipLog = NULL;
DB_PHONECHECK f_DB_PhoneCheck = NULL;
DB_REGISTER f_DB_Register = NULL;
DB_LOGIN f_DB_Login = NULL;
DB_LOGOFF f_DB_Logoff = NULL;
DB_GETSTYLEUPDATENUMBER f_DB_GetStyleUpdateNumber = NULL;
DB_GETCLIENTUPDATEFLAG f_DB_GetClientUpdateFlag = NULL;
DB_VERIFY f_DB_Verify = NULL;
DB_PURCHASE f_DB_Purchase = NULL;
DB_INSERTSTYLE f_DB_InsertStyle = NULL;
DB_GETSTYLEUPDATELIST f_DB_GetStyleUpdateList = NULL;
DB_CHECKSTYLEINFO f_DB_CheckStyleInfo = NULL;
DB_GETRECOMSTYLEIDS f_DB_GetRecomStyleIDs = NULL;
DB_CHECKUSERAUTHORITY f_DB_CheckUserAuthority = NULL;
DB_SETSTYLECHECK f_DB_SetStyleCheck = NULL;
DB_GETCOMMONQNA f_DB_GetCommonQnA = NULL;
DB_GETUSERQNA f_DB_GetUserQnA = NULL;
DB_SUBMITQUESTION f_DB_SubmitQuestion = NULL;
DB_GETNOTICE f_DB_GetNotice = NULL;
DB_INSERTSONG f_DB_InsertSong = NULL;
DB_GETSTYLEUPDATELISTNEW f_DB_GetStyleUpdateListNew = NULL;
DB_GETSHAREUPDATELIST f_DB_GetShareUpdateList = NULL;
DB_GETCHECKUPDATELIST f_DB_GetCheckUpdateList = NULL;
DB_GETSTYLEINFONEW f_DB_GetStyleInfoNew = NULL;
DB_UPDATESTYLE f_DB_UpdateStyle = NULL;
DB_CHECKPAYMENT f_DB_CheckPayment = NULL;
DB_CONFIRMPAYMENT f_DB_ConfirmPayment = NULL;
DB_STYLESCORE f_DB_StyleScore = NULL;
DB_INSERTSHARESTYLE f_DB_InsertShareStyle = NULL;
DB_GETWEBURL f_DB_GetWebURL = NULL;
#ifdef _WIN32
HINSTANCE g_hDBDll = NULL,
g_hPMDll = NULL;
#endif
bool LoadDB()
{
#ifdef _WIN32
g_hDBDll = LoadLibrary( DB_DLL );
if( g_hDBDll==NULL ){
DWORD dwRet = GetLastError();
DebugPrint( "载入数据库接口模块失败, 程序终止! errcode=%d", dwRet );
return FALSE;
}
//获取数据库函数入口
f_DB_InitDatabases = (DB_INITDATABASES)GetProcAddress( g_hDBDll, "DB_InitDatabases" );
f_DB_Release = (DB_RELEASE)GetProcAddress( g_hDBDll, "DB_Release" );
f_DB_GetPath = (DB_GETPATH)GetProcAddress( g_hDBDll, "DB_GetPath" );
f_DB_CleanVipLog = (DB_CLEANVIPLOG)GetProcAddress( g_hDBDll, "DB_CleanVipLog" );
f_DB_GetClientVersion = (DB_GETCLIENTVERSION)GetProcAddress( g_hDBDll, "DB_GetClientVersion" );
f_DB_GetClientTypeNumber = (DB_GETCLIENTTYPENUMBER)GetProcAddress( g_hDBDll, "DB_GetClientTypeNumber" );
f_DB_GetStyleUpdateNumber = (DB_GETSTYLEUPDATENUMBER)GetProcAddress( g_hDBDll, "DB_GetStyleUpdateNumber" );
f_DB_GetClientUpdateFlag = (DB_GETCLIENTUPDATEFLAG)GetProcAddress( g_hDBDll, "DB_GetClientUpdateFlag" );
f_DB_PhoneCheck = (DB_PHONECHECK)GetProcAddress( g_hDBDll, "DB_PhoneCheck" );
f_DB_Register = (DB_REGISTER)GetProcAddress( g_hDBDll, "DB_Register" );
f_DB_Login = (DB_LOGIN)GetProcAddress( g_hDBDll, "DB_Login" );
f_DB_Logoff = (DB_LOGOFF)GetProcAddress( g_hDBDll, "DB_Logoff" );
f_DB_Verify = (DB_VERIFY)GetProcAddress( g_hDBDll, "DB_Verify" );
f_DB_Purchase = (DB_PURCHASE)GetProcAddress( g_hDBDll, "DB_Purchase" );
f_DB_InsertStyle = (DB_INSERTSTYLE)GetProcAddress( g_hDBDll, "DB_InsertStyle" );
f_DB_GetStyleUpdateList = (DB_GETSTYLEUPDATELIST)GetProcAddress( g_hDBDll, "DB_GetStyleUpdateList" );
f_DB_CheckStyleInfo = (DB_CHECKSTYLEINFO)GetProcAddress( g_hDBDll, "DB_CheckStyleInfo" );
f_DB_GetRecomStyleIDs = (DB_GETRECOMSTYLEIDS)GetProcAddress( g_hDBDll, "DB_GetRecomStyleIDs" );
f_DB_CheckUserAuthority = (DB_CHECKUSERAUTHORITY)GetProcAddress( g_hDBDll, "DB_CheckUserAuthority" );
f_DB_SetStyleCheck = (DB_SETSTYLECHECK)GetProcAddress( g_hDBDll, "DB_SetStyleCheck" );
f_DB_GetCommonQnA = (DB_GETCOMMONQNA)GetProcAddress( g_hDBDll, "DB_GetCommonQnA" );
f_DB_GetUserQnA = (DB_GETUSERQNA)GetProcAddress( g_hDBDll, "DB_GetUserQnA" );
f_DB_GetNotice = (DB_GETNOTICE)GetProcAddress( g_hDBDll, "DB_GetNotice" );
f_DB_SubmitQuestion = (DB_SUBMITQUESTION)GetProcAddress( g_hDBDll, "DB_SubmitQuestion" );
f_DB_InsertSong = (DB_INSERTSONG)GetProcAddress( g_hDBDll, "DB_InsertSong" );
f_DB_GetStyleUpdateListNew = (DB_GETSTYLEUPDATELISTNEW)GetProcAddress( g_hDBDll, "DB_GetStyleUpdateListNew" );
f_DB_GetShareUpdateList = (DB_GETSHAREUPDATELIST)GetProcAddress( g_hDBDll, "DB_GetShareUpdateList" );
f_DB_GetCheckUpdateList = (DB_GETCHECKUPDATELIST)GetProcAddress( g_hDBDll, "DB_GetCheckUpdateList" );
f_DB_GetStyleInfoNew = (DB_GETSTYLEINFONEW)GetProcAddress( g_hDBDll, "DB_GetStyleInfoNew" );
f_DB_UpdateStyle = (DB_UPDATESTYLE)GetProcAddress( g_hDBDll, "DB_UpdateStyle" );
f_DB_CheckPayment = (DB_CHECKPAYMENT)GetProcAddress( g_hDBDll, "DB_CheckPayment" );
f_DB_ConfirmPayment = (DB_CONFIRMPAYMENT)GetProcAddress( g_hDBDll, "DB_ConfirmPayment" );
f_DB_StyleScore = (DB_STYLESCORE)GetProcAddress( g_hDBDll, "DB_StyleScore" );
f_DB_InsertShareStyle = (DB_INSERTSHARESTYLE)GetProcAddress( g_hDBDll, "DB_InsertShareStyle" );
f_DB_GetWebURL = (DB_GETWEBURL)GetProcAddress( g_hDBDll, "DB_GetWebURL" );
#else
f_DB_InitDatabases = (DB_INITDATABASES)DB_InitDatabases;
f_DB_Release = (DB_RELEASE)DB_Release;
f_DB_GetPath = (DB_GETPATH)DB_GetPath;
f_DB_CleanVipLog = (DB_CLEANVIPLOG)DB_CleanVipLog;
f_DB_GetClientVersion = (DB_GETCLIENTVERSION)DB_GetClientVersion;
f_DB_GetClientTypeNumber = (DB_GETCLIENTTYPENUMBER)DB_GetClientTypeNumber;
f_DB_GetStyleUpdateNumber = (DB_GETSTYLEUPDATENUMBER)DB_GetStyleUpdateNumber;
f_DB_GetClientUpdateFlag = (DB_GETCLIENTUPDATEFLAG)DB_GetClientUpdateFlag;
f_DB_PhoneCheck = (DB_PHONECHECK)DB_PhoneCheck;
f_DB_Register = (DB_REGISTER)DB_Register;
f_DB_Login = (DB_LOGIN)DB_Login;
f_DB_Logoff = (DB_LOGOFF)DB_Logoff;
f_DB_Verify = (DB_VERIFY)DB_Verify;
f_DB_Purchase = (DB_PURCHASE)DB_Purchase;
f_DB_InsertStyle = (DB_INSERTSTYLE)DB_InsertStyle;
f_DB_GetStyleUpdateList = (DB_GETSTYLEUPDATELIST)DB_GetStyleUpdateList;
f_DB_CheckStyleInfo = (DB_CHECKSTYLEINFO)DB_CheckStyleInfo;
f_DB_GetRecomStyleIDs = (DB_GETRECOMSTYLEIDS)DB_GetRecomStyleIDs;
f_DB_CheckUserAuthority = (DB_CHECKUSERAUTHORITY)DB_CheckUserAuthority;
f_DB_SetStyleCheck = (DB_SETSTYLECHECK)DB_SetStyleCheck;
f_DB_GetCommonQnA = (DB_GETCOMMONQNA)DB_GetCommonQnA;
f_DB_GetUserQnA = (DB_GETUSERQNA)DB_GetUserQnA;
f_DB_GetNotice = (DB_GETNOTICE)DB_GetNotice;
f_DB_SubmitQuestion = (DB_SUBMITQUESTION)DB_SubmitQuestion;
f_DB_InsertSong = (DB_INSERTSONG)DB_InsertSong;
f_DB_GetStyleUpdateListNew = (DB_GETSTYLEUPDATELISTNEW)DB_GetStyleUpdateListNew;
f_DB_GetShareUpdateList = (DB_GETSHAREUPDATELIST)DB_GetShareUpdateList;
f_DB_GetCheckUpdateList = (DB_GETCHECKUPDATELIST)DB_GetCheckUpdateList;
f_DB_GetStyleInfoNew = (DB_GETSTYLEINFONEW)DB_GetStyleInfoNew;
f_DB_UpdateStyle = (DB_UPDATESTYLE)DB_UpdateStyle;
f_DB_CheckPayment = (DB_CHECKPAYMENT)DB_CheckPayment;
f_DB_ConfirmPayment = (DB_CONFIRMPAYMENT)DB_ConfirmPayment;
f_DB_StyleScore = (DB_STYLESCORE)DB_StyleScore;
f_DB_InsertShareStyle = (DB_INSERTSHARESTYLE)DB_InsertShareStyle;
f_DB_GetWebURL = (DB_GETWEBURL)DB_GetWebURL;
#endif
if( !( f_DB_InitDatabases && f_DB_Release && f_DB_GetClientVersion && f_DB_GetClientTypeNumber &&
f_DB_GetStyleUpdateNumber && f_DB_GetClientUpdateFlag && f_DB_Login && f_DB_Verify &&
f_DB_Purchase && f_DB_GetPath && f_DB_InsertStyle && f_DB_GetStyleUpdateList &&
f_DB_CheckStyleInfo && f_DB_GetRecomStyleIDs && f_DB_CheckUserAuthority && f_DB_Register &&
f_DB_SetStyleCheck && f_DB_GetCommonQnA && f_DB_GetUserQnA && f_DB_SubmitQuestion &&
f_DB_GetNotice && f_DB_InsertSong && f_DB_GetStyleUpdateListNew && f_DB_GetStyleInfoNew &&
f_DB_UpdateStyle && f_DB_CheckPayment && f_DB_ConfirmPayment && f_DB_StyleScore &&
f_DB_InsertShareStyle && f_DB_GetShareUpdateList && f_DB_GetCheckUpdateList &&
f_DB_Logoff && f_DB_CleanVipLog && f_DB_PhoneCheck && f_DB_GetWebURL )){
DebugPrint( "获取数据库访问函数失败, 程序终止!" );
return FALSE;
}
#ifdef _DEBUG
// int ret = f_DB_InitDatabases("localhost", "root", "168soft.xyz");
// int ret = f_DB_InitDatabases("192.168.5.2", "root", "168soft.xyz");
// int ret = f_DB_InitDatabases("printer", "root", "");
// int ret = f_DB_InitDatabases("composemusic.xicp.net", "test", "123456");
int ret = f_DB_InitDatabases("localhost", "root", "168soft.xyz");
#else
int ret = f_DB_InitDatabases("localhost", "root", "168soft.xyz");
#endif
if( ret==-1 ){
DebugPrint( "初始化数据库失败, 程序终止!" );
return FALSE;
}
#ifdef _WIN32
//载入网参模块
g_hPMDll = LoadLibrary( PM_DLL );
if( g_hPMDll==NULL ){
DWORD dwRet = GetLastError();
DebugPrint( "载入网参模块失败,程序终止! errcode=%d", dwRet );
return FALSE;
}
//获取网参函数
f_PM_HandleParam = (PM_HandleParam)GetProcAddress( g_hPMDll, "PM_HandleParam" );
#else
f_PM_HandleParam = (PM_HANDLEPARAM)PM_HandleParam;
#endif
if( !f_PM_HandleParam ){
DebugPrint( "获取网参函数失败, 程序终止!" );
return FALSE;
}
return TRUE;
}
void FreeDB()
{
#ifdef _WIN32
if( g_hPMDll ){
FreeLibrary( g_hPMDll );
g_hPMDll = NULL;
}
if( g_hDBDll ){
f_DB_Release();
FreeLibrary( g_hDBDll );
g_hDBDll = NULL;
}
#endif
}