WxAdoImpl.cpp 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948
  1. #include "StdAfx.h"
  2. #include "WxAdoImpl.h"
  3. #include "Global.h"
  4. #include "WxAdoPool.h"
  5. #include "table.pb.h"
  6. #define GETDBPTR(dwTimeOut) \
  7. pAdoObj pObj = NULL;\
  8. CAdoConnGuard tagConnGuard(pObj, dwTimeOut);\
  9. if ( pObj == NULL)\
  10. return FALSE\
  11. enum UserLogInStatus
  12. {
  13. USER_LOGIN = 1, // 登录成功;
  14. USER_PW_MISTAKE = 2, // 密码错误;
  15. USER_NULL = 0 // 没有用户;
  16. };
  17. CWxAdoImpl* CWxAdoImpl::m_pInstance = NULL;
  18. CWxAdoImpl::CWxAdoImpl(void):m_nRef(0),m_nObjRef(0)
  19. {
  20. //::CoInitialize(NULL);//初始化COM环境
  21. }
  22. CWxAdoImpl::~CWxAdoImpl(void)
  23. {
  24. //::CoUninitialize();
  25. }
  26. ULONG CWxAdoImpl::AddRef()
  27. {
  28. InterlockedIncrement( &m_nRef ); //增加引用计数;
  29. return m_nRef;
  30. }
  31. ULONG CWxAdoImpl::Release()
  32. {
  33. InterlockedDecrement( &m_nRef ); //减少引用计数;
  34. //如果为0,删除对象
  35. if( m_nRef == 0 )
  36. {
  37. delete this;
  38. }
  39. return m_nRef;
  40. }
  41. HRESULT CWxAdoImpl::QueryInterface(REFIID refiid, void **ppvObject)
  42. {
  43. if (IID_IUnknown == refiid)
  44. {
  45. *ppvObject = this;
  46. }
  47. else if (IID_IWxAdoInterface == refiid)
  48. {
  49. *ppvObject = (IWxAdoInterface*)this;
  50. }
  51. else
  52. {
  53. *ppvObject = NULL;
  54. return E_NOINTERFACE;
  55. }
  56. ((IUnknown*)(*ppvObject))->AddRef();
  57. return NOERROR;
  58. }
  59. /************************************************************************/
  60. /* 函数:[9/25/2016 IT];
  61. /* 描述:;
  62. /* 参数:;
  63. /* [IN] :;
  64. /* [OUT] :;
  65. /* [IN/OUT] :;
  66. /* 返回:void;
  67. /* 注意:;
  68. /* 示例:;
  69. /*
  70. /* 修改:;
  71. /* 日期:;
  72. /* 内容:;
  73. /************************************************************************/
  74. void CWxAdoImpl::SolveDBError( IN CONST DWORD &dwError, IN LPVOID pDBConn)
  75. {
  76. switch(dwError)
  77. {
  78. //case SQL_ERROR://这个错误比较难精确判断问题;
  79. case ERROR_PIPE_NOT_CONNECTED:
  80. case WSAECONNRESET:
  81. case WSAECONNABORTED:
  82. {
  83. pAdoObj pObj = (pAdoObj)pDBConn;
  84. CWxAdoPool::GetInstance()->CloseBusyConnection(pObj);
  85. #if _DEBUG
  86. OutputDebugString(_T("关闭数据库连接\n"));
  87. #endif
  88. }
  89. break;
  90. default:
  91. break;
  92. }
  93. }
  94. //template<typename T>
  95. //BOOL CWxAdoImpl::GetFiedValue(IN _RecordsetPtr rst, IN LPCTSTR lpFiedName, T &value)
  96. //{
  97. // typeid(value);
  98. // _variant_t var = rst->GetCollect(lpFiedName);
  99. //switch(var.vt)
  100. //{
  101. //case VT_EMPTY:
  102. // break;
  103. //case VT_NULL:
  104. // break;
  105. //case VT_I2://2 byte signed int
  106. // value = var.iVal;
  107. // break;
  108. //case VT_I4://4 byte signed int
  109. // value = var.iVal;
  110. // break;
  111. //case VT_R4://4 byte real
  112. // value = var.fltVal;
  113. // break;
  114. //case VT_R8://8 byte real
  115. // value = var.dblVal;
  116. // break;
  117. //case VT_CY://currency
  118. // break;
  119. //case VT_DATE:
  120. // {
  121. // COleDateTime dt(var);
  122. // value = dt.Format(_T("%Y-%m-%d %H:%M:%S"));
  123. // }
  124. // break;
  125. //case VT_BSTR://OLE Automation string
  126. // value = _bstr_t(var.bstrVal);
  127. // break;
  128. //case VT_DISPATCH://IDispatch *
  129. // break;
  130. //case VT_ERROR://SCODE
  131. // break;
  132. //case VT_BOOL://True=-1, False=0
  133. // value = var.boolVal;
  134. // break;
  135. //case VT_VARIANT://VARIANT *
  136. // break;
  137. //case VT_UNKNOWN://IUnknown *
  138. // break;
  139. //case VT_DECIMAL://16 byte fixed point
  140. // break;
  141. //case VT_RECORD://user defined type
  142. // break;
  143. //case VT_I1: // signed char
  144. // value = var.pcVal;
  145. // break;
  146. //case VT_UI1://unsigned char
  147. // value = var.bVal;
  148. // break;
  149. //case VT_UI2://unsigned short
  150. // value = var.uiVal;
  151. // break;
  152. //case VT_UI4://unsigned long
  153. // value = var.uiVal;
  154. // break;
  155. //case VT_I8://signed 64-bit int
  156. // value = var.lVal;
  157. // break;
  158. //case VT_UI8://unsigned 64-bit int
  159. // value = var.ulVal;
  160. // break;
  161. //case VT_INT://signed machine int
  162. // value = var.intVal;
  163. // break;
  164. //case VT_UINT://unsigned machine int
  165. // value = var.uintVal;
  166. // break;
  167. //case VT_INT_PTR://signed machine register size width
  168. // break;
  169. //case VT_UINT_PTR://unsigned machine register size width
  170. // break;
  171. //case VT_VOID://C style void
  172. // break;
  173. //case VT_HRESULT://Standard return type
  174. // break;
  175. //case VT_PTR://pointer type
  176. // break;
  177. //case VT_SAFEARRAY://(use VT_ARRAY in VARIANT)
  178. // break;
  179. //case VT_CARRAY://C style array
  180. // break;
  181. //case VT_USERDEFINED://user defined type
  182. // break;
  183. //case VT_LPSTR://null terminated string
  184. // break;
  185. //case VT_LPWSTR://wide null terminated string
  186. // break;
  187. //case VT_FILETIME://FILETIME
  188. // break;
  189. //case VT_BLOB://Length prefixed bytes
  190. // break;
  191. //case VT_STREAM://Name of the stream follows
  192. // break;
  193. //case VT_STORAGE://Name of the storage follows
  194. // break;
  195. //case VT_STREAMED_OBJECT://Stream contains an object
  196. // break;
  197. //case VT_STORED_OBJECT://Storage contains an object
  198. // break;
  199. //case VT_VERSIONED_STREAM://Stream with a GUID version
  200. // break;
  201. //case VT_BLOB_OBJECT://Blob contains an object
  202. // break;
  203. //case VT_CF://Clipboard format
  204. // break;
  205. //case VT_CLSID://A Class ID
  206. // break;
  207. //case VT_VECTOR://simple counted array
  208. // break;
  209. //case VT_ARRAY://SAFEARRAY*
  210. // break;
  211. //case VT_BYREF://void* for local use
  212. // break;
  213. //case VT_BSTR_BLOB://Reserved for system use
  214. // break;
  215. //default:
  216. // value = var.iVal;
  217. //}
  218. // return TRUE;
  219. //}
  220. /************************************************************************/
  221. /* 函数:[9/25/2016 IT];
  222. /* 描述:;
  223. /* 参数:;
  224. /* [IN] :;
  225. /* [OUT] :;
  226. /* [IN/OUT] :;
  227. /* 返回:void;
  228. /* 注意:;
  229. /* 示例:;
  230. /*
  231. /* 修改:;
  232. /* 日期:;
  233. /* 内容:;
  234. /************************************************************************/
  235. DWORD CWxAdoImpl::InitializePool( IN LPCTSTR lpDBType, IN LPCTSTR lpDBSource, IN CONST DWORD &dwDBPort, IN LPCTSTR lpDBAccount, IN LPCTSTR lpPassWord, IN LPCTSTR lpDBName, IN CONST INT &nMinConn /* = 1 */, IN CONST INT &nMaxConn /* = 5 */ )
  236. {
  237. return CWxAdoPool::GetInstance()->InitializePool(lpDBType, lpDBSource, dwDBPort, lpDBAccount, lpPassWord, lpDBName, nMinConn, nMaxConn);
  238. }
  239. /************************************************************************/
  240. /* 函数:[9/25/2016 IT];
  241. /* 描述:;
  242. /* 参数:;
  243. /* [IN] :;
  244. /* [OUT] :;
  245. /* [IN/OUT] :;
  246. /* 返回:void;
  247. /* 注意:;
  248. /* 示例:;
  249. /*
  250. /* 修改:;
  251. /* 日期:;
  252. /* 内容:;
  253. /************************************************************************/
  254. void CWxAdoImpl::ReleasePool()
  255. {
  256. CWxAdoPool *pObj = CWxAdoPool::GetInstance();
  257. if ( pObj )
  258. {
  259. pObj->ReleasePool();
  260. delete pObj;
  261. pObj = NULL;
  262. }
  263. }
  264. /************************************************************************/
  265. /* 函数:[9/25/2016 IT];
  266. /* 描述:;
  267. /* 参数:;
  268. /* [IN] :;
  269. /* [OUT] :;
  270. /* [IN/OUT] :;
  271. /* 返回:void;
  272. /* 注意:;
  273. /* 示例:;
  274. /*
  275. /* 修改:;
  276. /* 日期:;
  277. /* 内容:;
  278. /************************************************************************/
  279. BOOL CWxAdoImpl::ExecuteSQL( IN LPCTSTR lpExcuteSQL, IN CONST DWORD &dwTimeOut /* = 30000 */ )
  280. {
  281. GETDBPTR(dwTimeOut);
  282. try
  283. {
  284. if ( lpExcuteSQL == NULL || pObj == NULL )
  285. return FALSE;
  286. pObj->pCommand->CommandText = _bstr_t(lpExcuteSQL);
  287. // 执行SQL语句,返回记录集
  288. pObj->pCommand->Execute(NULL, NULL, adCmdText);
  289. }
  290. catch (_com_error &e)
  291. {
  292. _bstr_t bstrSource(e.Source());
  293. _bstr_t bstrDescription(e.Description());
  294. SolveDBError(e.Error(), pObj);
  295. WxAdoGlobal::WriteTextLog(_T("SQL出错:%08lx,%s,%s,%s"), e.Error(), e.ErrorMessage(), (TCHAR*)bstrSource, (TCHAR*)bstrDescription);
  296. return FALSE;
  297. }
  298. return TRUE;
  299. }
  300. /************************************************************************/
  301. /* 函数:[9/25/2016 IT];
  302. /* 描述:;
  303. /* 参数:;
  304. /* [IN] :;
  305. /* [OUT] :;
  306. /* [IN/OUT] :;
  307. /* 返回:void;
  308. /* 注意:;
  309. /* 示例:;
  310. /*
  311. /* 修改:;
  312. /* 日期:;
  313. /* 内容:;
  314. /************************************************************************/
  315. BOOL CWxAdoImpl::IsUserExist( IN LPCTSTR lpPhone, IN LPCTSTR lpPassword, OUT LPVOID lpOutUserInfo,IN CONST DWORD &dwTimeOut /* = 3000 */ )
  316. {
  317. GETDBPTR(dwTimeOut);
  318. try
  319. {
  320. if ( lpPhone == NULL || lpPassword == NULL || pObj == NULL)
  321. return FALSE;
  322. CString strSql = _T("");
  323. 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);//用于是否转相片;
  324. pObj->pCommand->CommandText = _bstr_t(strSql);
  325. // 执行SQL语句,返回记录集
  326. _RecordsetPtr rst = pObj->pCommand->Execute(NULL, NULL, adCmdText);
  327. tb_customer &customer = *(tb_customer*)lpOutUserInfo;
  328. if(!rst->adoEOF)
  329. {
  330. customer.set_customer_id(_bstr_t(rst->GetCollect(_T("csr_id")).bstrVal));
  331. customer.set_customer_name(_bstr_t(rst->GetCollect(_T("csr_name")).bstrVal));
  332. customer.set_customer_gender(rst->GetCollect(_T("csr_gender")).boolVal == VARIANT_TRUE ? TRUE : FALSE);
  333. customer.set_customer_password(_bstr_t(rst->GetCollect(_T("csr_password")).bstrVal));
  334. customer.set_customer_phone(_bstr_t(rst->GetCollect(_T("csr_phone")).bstrVal));
  335. customer.set_customer_old_phone(_bstr_t(rst->GetCollect(_T("csr_old_phone")).bstrVal));
  336. customer.set_customer_vcode(_bstr_t(rst->GetCollect(_T("csr_vcode")).bstrVal));
  337. _variant_t var = rst->GetCollect(_T("vcode_expiry_time"));
  338. if (var.vt == VT_EMPTY || var.vt == VT_NULL)
  339. customer.set_customer_vcode_expiry_time(_T(""));
  340. else
  341. {
  342. COleDateTime dt(var);
  343. customer.set_customer_vcode_expiry_time(dt.Format(_T("%Y-%m-%d %H:%M:%S")));
  344. }
  345. customer.set_customer_enable(rst->GetCollect(_T("enable")).boolVal == VARIANT_TRUE ? TRUE : FALSE);
  346. }
  347. rst->Close();
  348. }
  349. catch (_com_error &e)
  350. {
  351. _bstr_t bstrSource(e.Source());
  352. _bstr_t bstrDescription(e.Description());
  353. SolveDBError(e.Error(), pObj);
  354. WxAdoGlobal::WriteTextLog(_T("SQL出错:%08lx,%s,%s,%s"), e.Error(), e.ErrorMessage(), (TCHAR*)bstrSource, (TCHAR*)bstrDescription);
  355. return FALSE;
  356. }
  357. return TRUE;
  358. }
  359. INT CWxAdoImpl::QueryUserDetail(IN LPCTSTR lpStudioID, IN LPVOID lpUserDetail, IN CONST DWORD & dwTimeOut)
  360. {
  361. return 0;
  362. }
  363. /************************************************************************/
  364. /* 函数:[9/25/2016 IT];
  365. /* 描述:;
  366. /* 参数:;
  367. /* [IN] :;
  368. /* [OUT] :;
  369. /* [IN/OUT] :;
  370. /* 返回:void;
  371. /* 注意:;
  372. /* 示例:;
  373. /*
  374. /* 修改:;
  375. /* 日期:;
  376. /* 内容:;
  377. /************************************************************************/
  378. INT CWxAdoImpl::QueryUserDetail( IN LPCTSTR lpStudioID, IN LPCTSTR lpAccount, IN LPCTSTR lpPassword, OUT LPVOID lpOutUserInfo,IN CONST DWORD &dwTimeOut /* = 3000 */ )
  379. {
  380. return USER_NULL;
  381. }
  382. /************************************************************************/
  383. /* 函数:[9/25/2016 IT];
  384. /* 描述:;
  385. /* 参数:;
  386. /* [IN] :;
  387. /* [OUT] :;
  388. /* [IN/OUT] :;
  389. /* 返回:void;
  390. /* 注意:;
  391. /* 示例:;
  392. /*
  393. /* 修改:;
  394. /* 日期:;
  395. /* 内容:;
  396. /************************************************************************/
  397. INT CWxAdoImpl::QueryDepartmentInfo( IN LPCTSTR lpStudioID, OUT LPVOID lpOutDepartmentInfo, IN CONST DWORD& dwTimeOut /* = 3000 */ )
  398. {
  399. return 0;
  400. }
  401. /************************************************************************/
  402. /* 函数:[9/25/2016 IT];
  403. /* 描述:;
  404. /* 参数:;
  405. /* [IN] :;
  406. /* [OUT] :;
  407. /* [IN/OUT] :;
  408. /* 返回:void;
  409. /* 注意:;
  410. /* 示例:;
  411. /*
  412. /* 修改:;
  413. /* 日期:;
  414. /* 内容:;
  415. /************************************************************************/
  416. INT CWxAdoImpl::QueryStaffInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutStaffInfo, IN CONST DWORD& dwTimeOut /* = 3000 */ )
  417. {
  418. return 0;
  419. }
  420. /************************************************************************/
  421. /* 函数:[9/28/2016 IT];
  422. /* 描述:;
  423. /* 参数:;
  424. /* [IN] :;
  425. /* [OUT] :;
  426. /* [IN/OUT] :;
  427. /* 返回:void;
  428. /* 注意:;
  429. /* 示例:;
  430. /*
  431. /* 修改:;
  432. /* 日期:;
  433. /* 内容:;
  434. /************************************************************************/
  435. INT CWxAdoImpl::QueryUserInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutUserInfo, IN CONST DWORD& dwTimeOut /* = 3000 */ )
  436. {
  437. return 0;
  438. }
  439. /************************************************************************/
  440. /* 函数:[9/30/2016 IT];
  441. /* 描述:;
  442. /* 参数:;
  443. /* [IN] :;
  444. /* [OUT] :;
  445. /* [IN/OUT] :;
  446. /* 返回:void;
  447. /* 注意:;
  448. /* 示例:;
  449. /*
  450. /* 修改:;
  451. /* 日期:;
  452. /* 内容:;
  453. /************************************************************************/
  454. INT CWxAdoImpl::QueryProductType(IN LPCTSTR lpStudioID, OUT LPVOID lpOutProductType, IN CONST DWORD& dwTimeOut /* = 3000 */ )
  455. {
  456. return 0;
  457. }
  458. /************************************************************************/
  459. /* 函数:[9/30/2016 IT];
  460. /* 描述:;
  461. /* 参数:;
  462. /* [IN] :;
  463. /* [OUT] :;
  464. /* [IN/OUT] :;
  465. /* 返回:void;
  466. /* 注意:;
  467. /* 示例:;
  468. /*
  469. /* 修改:;
  470. /* 日期:;
  471. /* 内容:;
  472. /************************************************************************/
  473. INT CWxAdoImpl::QueryProductInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutProductInfo, IN CONST DWORD& dwTimeOut /* = 3000 */ )
  474. {
  475. return 0;
  476. }
  477. /************************************************************************/
  478. /* 函数:[9/30/2016 IT];
  479. /* 描述:;
  480. /* 参数:;
  481. /* [IN] :;
  482. /* [OUT] :;
  483. /* [IN/OUT] :;
  484. /* 返回:void;
  485. /* 注意:;
  486. /* 示例:;
  487. /*
  488. /* 修改:;
  489. /* 日期:;
  490. /* 内容:;
  491. /************************************************************************/
  492. INT CWxAdoImpl::QuerySceneryInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutSceneryInfo, IN CONST DWORD& dwTimeOut /* = 3000 */ )
  493. {
  494. return 0;
  495. }
  496. /************************************************************************/
  497. /* 函数:[9/30/2016 IT];
  498. /* 描述:;
  499. /* 参数:;
  500. /* [IN] :;
  501. /* [OUT] :;
  502. /* [IN/OUT] :;
  503. /* 返回:void;
  504. /* 注意:;
  505. /* 示例:;
  506. /*
  507. /* 修改:;
  508. /* 日期:;
  509. /* 内容:;
  510. /************************************************************************/
  511. INT CWxAdoImpl::QueryPackageType(IN LPCTSTR lpStudioID, OUT LPVOID lpOutPackageType, IN CONST DWORD& dwTimeOut /* = 3000 */ )
  512. {
  513. return 0;
  514. }
  515. /************************************************************************/
  516. /* 函数:[9/30/2016 IT];
  517. /* 描述:;
  518. /* 参数:;
  519. /* [IN] :;
  520. /* [OUT] :;
  521. /* [IN/OUT] :;
  522. /* 返回:void;
  523. /* 注意:;
  524. /* 示例:;
  525. /*
  526. /* 修改:;
  527. /* 日期:;
  528. /* 内容:;
  529. /************************************************************************/
  530. INT CWxAdoImpl::QueryPackageInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutPackageInfo, IN CONST DWORD& dwTimeOut /* = 3000 */ )
  531. {
  532. return 0;
  533. }
  534. /************************************************************************/
  535. /* 函数:[9/30/2016 IT];
  536. /* 描述:;
  537. /* 参数:;
  538. /* [IN] :;
  539. /* [OUT] :;
  540. /* [IN/OUT] :;
  541. /* 返回:void;
  542. /* 注意:;
  543. /* 示例:;
  544. /*
  545. /* 修改:;
  546. /* 日期:;
  547. /* 内容:;
  548. /************************************************************************/
  549. INT CWxAdoImpl::QueryPackageItems(IN LPCTSTR lpStudioID, OUT LPVOID lpOutPackageItems, IN CONST DWORD& dwTimeOut /* = 3000 */ )
  550. {
  551. return 0;
  552. }
  553. /************************************************************************/
  554. /* 函数:[10/5/2016 IT];
  555. /* 描述:;
  556. /* 参数:;
  557. /* [IN] :;
  558. /* [OUT] :;
  559. /* [IN/OUT] :;
  560. /* 返回:void;
  561. /* 注意:;
  562. /* 示例:;
  563. /*
  564. /* 修改:;
  565. /* 日期:;
  566. /* 内容:;
  567. /************************************************************************/
  568. INT CWxAdoImpl::QueryPackageItemsView(IN LPCTSTR lpStudioID, OUT LPVOID lpOutPackageItems, IN CONST DWORD & dwTimeOut)
  569. {
  570. return 0;
  571. }
  572. /************************************************************************/
  573. /* 函数:[10/5/2016 IT];
  574. /* 描述:;
  575. /* 参数:;
  576. /* [IN] :;
  577. /* [OUT] :;
  578. /* [IN/OUT] :;
  579. /* 返回:void;
  580. /* 注意:;
  581. /* 示例:;
  582. /*
  583. /* 修改:;
  584. /* 日期:;
  585. /* 内容:;
  586. /************************************************************************/
  587. INT CWxAdoImpl::QueryPackageItemsDetail(IN LPCTSTR lpStudioID, IN LPCTSTR lpPackageSN, OUT LPVOID lpOutPackageItems, IN CONST DWORD & dwTimeOut)
  588. {
  589. return 0;
  590. }
  591. /************************************************************************/
  592. /* 函数:[10/5/2016 IT];
  593. /* 描述:;
  594. /* 参数:;
  595. /* [IN] :;
  596. /* [OUT] :;
  597. /* [IN/OUT] :;
  598. /* 返回:void;
  599. /* 注意:;
  600. /* 示例:;
  601. /*
  602. /* 修改:;
  603. /* 日期:;
  604. /* 内容:;
  605. /************************************************************************/
  606. INT CWxAdoImpl::QueryCustomerType(IN LPCTSTR lpStudioID, OUT LPVOID lpOutCustomerFrom, IN CONST DWORD& dwTimeOut /* = 3000 */ )
  607. {
  608. return 0;
  609. }
  610. /************************************************************************/
  611. /* 函数:[10/5/2016 IT];
  612. /* 描述:;
  613. /* 参数:;
  614. /* [IN] :;
  615. /* [OUT] :;
  616. /* [IN/OUT] :;
  617. /* 返回:void;
  618. /* 注意:;
  619. /* 示例:;
  620. /*
  621. /* 修改:;
  622. /* 日期:;
  623. /* 内容:;
  624. /************************************************************************/
  625. INT CWxAdoImpl::QueryCustomerInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutCustomerInfo, IN LPCTSTR lpFilter, IN CONST DWORD& dwTimeOut /* = 3000 */)
  626. {
  627. return 0;
  628. }
  629. /************************************************************************/
  630. /* 函数:[10/5/2016 IT];
  631. /* 描述:;
  632. /* 参数:;
  633. /* [IN] :;
  634. /* [OUT] :;
  635. /* [IN/OUT] :;
  636. /* 返回:void;
  637. /* 注意:;
  638. /* 示例:;
  639. /*
  640. /* 修改:;
  641. /* 日期:;
  642. /* 内容:;
  643. /************************************************************************/
  644. INT CWxAdoImpl::QueryOrderType(IN LPCTSTR lpStudioID, OUT LPVOID lpOutOrderType, IN CONST DWORD& dwTimeOut /* = 3000 */ )
  645. {
  646. return 0;
  647. }
  648. /************************************************************************/
  649. /* 函数:[10/16/2016 IT];
  650. /* 描述:;
  651. /* 参数:;
  652. /* [IN] :;
  653. /* [OUT] :;
  654. /* [IN/OUT] :;
  655. /* 返回:void;
  656. /* 注意:;
  657. /* 示例:;
  658. /*
  659. /* 修改:;
  660. /* 日期:;
  661. /* 内容:;
  662. /************************************************************************/
  663. INT CWxAdoImpl::QueryOrderInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutOrderInfo, IN LPCTSTR lpFilter, IN CONST DWORD& dwTimeOut /* = 3000 */ )
  664. {
  665. return 0;
  666. }
  667. /************************************************************************/
  668. /* 函数:[10/16/2016 IT];
  669. /* 描述:;
  670. /* 参数:;
  671. /* [IN] :;
  672. /* [OUT] :;
  673. /* [IN/OUT] :;
  674. /* 返回:void;
  675. /* 注意:;
  676. /* 示例:;
  677. /*
  678. /* 修改:;
  679. /* 日期:;
  680. /* 内容:;
  681. /************************************************************************/
  682. INT CWxAdoImpl::QueryOrderScenery(IN LPCTSTR lpStudioID, OUT LPVOID lpOutOrderScenery, IN LPCTSTR lpFilter, IN CONST DWORD& dwTimeOut /* = 3000 */)
  683. {
  684. return 0;
  685. }
  686. /************************************************************************/
  687. /* 函数:[10/16/2016 IT];
  688. /* 描述:;
  689. /* 参数:;
  690. /* [IN] :;
  691. /* [OUT] :;
  692. /* [IN/OUT] :;
  693. /* 返回:void;
  694. /* 注意:;
  695. /* 示例:;
  696. /*
  697. /* 修改:;
  698. /* 日期:;
  699. /* 内容:;
  700. /************************************************************************/
  701. INT CWxAdoImpl::QueryOrderPackageItems(IN LPCTSTR lpStudioID, OUT LPVOID lpOutOrderPackageItems, IN LPCTSTR lpFilter, IN CONST DWORD& dwTimeOut /* = 3000 */)
  702. {
  703. return 0;
  704. }
  705. /************************************************************************/
  706. /* 函数:[10/16/2016 IT];
  707. /* 描述:;
  708. /* 参数:;
  709. /* [IN] :;
  710. /* [OUT] :;
  711. /* [IN/OUT] :;
  712. /* 返回:void;
  713. /* 注意:;
  714. /* 示例:;
  715. /*
  716. /* 修改:;
  717. /* 日期:;
  718. /* 内容:;
  719. /************************************************************************/
  720. INT CWxAdoImpl::QuerySysConfig(IN LPCTSTR lpStudioID, OUT LPVOID lpOutSysConfig, IN CONST DWORD& dwTimeOut /* = 3000 */ )
  721. {
  722. return 0;
  723. }
  724. /************************************************************************/
  725. /* 函数:[10/16/2016 IT];
  726. /* 描述:;
  727. /* 参数:;
  728. /* [IN] :;
  729. /* [OUT] :;
  730. /* [IN/OUT] :;
  731. /* 返回:void;
  732. /* 注意:;
  733. /* 示例:;
  734. /*
  735. /* 修改:;
  736. /* 日期:;
  737. /* 内容:;
  738. /************************************************************************/
  739. INT CWxAdoImpl::QueryLog(IN LPCTSTR lpStudioID, OUT LPVOID lpOutLog, IN CONST DWORD& dwTimeOut /* = 3000 */ )
  740. {
  741. return 0;
  742. }
  743. /************************************************************************/
  744. /* 函数:[10/27/2016 IT];
  745. /* 描述:;
  746. /* 参数:;
  747. /* [IN] :;
  748. /* [OUT] :;
  749. /* [IN/OUT] :;
  750. /* 返回:void;
  751. /* 注意:;
  752. /* 示例:;
  753. /*
  754. /* 修改:;
  755. /* 日期:;
  756. /* 内容:;
  757. /************************************************************************/
  758. INT CWxAdoImpl::QueryStudioInfo(IN LPCTSTR lpStudioID, OUT LPVOID lpOutStudioInfo, IN CONST DWORD & dwTimeOut)
  759. {
  760. return 0;
  761. }
  762. /************************************************************************/
  763. /* 函数:[10/27/2016 IT];
  764. /* 描述:;
  765. /* 参数:;
  766. /* [IN] :;
  767. /* [OUT] :;
  768. /* [IN/OUT] :;
  769. /* 返回:void;
  770. /* 注意:;
  771. /* 示例:;
  772. /*
  773. /* 修改:;
  774. /* 日期:;
  775. /* 内容:;
  776. /************************************************************************/
  777. INT CWxAdoImpl::SupQueryStudioInfo(OUT LPVOID lpOutStudioInfo, IN CONST DWORD & dwTimeOut)
  778. {
  779. return 0;
  780. }
  781. /************************************************************************/
  782. /* 函数:[2/26/2017 Jeff];
  783. /* 描述:;
  784. /* 参数:;
  785. /* [IN] :;
  786. /* [OUT] :;
  787. /* [IN/OUT] :;
  788. /* 返回:void;
  789. /* 注意:;
  790. /* 示例:;
  791. /*
  792. /* 修改:;
  793. /* 日期:;
  794. /* 内容:;
  795. /************************************************************************/
  796. INT CWxAdoImpl::QueryMaxOrderId(IN LPCTSTR lpStudioID, IN CONST DWORD& dwTimeOut /* = 3000 */)
  797. {
  798. return 0;
  799. }
  800. /************************************************************************/
  801. /* 函数:[2/26/2017 Jeff];
  802. /* 描述:;
  803. /* 参数:;
  804. /* [IN] :;
  805. /* [OUT] :;
  806. /* [IN/OUT] :;
  807. /* 返回:void;
  808. /* 注意:;
  809. /* 示例:;
  810. /*
  811. /* 修改:;
  812. /* 日期:;
  813. /* 内容:;
  814. /************************************************************************/
  815. INT CWxAdoImpl::QueryMaxPrintId(IN LPCTSTR lpStudioID, IN CONST DWORD& dwTimeOut /* = 3000 */)
  816. {
  817. return 0;
  818. }
  819. /************************************************************************/
  820. /* 函数:[10/27/2016 IT];
  821. /* 描述:;
  822. /* 参数:;
  823. /* [IN] :;
  824. /* [OUT] :;
  825. /* [IN/OUT] :;
  826. /* 返回:void;
  827. /* 注意:;
  828. /* 示例:;
  829. /*
  830. /* 修改:;
  831. /* 日期:;
  832. /* 内容:;
  833. /************************************************************************/
  834. BOOL CWxAdoImpl::InsertStudioInfo(IN LPVOID lpStudioInfo, IN CONST DWORD & dwTimeOut)
  835. {
  836. return FALSE;
  837. }
  838. BOOL CWxAdoImpl::UpdateStudioInfo(IN LPVOID lpStudioInfo, IN CONST DWORD & dwTimeOut)
  839. {
  840. return FALSE;
  841. }
  842. /*
  843. GETDBPTR(dwTimeOut);
  844. try
  845. {
  846. }
  847. catch (CDBException* e)
  848. {
  849. e->ReportError();
  850. SolveDBError(e->m_nRetCode, pDatabase);
  851. e->Delete();
  852. return FALSE;
  853. }
  854. return TRUE;
  855. */