BranchInfo.h 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. /************************************************************************/
  2. /*
  3. 版权所有: (C)2015, 利亚方舟科技有限公司。
  4. 文件名称: BranchInfo.h
  5. 文件标识:
  6. 内容摘要: 每个分店的数据操作对象
  7. 其他说明:
  8. 当前版本: V1.0
  9. 作 者: Jeff
  10. 完成日期: 2015/04/22
  11. 修改记录:
  12. 修改日期:
  13. 版 本 号:
  14. 修 改 人:
  15. 修改内容:
  16. */
  17. /************************************************************************/
  18. #ifndef __BRANCH_INFO__
  19. #define __BRANCH_INFO__
  20. #pragma once
  21. #include "CatalogObj.h"
  22. #include "TblDef.h"
  23. #include "Global.h"
  24. #define TEST_CREATE_DIRECTORY 0
  25. class CSC_BackupFactory;
  26. interface ISC_BackupInterface;
  27. class CBranchInfo:public CCatalogObj
  28. {
  29. CBranchInfo();
  30. public:
  31. static CBranchInfo* GetInstance()
  32. {
  33. static CBranchInfo* pInstance = NULL;
  34. if ( !pInstance )
  35. {
  36. pInstance = new CBranchInfo;
  37. }
  38. return pInstance;
  39. }
  40. explicit CBranchInfo(LPCTSTR lpBranchName,LPCTSTR lpBranchDoMain,LPCTSTR lpBranchIP);
  41. ~CBranchInfo(void);
  42. private:
  43. BOOL m_bIsOur; // 是否本店;
  44. TCHAR m_szBranchName[MAX_PATH]; // 店名;
  45. TCHAR m_szBranchDoMain[MAX_PATH]; // 店域名;
  46. TCHAR m_szBranchIP[MAX_PATH]; // 店铺IP;
  47. CString m_strBranchId; // 分店域名;
  48. CArray<CStringArray, CStringArray> m_bakDirArr; // 备份保存的目录:version表读取
  49. public:
  50. // 多店多数据库时,以下两变量为静态,且获取的数据库对象是本店服务器的;
  51. static TblVersion m_TblVersion;
  52. typedef vector<TblCatalogInfo*> CATALOGINFO;
  53. typedef vector<TblNetShareInfo*> NETSHAREINFO;
  54. static CATALOGINFO m_TblCatalogInfo;
  55. static NETSHAREINFO m_TblNetShareInfo;
  56. static void RemvoeCatalogInfo();
  57. static void RemoveNetShareInfo();
  58. public:
  59. inline BOOL GetOurFlag() CONST{return m_bIsOur;}
  60. inline void SetOurFlag(BOOL bSet = TRUE){m_bIsOur = bSet;};
  61. inline LPCTSTR GetDoMain()CONST{return m_szBranchDoMain;}
  62. TblVersion& GetVersionInfo(){return m_TblVersion;}
  63. // 获取数据库实例所对就的分店域名;
  64. inline CONST CString& GetBranchId()CONST{return m_strBranchId;}
  65. void SetBranchId(LPCTSTR lpBranchId){ m_strBranchId = lpBranchId;}
  66. // 初始化分店信息;
  67. void InitBranchInfo(
  68. IN LPCTSTR lpBranchDoMain, // 域名;
  69. IN LPCTSTR lpBranchName, // 店名;
  70. IN LPCTSTR lpBranchIP // 公网IP;
  71. );
  72. // 1.初始化数据库连接串;
  73. BOOL InitCatalog(
  74. IN CONST DWORD &dwCatalogPort,
  75. IN LPCTSTR lpCatalogSource,
  76. IN LPCTSTR lpCatalogAccount,
  77. IN LPCTSTR lpCatalogPsw,
  78. IN LPCTSTR lpCatalogName);
  79. // 2.获取特定表信息;
  80. BOOL CheckShareDirExistInTbl(const int nType, const CString& strDir);
  81. BOOL GetTblBranchId();
  82. BOOL GetTblVersion();
  83. BOOL GetTblCatalogInfo();
  84. BOOL GetTblNetShareInfo();
  85. BOOL IsCatalogInfoExists(IN LPCTSTR lpBranchId);
  86. BOOL IsNetShareInfoExists(IN LPCTSTR lpBranchId, IN LPCTSTR lpShareDirectory);
  87. BOOL GetTblIncrementBackup(OUT CArray<CStringArray,CStringArray> &AryOfValues, IN BOOL bIsBackup = FALSE );
  88. BOOL GetTblAllPhotoManager(OUT CArray<CStringArray, CStringArray> &AryOfValues);
  89. BOOL GetTblPhotoManager1(OUT CArray<CStringArray, CStringArray> &AryOfValues);
  90. BOOL GetTblPhotoManager2(OUT CArray<CStringArray, CStringArray> &AryOfValues);
  91. BOOL GetTblPhotoManager3(OUT CArray<CStringArray, CStringArray> &AryOfValues);
  92. BOOL GetTblPhotoManager4(OUT CArray<CStringArray, CStringArray> &AryOfValues);
  93. BOOL GetTblPhotoManager5(OUT CArray<CStringArray, CStringArray> &AryOfValues);
  94. BOOL GetTblPhotoManager6(OUT CArray<CStringArray, CStringArray> &AryOfValues);
  95. BOOL GetTblPhotoManager7(OUT CArray<CStringArray, CStringArray> &AryOfValues);
  96. BOOL GetTblPhotoManager8(OUT CArray<CStringArray, CStringArray> &AryOfValues);
  97. //获取备份的保存目录
  98. BOOL GetBackupOfSaveDir(OUT CArray<CStringArray, CStringArray> &AryOfValues);
  99. // 读取branchdindan.dat文件;
  100. BOOL ReadOtherBranchOrderInfo(/*OUT CArray<CStringArray,CStringArray>& AryOtherBranchOrderInfo*/);
  101. #if TEST_CREATE_DIRECTORY // 测试;
  102. BOOL GetTblPhotoManager(OUT CArray<CStringArray, CStringArray> &AryOfValues);
  103. void CreateOrderDirectory(IN LPCTSTR lpOrderNum);
  104. #endif
  105. // 增量备份线程;
  106. BOOL m_bIncrementTm;
  107. HANDLE m_hIncrement;
  108. HANDLE m_hIncrementCtrl;
  109. HANDLE m_hIncrementWaitableTm;
  110. static DWORD WINAPI ThreadOfIncrement(LPVOID lpParameter);
  111. static DWORD WINAPI ThreadOfIncrement_Tm(LPVOID lpParameter);
  112. //增量备份工作
  113. void IncrementWork();
  114. // 自动删除线程;
  115. BOOL m_bRemoveTm;
  116. HANDLE m_hRemove;
  117. HANDLE m_hRemoveCtrl;
  118. HANDLE m_hRemoveWaitableTm;
  119. static DWORD WINAPI ThreadRemove(LPVOID lpParameter);
  120. static DWORD WINAPI ThreadRemove_Tm(LPVOID lpParameter);
  121. BOOL StartThread();
  122. VOID EndOfThread();
  123. BOOL StartThread_Tm();
  124. VOID EndOfThread_Tm();
  125. protected:
  126. void Separator(IN LPCTSTR lpSeparator, IN LPCTSTR lpString, OUT CStringArray &ResultArray);
  127. void AddLocalShareDirectory();
  128. BOOL InsertNetShareInfo(IN LPCTSTR lpShareDirectory, IN LPCTSTR lpBranchId, IN CONST BYTE &nMinCapacity, IN CONST BYTE &nMaxCapacity, IN CONST BYTE &nPhotoType, IN CONST BYTE &nPriority);
  129. BOOL GetIncrementContentAndBackup(
  130. IN LPCTSTR lpBranchId,
  131. IN LPCTSTR lpOpTm,
  132. IN LPCTSTR lpOrder,
  133. IN CONST BYTE &byPhotoType,
  134. IN LPCTSTR lpIncrementContent);
  135. BOOL GetRemvoeOrderInfoAndRemove(
  136. IN LPCTSTR lpBranchId,
  137. IN LPCTSTR lpOrderNum,
  138. IN LPCTSTR lpOpTm,
  139. IN const BYTE &byPhotoType);
  140. BOOL FindImageShareDirectory(IN LPCTSTR lpBranchId, IN const BYTE &byPhotoType, IN LPCTSTR lpImage, IN LPCTSTR lpOrderNum, OUT LPTSTR lpShareDirectory);
  141. BOOL FindImageShareDirectory(IN const BYTE &byPhotoType, IN LPCTSTR lpImage, IN LPCTSTR lpOrderNum, OUT CStringArray &AryOfShareDirectory);
  142. // 判断目录是否为有效可删除的目录;
  143. BOOL IsValideDiretory(IN LPCTSTR lpDirectory);
  144. // 删除指定的目录;
  145. BOOL DeleteDirectory(IN LPCTSTR lpDiretory);
  146. // 查找指定文件夹下某个文件名是否存在;
  147. BOOL FindFileNameFromSpecialDirectory(IN LPCTSTR lpSpecialDirectory, IN LPCTSTR lpFileName, OUT LPTSTR lpResult);
  148. static BOOL IsValidDate(IN LPCTSTR lpDate);
  149. static UINT64 EasyGetFileSize(IN LPCTSTR lpFile);
  150. static UINT64 EasyGetFileSpacesSzie(IN LPCTSTR lpFileName);
  151. static UINT64 EasyGetSizeOfFiles(IN CStringArray &strAryOfFile);
  152. static BOOL GetDiskSpaceInfo(IN LPCTSTR lpRootPathName,IN OUT double &dTotalNum, IN OUT double &dFreeNum);
  153. static BOOL EasyCopyFile(IN LPCTSTR lpOrderNum, IN LPCTSTR lpExistingFileName, IN LPCTSTR lpTargetDirectory, IN BOOL bFailIfExists = TRUE );
  154. BOOL GetEnableShareDirectory(OUT double &dFreeNum, IN const int &nPhotoType, IN LPCTSTR lpBranchId, IN LPCTSTR lpOrderNum, OUT LPTSTR lpEnableShareDirectory);
  155. };
  156. #endif