NetShareInfo.cpp 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407
  1. #include "StdAfx.h"
  2. #include "NetShareInfo.h"
  3. #include <shlwapi.h>
  4. #include "./helper/ffsco.h"
  5. BOOL CNetShareInfo::m_bInit = FALSE;
  6. LPCTSTR CNetShareInfo::m_lpHostName = NULL;
  7. CString CNetShareInfo::m_lpDomain = _T("");
  8. CArray<CStringArray,CStringArray>* CNetShareInfo::m_pAryOfNetShareInfo = NULL;
  9. CNetShareInfo::CNetShareInfo(void)
  10. {
  11. }
  12. CNetShareInfo::~CNetShareInfo(void)
  13. {
  14. }
  15. /************************************************************************/
  16. /*
  17. 函数:Initialize
  18. 描述:初始化;
  19. 参数:
  20. IN:lpDomain 域名;
  21. IN:lpHostName 主机名;
  22. IN:pAryOfNetShareInfo NetShareInfo表数据;
  23. 返回:初始化完成返回TRUE;
  24. 示例:
  25. */
  26. /************************************************************************/
  27. BOOL CNetShareInfo::Initialize(IN LPCTSTR lpDomain, IN LPCTSTR lpHostName, IN CArray<CStringArray,CStringArray> *pAryOfNetShareInfo)
  28. {
  29. if ( !m_bInit )
  30. {
  31. m_lpDomain = lpDomain;
  32. m_lpHostName = lpHostName;
  33. m_pAryOfNetShareInfo = pAryOfNetShareInfo;
  34. m_bInit = TRUE;
  35. }
  36. return m_bInit;
  37. }
  38. /************************************************************************/
  39. /*
  40. 函数:LoadSpecifiedDirectory
  41. 描述:加载指定目录及子目录下的全部相片;
  42. 参数:
  43. IN:lpSpecifiedDirectory 要加载的目录;
  44. OUT:AryOfImgPath 返回指定目录下的全部相片路径集合;
  45. 返回:
  46. 示例:
  47. */
  48. /************************************************************************/
  49. BOOL CNetShareInfo::LoadSpecifiedDirectory(IN LPCTSTR lpSpecifiedDirectory, OUT CStringArray &AryOfImgPath)
  50. {
  51. // 1.判定目录有效性;
  52. //if ( lpSpecifiedDirectory == NULL || strcmp(lpSpecifiedDirectory,"") == 0 || !PathFileExists(lpSpecifiedDirectory) )
  53. if( !PathFileExists(lpSpecifiedDirectory) )
  54. {
  55. // 目录无效;
  56. return FALSE;
  57. }
  58. using namespace helper_coffs;
  59. ffsco o;
  60. o.dirs(1);
  61. o.find(lpSpecifiedDirectory, LPCSTR("*.*"));
  62. ffsco::typeT cfs;
  63. ffsco::typeT::iterator it;
  64. cfs = o.co_file();
  65. CString strName;
  66. for (it = cfs.begin(); cfs.end() != it; it++)
  67. {
  68. // 去除目录级文件;
  69. // 去除ok文件;
  70. // 去除modifytime文件;
  71. // 去除s+m缩略图;
  72. strName = it->c_str();
  73. strName.MakeLower();
  74. if ( strName.Find('.') == -1)
  75. continue;
  76. else
  77. {
  78. CString str = strName.Mid( strName.ReverseFind('\\') + 1 );
  79. if ( str.Find('.') == -1)
  80. continue;
  81. }
  82. // 如果在相片前或后加修饰,都会有bug,最佳做法是缩略图放在另一子文件夹中;
  83. // 产生的bug:使用原名导入相片时,相片名可能第一个字母就是s或m;
  84. if ( strName.GetAt( strName.ReverseFind('\\') + 1 ) == 's' )continue;
  85. if ( strName.GetAt( strName.ReverseFind('\\') + 1 ) == 'm' )continue;
  86. if ( strName.Find(_T(".jpg")) == -1 )
  87. {
  88. if ( strName.Find(_T(".jpeg")) == -1 )
  89. continue;
  90. }
  91. BOOL bExist = FALSE;
  92. for ( int i = 0; i < AryOfImgPath.GetSize(); i++ )
  93. {
  94. if ( AryOfImgPath.ElementAt(i).CompareNoCase(strName) == 0 )
  95. {
  96. bExist = TRUE;
  97. break;
  98. }
  99. }
  100. if ( !bExist )
  101. {
  102. AryOfImgPath.Add(strName);
  103. }
  104. }
  105. return TRUE;
  106. }
  107. /************************************************************************/
  108. /*
  109. 函数:LoadSelectedImageDirectory
  110. 描述:加载选中的相片的共享路径;
  111. 参数:
  112. IN:lpSpecifiedDirectory 要加载相片的目录;
  113. IN:AryOfSelectedImages 被选中的相片集合;
  114. OUT:AryOfImgPath 返回被选中的相片的路径集合;
  115. 返回:
  116. 示例:
  117. */
  118. /************************************************************************/
  119. BOOL CNetShareInfo::LoadSelectedImageDirectory(IN LPCTSTR lpSpecifiedDirectory, IN CStringArray &AryOfSelectedImages, OUT CStringArray &AryOfImgPath)
  120. {
  121. // 1.判定目录有效性;
  122. if ( lpSpecifiedDirectory == NULL || strcmp(lpSpecifiedDirectory,_T("")) == 0)
  123. {
  124. // 目录无效;
  125. return FALSE;
  126. }
  127. using namespace helper_coffs;
  128. ffsco o;
  129. o.dirs(1);
  130. o.find(lpSpecifiedDirectory, LPCSTR("*.*"));
  131. ffsco::typeT cfs;
  132. ffsco::typeT::iterator it;
  133. cfs = o.co_file();
  134. CString strName;
  135. for (it = cfs.begin(); cfs.end() != it;)
  136. {
  137. // 去除目录级文件;
  138. // 去除ok文件;
  139. // 去除modifytime文件;
  140. // 去除s+m缩略图;
  141. strName = it->c_str();
  142. strName.MakeLower();
  143. if ( strName.Find('.') == -1)
  144. {
  145. it = cfs.erase(it);
  146. continue;
  147. }
  148. else
  149. {
  150. CString str = strName.Mid( strName.ReverseFind('\\') + 1 );
  151. if ( str.Find('.') == -1)
  152. {
  153. it = cfs.erase(it);
  154. continue;
  155. }
  156. }
  157. // 如果在相片前或后加修饰,都会有bug,最佳做法是缩略图放在另一子文件夹中;\
  158. // 产生的bug:使用原名导入相片时,相片名可能第一个字母就是s或m;
  159. if ( strName.GetAt( strName.ReverseFind('\\') + 1 ) == 's' ){
  160. it = cfs.erase(it);
  161. continue;
  162. }
  163. if ( strName.GetAt( strName.ReverseFind('\\') + 1 ) == 'm' ){
  164. it = cfs.erase(it);
  165. continue;
  166. }
  167. if ( strName.Find(_T(".jpg")) == -1 ){
  168. if( strName.Find(_T(".jpeg")) == -1)
  169. {
  170. it = cfs.erase(it);
  171. continue;
  172. }
  173. }
  174. it++;
  175. }
  176. #if 1 // 删除存在的文件的相片编号,留下没有文件的相片编号;
  177. TCHAR path_buffer[_MAX_PATH] = {0};
  178. TCHAR szDrive[_MAX_DRIVE] = {0};
  179. TCHAR szDir[_MAX_DIR] = {0};
  180. TCHAR szFname[_MAX_FNAME] = {0};
  181. TCHAR szExt[_MAX_EXT] = {0};
  182. #if 1
  183. for ( int a = 0; a < AryOfSelectedImages.GetSize(); a++ )
  184. printf("Images8 = %s\n", AryOfSelectedImages.ElementAt(a));
  185. #endif
  186. // AryOfImage 从尾部开始查找,查找成功后并删除,最终查找完全部共享目录都没找到的,就是相片不存在;
  187. for ( it = cfs.begin(); it != cfs.end(); it++ )
  188. {
  189. //_splitpath_s(it->c_str(),szDrive,szDir,szFname,szExt);
  190. _splitpath(it->c_str(), szDrive, szDir, szFname, szExt);
  191. // printf("szDrive = %s, szDir = %s, szFname = %s, szExt = %s\n", szDrive, szDir, szFname, szExt);
  192. for ( int i = 0; i < AryOfSelectedImages.GetSize(); i++)
  193. {
  194. printf("Images9 = %s\n", AryOfSelectedImages.ElementAt(i));
  195. if ( AryOfSelectedImages.ElementAt(i).CompareNoCase(szFname) == 0 )
  196. {
  197. strName = it->c_str();
  198. AryOfImgPath.Add(strName);
  199. AryOfSelectedImages.RemoveAt(i);
  200. break;
  201. }
  202. }
  203. }
  204. #endif
  205. return TRUE;
  206. }
  207. #if USE_FIX_SHARE
  208. /************************************************************************/
  209. /*
  210. 函数:GetLoaclShareDirectory
  211. 描述:获取指定相片类型的本地原始共享目录名;
  212. 参数:
  213. IN: nPhotoType 相片类型;
  214. OUT: lpResultPath 返回指定相片类型的本地原始共享目录;
  215. 返回:成功返回TRUE;
  216. 示例:
  217. */
  218. /************************************************************************/
  219. void CNetShareInfo::GetLoaclShareDirectory(IN int const nPhotoType, OUT LPTSTR lpResultPath)
  220. {
  221. if ( m_lpHostName == NULL || m_lpHostName[0] == '\0' )
  222. {
  223. // 主机名空;
  224. return;
  225. }
  226. switch( nPhotoType )
  227. {
  228. case 1:
  229. _stprintf(lpResultPath, _T("\\\\%s\\%s"), m_lpHostName, _T("客户原片(管理软件)$"));
  230. break;
  231. case 2:
  232. _stprintf(lpResultPath, _T("\\\\%s\\%s"), m_lpHostName, _T("修好的片(管理软件)$"));
  233. break;
  234. case 3:
  235. _stprintf(lpResultPath, _T("\\\\%s\\%s"), m_lpHostName, _T("精修好的片(管理软件)$"));
  236. break;
  237. case 4:
  238. _stprintf(lpResultPath, _T("\\\\%s\\%s"), m_lpHostName, _T("设计好的片(管理软件)$"));
  239. break;
  240. #ifdef ENTERPRISE_VERSION
  241. #ifndef CHILD_VERSION
  242. case 5:
  243. _stprintf(lpResultPath, _T("\\\\%s\\%s"), m_lpHostName, _T("客户原片备份(管理软件)$"));
  244. break;
  245. case 6:
  246. _stprintf(lpResultPath, _T("\\\\%s\\%s"), m_lpHostName, _T("修好的片备份(管理软件)$"));
  247. break;
  248. case 7:
  249. _stprintf(lpResultPath, _T("\\\\%s\\%s"), m_lpHostName, _T("精修好的片备份(管理软件)$"));
  250. break;
  251. case 8:
  252. _stprintf(lpResultPath, _T("\\\\%s\\%s"), m_lpHostName, _T("设计好的片备份(管理软件)$"));
  253. break;
  254. #else
  255. case 5:
  256. _stprintf(lpResultPath, _T("\\\\%s\\%s"), m_lpHostName, _T("客户原片备份(儿童管理软件)$"));
  257. break;
  258. case 6:
  259. _stprintf(lpResultPath, _T("\\\\%s\\%s"), m_lpHostName, _T("修好的片备份(儿童管理软件)$"));
  260. break;
  261. case 7:
  262. _stprintf(lpResultPath, _T("\\\\%s\\%s"), m_lpHostName, _T("精修好的片备份(儿童管理软件)$"));
  263. break;
  264. case 8:
  265. _stprintf(lpResultPath, _T("\\\\%s\\%s"), m_lpHostName, _T("设计好的片备份(儿童管理软件)$"));
  266. break;
  267. #endif
  268. #endif
  269. default:
  270. break;
  271. }
  272. }
  273. #endif
  274. /************************************************************************/
  275. /*
  276. 函数:GetDiskSpaceInfo
  277. 描述:获取指定目录或盘符的容量信息;
  278. 参数:
  279. IN: lpRootPathName 根目录名称;
  280. INOUT: dTotalNum 总容量;
  281. INOUT: dFreeNum 可用容量;
  282. 返回:
  283. 注意:
  284. GetDiskFreeSpace函数不能满足当前超过2T的硬盘容量,因为里面的数据类型是UINT,最大支持32位(4G);
  285. GetDiskFreeSpaceEx支持64位(16384P=1024*16384T)
  286. 只能获取本机硬盘信息,且路径必须包含":"冒号;
  287. 调用约定:
  288. */
  289. /************************************************************************/
  290. BOOL CNetShareInfo::GetDiskSpaceInfo(IN LPCTSTR lpRootPathName,IN OUT double &dTotalNum, IN OUT double &dFreeNum)
  291. {
  292. // 校验参数有效性;
  293. if(lpRootPathName == NULL || _tcscmp(lpRootPathName,_T("")) == 0)
  294. {
  295. //_tprintf_s(_T("根目录为空!"));
  296. return FALSE;
  297. }
  298. // 如果长度==1;
  299. int nlen = _tcslen(lpRootPathName);
  300. if((1 == nlen) || ( 2 == nlen && lpRootPathName[nlen-1] != _T(':')))
  301. {
  302. //_tprintf_s(_T("根目录无效!\n"));
  303. return FALSE;
  304. }
  305. if ( !PathFileExists(lpRootPathName))
  306. {
  307. //_tprintf_s(_T("根目录不存在!\n"));
  308. return FALSE;
  309. }
  310. BOOL fResult = FALSE;
  311. DWORD dwSectPerClust; // 每簇的扇区数;
  312. DWORD dwBytesPerSect; // 每个扇区的字节数;
  313. DWORD dwFreeClusters; // 可用簇数;
  314. DWORD dwTotalClusters; // 总簇数;
  315. typedef BOOL (WINAPI *P_GDFSE)(LPCTSTR, PULARGE_INTEGER,PULARGE_INTEGER, PULARGE_INTEGER);
  316. P_GDFSE pGetDiskFreeSpaceEx = NULL;
  317. /*unsigned*/ __int64 i64FreeBytesToCaller;
  318. /*unsigned*/ __int64 i64TotalBytes;
  319. /*unsigned*/ __int64 i64FreeBytes;
  320. // 调用GetDiskFreeSpaceEx失败则调用GetDiskSpace;
  321. #ifdef UNICODE
  322. pGetDiskFreeSpaceEx = (P_GDFSE)GetProcAddress(GetModuleHandle(_T("kernel32.dll")),"GetDiskFreeSpaceExW");
  323. #else
  324. pGetDiskFreeSpaceEx = (P_GDFSE)GetProcAddress(GetModuleHandle("kernel32.dll"),"GetDiskFreeSpaceExA");
  325. #endif
  326. if ( pGetDiskFreeSpaceEx )
  327. {
  328. fResult = pGetDiskFreeSpaceEx(lpRootPathName,
  329. (PULARGE_INTEGER)&i64FreeBytesToCaller,
  330. (PULARGE_INTEGER)&i64TotalBytes,
  331. (PULARGE_INTEGER)&i64FreeBytes);
  332. if ( fResult )
  333. {
  334. // 将单位由byte转为G byte;
  335. dTotalNum = (double)i64TotalBytes/1024/1024/1024;
  336. dFreeNum = (double)i64FreeBytes/1024/1024/1024;
  337. }
  338. }
  339. else
  340. {
  341. fResult = GetDiskFreeSpace(lpRootPathName,
  342. &dwSectPerClust,
  343. &dwBytesPerSect,
  344. &dwFreeClusters,
  345. &dwTotalClusters);
  346. if ( fResult )
  347. {
  348. // 成功获得容量信息;
  349. i64TotalBytes = (__int64)dwTotalClusters * dwSectPerClust * dwBytesPerSect;
  350. i64FreeBytes = (__int64)dwFreeClusters * dwSectPerClust * dwBytesPerSect;
  351. // 将单位由byte转为G byte;
  352. dTotalNum = (double)i64TotalBytes/1024/1024/1024;
  353. dFreeNum = (double)i64FreeBytes/1024/1024/1024;
  354. }
  355. }
  356. return fResult;
  357. }
  358. /************************************************************************/
  359. /*
  360. Date: 2015-04-10
  361. Author: Jeff
  362. 函数:GetEnableShareDirectory
  363. 描述:返回指定相片类型可用的共享目录;
  364. 参数:
  365. IN: nPhotoType 相片类型;
  366. IN: lpOrderNum 订单号;
  367. IN: lpDomain 分店域名;
  368. OUT: lpEnableShareDirectory 可用的共享目录;
  369. 返回:成功返回TRUE;
  370. 注意:用于导入相片,最后返回的共享目录,使用MakeSuerDirectoryPathExists函数创建目录;
  371. 调用约定:#
  372. 测试:通过;
  373. */
  374. /************************************************************************/
  375. BOOL CNetShareInfo::GetEnableShareDirectory(IN const int &nPhotoType, IN LPCTSTR lpOrderNum, IN LPCTSTR lpDomain, OUT LPTSTR lpEnableShareDirectory)
  376. {
  377. // 需要判断域名有效性;
  378. if (lpDomain && strcmp(lpDomain, _T("")) != 0)
  379. {
  380. if(_tcsstr(lpDomain, _T(".ly.com")) == NULL)
  381. {
  382. // 传入的域名有误;
  383. return FALSE;
  384. }
  385. }
  386. double dTotalNum = 0.0;
  387. double dFreeNum = 0.0;
  388. TCHAR szOrderNum[MAX_PATH] = { 0 };
  389. TCHAR szLocalOrder[MAX_PATH] = { 0 };
  390. TCHAR szShareDirectory[MAX_PATH] = { 0 };
  391. #if USE_FIX_SHARE
  392. // 1.先判断当前局域网原始共享目录可用大小(是否小于20G);
  393. GetLoaclShareDirectory(nPhotoType,szShareDirectory);// 获取本地指定相片类型的共享目录;
  394. // 如果订单号存在原始共享目录中,判断目录容量是否有5G大小,如果有则存入,否则存入到别的优先级高的共享目录;
  395. if ( lpDomain == NULL || strcmp(lpDomain, _T("")) == 0)
  396. {
  397. // 分店域名为空,则为本店;
  398. _stprintf(szLocalOrder, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  399. }
  400. else
  401. {// 分店域名不为空;
  402. if ( strcmp(lpDomain, m_lpDomain) == 0)
  403. {
  404. // 本店域名;
  405. _stprintf(szLocalOrder, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  406. }
  407. else
  408. {
  409. _stprintf(szLocalOrder, _T("%s\\%s\\%s"), szShareDirectory, lpDomain, lpOrderNum);
  410. }
  411. }
  412. if ( !GetDiskSpaceInfo(szShareDirectory,dTotalNum,dFreeNum) )
  413. {
  414. // 获取硬盘大小失败;
  415. return FALSE;
  416. }
  417. // 订单文件夹存在且原始共享目录可用大小>5G 或者 订单文件夹不存在时,容量必须大于指定值;
  418. if ((PathFileExists(szLocalOrder) && dFreeNum > MIN_CAPACITY) || dFreeNum > MAX_CAPACITY)
  419. {
  420. // 返回原始共享目录;
  421. _stprintf(lpEnableShareDirectory, _T("%s"), szLocalOrder);
  422. return TRUE;
  423. }
  424. #endif
  425. //////////////////////////////////////////////////////////////////////////
  426. // 原始共享目录不可用,使用其他高优先级共享目录;
  427. if ( m_pAryOfNetShareInfo->GetSize() == 0)
  428. {
  429. // 记录为空,则仍旧使用原始共享目录;
  430. AfxMessageBox(_T("原共享目录可用大小低于正常容量,请添加新硬盘设置共享!"));
  431. #if USE_FIX_SHARE
  432. _stprintf(lpEnableShareDirectory, _T("%s"), szLocalOrder);
  433. #endif
  434. return TRUE;
  435. }
  436. typedef struct _STNetSharePathInfo__
  437. {
  438. BYTE byPhotType;
  439. BYTE byminCapacity;
  440. BYTE bymaxCapacity;
  441. BYTE byPriority;
  442. CString strBranchId;
  443. CString strSharePath;
  444. }STNetSharePathInfo,*pSTNetSharePathInfo;
  445. BOOL bGetEnable = FALSE;
  446. BYTE byCurPriority = 0;
  447. int nSize = m_pAryOfNetShareInfo->GetSize();
  448. // 如果没找到合适的共享目录,依旧使用原始共享目录或者使用优先级最高的那个;
  449. for ( int i = 0; i < nSize; i++)
  450. {
  451. // 域名是否与本店域名相同;
  452. if( m_pAryOfNetShareInfo->ElementAt(i).ElementAt(1).CompareNoCase(m_lpDomain) != 0 )
  453. continue;
  454. if ( bGetEnable )
  455. {
  456. if ( byCurPriority > atoi(m_pAryOfNetShareInfo->ElementAt(i).ElementAt(6)) )
  457. continue;
  458. }
  459. STNetSharePathInfo tempNetShaerInfo;
  460. // 获取高优先级共享目录,依次取低优先级目录,直到获取可用目录为止;
  461. tempNetShaerInfo.byPhotType = atoi(m_pAryOfNetShareInfo->ElementAt(i).ElementAt(5));
  462. tempNetShaerInfo.byminCapacity = atoi(m_pAryOfNetShareInfo->ElementAt(i).ElementAt(3));
  463. tempNetShaerInfo.bymaxCapacity = atoi(m_pAryOfNetShareInfo->ElementAt(i).ElementAt(4));
  464. tempNetShaerInfo.byPriority = atoi(m_pAryOfNetShareInfo->ElementAt(i).ElementAt(6));
  465. tempNetShaerInfo.strBranchId = m_pAryOfNetShareInfo->ElementAt(i).ElementAt(1);
  466. tempNetShaerInfo.strSharePath = m_pAryOfNetShareInfo->ElementAt(i).ElementAt(2);
  467. if ( tempNetShaerInfo.byPhotType == nPhotoType )
  468. {
  469. //////////////////////////////////////////////////////////////////////////
  470. // 判断目录下是否有订单文件夹;
  471. if (lpDomain && strcmp(lpDomain,"") != 0)
  472. {
  473. _stprintf(szOrderNum,_T("%s\\%s\\%s"),tempNetShaerInfo.strSharePath, lpDomain ,lpOrderNum);
  474. }
  475. else
  476. {
  477. _stprintf(szOrderNum,_T("%s\\%s"),tempNetShaerInfo.strSharePath, lpOrderNum);
  478. }
  479. // 存在且目录容量仍大于mincapacity可用;
  480. if ( PathFileExists(szOrderNum) )
  481. {
  482. if ( !GetDiskSpaceInfo(tempNetShaerInfo.strSharePath,dTotalNum,dFreeNum) )
  483. {
  484. // 获取硬盘大小失败;
  485. continue;
  486. }
  487. if ( dFreeNum > tempNetShaerInfo.byminCapacity )
  488. {
  489. bGetEnable = TRUE;
  490. break;
  491. }
  492. }
  493. // 判断共享路径是否可用;
  494. if ( GetDiskSpaceInfo(tempNetShaerInfo.strSharePath,dTotalNum,dFreeNum) )
  495. {
  496. if ( dFreeNum > tempNetShaerInfo.bymaxCapacity )
  497. {
  498. // 获取最高优先级的共享目录;
  499. if ( byCurPriority < tempNetShaerInfo.byPriority)
  500. {
  501. byCurPriority = tempNetShaerInfo.byPriority;
  502. if (lpDomain && strcmp(lpDomain, "") != 0)
  503. {
  504. _stprintf(szOrderNum, _T("%s\\%s\\%s"), tempNetShaerInfo.strSharePath, lpDomain, lpOrderNum);
  505. }
  506. else
  507. {
  508. _stprintf(szOrderNum, _T("%s\\%s"), tempNetShaerInfo.strSharePath, lpOrderNum);
  509. }
  510. bGetEnable = TRUE;
  511. }
  512. }
  513. }
  514. }
  515. }
  516. //////////////////////////////////////////////////////////////////////////
  517. // 返回结果;
  518. if(bGetEnable)
  519. _stprintf(lpEnableShareDirectory,_T("%s"),szOrderNum);
  520. #if USE_FIX_SHARE
  521. else
  522. _stprintf(lpEnableShareDirectory, _T("%s"), szLocalOrder);
  523. #endif
  524. return bGetEnable;
  525. }
  526. /************************************************************************/
  527. /*
  528. 函数:LoadOrderImages
  529. 描述:加载指定订单的全部共享目录;
  530. 参数:
  531. IN:nPhotoType 相片类型;
  532. IN:lpOrderNum 订单号;
  533. IN:lpDomain 域名;
  534. OUT:AryOfOrderImagePaths 要返回所有共享订单目录下的全部相片路径;
  535. OUT:pAryOfSceneryDirectory 返回所有共享目录订单的目录路径;
  536. 返回:
  537. 示例:
  538. 注意:
  539. */
  540. /************************************************************************/
  541. BOOL CNetShareInfo::LoadOrderImages(IN CONST INT &nPhotoType, IN LPCTSTR lpOrderNum, IN LPCTSTR lpDomain, OUT CStringArray& AryOfOrderImagePaths, OUT CStringArray* pAryOfSceneryDirectory /*= NULL*/)
  542. {
  543. // 若域名非空,判断域名有效性;
  544. if ( lpDomain && strcmp(lpDomain,_T("")) != 0 )
  545. {
  546. if(_tcsstr(lpDomain, _T(".ly.com")) == NULL)
  547. {
  548. // 传入的域名有误;
  549. // printf("传入的域名:%s有误\n", lpDomain);
  550. return FALSE;
  551. }
  552. }
  553. int nSize = 0;
  554. CString strImage = _T("");
  555. AryOfOrderImagePaths.RemoveAll(); // 清除数组;
  556. TCHAR szOrderPath[MAX_PATH] = {0};
  557. TCHAR szShareDirectory[MAX_PATH] = {0};
  558. #if USE_FIX_SHARE
  559. // 2.查找早期的固定的原始共享目录;
  560. GetLoaclShareDirectory(nPhotoType, szShareDirectory);
  561. // printf("szShareDirectory = %s\n", szShareDirectory);
  562. // printf("lpDomain1 = %s\n", lpDomain);
  563. // printf("m_lpDomain2 = %s\n", m_lpDomain);
  564. if ( lpDomain == NULL || lpDomain[0] == '\0')
  565. {
  566. // 分店域名空,代表本店;
  567. //printf("分店域名空,代表本店\n");
  568. _stprintf(szOrderPath, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  569. }
  570. else
  571. {
  572. // 若域名非空,则与本店比较,防止域名仍为本店;
  573. if ( strcmp(lpDomain, m_lpDomain) == 0 )
  574. {
  575. // printf("本店域名\n");
  576. // 本店域名;
  577. _stprintf(szOrderPath, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  578. }
  579. else
  580. {
  581. // printf("分店\n");
  582. _stprintf(szOrderPath, _T("%s\\%s\\%s"), szShareDirectory, lpDomain, lpOrderNum);
  583. }
  584. }
  585. // printf("szOrderPath=%s\n", szOrderPath);
  586. if ( PathFileExists(szOrderPath) )
  587. {
  588. if ( pAryOfSceneryDirectory )
  589. pAryOfSceneryDirectory->Add(szOrderPath);
  590. LoadSpecifiedDirectory(szOrderPath,AryOfOrderImagePaths);
  591. // printf("size1=%d\n", AryOfOrderImagePaths.GetSize());
  592. }
  593. #endif
  594. //////////////////////////////////////////////////////////////////////////
  595. // 查找其他共享目录是否存在订单文件夹;
  596. int i=0;
  597. nSize = m_pAryOfNetShareInfo->GetSize();
  598. for ( i = 0; i < nSize; i++)
  599. {
  600. if ( nPhotoType == atoi(m_pAryOfNetShareInfo->ElementAt(i).ElementAt(5)) )
  601. {
  602. // 逐一加载其他共享目录;
  603. _stprintf(szShareDirectory, _T("%s"), m_pAryOfNetShareInfo->ElementAt(i).ElementAt(2));
  604. if (lpDomain && strcmp(lpDomain,"") != 0 && strcmp(lpDomain, m_lpDomain) != 0)
  605. {
  606. _stprintf(szOrderPath, _T("%s\\%s\\%s"), szShareDirectory, lpDomain, lpOrderNum);
  607. }
  608. else
  609. {
  610. _stprintf(szOrderPath, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  611. }
  612. // 订单文件夹存在;
  613. if ( PathFileExists(szOrderPath))
  614. {
  615. if ( pAryOfSceneryDirectory )
  616. {
  617. pAryOfSceneryDirectory->Add(szOrderPath);
  618. }
  619. LoadSpecifiedDirectory(szOrderPath,AryOfOrderImagePaths);
  620. }
  621. }
  622. }
  623. return TRUE;
  624. }
  625. /************************************************************************/
  626. /*
  627. 函数:LoadSceneryImages
  628. 描述:加载指定订单的景点的全部共享目录;
  629. 参数:
  630. IN:nPhotoType 相片类型;
  631. IN:lpOrderNum 订单号;
  632. IN:lpDomain 域名;
  633. IN:lpScenery 订单景点或套系名;
  634. OUT:AryOfSceneryImagePaths 要返回所有共享订单的景点或套系子目录下的全部相片路径;
  635. OUT:pAryOfSceneryDirectory 返回所有共享目录订单景点或套系的目录路径;
  636. 返回:
  637. 示例:
  638. 注意:
  639. */
  640. /************************************************************************/
  641. BOOL CNetShareInfo::LoadSceneryImages(IN CONST INT &nPhotoType, IN LPCTSTR lpOrderNum, IN LPCTSTR lpDomain, IN LPCTSTR lpScenery, OUT CStringArray& AryOfSceneryImagePaths, OUT CStringArray* pAryOfOrderDirectory /*= NULL*/)
  642. {
  643. // 若域名非空,判断域名有效性;
  644. if ( lpDomain && strcmp(lpDomain,_T("")) != 0 )
  645. {
  646. if(_tcsstr(lpDomain, _T(".ly.com")) == NULL)
  647. {
  648. // 传入的域名有误;
  649. return FALSE;
  650. }
  651. }
  652. int nSize = 0;
  653. CString strImage = _T("");
  654. AryOfSceneryImagePaths.RemoveAll(); // 清除数组;
  655. TCHAR szScenery[MAX_PATH] = {0};
  656. TCHAR szShareDirectory[MAX_PATH] = {0};
  657. #if USE_FIX_SHARE
  658. // 2.查找早期的固定的原始共享目录;
  659. GetLoaclShareDirectory(nPhotoType, szShareDirectory);
  660. if ( lpDomain == NULL || lpDomain[0] == '\0')
  661. {
  662. // 分店域名空,代表本店;
  663. _stprintf(szScenery, _T("%s\\%s\\%s"), szShareDirectory, lpOrderNum, lpScenery);
  664. }
  665. else
  666. {
  667. // 若域名非空,则与本店比较,防止域名仍为本店;
  668. if ( strcmp(lpDomain, m_lpDomain) == 0 )
  669. {
  670. // 本店域名;
  671. _stprintf(szScenery, _T("%s\\%s\\%s"), szShareDirectory, lpOrderNum, lpScenery);
  672. }
  673. else
  674. {
  675. _stprintf(szScenery, _T("%s\\%s\\%s\\%s"), szShareDirectory, lpDomain, lpOrderNum, lpScenery);
  676. }
  677. }
  678. if ( PathFileExists(szScenery) )
  679. {
  680. if ( pAryOfOrderDirectory )
  681. {
  682. pAryOfOrderDirectory->Add(szScenery);
  683. }
  684. LoadSpecifiedDirectory(szScenery,AryOfSceneryImagePaths);
  685. }
  686. #endif
  687. //////////////////////////////////////////////////////////////////////////
  688. // 查找其他共享目录是否存在订单文件夹;
  689. nSize = m_pAryOfNetShareInfo->GetSize();
  690. for ( int i = 0; i < nSize; i++)
  691. {
  692. if ( nPhotoType == atoi(m_pAryOfNetShareInfo->ElementAt(i).ElementAt(5)) )
  693. {
  694. // 逐一加载其他共享目录;
  695. _stprintf(szShareDirectory, _T("%s"), m_pAryOfNetShareInfo->ElementAt(i).ElementAt(2));
  696. if (lpDomain && strcmp(lpDomain,"") != 0)
  697. {
  698. _stprintf(szScenery, _T("%s\\%s\\%s\\%s"), szShareDirectory, lpDomain, lpOrderNum, lpScenery);
  699. }
  700. else
  701. {
  702. _stprintf(szScenery, _T("%s\\%s\\%s"), szShareDirectory, lpOrderNum, lpScenery);
  703. }
  704. // 订单文件夹存在;
  705. if ( PathFileExists(szScenery))
  706. {
  707. if ( pAryOfOrderDirectory )
  708. {
  709. pAryOfOrderDirectory->Add(szScenery);
  710. }
  711. LoadSpecifiedDirectory(szScenery,AryOfSceneryImagePaths);
  712. }
  713. }
  714. }
  715. return TRUE;
  716. }
  717. /************************************************************************/
  718. /*
  719. 函数:LoadSelectedImages
  720. 描述:加载选中的相片,相片名不带景点名套系名,如:"005"
  721. 参数:
  722. IN:nPhotoType 相片类型;
  723. IN:lpOrderNum 订单号;
  724. IN:lpDomain 域名;
  725. IN:AryOfSelectedImages 选中的相片数组;
  726. OUT:AryOfSelectedImagePaths 返回选中的相片的路径;
  727. 返回:
  728. 示例:
  729. 注意:
  730. */
  731. /************************************************************************/
  732. BOOL CNetShareInfo::LoadSelectedImages(IN CONST INT &nPhotoType, IN LPCTSTR lpOrderNum, IN LPCTSTR lpDomain, IN CStringArray& AryOfSelectedImages, OUT CStringArray& AryOfSelectedImagePaths)
  733. {
  734. // 若域名非空,判断域名有效性;
  735. if ( lpDomain && strcmp(lpDomain,_T("")) != 0 )
  736. {
  737. if(_tcsstr(lpDomain, _T(".ly.com")) == NULL)
  738. {
  739. // 传入的域名有误;
  740. return FALSE;
  741. }
  742. }
  743. int nSize = 0;
  744. CString strImage = _T("");
  745. AryOfSelectedImagePaths.RemoveAll(); // 清除数组;
  746. TCHAR szOrderPath[MAX_PATH] = {0};
  747. TCHAR szShareDirectory[MAX_PATH] = {0};
  748. #if USE_FIX_SHARE
  749. // 2.查找早期的固定的原始共享目录;
  750. GetLoaclShareDirectory(nPhotoType, szShareDirectory);
  751. if ( lpDomain == NULL || lpDomain[0] == '\0')
  752. {
  753. // 分店域名空,代表本店;
  754. _stprintf(szOrderPath, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  755. }
  756. else
  757. {
  758. // 若域名非空,则与本店比较,防止域名仍为本店;
  759. if ( strcmp(lpDomain, m_lpDomain) == 0 )
  760. {
  761. // 本店域名;
  762. _stprintf(szOrderPath, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  763. }
  764. else
  765. {
  766. _stprintf(szOrderPath, _T("%s\\%s\\%s"), szShareDirectory, lpDomain, lpOrderNum);
  767. }
  768. }
  769. if ( PathFileExists(szOrderPath) )
  770. {
  771. LoadSelectedImageDirectory(szOrderPath, AryOfSelectedImages, AryOfSelectedImagePaths);
  772. }
  773. #endif
  774. //////////////////////////////////////////////////////////////////////////
  775. // 查找其他共享目录是否存在订单文件夹;
  776. nSize = m_pAryOfNetShareInfo->GetSize();
  777. for ( int i = 0; i < nSize; i++)
  778. {
  779. if ( nPhotoType == atoi(m_pAryOfNetShareInfo->ElementAt(i).ElementAt(5)) )
  780. {
  781. // 逐一加载其他共享目录;
  782. _stprintf(szShareDirectory, _T("%s"), m_pAryOfNetShareInfo->ElementAt(i).ElementAt(2));
  783. if (lpDomain && strcmp(lpDomain,"") != 0)
  784. {
  785. _stprintf(szOrderPath, _T("%s\\%s\\%s"), szShareDirectory, lpDomain, lpOrderNum);
  786. }
  787. else
  788. {
  789. _stprintf(szOrderPath, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  790. }
  791. // 订单文件夹存在;
  792. if ( PathFileExists(szOrderPath))
  793. {
  794. LoadSelectedImageDirectory(szOrderPath, AryOfSelectedImages, AryOfSelectedImagePaths);
  795. }
  796. }
  797. }
  798. return TRUE;
  799. }
  800. /************************************************************************/
  801. /*
  802. 函数:LoadOrderBySelectedImages
  803. 描述:按选中的相片顺序依次加载,相片名不带景点名套系名,如:"005"
  804. 参数:
  805. IN:nPhotoType 相片类型;
  806. IN:lpOrderNum 订单号;
  807. IN:lpDomain 域名;
  808. IN:AryOfSelectedImages 选中的相片数组;
  809. OUT:AryOfSelectedImagePaths 返回选中的相片的路径;
  810. 返回:
  811. 示例:
  812. 注意:
  813. */
  814. /************************************************************************/
  815. BOOL CNetShareInfo::LoadOrderBySelectedImages(
  816. IN CONST INT &nPhotoType,
  817. IN LPCTSTR lpOrderNum,
  818. IN LPCTSTR lpDomain,
  819. IN CStringArray& AryOfSelectedImages,
  820. OUT CStringArray& AryOfSelectedImagePaths)
  821. {
  822. // 若域名非空,判断域名有效性;
  823. if ( lpDomain && strcmp(lpDomain,_T("")) != 0 )
  824. {
  825. // 传入的域名有误;
  826. if(_tcsstr(lpDomain, _T(".ly.com")) == NULL)
  827. return FALSE;
  828. }
  829. CStringArray strAryTemp; // 与AryOfSelectedImagePaths对应的临时储存;
  830. CStringArray strAryTemp1; // 与AryOfSelectedImages对应的临时储存;
  831. strAryTemp1.Copy(AryOfSelectedImages);
  832. int nSize = 0;
  833. CString strImage = _T("");
  834. TCHAR szOrderPath[MAX_PATH] = {0};
  835. TCHAR szShareDirectory[MAX_PATH] = {0};
  836. AryOfSelectedImagePaths.RemoveAll(); // 清除数组;
  837. #if USE_FIX_SHARE
  838. // 2.查找早期的固定的原始共享目录;
  839. GetLoaclShareDirectory(nPhotoType, szShareDirectory);
  840. if ( lpDomain == NULL || lpDomain[0] == '\0')
  841. {
  842. // 分店域名空,代表本店;
  843. _stprintf(szOrderPath, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  844. }
  845. else
  846. {
  847. // 若域名非空,则与本店比较,防止域名仍为本店;
  848. if ( strcmp(lpDomain, m_lpDomain) == 0 )
  849. {
  850. // 本店域名;
  851. _stprintf(szOrderPath, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  852. }
  853. else
  854. {
  855. _stprintf(szOrderPath, _T("%s\\%s\\%s"), szShareDirectory, lpDomain, lpOrderNum);
  856. }
  857. }
  858. if ( PathFileExists(szOrderPath) )
  859. LoadSelectedImageDirectory(szOrderPath, strAryTemp1, strAryTemp);
  860. #endif //#if USE_FIX_SHARE
  861. //////////////////////////////////////////////////////////////////////////
  862. // 查找其他共享目录是否存在订单文件夹;
  863. int i = 0;
  864. nSize = m_pAryOfNetShareInfo->GetSize();
  865. for ( i = 0; i < nSize; i++)
  866. {
  867. if ( nPhotoType == atoi(m_pAryOfNetShareInfo->ElementAt(i).ElementAt(5)) )
  868. {
  869. // 逐一加载其他共享目录;
  870. _stprintf(szShareDirectory, _T("%s"), m_pAryOfNetShareInfo->ElementAt(i).ElementAt(2));
  871. if (lpDomain && strcmp(lpDomain,"") != 0)
  872. _stprintf(szOrderPath, _T("%s\\%s\\%s"), szShareDirectory, lpDomain, lpOrderNum);
  873. else
  874. _stprintf(szOrderPath, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  875. // 订单文件夹存在;
  876. if ( PathFileExists(szOrderPath))
  877. LoadSelectedImageDirectory(szOrderPath, strAryTemp1, strAryTemp);
  878. }
  879. }
  880. // 再按顺序加入AryOfSelectedImagePaths;
  881. for ( /*int*/ i = 0; i < AryOfSelectedImages.GetSize(); i++)
  882. {
  883. // 先查看
  884. // 如果某张相片没有找到对应的文件
  885. BOOL bGetImage = FALSE;
  886. for ( int n = 0; n < strAryTemp.GetSize(); n++ )
  887. {
  888. strImage = strAryTemp.ElementAt(n).Mid( strAryTemp.ElementAt(n).ReverseFind('\\') + 1);
  889. strImage = strImage.Left(strImage.Find('.'));
  890. CString strSelImage = AryOfSelectedImages.ElementAt(i);
  891. if ( strSelImage.CompareNoCase(strImage) == 0 )
  892. {
  893. bGetImage = TRUE;
  894. AryOfSelectedImagePaths.Add(strAryTemp.ElementAt(n));
  895. break;
  896. }
  897. }
  898. }
  899. return TRUE;
  900. }
  901. /************************************************************************/
  902. /*
  903. 函数:LoadSelectedImagesEx
  904. 描述:加载选中的相片名(相片名前带子目录名,如:"内景\005")
  905. 参数:
  906. 返回:
  907. 示例:
  908. 注:这个景点名称必须是订单的一级子目录,不能是二级子目录;
  909. */
  910. /************************************************************************/
  911. BOOL CNetShareInfo::LoadSelectedImagesEx(IN CONST INT &nPhotoType, IN LPCTSTR lpOrderNum, IN LPCTSTR lpDomain, IN CStringArray& AryOfSelectedImages, OUT CStringArray& AryOfSelectedImagePaths)
  912. {
  913. // 若域名非空,判断域名有效性;
  914. if ( lpDomain && strcmp(lpDomain,_T("")) != 0 )
  915. {
  916. if(_tcsstr(lpDomain, _T(".ly.com")) == NULL)
  917. {
  918. // 传入的域名有误;
  919. return FALSE;
  920. }
  921. }
  922. int nSize = 0;
  923. CString strImage = _T("");
  924. AryOfSelectedImagePaths.RemoveAll(); // 清除数组;
  925. TCHAR szOrderPath[MAX_PATH] = {0};
  926. TCHAR szShareDirectory[MAX_PATH] = {0};
  927. #if USE_FIX_SHARE
  928. // 2.查找早期的固定的原始共享目录;
  929. GetLoaclShareDirectory(nPhotoType, szShareDirectory);
  930. if ( lpDomain == NULL || lpDomain[0] == '\0')
  931. {
  932. // 分店域名空,代表本店;
  933. _stprintf(szOrderPath, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  934. }
  935. else
  936. {
  937. // 若域名非空,则与本店比较,防止域名仍为本店;
  938. if ( strcmp(lpDomain, m_lpDomain) == 0 )
  939. {
  940. // 本店域名;
  941. _stprintf(szOrderPath, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  942. }
  943. else
  944. {
  945. _stprintf(szOrderPath, _T("%s\\%s\\%s"), szShareDirectory, lpDomain, lpOrderNum);
  946. }
  947. }
  948. printf("szOrderPath1 = %s\n", szOrderPath);
  949. if ( PathFileExists(szOrderPath) )
  950. {
  951. //LoadSelectedImageDirectory(szOrderPath, AryOfSelectedImages, AryOfSelectedImagePaths);
  952. nSize = AryOfSelectedImages.GetSize();
  953. for ( int i = 0; i < nSize; i++ )
  954. {
  955. strImage.Format(_T("%s\\%s.jpg"), szOrderPath, AryOfSelectedImages.ElementAt(i));
  956. printf("strImage1 = %s\n", strImage);
  957. if ( PathFileExists(strImage) )
  958. {
  959. AryOfSelectedImagePaths.Add(strImage);
  960. }
  961. else
  962. {
  963. //查找所有子目录
  964. CString strFilePath = _T("");
  965. if(FindPhotoFromNo(AryOfSelectedImages.ElementAt(i), szOrderPath, strFilePath))
  966. AryOfSelectedImagePaths.Add(strFilePath);
  967. }
  968. }
  969. }
  970. #endif
  971. //////////////////////////////////////////////////////////////////////////
  972. // 查找其他共享目录是否存在订单文件夹;
  973. int i=0;
  974. /*
  975. for(i=0; i<AryOfSelectedImagePaths.GetSize(); i++)
  976. printf("image path = %s\n", AryOfSelectedImagePaths.ElementAt(i));
  977. */
  978. nSize = m_pAryOfNetShareInfo->GetSize();
  979. for ( i = 0; i < nSize; i++)
  980. {
  981. if ( nPhotoType == atoi(m_pAryOfNetShareInfo->ElementAt(i).ElementAt(5)) )
  982. {
  983. // 逐一加载其他共享目录;
  984. _stprintf(szShareDirectory, _T("%s"), m_pAryOfNetShareInfo->ElementAt(i).ElementAt(2));
  985. if (lpDomain && strcmp(lpDomain,"") != 0)
  986. {
  987. _stprintf(szOrderPath, _T("%s\\%s\\%s"), szShareDirectory, lpDomain, lpOrderNum);
  988. }
  989. else
  990. {
  991. _stprintf(szOrderPath, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  992. }
  993. // printf("szOrderPath2 = %s\n", szOrderPath);
  994. // 订单文件夹存在;
  995. if ( PathFileExists(szOrderPath))
  996. {
  997. //LoadSelectedImageDirectory(szOrderPath, AryOfSelectedImages, AryOfSelectedImagePaths);
  998. for ( int n = 0; n < AryOfSelectedImages.GetSize(); n++)
  999. {
  1000. strImage.Format("%s\\%s.jpg",szOrderPath, AryOfSelectedImages.ElementAt(n));
  1001. // printf("strImage2 = %s\n", strImage);
  1002. if ( PathFileExists(strImage) )
  1003. {
  1004. AryOfSelectedImagePaths.Add(strImage);
  1005. }
  1006. else
  1007. {
  1008. //查找所有子目录
  1009. CString strFilePath = _T("");
  1010. if(FindPhotoFromNo(AryOfSelectedImages.ElementAt(n), szOrderPath, strFilePath))
  1011. AryOfSelectedImagePaths.Add(strFilePath);
  1012. }
  1013. }
  1014. }
  1015. }
  1016. }
  1017. return TRUE;
  1018. }
  1019. /************************************************************************/
  1020. /*
  1021. 函数:GetOrderDirectory
  1022. 描述:获取指定订单的全部共享路径;
  1023. 参数:
  1024. IN:nPhotoType 相片类型;
  1025. IN:lpOrderNum 订单号;
  1026. IN:lpDomain 域名;
  1027. OUT:AryOfOrderDirectory 返回订单的全部共享路径;
  1028. 返回:
  1029. 示例:
  1030. 注意:
  1031. */
  1032. /************************************************************************/
  1033. BOOL CNetShareInfo::GetOrderDirectory(IN CONST INT &nPhotoType, IN LPCTSTR lpOrderNum, IN LPCTSTR lpDomain, OUT CStringArray &AryOfOrderDirectory)
  1034. {
  1035. // 若域名非空,判断域名有效性;
  1036. if ( lpDomain && strcmp(lpDomain,_T("")) != 0 )
  1037. {
  1038. if(_tcsstr(lpDomain, _T(".ly.com")) == NULL)
  1039. {
  1040. // 传入的域名有误;
  1041. return FALSE;
  1042. }
  1043. }
  1044. int nSize = 0;
  1045. CString strImage = _T("");
  1046. AryOfOrderDirectory.RemoveAll();
  1047. TCHAR szOrderPath[MAX_PATH] = {0};
  1048. TCHAR szShareDirectory[MAX_PATH] = {0};
  1049. #if USE_FIX_SHARE
  1050. // 2.查找早期的固定的原始共享目录;
  1051. GetLoaclShareDirectory(nPhotoType, szShareDirectory);
  1052. if ( lpDomain == NULL || lpDomain[0] == '\0')
  1053. {
  1054. // 分店域名空,代表本店;
  1055. _stprintf(szOrderPath, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  1056. }
  1057. else
  1058. {
  1059. // 若域名非空,则与本店比较,防止域名仍为本店;
  1060. if ( strcmp(lpDomain, m_lpDomain) == 0 )
  1061. {
  1062. // 本店域名;
  1063. _stprintf(szOrderPath, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  1064. }
  1065. else
  1066. {
  1067. _stprintf(szOrderPath, _T("%s\\%s\\%s"), szShareDirectory, lpDomain, lpOrderNum);
  1068. }
  1069. }
  1070. if ( PathFileExists(szOrderPath) )
  1071. {
  1072. AryOfOrderDirectory.Add(szOrderPath);
  1073. }
  1074. #endif
  1075. //////////////////////////////////////////////////////////////////////////
  1076. // 查找其他共享目录是否存在订单文件夹;
  1077. nSize = m_pAryOfNetShareInfo->GetSize();
  1078. for ( int i = 0; i < nSize; i++)
  1079. {
  1080. if ( nPhotoType == atoi(m_pAryOfNetShareInfo->ElementAt(i).ElementAt(5)) )
  1081. {
  1082. // 逐一加载其他共享目录;
  1083. _stprintf(szShareDirectory, _T("%s"), m_pAryOfNetShareInfo->ElementAt(i).ElementAt(2));
  1084. if (lpDomain && strcmp(lpDomain,"") != 0)
  1085. {
  1086. _stprintf(szOrderPath, _T("%s\\%s\\%s"), szShareDirectory, lpDomain, lpOrderNum);
  1087. }
  1088. else
  1089. {
  1090. _stprintf(szOrderPath, _T("%s\\%s"), szShareDirectory, lpOrderNum);
  1091. }
  1092. // 订单文件夹存在;
  1093. if ( PathFileExists(szOrderPath))
  1094. {
  1095. AryOfOrderDirectory.Add(szOrderPath);
  1096. }
  1097. }
  1098. }
  1099. return TRUE;
  1100. }
  1101. /************************************************************************/
  1102. /*
  1103. 函数:GetSceneryDirectory
  1104. 描述:获取指定订单景点或套系名的全部共享路径;
  1105. 参数:
  1106. IN:nPhotoType 相片类型;
  1107. IN:lpOrderNum 订单号;
  1108. IN:lpScenery 景点或套系名;
  1109. IN:lpDomain 域名;
  1110. OUT:AryOfOrderDirectory 返回订单景点或套系名的全部共享路径;
  1111. 返回:
  1112. 示例:
  1113. 注意:
  1114. */
  1115. /************************************************************************/
  1116. BOOL CNetShareInfo::GetSceneryDirectory(IN CONST INT &nPhotoType, IN LPCTSTR lpOrderNum, IN LPCTSTR lpScenery, IN LPCTSTR lpDomain, OUT CStringArray &AryOfSceneryDirectory)
  1117. {
  1118. // 若域名非空,判断域名有效性;
  1119. if ( lpDomain && strcmp(lpDomain,_T("")) != 0 )
  1120. {
  1121. if(_tcsstr(lpDomain, _T(".ly.com")) == NULL)
  1122. {
  1123. // 传入的域名有误;
  1124. return FALSE;
  1125. }
  1126. }
  1127. int nSize = 0;
  1128. CString strImage = _T("");
  1129. AryOfSceneryDirectory.RemoveAll();
  1130. TCHAR szOrderPath[MAX_PATH] = {0};
  1131. TCHAR szShareDirectory[MAX_PATH] = {0};
  1132. #if USE_FIX_SHARE
  1133. // 2.查找早期的固定的原始共享目录;
  1134. GetLoaclShareDirectory(nPhotoType, szShareDirectory);
  1135. if ( lpDomain == NULL || lpDomain[0] == '\0')
  1136. {
  1137. // 分店域名空,代表本店;
  1138. _stprintf(szOrderPath, _T("%s\\%s\\%s"), szShareDirectory, lpOrderNum, lpScenery);
  1139. }
  1140. else
  1141. {
  1142. // 若域名非空,则与本店比较,防止域名仍为本店;
  1143. if ( strcmp(lpDomain, m_lpDomain) == 0 )
  1144. {
  1145. // 本店域名;
  1146. _stprintf(szOrderPath, _T("%s\\%s\\%s"), szShareDirectory, lpOrderNum, lpScenery);
  1147. }
  1148. else
  1149. {
  1150. _stprintf(szOrderPath, _T("%s\\%s\\%s\\%s"), szShareDirectory, lpDomain, lpOrderNum, lpScenery);
  1151. }
  1152. }
  1153. if ( PathFileExists(szOrderPath) )
  1154. {
  1155. AryOfSceneryDirectory.Add(szOrderPath);
  1156. }
  1157. #endif
  1158. //////////////////////////////////////////////////////////////////////////
  1159. // 查找其他共享目录是否存在订单文件夹;
  1160. nSize = m_pAryOfNetShareInfo->GetSize();
  1161. for ( int i = 0; i < nSize; i++)
  1162. {
  1163. if ( nPhotoType == atoi(m_pAryOfNetShareInfo->ElementAt(i).ElementAt(5)) )
  1164. {
  1165. // 逐一加载其他共享目录;
  1166. _stprintf(szShareDirectory, _T("%s"), m_pAryOfNetShareInfo->ElementAt(i).ElementAt(2));
  1167. if (lpDomain && strcmp(lpDomain,"") != 0)
  1168. {
  1169. _stprintf(szOrderPath, _T("%s\\%s\\%s\\%s"), szShareDirectory, lpDomain, lpOrderNum, lpScenery);
  1170. }
  1171. else
  1172. {
  1173. _stprintf(szOrderPath, _T("%s\\%s\\%s"), szShareDirectory, lpOrderNum, lpScenery);
  1174. }
  1175. // 订单文件夹存在;
  1176. if ( PathFileExists(szOrderPath))
  1177. {
  1178. AryOfSceneryDirectory.Add(szOrderPath);
  1179. }
  1180. }
  1181. }
  1182. return TRUE;
  1183. }
  1184. /************************************************************************/
  1185. /*
  1186. 函数:LoadSpecifiedDirectories
  1187. 描述:加载指定目录集下的全部相片;
  1188. 参数:
  1189. IN:AryOfDirectories 指定目录集合;
  1190. IN:AryOfRetval 返回目录集合下的所有相片路径;
  1191. 返回:
  1192. 示例:
  1193. 注意:
  1194. */
  1195. /************************************************************************/
  1196. BOOL CNetShareInfo::LoadSpecifiedDirectories(IN CStringArray &AryOfDirectories, IN CStringArray &AryOfRetval)
  1197. {
  1198. CString str = _T("");
  1199. int nSize = AryOfDirectories.GetSize();
  1200. for ( int i = 0; i < nSize; i++ )
  1201. {
  1202. str = AryOfDirectories.ElementAt(i);
  1203. LoadSpecifiedDirectory(str,AryOfRetval);
  1204. }
  1205. return TRUE;
  1206. }
  1207. //
  1208. /************************************************************************/
  1209. /*
  1210. 函数:FindPhotoFromNo
  1211. 描述:查找订单目录下的相片是否存在;
  1212. 参数:
  1213. IN CString& strName, 相片名
  1214. IN LPCTSTR strDir 目录
  1215. 返回:
  1216. 示例:
  1217. 注意:
  1218. */
  1219. /************************************************************************/
  1220. BOOL CNetShareInfo::FindPhotoFromNo(IN CString& strName, IN LPCTSTR lpDir, OUT CString& strFilePath)
  1221. {
  1222. BOOL bFind = FALSE;
  1223. if(strName == _T("") || lpDir == NULL)
  1224. return bFind;
  1225. using namespace helper_coffs;
  1226. ffsco o;
  1227. o.dirs(1);
  1228. o.find(lpDir, LPCSTR("*.*"));
  1229. ffsco::typeT cfs;
  1230. ffsco::typeT::iterator it;
  1231. cfs = o.co_file();
  1232. // printf("strName = %s\n", strName);
  1233. CString strFile = _T("");
  1234. for (it = cfs.begin(); cfs.end() != it; it++)
  1235. {
  1236. // 去除目录级文件;
  1237. // 去除ok文件;
  1238. // 去除modifytime文件;
  1239. // 去除s+m缩略图;
  1240. strFile = it->c_str();
  1241. strFile.MakeLower();
  1242. if ( strFile.Find('.') == -1)
  1243. {
  1244. it = cfs.erase(it);
  1245. continue;
  1246. }
  1247. CString str = strFile.Mid( strFile.ReverseFind('\\') + 1 );
  1248. if ( str.Find('.') == -1)
  1249. {
  1250. it = cfs.erase(it);
  1251. continue;
  1252. }
  1253. // 如果在相片前或后加修饰,都会有bug,最佳做法是缩略图放在另一子文件夹中;\
  1254. // 产生的bug:使用原名导入相片时,相片名可能第一个字母就是s或m;
  1255. if ( str.GetAt(0) == 's' || str.GetAt(0) == 'm')
  1256. {
  1257. it = cfs.erase(it);
  1258. continue;
  1259. }
  1260. // printf("str = %s, strName = %s\n", str, strName + _T(".jpg"));
  1261. if(str.CompareNoCase(strName + _T(".jpg")) == 0)
  1262. bFind = TRUE;
  1263. else if(str.CompareNoCase(strName + _T(".jpeg")) == 0)
  1264. bFind = TRUE;
  1265. else if(str.CompareNoCase(strName + _T(".cr2")) == 0)
  1266. bFind = TRUE;
  1267. else if(str.CompareNoCase(strName + _T(".raw")) == 0)
  1268. bFind = TRUE;
  1269. else if(str.CompareNoCase(strName + _T(".nef")) == 0)
  1270. bFind = TRUE;
  1271. if(bFind == TRUE)
  1272. {
  1273. // printf("it = %s, strName = %s\n", it->c_str(), strName);
  1274. strFilePath = it->c_str();
  1275. return bFind;
  1276. }
  1277. }
  1278. return bFind;
  1279. }