Explorar el Código

customer表新增字段:enable启用或禁用用户;同时添加IsUserExist接口实现。

Jeff hace 6 años
padre
commit
7084e6e235

+ 2 - 1
mysql.sql

@@ -28,11 +28,12 @@ CREATE TABLE `customer` (
   `csr_old_phone` varchar(16) DEFAULT NULL COMMENT '用户旧手机(换手机)',
   `csr_vcode` varchar(32) DEFAULT NULL COMMENT '用户验证码(用于忘记密码)',
   `vcode_expiry_time` datetime DEFAULT NULL COMMENT '验证码有效时间',
+  `enable` bit(1) DEFAULT 0 COMMENT '启用\禁用',
   PRIMARY KEY (`csr_id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
 -- ----------------------------
--- Table structure for reply
+-- Table structure for reply_type
 -- ----------------------------
 DROP TABLE IF EXISTS `reply_type`;
 CREATE TABLE `reply_type` (

+ 1 - 1
source/hook/WxAdoInterface/IWxAdoInterface.h

@@ -50,7 +50,7 @@ public:
 		IN CONST INT &nMaxConn = 5) = 0;
 	virtual void ReleasePool() = 0;
 	virtual BOOL ExecuteSQL( IN LPCTSTR lpExcuteSQL, IN CONST DWORD &dwTimeOut = 30000 ) = 0;
-	virtual BOOL IsUserExist( IN LPCTSTR lpStudioID, IN LPCTSTR lpAccount, IN LPCTSTR lpPassword, OUT LPVOID lpOutUserInfo,IN CONST DWORD &dwTimeOut = 3000 ) = 0;
+	virtual BOOL IsUserExist( IN LPCTSTR lpPhone, IN LPCTSTR lpPassword, OUT LPVOID lpOutUserInfo,IN CONST DWORD &dwTimeOut = 3000 ) = 0;
 	virtual INT QueryUserDetail(IN LPCTSTR lpStudioID, IN LPVOID lpUserDetail, IN CONST DWORD& dwTimeOut = 3000 ) = 0;
 	virtual INT QueryUserDetail( IN LPCTSTR lpStudioID, IN LPCTSTR lpAccount, IN LPCTSTR lpPassword, OUT LPVOID lpOutUserInfo,IN CONST DWORD &dwTimeOut = 3000 ) = 0;
 	virtual INT QueryDepartmentInfo( IN LPCTSTR lpStudioID, OUT LPVOID lpOutDepartmentInfo, IN CONST DWORD& dwTimeOut = 3000 ) = 0;

+ 198 - 8
source/hook/WxAdoInterface/WxAdoImpl.cpp

@@ -100,6 +100,133 @@ void CWxAdoImpl::SolveDBError( IN CONST DWORD &dwError, IN LPVOID pDBConn)
 	}
 }
 
+//template<typename T>
+//BOOL CWxAdoImpl::GetFiedValue(IN _RecordsetPtr rst, IN LPCTSTR lpFiedName, T &value)
+//{
+//	typeid(value);
+//	_variant_t var = rst->GetCollect(lpFiedName);
+	//switch(var.vt)
+	//{
+	//case VT_EMPTY:
+	//	break;            
+	//case VT_NULL:
+	//	break;             
+	//case VT_I2://2 byte signed int
+	//	value = var.iVal;
+	//	break;               
+	//case VT_I4://4 byte signed int
+	//	value = var.iVal;
+	//	break;               
+	//case VT_R4://4 byte real
+	//	value = var.fltVal;
+	//	break;               
+	//case VT_R8://8 byte real
+	//	value = var.dblVal;
+	//	break;               
+	//case VT_CY://currency
+	//	break;               
+	//case VT_DATE:
+	//	{
+	//		COleDateTime dt(var);
+	//		value = dt.Format(_T("%Y-%m-%d %H:%M:%S"));
+	//	}
+	//	break;             
+	//case VT_BSTR://OLE Automation string
+	//	value = _bstr_t(var.bstrVal);
+	//	break;             
+	//case VT_DISPATCH://IDispatch *
+	//	break;         
+	//case VT_ERROR://SCODE
+	//	break;            
+	//case VT_BOOL://True=-1, False=0
+	//	value = var.boolVal;
+	//	break;             
+	//case VT_VARIANT://VARIANT *
+	//	break;          
+	//case VT_UNKNOWN://IUnknown *
+	//	break;          
+	//case VT_DECIMAL://16 byte fixed point
+	//	break;          
+	//case VT_RECORD://user defined type
+	//	break;           
+	//case VT_I1:	// signed char
+	//	value = var.pcVal;
+	//	break;               
+	//case VT_UI1://unsigned char
+	//	value = var.bVal;
+	//	break;              
+	//case VT_UI2://unsigned short
+	//	value = var.uiVal;
+	//	break;              
+	//case VT_UI4://unsigned long
+	//	value = var.uiVal;
+	//	break;              
+	//case VT_I8://signed 64-bit int
+	//	value = var.lVal;
+	//	break;               
+	//case VT_UI8://unsigned 64-bit int
+	//	value = var.ulVal;
+	//	break;              
+	//case VT_INT://signed machine int
+	//	value = var.intVal;
+	//	break;              
+	//case VT_UINT://unsigned machine int
+	//	value = var.uintVal;
+	//	break;             
+	//case VT_INT_PTR://signed machine register size width
+	//	break;          
+	//case VT_UINT_PTR://unsigned machine register size width
+	//	break;         
+	//case VT_VOID://C style void
+	//	break;             
+	//case VT_HRESULT://Standard return type
+	//	break;          
+	//case VT_PTR://pointer type
+	//	break;              
+	//case VT_SAFEARRAY://(use VT_ARRAY in VARIANT)
+	//	break;        
+	//case VT_CARRAY://C style array
+	//	break;           
+	//case VT_USERDEFINED://user defined type
+	//	break;      
+	//case VT_LPSTR://null terminated string
+	//	break;            
+	//case VT_LPWSTR://wide null terminated string
+	//	break;           
+	//case VT_FILETIME://FILETIME
+	//	break;         
+	//case VT_BLOB://Length prefixed bytes
+	//	break;             
+	//case VT_STREAM://Name of the stream follows
+	//	break;           
+	//case VT_STORAGE://Name of the storage follows
+	//	break;          
+	//case VT_STREAMED_OBJECT://Stream contains an object
+	//	break;  
+	//case VT_STORED_OBJECT://Storage contains an object
+	//	break;    
+	//case VT_VERSIONED_STREAM://Stream with a GUID version
+	//	break; 
+	//case VT_BLOB_OBJECT://Blob contains an object
+	//	break;      
+	//case VT_CF://Clipboard format
+	//	break;               
+	//case VT_CLSID://A Class ID
+	//	break;            
+	//case VT_VECTOR://simple counted array
+	//	break;           
+	//case VT_ARRAY://SAFEARRAY*
+	//	break;            
+	//case VT_BYREF://void* for local use
+	//	break;            
+	//case VT_BSTR_BLOB://Reserved for system use
+	//	break;        
+	//default:
+	//	value = var.iVal;
+	//}	
+//	return TRUE;
+//}
+
 /************************************************************************/
 /*  函数:[9/25/2016 IT];
 /*  描述:;
@@ -167,19 +294,19 @@ BOOL CWxAdoImpl::ExecuteSQL( IN LPCTSTR lpExcuteSQL, IN CONST DWORD &dwTimeOut /
 
 	try
 	{
-		if ( lpExcuteSQL == NULL )
+		if ( lpExcuteSQL == NULL || pObj == NULL )
 			return FALSE;
 
 		pObj->pCommand->CommandText = _bstr_t(lpExcuteSQL);
 		// 执行SQL语句,返回记录集
 		pObj->pCommand->Execute(NULL, NULL, adCmdText);
 	}
-	catch (CDBException* e)
+	catch (_com_error &e)
 	{
-		//Global::WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError);
-		Global::WriteTextLog(_T("%s\n%s"), lpExcuteSQL, e->m_strError);
-		SolveDBError(e->m_nRetCode, pObj);
-		e->Delete();
+		_bstr_t bstrSource(e.Source());
+		_bstr_t bstrDescription(e.Description());
+		SolveDBError(e.Error(), pObj);
+		Global::WriteTextLog(_T("SQL出错:%08lx,%s,%s,%s"), e.Error(), e.ErrorMessage(), (TCHAR*)bstrSource, (TCHAR*)bstrDescription);
 		return FALSE;
 	}
 
@@ -201,9 +328,72 @@ BOOL CWxAdoImpl::ExecuteSQL( IN LPCTSTR lpExcuteSQL, IN CONST DWORD &dwTimeOut /
 /*  日期:;
 /*  内容:;
 /************************************************************************/
-BOOL CWxAdoImpl::IsUserExist( IN LPCTSTR lpStudioID, IN LPCTSTR lpAccount, IN LPCTSTR lpPassword, OUT LPVOID lpOutUserInfo,IN CONST DWORD &dwTimeOut /* = 3000 */ )
+BOOL CWxAdoImpl::IsUserExist( IN LPCTSTR lpPhone, IN LPCTSTR lpPassword, OUT LPVOID lpOutUserInfo,IN CONST DWORD &dwTimeOut /* = 3000 */ )
 {
-	
+	GETDBPTR(dwTimeOut);
+	try
+	{
+		if ( lpPhone == NULL || lpPassword == NULL || pObj == NULL)
+			return FALSE;
+
+		CString strSql = _T("");
+		strSql.Format(_T("select csr_id,csr_name,csr_phone,csr_gender,csr_password,csr_old_phone,csr_vcode,vcode_expiry_time,enable from customer where csr_phone = %s"), lpPhone);//用于是否转相片;
+		pObj->pCommand->CommandText = _bstr_t(strSql);
+		// 执行SQL语句,返回记录集
+		_RecordsetPtr rst = pObj->pCommand->Execute(NULL, NULL, adCmdText);
+		while(!rst->adoEOF)
+		{
+			#ifdef _DEBUG
+			CString strCustomerId;
+ 			strCustomerId = rst->GetCollect(_T("csr_id")).bstrVal;
+ 			OutputDebugString(strCustomerId);OutputDebugString(_T("\n"));
+
+			CString strCustomerName;
+			strCustomerName = rst->GetCollect(_T("csr_name")).bstrVal;
+			OutputDebugString(strCustomerName);OutputDebugString(_T("\n"));
+
+			CString strPhone;
+			strPhone = rst->GetCollect(_T("csr_phone")).bstrVal;
+			OutputDebugString(strPhone);OutputDebugString(_T("\n"));
+
+			BOOL bGender;
+			bGender = rst->GetCollect(_T("csr_gender")).boolVal == VARIANT_TRUE ? TRUE : FALSE;
+			OutputDebugString(bGender ? _T("男") : _T("女"));OutputDebugString(_T("\n"));
+
+			CString strPassword;
+			strPassword = rst->GetCollect(_T("csr_password")).bstrVal;
+			OutputDebugString(strPassword);OutputDebugString(_T("\n"));
+
+			CString strOldPhone;
+			strOldPhone = rst->GetCollect(_T("csr_old_phone")).bstrVal;
+			OutputDebugString(strOldPhone);OutputDebugString(_T("\n"));
+
+			CString strVCode;
+			strVCode = rst->GetCollect(_T("csr_vcode")).bstrVal;
+			OutputDebugString(strVCode);OutputDebugString(_T("\n"));
+
+			CString strDate;
+			COleDateTime dt(rst->GetCollect(_T("vcode_expiry_time")));
+			strVCode = dt.Format(_T("%Y-%m-%d %H:%M:%S"));
+			OutputDebugString(strDate);OutputDebugString(_T("\n"));
+
+			BOOL bEnable;
+			bEnable = rst->GetCollect(_T("enable")).boolVal == VARIANT_TRUE ? TRUE : FALSE;
+			OutputDebugString(bEnable ? _T("启用") : _T("禁用"));OutputDebugString(_T("\n"));
+
+			#endif
+			rst->MoveNext();
+		}
+		rst->Close();
+	}
+	catch (_com_error &e)
+	{
+		_bstr_t bstrSource(e.Source());
+		_bstr_t bstrDescription(e.Description());
+		SolveDBError(e.Error(), pObj);
+		Global::WriteTextLog(_T("SQL出错:%08lx,%s,%s,%s"), e.Error(), e.ErrorMessage(), (TCHAR*)bstrSource, (TCHAR*)bstrDescription);
+		return FALSE;
+	}
 
 	return TRUE;
 }

+ 2 - 1
source/hook/WxAdoInterface/WxAdoImpl.h

@@ -47,6 +47,7 @@ private:
 	static CWxAdoImpl* m_pInstance;
 
 	void SolveDBError( IN CONST DWORD &dwError, IN LPVOID pDBConn);
+	//template<typename T> BOOL GetFiedValue(IN _RecordsetPtr rst, IN LPCTSTR lpFiedName, T &value);
 public:
 	// ³õʼ»¯ËùÓÐÁ¬½Ó;
 	DWORD InitializePool( 
@@ -63,7 +64,7 @@ public:
 	void ReleasePool();
 
 	BOOL ExecuteSQL( IN LPCTSTR lpExcuteSQL, IN CONST DWORD &dwTimeOut = 30000 );
-	BOOL IsUserExist( IN LPCTSTR lpStudioID, IN LPCTSTR lpAccount, IN LPCTSTR lpPassword, OUT LPVOID lpOutUserInfo,IN CONST DWORD &dwTimeOut = 3000 );
+	BOOL IsUserExist( IN LPCTSTR lpPhone, IN LPCTSTR lpPassword, OUT LPVOID lpOutUserInfo,IN CONST DWORD &dwTimeOut = 3000 );
 	INT QueryUserDetail(IN LPCTSTR lpStudioID, IN LPVOID lpUserDetail, IN CONST DWORD& dwTimeOut = 3000);
 	INT QueryUserDetail( IN LPCTSTR lpStudioID, IN LPCTSTR lpAccount, IN LPCTSTR lpPassword, OUT LPVOID lpOutUserInfo,IN CONST DWORD &dwTimeOut = 3000 );
 	INT QueryDepartmentInfo( IN LPCTSTR lpStudioID, OUT LPVOID lpOutDepartmentInfo, IN CONST DWORD& dwTimeOut = 3000  );

+ 4 - 1
source/hook/WxService/WxService.cpp

@@ -33,7 +33,10 @@ void CALLBACK WorkStart()
 		}
 	}
 
-	
+#ifdef _DEBUG
+	g_pAdoPool->IsUserExist(_T("15089231318"), _T("123456"), NULL);
+#endif
+
 	WinService::GetDebugPriv();
 	CMainProcess::GetInstance()->StartWork();
 }