RADataProvider.m 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108
  1. //
  2. // RADataProvider.m
  3. // Apex And Drivers
  4. //
  5. // Created by Jack on 2018/6/1.
  6. // Copyright © 2018年 USAI. All rights reserved.
  7. //
  8. #import "RADataProvider.h"
  9. #import "RASingleton.h"
  10. #import "config.h"
  11. #import "RAUtils.h"
  12. //#import "NetworkUtils.h"
  13. //#import "AESCrypt.h"
  14. //#import "RAOfflineHandler.h"
  15. //#import <CoreLocation/CoreLocation.h>
  16. //
  17. //
  18. @implementation RADataProvider
  19. //+ (void)SavePanel:(NSString*)panel_setting completionHandler:(resultHandler)result
  20. //{
  21. // if(fake_data)
  22. // {
  23. // result([OfflineDataProvider save_panel]);
  24. // }
  25. // else
  26. // {
  27. // [OnlineDataProvider request_savepanel:panel_setting completionHandler:result];
  28. //
  29. // }
  30. //}
  31. + (void)Signup : (NSString*) user password:(NSString*) password completionHandler:(resultHandler)result
  32. {
  33. // bool boffline = RASingleton.sharedInstance.offline;
  34. if(fake_data&& false)
  35. {
  36. result([OfflineDataProvider request_signup]);
  37. }
  38. else
  39. {
  40. [OnlineDataProvider request_signup:user password:password completionHandler:result];
  41. }
  42. }
  43. + (void)Login: (NSString*) user password:(NSString*) password completionHandler:(resultHandler)result
  44. {
  45. // bool boffline = RASingleton.sharedInstance.offline;
  46. if(fake_data&& false)
  47. {
  48. result([OfflineDataProvider request_login]);
  49. }
  50. else
  51. {
  52. [OnlineDataProvider request_login:user password:password completionHandler:result];
  53. }
  54. }
  55. + (void)RetrievePassword : (NSString*)user email:(NSString*)email completionHandler:(resultHandler)result
  56. {
  57. if(fake_data)
  58. {
  59. result([OfflineDataProvider request_retrievepassword]);
  60. }
  61. else
  62. {
  63. [OnlineDataProvider request_retrievepassword:user email:email completionHandler:result];
  64. }
  65. }
  66. + (void)ChangePassword : (NSString*) newpassword completionHandler:(resultHandler)result
  67. {
  68. if(fake_data)
  69. {
  70. result([OfflineDataProvider request_changepassword]);
  71. }
  72. else
  73. {
  74. [OnlineDataProvider request_changepassword:newpassword completionHandler:result];
  75. }
  76. }
  77. + (void)Logout :(resultHandler)result
  78. {
  79. // bool boffline = RASingleton.sharedInstance.offline;
  80. if(fake_data)
  81. {
  82. result([OfflineDataProvider request_logout]);
  83. }
  84. else
  85. {
  86. [OnlineDataProvider request_logout:result];
  87. }
  88. }
  89. +(void)SaveEditor:(NSMutableDictionary*)params completionHandler:(resultHandler)result
  90. {
  91. if(fake_data)
  92. {
  93. [OfflineDataProvider request_save_editor:params completionHandler:result];
  94. }
  95. else
  96. {
  97. [OnlineDataProvider request_save_editor:params completionHandler:result];
  98. }
  99. }
  100. + (void)DownloadFile:(NSMutableDictionary *)params url:(NSString *)url completionHandler:(resultHandler)result;
  101. {
  102. if(fake_data)
  103. {
  104. [OfflineDataProvider request_fastdownload:nil url:url completionHandler:result];
  105. }
  106. else
  107. {
  108. [OnlineDataProvider request_fastdownload:nil url:url completionHandler:result];
  109. }
  110. }
  111. + (void)LoadHome :(resultHandler)result
  112. {
  113. // bool boffline = RASingleton.sharedInstance.offline;
  114. if(fake_data)
  115. {
  116. [OfflineDataProvider request_home:result];
  117. }
  118. else
  119. {
  120. [OnlineDataProvider request_home:nil completionHandler:result];
  121. }
  122. }
  123. + (void)Search:(NSMutableDictionary *)params completionHandler:(resultHandler)result
  124. {
  125. if(fake_data)
  126. {
  127. result([OfflineDataProvider request_result:params]);
  128. }
  129. else
  130. {
  131. [OnlineDataProvider request_result:params completionHandler:result];
  132. }
  133. }
  134. + (void) TabDetail: (NSMutableDictionary *) params completionHandler:(resultHandler)result
  135. {
  136. if(fake_data)
  137. {
  138. result([OfflineDataProvider request_detail:params]);
  139. }
  140. else
  141. {
  142. [OnlineDataProvider request_detail:params completionHandler:result];
  143. }
  144. }
  145. +(void)request_editor:(NSString*) request_url params:(NSMutableDictionary*)params completionHandler:(resultHandler)result
  146. {
  147. if(fake_data )
  148. {
  149. [OfflineDataProvider request_editor:params completionHandler:result];
  150. }
  151. else
  152. {
  153. [OnlineDataProvider request_detail:params completionHandler:result];
  154. }
  155. }
  156. +(void)request_commoneditor_partialrefresh: (NSMutableDictionary*)params url:(NSString*)url completionHandler:(resultHandler)result
  157. {
  158. if(fake_data)
  159. {
  160. [OfflineDataProvider request_commoneditor_partialrefresh:params completionHandler:result];
  161. }
  162. else
  163. {
  164. [OnlineDataProvider request_commoneditor_partialrefresh:params url:url completionHandler:result];
  165. }
  166. }
  167. #pragma mark utils
  168. + (bool)saveDetailParameters:(NSMutableDictionary *)param forModule:(NSString *)module withName:(NSString *)name actions:(NSString*)actions
  169. {
  170. if (param==nil || module==nil) {
  171. return @{
  172. @"result" : @RESULT_FALSE,
  173. @"err_msg" : @"Sorry, cannot save search, please contact admin."
  174. };
  175. }
  176. NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
  177. NSData* json_user =[NSData dataWithContentsOfFile:[docDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_%@.json",@"saved_detail",RASingleton.sharedInstance.user]]];
  178. NSMutableArray* array;
  179. if(json_user==nil)
  180. {
  181. array = [NSMutableArray new];
  182. }
  183. else
  184. {
  185. array = [[RAConvertor data2arr:json_user] mutableCopy] ;
  186. }
  187. if(array.count>=20)
  188. {
  189. // [array removeObjectAtIndex:19];
  190. [array removeLastObject];
  191. }
  192. NSMutableDictionary* item = [NSMutableDictionary new];
  193. if(RASingleton.sharedInstance.companylist.count>0)
  194. {
  195. param[@"company"]= RASingleton.sharedInstance.companylist[RASingleton.sharedInstance.companyid][@"id"];
  196. item[@"company_name"]= RASingleton.sharedInstance.companylist[RASingleton.sharedInstance.companyid][@"name"];
  197. }
  198. item[@"module"]=module;
  199. item[@"name"]=name;
  200. item[@"actions"]=actions;
  201. item[@"param"]=param;
  202. item[@"current_date"]=[RAUtils current_date_time];
  203. [array insertObject:item atIndex:0];
  204. json_user =[RAConvertor arr2data:array];
  205. bool result =[json_user writeToFile:[docDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_%@.json",@"saved_detail",RASingleton.sharedInstance.user]] atomically:true];
  206. return result;
  207. }
  208. + (bool)saveSearchParameters:(NSMutableDictionary *)param forModule:(NSString *)module withName:(NSString *)name
  209. {
  210. if (param==nil || module==nil) {
  211. return false;
  212. // return @{
  213. // @"result" : @RESULT_FALSE,
  214. // @"err_msg" : @"Sorry, cannot save search, please contact admin."
  215. // };
  216. }
  217. NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
  218. NSData* json_user =[NSData dataWithContentsOfFile:[docDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_%@.json",@"saved_search",RASingleton.sharedInstance.user]]];
  219. NSMutableArray* array;
  220. if(json_user==nil)
  221. {
  222. array = [NSMutableArray new];
  223. }
  224. else
  225. {
  226. array = [[RAConvertor data2arr:json_user] mutableCopy] ;
  227. }
  228. if(array.count>=20)
  229. {
  230. // [array removeObjectAtIndex:19];
  231. [array removeLastObject];
  232. }
  233. NSMutableDictionary* item = [NSMutableDictionary new];
  234. if(RASingleton.sharedInstance.companylist.count>0)
  235. {
  236. param[@"company"]= RASingleton.sharedInstance.companylist[RASingleton.sharedInstance.companyid][@"id"];
  237. item[@"company_name"]= RASingleton.sharedInstance.companylist[RASingleton.sharedInstance.companyid][@"name"];
  238. }
  239. item[@"module"]=module;
  240. item[@"name"]=name;
  241. item[@"param"]=param;
  242. item[@"current_date"]=[RAUtils current_date_time];
  243. [array insertObject:item atIndex:0];
  244. json_user =[RAConvertor arr2data:array];
  245. bool result =[json_user writeToFile:[docDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_%@.json",@"saved_search",RASingleton.sharedInstance.user]] atomically:true];
  246. return result;
  247. }
  248. +(NSData*) updateFieldsjson:(NSString*) type subtype:(NSString *) subtype
  249. {
  250. NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
  251. NSData* json_user =[NSData dataWithContentsOfFile:[docDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_%@_%@.json",type,subtype,RASingleton.sharedInstance.user]]];
  252. // NSData* json=[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@_%@",type,subtype] ofType:@"json" ]]; ;
  253. if(json_user!=nil)
  254. {
  255. // NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:nil] ;
  256. NSDictionary* dict = RASingleton.sharedInstance.fields[type][subtype];
  257. NSMutableDictionary* dict_user = [[NSJSONSerialization JSONObjectWithData:json_user options:NSJSONReadingMutableLeaves error:nil] mutableCopy] ;
  258. if([dict_user[@"ver"] doubleValue]<[dict[@"ver"] doubleValue])
  259. {
  260. // dict_user[@"ver"] =dict[@"ver"];
  261. // NSArray * arr_add=dict[@"add"];
  262. //
  263. // NSMutableArray* user_show=[dict_user[@"show"] mutableCopy];
  264. // NSMutableArray* user_hide=[dict_user[@"hide"] mutableCopy];
  265. // for(int i=0;i<arr_add.count;i++)
  266. // {
  267. // [user_hide addObject:arr_add[i]];
  268. //
  269. // }
  270. // NSArray * arr_remove=dict[@"remove"];
  271. // for(int i=0;i<arr_remove.count;i++)
  272. // {
  273. // [user_hide removeObject:arr_remove[i]];
  274. // [user_show removeObject:arr_remove[i]];
  275. //
  276. // }
  277. // dict_user[@"show"] = user_show;
  278. // dict_user[@"user_hide"] = user_hide;
  279. json_user =[RAConvertor dict2data:dict];
  280. bool result =[json_user writeToFile:[docDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_%@_%@.json",type,subtype,RASingleton.sharedInstance.user]] atomically:true];
  281. }
  282. return json_user;
  283. }
  284. else
  285. {
  286. NSData* json = [RAConvertor dict2data:RASingleton.sharedInstance.fields[type][subtype] ];
  287. // json=[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"FunctionPanel" ofType:@"json" ]];
  288. bool result =[json writeToFile:[docDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_%@_%@.json",type,subtype,RASingleton.sharedInstance.user]] atomically:true];
  289. // NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:nil] ;
  290. return json;
  291. }
  292. }
  293. +(NSData*) updateFunctionPanel
  294. {
  295. NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
  296. NSData* json_user =[NSData dataWithContentsOfFile:[docDir stringByAppendingPathComponent:[NSString stringWithFormat:@"FunctionPanel_%@.json",RASingleton.sharedInstance.user]]];
  297. NSData* json ;
  298. if(json_user!=nil)
  299. {
  300. // json=[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"FunctionPanel" ofType:@"json" ]];
  301. // NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:nil] ;
  302. NSDictionary* dict = RASingleton.sharedInstance.functionPanel;
  303. NSMutableDictionary* dict_user = [[NSJSONSerialization JSONObjectWithData:json_user options:NSJSONReadingMutableLeaves error:nil] mutableCopy] ;
  304. if([dict_user[@"ver"] doubleValue]<[dict[@"ver"] doubleValue])
  305. {
  306. dict_user = [dict mutableCopy];
  307. // dict_user[@"ver"] =dict[@"ver"];
  308. // NSArray * arr_add=dict[@"add"];
  309. //
  310. // NSMutableArray* user_deactive=[dict_user[@"deactive_functions"] mutableCopy];
  311. // NSMutableArray* user_active=[dict_user[@"active_functions"] mutableCopy];
  312. // for(int i=0;i<arr_add.count;i++)
  313. // {
  314. // [user_deactive addObject:arr_add[i]];
  315. //
  316. // }
  317. // NSArray * arr_remove=dict[@"remove"];
  318. // for(int i=0;i<arr_remove.count;i++)
  319. // {
  320. // [user_deactive removeObject:arr_remove[i]];
  321. // [user_active removeObject:arr_remove[i]];
  322. //
  323. // }
  324. // dict_user[@"deactive_functions"] = user_deactive;
  325. // dict_user[@"active_functions"] = user_active;
  326. json_user =[RAConvertor dict2data:dict_user];
  327. bool result =[json_user writeToFile:[docDir stringByAppendingPathComponent:[NSString stringWithFormat:@"FunctionPanel_%@.json",RASingleton.sharedInstance.user]] atomically:true];
  328. }
  329. return json_user;
  330. }
  331. else
  332. {
  333. json=[RAConvertor dict2data:RASingleton.sharedInstance.functionPanel];
  334. // json=[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"FunctionPanel" ofType:@"json" ]];
  335. bool result =[json writeToFile:[docDir stringByAppendingPathComponent:[NSString stringWithFormat:@"FunctionPanel_%@.json",RASingleton.sharedInstance.user]] atomically:true];
  336. NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:nil] ;
  337. return json;
  338. }
  339. }
  340. +(DetailContent*) json2DetailContent:(NSMutableDictionary*)jsobj
  341. {
  342. DetailContent * detailContent = [[DetailContent alloc] init];
  343. NSMutableArray* segments = [[NSMutableArray alloc] init];
  344. detailContent.segments = segments;
  345. // if(![NetworkUtils IsNetworkAvailable])
  346. // {
  347. // detailContent.result_code = RESULT_NET_NOTAVAILABLE;
  348. // return detailContent;
  349. // }
  350. if([jsobj[@"result"]intValue]== RESULT_NET_NOTAVAILABLE)
  351. {
  352. detailContent.result_code = RESULT_NET_NOTAVAILABLE;
  353. detailContent.err_msg = NSLocalizedString(@"net_not_available", nil);
  354. return detailContent;
  355. }
  356. if (jsobj==nil)
  357. {
  358. DebugLog(@"json is wrong");
  359. detailContent.result_code = RESULT_NET_ERROR;
  360. return detailContent;
  361. }
  362. //------------hack detail html 字体大小-----------
  363. NSString *str = [RAConvertor dict2string:jsobj];
  364. str=[str stringByReplacingOccurrencesOfString:@"<table " withString:@"<table style=font-size:12px "];
  365. DebugLog(@"hack string: %@",str);
  366. //------- hack-----------
  367. jsobj=[[RAConvertor string2dict:str] mutableCopy];
  368. int result = [[jsobj valueForKey:@"result"] intValue];
  369. // if(result== AP_SESSION_EXPIRED)
  370. // {
  371. // [self Authorize:appDelegate.user password:appDelegate.password];
  372. // json=[self get_json:URL_REQUEST_RECORDS parameters:params file:nil];
  373. // if (json==nil)
  374. // {
  375. // DebugLog(@"json is wrong");
  376. // detailContent.result_code = RESULT_NET_ERROR;
  377. // return detailContent;
  378. // }
  379. // jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  380. // result = [[jsobj valueForKey:@"result"] intValue];
  381. //
  382. // }
  383. if(result!=RESULT_TRUE)
  384. {
  385. DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
  386. detailContent.result_code = result;
  387. detailContent.err_msg = jsobj[@"err_msg"];
  388. return detailContent;
  389. }
  390. int count =[[jsobj valueForKey:@"count"] intValue];
  391. detailContent.result_code = RESULT_TRUE;
  392. if(count==0)
  393. {
  394. return detailContent;
  395. }
  396. for(int i=0;i<count;i++)
  397. {
  398. NSDictionary* segment = [jsobj objectForKey:[NSString stringWithFormat:@"group%d",i]];
  399. [segments addObject:segment];
  400. }
  401. // NSDictionary* objrecords = [jsobj objectForKey:@"records"];
  402. detailContent.originContent = jsobj;
  403. return detailContent;
  404. }
  405. //
  406. //+(NSMutableDictionary*) prepare_additional_params:(NSMutableDictionary* ) params
  407. //{
  408. //
  409. // if (params == nil) {
  410. // params = [NSMutableDictionary dictionary];
  411. // }
  412. //
  413. // NSString *user = params[@"user"];
  414. // if (!user) {
  415. // user = RASingleton.sharedInstance.user;
  416. // if (user) {
  417. // params[@"user"] = user;
  418. // }
  419. // }
  420. //
  421. // NSString *password = params[@"password"];
  422. // if (!password) {
  423. // password = RASingleton.sharedInstance.password;
  424. // if (password) {
  425. // params[@"password"] = password;
  426. // }
  427. // }
  428. //
  429. // [params setObject:@"iOS" forKey:@"platform"];
  430. //
  431. // NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];
  432. // NSString* short_version =[infoDict objectForKey:@"CFBundleShortVersionString"];
  433. // [params setValue:short_version forKey:@"app_short_ver"];
  434. //
  435. // NSString *localeLanguageCode = [[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode];
  436. // [params setValue:localeLanguageCode forKey:@"language"];
  437. //
  438. //#if TARGET_IPHONE_SIMULATOR//模拟器
  439. // [params setValue:@"simulator_uuid" forKey:@"deviceid"];
  440. //#elif TARGET_OS_IPHONE//真机
  441. // UIDevice * dev = [UIDevice currentDevice];
  442. // NSUUID* uuid =dev.identifierForVendor;
  443. // [params setValue:uuid.UUIDString forKey:@"deviceid"];
  444. //#endif
  445. //
  446. // if(RASingleton.sharedInstance.companylist.count>0)
  447. // params[@"company_id"]= RASingleton.sharedInstance.companylist[RASingleton.sharedInstance.companyid][@"id"];
  448. // return params;
  449. //}
  450. //
  451. //+(NSData*)get_json : (NSString*) url parameters:(NSMutableDictionary *) params file:(NSString *) file //delegate:(id < NSURLConnectionDelegate >)delegate
  452. //{
  453. //
  454. //
  455. //
  456. // params = [self prepare_addtional_params:params];
  457. //
  458. // return [NetworkUtils get_json:url parameters:params file:file err_recorder:URL_ERR_LOG result_handler:^NSMutableDictionary *(NSMutableDictionary *jsobj) {
  459. // int result=[[jsobj valueForKey:@"result"] intValue];
  460. //
  461. // switch (result) {
  462. // case -9:
  463. // case 0:
  464. // [jsobj setValue:MSG_USERAUTH_ERROR forKey:@"err_msg"];
  465. // break;
  466. // case 1:
  467. // [jsobj setValue:MSG_ERROR forKey:@"err_msg"];
  468. // break;
  469. // case RESULT_TRUE:
  470. // [jsobj setValue:MSG_SUCCESS forKey:@"err_msg"];
  471. // break;
  472. // case 9:
  473. // [jsobj setValue:[jsobj valueForKey:@"msg"] forKey:@"err_msg"];
  474. // break;
  475. // case RESULT_TIMEOUT:
  476. // [jsobj setValue:MSG_TIMEOUT forKey:@"err_msg"];
  477. // break;
  478. // default: {
  479. // NSString *msg = [jsobj valueForKey:@"msg"];
  480. // if (msg.length == 0) {
  481. // [jsobj setValue:MSG_ERROR forKey:@"err_msg"];
  482. // } else {
  483. // [jsobj setValue:msg forKey:@"err_msg"];
  484. // }
  485. // }
  486. // break;
  487. // }
  488. //
  489. // return jsobj;
  490. // } decrypt_handler:^NSMutableDictionary *(NSMutableDictionary *jsobj) {
  491. //
  492. // NSString* base64str = jsobj[@"str"];
  493. // NSString* decryptstr=[AESCrypt AES128Decrypt:base64str key:@"Usai2010"];
  494. // jsobj=[[RAConvertor string2dict:decryptstr] mutableCopy];
  495. // return jsobj;
  496. // }];
  497. //
  498. //
  499. // /*
  500. //
  501. //
  502. //
  503. // */
  504. // return nil;
  505. //}
  506. //
  507. //+ (NSDictionary *)handleJsonData:(NSData *)jsonData {
  508. //
  509. // if (jsonData==nil)
  510. // {
  511. // return @{
  512. // @"result" : @RESULT_NET_ERROR,
  513. // @"err_msg" : MSG_NET_ERROR
  514. // };
  515. // }
  516. //
  517. // NSDictionary *json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
  518. //
  519. // return json;
  520. //
  521. //}
  522. //
  523. //+ (NSDictionary *)requestLogin:(NSString *)user password:(NSString *)pwd {
  524. //
  525. // NSMutableDictionary *params = [NSMutableDictionary dictionary];
  526. //
  527. // user = [[RASingleton sharedInstance] encryptString:user];
  528. // pwd = [[RASingleton sharedInstance] encryptString:pwd];
  529. //
  530. // [params setObject:user forKey:@"name"];
  531. // [params setObject:pwd forKey:@"password"];
  532. //
  533. // NSData* json=[self get_json:URL_LOGIN parameters:params file:nil];
  534. //
  535. // return [self handleJsonData:json];
  536. //}
  537. //
  538. //+ (NSDictionary *)requestRetrievePassword : (NSString*)user email:(NSString*)email
  539. //{
  540. //
  541. //// if(![NetworkUtils IsNetworkAvailable])
  542. //// return RESULT_NET_NOTAVAILABLE;
  543. // NSMutableDictionary * params = [[NSMutableDictionary alloc] init];
  544. // [params setValue:user forKey:@"name"];
  545. // [params setValue:email forKey:@"email"];
  546. // [params setValue:@"Retrieve Password" forKey:@"module_name"];
  547. // [params setValue:@"handset_search" forKey:@"action"];
  548. //
  549. // NSData* json=[self get_json:URL_RETRIVE_PASSWORD parameters:params file:nil];
  550. //// if (json==nil)
  551. //// {
  552. //// DebugLog(@"json is wrong");
  553. //// return RESULT_NET_ERROR;
  554. //// }
  555. ////
  556. //// NSError *error=nil;
  557. //// NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  558. //// if(jsobj)
  559. //// {
  560. //// int result = [[jsobj valueForKey:@"result"] intValue];
  561. //// if(result!=AP_USER_AUTH)
  562. //// {
  563. //// DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
  564. //// return RESULT_FALSE;
  565. ////
  566. //// }
  567. //// return RESULT_TRUE;
  568. ////
  569. //// }
  570. //// return RESULT_NET_ERROR;
  571. //
  572. // return [self handleJsonData:json];
  573. //}
  574. //
  575. //+ (NSDictionary *)requestOrderList {
  576. //
  577. // if (RASingleton.sharedInstance.offline) {
  578. // NSDictionary *result = [[RAOfflineHandler defaultHandler] requestOfflineHome];
  579. // if (result) {
  580. // return result;
  581. // }
  582. // }
  583. //
  584. // NSMutableDictionary *params = [NSMutableDictionary dictionary];
  585. //
  586. //
  587. // NSData* json=[self get_json:URL_HOME parameters:params file:nil];
  588. //
  589. //
  590. //
  591. // NSMutableDictionary* ret= [RAConvertor data2dict:json].mutableCopy;
  592. //
  593. //
  594. // NSString* path = [[RAUtils appCacheDirectory] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_orderList.json",RASingleton.sharedInstance.user]];
  595. // if(ret!=nil&&[ret[@"result"] intValue]!=RESULT_NET_ERROR&&[ret[@"result"] intValue]!=RESULT_NET_NOTAVAILABLE)
  596. // {
  597. //
  598. // [ret writeToFile:path atomically:YES];
  599. // return ret;
  600. // }
  601. // else
  602. // {
  603. // NSFileManager* fm = [NSFileManager defaultManager];
  604. // BOOL isDir = NO;
  605. // if ([fm fileExistsAtPath:path isDirectory:&isDir])
  606. // {
  607. // ret=[NSDictionary dictionaryWithContentsOfFile:path].mutableCopy;
  608. // ret[@"iscache"]=@(true);
  609. // return ret;
  610. // }
  611. // else
  612. // {
  613. // return [self handleJsonData:json];
  614. // }
  615. //
  616. //
  617. // }
  618. //
  619. //}
  620. //
  621. //+ (NSDictionary *)requestMoreOrder:(NSInteger)orderType offset:(NSInteger)offset limit:(NSInteger)limit filter:(NSDictionary *)filter {
  622. //
  623. // NSMutableDictionary *params = [NSMutableDictionary dictionary];
  624. // [params setObject:@(orderType) forKey:@"type"];
  625. // [params setObject:@(offset) forKey:@"offset"];
  626. // [params setObject:@(limit) forKey:@"limit"];
  627. // if (filter) {
  628. // [params setObject:[self dic2String:filter] forKey:@"filter"];
  629. // }
  630. //
  631. // NSData* json=[self get_json:URL_MORE_ORDER parameters:params file:nil];
  632. //
  633. // NSMutableDictionary* ret= [RAConvertor data2dict:json].mutableCopy;
  634. //
  635. //
  636. // NSString* path = [[RAUtils appCacheDirectory] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_moreorder%@.json",RASingleton.sharedInstance.user,@(orderType)]];
  637. // if(offset==0&&ret!=nil&&[ret[@"result"] intValue]!=RESULT_NET_ERROR&&[ret[@"result"] intValue]!=RESULT_NET_NOTAVAILABLE)
  638. // {
  639. //
  640. // [ret writeToFile:path atomically:YES];
  641. // return ret;
  642. // }
  643. // else
  644. // {
  645. // NSFileManager* fm = [NSFileManager defaultManager];
  646. // BOOL isDir = NO;
  647. // if ([fm fileExistsAtPath:path isDirectory:&isDir]&&offset==0)
  648. // {
  649. // ret=[NSDictionary dictionaryWithContentsOfFile:path].mutableCopy;
  650. // ret[@"iscache"]=@(true);
  651. // return ret;
  652. // }
  653. // else
  654. // {
  655. // return [self handleJsonData:json];
  656. // }
  657. //
  658. //
  659. // }
  660. //
  661. // return [self handleJsonData:json];
  662. //}
  663. //
  664. //+ (NSDictionary *)requestOrderDetail:(NSString *)orderID type:(NSInteger)type type2:(NSString *)type2 statusNo:(NSString *)statusNo {
  665. //
  666. // if (RASingleton.sharedInstance.offline) {
  667. // NSDictionary *result = [[RAOfflineHandler defaultHandler] requestOfflineDetailForOrder:orderID withOrderType:type];
  668. // if (result) {
  669. // return result;
  670. // }
  671. // }
  672. //
  673. // NSMutableDictionary *params = [NSMutableDictionary dictionary];
  674. // if (orderID) {
  675. // [params setObject:orderID forKey:@"orderID"];
  676. // }
  677. // [params setObject:@(type) forKey:@"orderType"];
  678. // if (type2) {
  679. // [params setObject:type2 forKey:@"orderType2"];
  680. // }
  681. // if (statusNo) {
  682. // [params setObject:statusNo forKey:@"statusNo"];
  683. // }
  684. //
  685. // NSData* json=[self get_json:URL_DETAIL parameters:params file:nil];
  686. //
  687. // NSMutableDictionary* ret= [RAConvertor data2dict:json].mutableCopy;
  688. //
  689. //
  690. //
  691. // NSString* path = [[RAUtils appCacheDirectory] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_detail_%@.json",RASingleton.sharedInstance.user,orderID]];
  692. // if(ret!=nil&&[ret[@"result"] intValue]!=RESULT_NET_ERROR&&[ret[@"result"] intValue]!=RESULT_NET_NOTAVAILABLE)
  693. // {
  694. //
  695. // [ret writeToFile:path atomically:YES];
  696. // return ret;
  697. // }
  698. // else
  699. // {
  700. // NSFileManager* fm = [NSFileManager defaultManager];
  701. // BOOL isDir = NO;
  702. // if ([fm fileExistsAtPath:path isDirectory:&isDir])
  703. // {
  704. // ret=[NSDictionary dictionaryWithContentsOfFile:path].mutableCopy;
  705. // ret[@"iscache"]=@(true);
  706. // return ret;
  707. // }
  708. // else
  709. // {
  710. // return [self handleJsonData:json];
  711. // }
  712. //
  713. //
  714. // }
  715. //
  716. //#ifdef OFFLINE_MODE
  717. //
  718. // NSNumber *finish = [[RAOfflineHandler defaultHandler] lastActionIndexForOrder:orderID];
  719. // detail = [[RAOfflineHandler defaultHandler] filtrateActionFromDetail:[detail mutableCopy] withFinishActions:finish];
  720. //
  721. //#endif
  722. //
  723. //// return detail;
  724. //}
  725. //
  726. //+ (NSDictionary *)requestUpdateOrder:(NSString *)orderID driverAction:(NSInteger)action index:(NSInteger)idx {
  727. //
  728. // if (RASingleton.sharedInstance.offline) {
  729. // NSDictionary *result = [[RAOfflineHandler defaultHandler] requestOfflineEditOrder:orderID withAction:idx];
  730. // if (result) {
  731. // return result;
  732. // }
  733. // }
  734. //
  735. //// return [self loadFakeData:@"fake_order_edit.json"];
  736. // NSMutableDictionary *params = [NSMutableDictionary dictionary];
  737. // if (orderID) {
  738. // [params setObject:orderID forKey:@"orderID"];
  739. // }
  740. // [params setObject:@(action) forKey:@"action"];
  741. //
  742. //
  743. // NSData* json=[self get_json:URL_UPDATE parameters:params file:nil];
  744. //
  745. // NSMutableDictionary* ret= [RAConvertor data2dict:json].mutableCopy;
  746. //
  747. //
  748. //
  749. // NSString* path = [[RAUtils appCacheDirectory] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_%@_%@.json",RASingleton.sharedInstance.user,@(action),orderID]];
  750. // if(ret!=nil&&[ret[@"result"] intValue]!=RESULT_NET_ERROR&&[ret[@"result"] intValue]!=RESULT_NET_NOTAVAILABLE)
  751. // {
  752. //
  753. // [ret writeToFile:path atomically:YES];
  754. // return ret;
  755. // }
  756. // else
  757. // {
  758. // NSFileManager* fm = [NSFileManager defaultManager];
  759. // BOOL isDir = NO;
  760. // if ([fm fileExistsAtPath:path isDirectory:&isDir])
  761. // {
  762. // ret=[NSDictionary dictionaryWithContentsOfFile:path].mutableCopy;
  763. // ret[@"iscache"]=@(true);
  764. // return ret;
  765. // }
  766. // else
  767. // {
  768. // return [self handleJsonData:json];
  769. // }
  770. //
  771. //
  772. // }
  773. //}
  774. //
  775. //+ (NSDictionary *)reportOrder:(NSString *)orderId type:(NSInteger)type actionType:(NSInteger)action actionIndex:(NSInteger)actionIndex actionName:(NSString *)actionName toURL:(NSString *)url withParams:(NSMutableDictionary *)params {
  776. //
  777. // if (RASingleton.sharedInstance.offline) {
  778. // NSDictionary *result = [[RAOfflineHandler defaultHandler] reportOrder:orderId type:type actionType:action actionIndex:actionIndex actionName:actionName withURL:url params:params];
  779. // if (result) {
  780. // return result;
  781. // }
  782. // }
  783. //
  784. // NSData* json=[self get_json:url parameters:params file:nil];
  785. //
  786. // NSDictionary *dic = [self handleJsonData:json];
  787. //
  788. // int result = [[dic objectForKey:@"result"] intValue];
  789. // if (result == RESULT_TRUE) {
  790. // [[RAOfflineHandler defaultHandler] updateLastAction:actionIndex forOrder:orderId];
  791. // }
  792. //
  793. // return dic;
  794. //}
  795. //
  796. //+ (NSDictionary *)offlineSubmitOrder:(NSString *)orderId action:(NSInteger)actionId title:(NSString *)title index:(NSInteger)idx withParams:(NSDictionary *)params photos:(NSArray<RAEditImageBaseModel *> *)photos cacheDir:(NSString *)dir {
  797. //
  798. // return [[RAOfflineHandler defaultHandler] updateOrder:orderId action:actionId title:title index:idx withParams:params photos:photos cacheDir:dir];
  799. //}
  800. //
  801. //+ (NSDictionary *)submitEditOrder:(NSString *)orderId actionIndex:(NSInteger)actionIndex withParams:(NSMutableDictionary *)params {
  802. //
  803. // if (![params isKindOfClass:[NSMutableDictionary class]]) {
  804. // params = [params mutableCopy];
  805. // }
  806. //
  807. // NSData* json=[self get_json:URL_SUBMIT parameters:params file:nil];
  808. //
  809. // NSDictionary *dic = [self handleJsonData:json];
  810. //
  811. // int result = [[dic objectForKey:@"result"] intValue];
  812. // if (result == RESULT_TRUE) {
  813. // [[RAOfflineHandler defaultHandler] updateLastAction:actionIndex forOrder:orderId];
  814. // }
  815. //
  816. // return dic;
  817. //}
  818. //
  819. //+ (NSDictionary *)upload:(NSString*)url parameters:(NSMutableDictionary *)params file:(NSString*)file_path {
  820. //
  821. //
  822. // if (![params isKindOfClass:[NSMutableDictionary class]]) {
  823. // params = [params mutableCopy];
  824. // }
  825. // NSData* json=[self get_json:url parameters:params file:file_path];
  826. //
  827. // return [self handleJsonData:json];
  828. //}
  829. //
  830. //+ (NSDictionary *)uploadFile:(NSString *)filePath parameters:(NSMutableDictionary *)params {
  831. // return [self upload:URL_UPLOAD parameters:params file:filePath];
  832. //}
  833. //
  834. //+ (NSDictionary *)reportLastLocation:(CLLocation *)location forOrderID:(NSString *)orderID locationID:(NSString *)locationId {
  835. //
  836. // NSMutableDictionary *params = [NSMutableDictionary dictionary];
  837. //
  838. // NSString *latLon = nil;
  839. // if (location) {
  840. // latLon = [NSString stringWithFormat:@"%f,%f",location.coordinate.latitude,location.coordinate.longitude];
  841. //
  842. // } else {
  843. // latLon = @"-999,-999";
  844. // }
  845. //
  846. // if (latLon) {
  847. // [params setObject:latLon forKey:@"location"];
  848. // }
  849. //
  850. // if (orderID) {
  851. // [params setObject:orderID forKey:@"orderID"];
  852. // }
  853. //
  854. // if (location) {
  855. // [params setObject:@(location.speed) forKey:@"speed"];
  856. // [params setObject:@([location.timestamp timeIntervalSince1970]) forKey:@"timestamp"];
  857. // }
  858. //
  859. // if (locationId) {
  860. // [params setObject:locationId forKey:@"locationId"];
  861. // }
  862. //
  863. // NSString * lastLocationDateTime = RASingleton.sharedInstance.lastLocationDateTime;
  864. // if(lastLocationDateTime.length>0)
  865. // {
  866. // [params setObject:lastLocationDateTime forKey:@"lastLocationDateTime"];
  867. // }
  868. // [params setObject:@(0) forKey:@"userOption"]; // 0 表示同意发送位置
  869. //
  870. // NSData* json=[self get_json:URL_REPORT_LOCATION parameters:params file:nil];
  871. //
  872. // return [self handleJsonData:json];
  873. //}
  874. //
  875. //+ (NSDictionary *)reportLocationWithUserReason:(NSString *)reason forOrder:(NSString *)orderID locationID:(NSString *)locationId {
  876. //
  877. // NSMutableDictionary *params = [NSMutableDictionary dictionary];
  878. // if (reason) {
  879. // [params setObject:reason forKey:@"reason"];
  880. // }
  881. // if (orderID) {
  882. // [params setObject:orderID forKey:@"orderID"];
  883. // }
  884. //
  885. // if (locationId) {
  886. // [params setObject:locationId forKey:@"locationId"];
  887. // }
  888. //
  889. // [params setObject:@(1) forKey:@"userOption"]; // 1 表示不同意发送位置
  890. //
  891. // NSData* json=[self get_json:URL_REPORT_LOCATION parameters:params file:nil];
  892. //
  893. // return [self handleJsonData:json];
  894. //}
  895. //
  896. //+ (NSDictionary *)bindNotificationToken:(NSString *)token {
  897. //
  898. // if (token.length == 0) {
  899. // return @{@"result" : @(0)};
  900. // }
  901. //
  902. // NSMutableDictionary *params = [NSMutableDictionary dictionary];
  903. // [params setObject:token forKey:@"token"];
  904. //
  905. // NSData* json=[self get_json:URL_REPORT_TOKEN parameters:params file:nil];
  906. //
  907. // return [self handleJsonData:json];
  908. //}
  909. //
  910. //+ (NSDictionary *)logout {
  911. //
  912. // NSMutableDictionary *params = [NSMutableDictionary dictionary];
  913. //
  914. // NSData* json=[self get_json:URL_LOGOUT parameters:params file:nil];
  915. //
  916. // return [self handleJsonData:json];
  917. //}
  918. //
  919. //+ (NSDictionary *)loadFakeData:(NSString *)fileName {
  920. //
  921. // NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:nil];
  922. // NSData *jsonData = [NSData dataWithContentsOfFile:path];
  923. // return [self handleJsonData:jsonData];
  924. //}
  925. //
  926. ////+ (NSDictionary *)fakeError {
  927. ////
  928. ////
  929. //// return @{
  930. //// @"container_photo_0": @"12346798",
  931. //// @"container_photo_1": @"78945612",
  932. //// @"result": @2
  933. //// };
  934. ////}
  935. //
  936. //+ (NSDictionary *)updateDriverAvailable:(BOOL)available {
  937. //
  938. // NSMutableDictionary *params = [NSMutableDictionary dictionary];
  939. //
  940. // int a = available ? 1 : 0;
  941. // [params setObject:@(a) forKey:@"available"];
  942. //
  943. // NSData* json=[self get_json:URL_DRIVER_AVAILABLE parameters:params file:nil];
  944. //
  945. // return [self handleJsonData:json];
  946. //}
  947. //
  948. //+ (NSDictionary *)loadDataFromBundleFile:(NSString *)fileName {
  949. // return [self loadFakeData:fileName];
  950. //}
  951. //
  952. //+ (NSDictionary *)requestChange:(NSString *)old password:(NSString *)pass {
  953. //
  954. // NSMutableDictionary *params = [NSMutableDictionary dictionary];
  955. // if (old) {
  956. // [params setObject:old forKey:@"oldPassword"];
  957. // }
  958. // if (pass) {
  959. // [params setObject:pass forKey:@"newPassword"];
  960. // }
  961. //
  962. // NSData* json=[self get_json:URL_CHANGE_PASSWORD parameters:params file:nil];
  963. //
  964. // return [self handleJsonData:json];
  965. //}
  966. //
  967. //+ (NSDictionary *)requestMessage:(NSInteger)offset limit:(NSInteger)limit unread:(BOOL)unread {
  968. //
  969. // NSMutableDictionary *params = [NSMutableDictionary dictionary];
  970. //
  971. // [params setObject:@(offset) forKey:@"offset"];
  972. // [params setObject:@(limit) forKey:@"limit"];
  973. // [params setObject:@(unread) forKey:@"unread"];
  974. //
  975. // NSData* json=[self get_json:URL_MESSAGE_LIST parameters:params file:nil];
  976. //
  977. // return [self handleJsonData:json];
  978. //}
  979. //
  980. //+ (void)downloadOfflineData {
  981. // [[RAOfflineHandler defaultHandler] downloadOfflineData];
  982. //}
  983. //
  984. //#pragma mark - Utils
  985. //
  986. //+ (NSString *)dic2String:(NSDictionary *)dic {
  987. // if (!dic) {
  988. // return nil;
  989. // }
  990. //
  991. // NSData *data = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];
  992. // NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
  993. // return str;
  994. //}
  995. @end