RANetwork.m 56 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392
  1. //
  2. // RANetwork.m
  3. // Apex Mobile
  4. //
  5. // Created by Ray on 31/01/2018.
  6. // Copyright © 2018 United Software Applications, Inc. All rights reserved.
  7. //
  8. #import "config.h"
  9. #import "RAUtils.h"
  10. #import "AESCrypt.h"
  11. #import "RANetwork.h"
  12. #import "AppDelegate.h"
  13. #import "RAConvertor.h"
  14. @implementation RANetwork
  15. +(NSData*)get_json : (NSString*) url parameters:(NSMutableDictionary *) params file:(NSString *) file //delegate:(id < NSURLConnectionDelegate >)delegate
  16. {
  17. params = [self prepare_addtional_params:params];
  18. return [super get_json:url parameters:params file:file err_recorder:URL_ERR_LOG result_handler:^NSMutableDictionary *(NSMutableDictionary *jsobj) {
  19. int result=[[jsobj valueForKey:@"result"] intValue];
  20. // UIApplication * app = [UIApplication sharedApplication];
  21. // AppDelegate *appDelegate = (AppDelegate *)[app delegate];
  22. switch (result) {
  23. case 0:
  24. [jsobj setValue:MSG_USERAUTH_ERROR forKey:@"err_msg"];
  25. break;
  26. case 1:
  27. [jsobj setValue:MSG_ERROR forKey:@"err_msg"];
  28. break;
  29. case RESULT_TRUE:
  30. [jsobj setValue:MSG_SUCCESS forKey:@"err_msg"];
  31. break;
  32. // case 8:
  33. // [jsobj setValue:[jsobj valueForKey:@"msg"] forKey:@"err_msg"];
  34. // break;
  35. case 9:
  36. [jsobj setValue:[jsobj valueForKey:@"msg"] forKey:@"err_msg"];
  37. break;
  38. case RESULT_TIMEOUT:
  39. [jsobj setValue:MSG_TIMEOUT forKey:@"err_msg"];
  40. break;
  41. default:
  42. [jsobj setValue:MSG_ERROR forKey:@"err_msg"];
  43. break;
  44. }
  45. // if([appDelegate.build intValue]< [[jsobj valueForKey:@"min_ver"]intValue])
  46. // {
  47. // [jsobj setValue:@"9" forKey:@"result"];
  48. // [jsobj setValue:MSG_VER_LOW forKey:@"err_msg"];
  49. // }
  50. return jsobj;
  51. } decrypt_handler:^NSMutableDictionary *(NSMutableDictionary *jsobj) {
  52. NSString* base64str = jsobj[@"str"];
  53. NSString* decryptstr=[AESCrypt AES128Decrypt:base64str key:@"Usai2010"];
  54. jsobj=[[RAConvertor string2dict:decryptstr] mutableCopy];
  55. return jsobj;
  56. }];
  57. /*
  58. */
  59. return nil;
  60. }
  61. +(NSMutableDictionary*) prepare_addtional_params:(NSMutableDictionary* ) params
  62. {
  63. if (params == nil) {
  64. params = [NSMutableDictionary dictionary];
  65. }
  66. AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
  67. // if(appDelegate.user!=nil && params[@"user"] == nil)
  68. // [params setValue:[AESCrypt AES128Encrypt:appDelegate.user key:@"Usai2010"] forKey:@"user"];
  69. // if(appDelegate.password!=nil&& params[@"pwd"] == nil)
  70. // [params setValue:[AESCrypt AES128Encrypt:appDelegate.password key:@"Usai2010"] forKey:@"pwd"];
  71. if(appDelegate.user!=nil && params[@"user"] == nil)
  72. [params setValue:appDelegate.user forKey:@"user"];
  73. if(appDelegate.password!=nil&& params[@"pwd"] == nil)
  74. [params setValue:appDelegate.password forKey:@"pwd"];
  75. [params setValue:appDelegate.build forKey:@"app_ver"];
  76. NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];
  77. NSString* short_version =[infoDict objectForKey:@"CFBundleShortVersionString"];
  78. [params setValue:short_version forKey:@"app_short_ver"];
  79. #if TARGET_IPHONE_SIMULATOR//模拟器
  80. [params setValue:@"simulator_uuid" forKey:@"deviceid"];
  81. #elif TARGET_OS_IPHONE//真机
  82. UIDevice * dev = [UIDevice currentDevice];
  83. NSUUID* uuid =dev.identifierForVendor;
  84. [params setValue:uuid.UUIDString forKey:@"deviceid"];
  85. #endif
  86. return params;
  87. }
  88. +(int) ChangePassword : (NSString*) newpass user:(NSString*) user oldpass:(NSString*) oldpass
  89. {
  90. if(![NetworkUtils IsNetworkAvailable])
  91. return RESULT_NET_NOTAVAILABLE;
  92. AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  93. NSMutableDictionary * params = [[NSMutableDictionary alloc] init];
  94. [params setValue:user forKey:@"user"];
  95. [params setValue:oldpass forKey:@"oldpass"];
  96. [params setValue:newpass forKey:@"newpass"];
  97. [params setValue:@"Change Password" forKey:@"module_name"];
  98. [params setValue:@"handset_search" forKey:@"action"];
  99. // [params setValue:appDelegate.sessionid forKey:@"sessionid"];
  100. NSData* json=[self get_json:URL_RETRIEVE_PASS parameters:params file:nil];
  101. if (json==nil)
  102. {
  103. DebugLog(@"json is wrong");
  104. return RESULT_NET_ERROR;
  105. }
  106. NSError *error=nil;
  107. NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  108. if(jsobj)
  109. {
  110. int result = [[jsobj valueForKey:@"result"] intValue];
  111. if(result== AP_SESSION_EXPIRED)
  112. {
  113. [self Authorize:appDelegate.user password:appDelegate.password];
  114. json=[self get_json:URL_RETRIEVE_PASS parameters:params file:nil];
  115. if (json==nil)
  116. {
  117. DebugLog(@"json is wrong");
  118. return RESULT_NET_ERROR;
  119. }
  120. jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  121. result = [[jsobj valueForKey:@"result"] intValue];
  122. }
  123. if(result!=AP_USER_AUTH)
  124. {
  125. DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
  126. return RESULT_FALSE;
  127. }
  128. return RESULT_TRUE;
  129. }
  130. return RESULT_NET_ERROR;
  131. }
  132. +(int) RetrievePassword : (NSString*) user email:(NSString*) email
  133. {
  134. if(![NetworkUtils IsNetworkAvailable])
  135. return RESULT_NET_NOTAVAILABLE;
  136. NSMutableDictionary * params = [[NSMutableDictionary alloc] init];
  137. [params setValue:user forKey:@"user"];
  138. [params setValue:email forKey:@"email"];
  139. [params setValue:@"Retrieve Password" forKey:@"module_name"];
  140. [params setValue:@"handset_search" forKey:@"action"];
  141. NSData* json=[self get_json:URL_RETRIEVE_PASS parameters:params file:nil];
  142. if (json==nil)
  143. {
  144. DebugLog(@"json is wrong");
  145. return RESULT_NET_ERROR;
  146. }
  147. NSError *error=nil;
  148. NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  149. if(jsobj)
  150. {
  151. int result = [[jsobj valueForKey:@"result"] intValue];
  152. if(result!=AP_USER_AUTH)
  153. {
  154. DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
  155. return RESULT_FALSE;
  156. }
  157. return RESULT_TRUE;
  158. }
  159. return RESULT_NET_ERROR;
  160. }
  161. +(int)parse_authinfo : (NSData *) json user:(NSString*) user password:(NSString*) password
  162. {
  163. DebugLog(@"parse_authinfo");
  164. NSError *error=nil;
  165. sqlite3 *db =[ApexMobileDB get_db];
  166. NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  167. if(jsobj)
  168. {
  169. UIApplication * app = [UIApplication sharedApplication];
  170. AppDelegate *appDelegate = (AppDelegate *)[app delegate];
  171. int result = [[jsobj valueForKey:@"result"] intValue];
  172. if(result!=AP_USER_AUTH)
  173. {
  174. DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
  175. [appDelegate Logout];
  176. return RESULT_FALSE;
  177. }
  178. NSDictionary* objheader = [jsobj objectForKey:@"header"];
  179. NSString* required_ver=[objheader objectForKey:@"client_ver"] ;
  180. DebugLog(@"required_ver=%@ ",required_ver);
  181. NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];
  182. NSString* versionNum =[infoDict valueForKey:@"CFBundleVersion"];
  183. versionNum = [NSString stringWithFormat:@"A%@",versionNum];
  184. int ibadge = [[objheader valueForKey:@"badge"] intValue];
  185. // if([ibadge isEqual:[NSNull null]])
  186. // strbadge=@"0";
  187. // if(ibadge==nil)
  188. // ibadge=@"0";
  189. // if([strbadge isEqualToString:@"null"])
  190. // strbadge=@"0";
  191. app.applicationIconBadgeNumber = ibadge;//[strbadge intValue];
  192. BOOL bigger = [versionNum compare:required_ver] ;
  193. if(!bigger)
  194. return RESULT_VER_LOW;
  195. // appDelegate.sessionid = [objheader valueForKey:@"sessionid"];
  196. appDelegate.user = user;
  197. appDelegate.password = password;
  198. // DebugLog(@"sessionid=%@ ",appDelegate.sessionid);
  199. if ([[objheader valueForKey:@"update"] boolValue]==false)
  200. {
  201. // no update on the server;
  202. return RESULT_TRUE;
  203. }
  204. int Auth_InfoVer = [[objheader valueForKey:@"ver"] intValue];
  205. // NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
  206. // [defaults removeObjectForKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
  207. // [defaults setInteger:Auth_InfoVer forKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
  208. [ApexMobileDB execSql:@"delete from auth_ver;" db:db];
  209. [ApexMobileDB execSql:[NSString stringWithFormat:@"insert into auth_ver (ver) values (%d);",Auth_InfoVer] db:db];
  210. // [defaults synchronize];
  211. NSDictionary* objfuncs = [jsobj objectForKey:@"functions"];
  212. NSArray* keys= [objfuncs allKeys];
  213. [ApexMobileDB execSql: [NSString stringWithFormat: @"update fields_info set abandon = 1 where user ='%@'",user] db:db];
  214. [ApexMobileDB execSql: [NSString stringWithFormat: @"update actions_info set abandon = 1 where user ='%@'",user] db:db];
  215. char* sql = "insert into fields_info(name,aname,field_type,function_name,behavior,priority,show,user) values(?,?,?,?,?,?,?,?)";
  216. char* sql1 = "insert into actions_info(name,function_name,user,priority) values(?,?,?,?)";
  217. sqlite3_stmt *stmt;
  218. sqlite3_stmt *stmt1;
  219. sqlite3_prepare_v2(db, sql, -1, &stmt, nil);
  220. sqlite3_prepare_v2(db, sql1, -1, &stmt1, nil);
  221. // db.beginTransaction();
  222. for(int i=0;i<keys.count;i++)
  223. {
  224. NSString* func_name = keys[i];
  225. NSDictionary *objfun = [objfuncs objectForKey:func_name];
  226. int behavior, priority = 999;
  227. int show =1;
  228. NSDictionary *objbehavior = [objfun objectForKey:@"search"];
  229. NSArray* keysbehavior= [objbehavior allKeys];
  230. behavior = BEHAVIOR_SEARCH;
  231. for(int j=0;j<keysbehavior.count;j++)
  232. {
  233. NSString* field = keysbehavior[j];
  234. NSDictionary* field_info = [objbehavior objectForKey:field];
  235. NSString* field_name =[field_info valueForKey:@"name"] ;
  236. NSString* field_type = [field_info valueForKey:@"type"] ;
  237. NSString* alias_name = [field_info valueForKey:@"alias"] ;
  238. priority = [[field_info valueForKey:@"priority"] intValue];
  239. if(priority==999)
  240. show=0;
  241. else
  242. show=1;
  243. int id = [ApexMobileDB get_recordid:db table:@"fields_info" where:[NSString stringWithFormat:@"name='%@' and behavior=%d and function_name='%@' and user='%@'",field_name,behavior,func_name,user]];
  244. if(id>=0)
  245. [ApexMobileDB execSql:[NSString stringWithFormat:@"update fields_info set abandon = 0 where _id=%d",id] db:db];
  246. else
  247. {
  248. sqlite3_bind_text(stmt, 1, [field_name UTF8String], -1, NULL);
  249. sqlite3_bind_text(stmt, 2, [alias_name UTF8String], -1, NULL);
  250. sqlite3_bind_text(stmt, 3, [field_type UTF8String], -1, NULL);
  251. sqlite3_bind_text(stmt, 4, [func_name UTF8String], -1, NULL);
  252. sqlite3_bind_int(stmt, 5, behavior);
  253. sqlite3_bind_int(stmt, 6, priority);
  254. sqlite3_bind_int(stmt, 7, show);
  255. sqlite3_bind_text(stmt, 8, [user UTF8String], -1, NULL);
  256. if (sqlite3_step(stmt) != SQLITE_DONE)
  257. {
  258. fprintf(stderr, "Error: insert search failed, error infomation: %s\n", sqlite3_errmsg(db));
  259. }
  260. sqlite3_reset(stmt);
  261. }
  262. }
  263. objbehavior = [objfun objectForKey:@"result"];
  264. NSArray* keysresult= [objbehavior allKeys];
  265. behavior = BEHAVIOR_RESULT;
  266. for(int j=0;j<keysresult.count;j++)
  267. {
  268. NSString* field = keysresult[j];
  269. NSDictionary* field_info = [objbehavior objectForKey:field];
  270. NSString* field_name =[field_info valueForKey:@"name"] ;
  271. NSString* field_type = [field_info valueForKey:@"type"] ;
  272. NSString* alias_name = [field_info valueForKey:@"alias"] ;
  273. priority = [[field_info valueForKey:@"priority"] intValue];
  274. if(priority==999)
  275. show=0;
  276. else
  277. show=1;
  278. int id = [ApexMobileDB get_recordid:db table:@"fields_info" where:[NSString stringWithFormat:@"name='%@' and behavior=%d and function_name='%@' and user='%@'",field_name,behavior,func_name,user]];
  279. if(id>=0)
  280. [ApexMobileDB execSql:[NSString stringWithFormat:@"update fields_info set abandon = 0 where _id=%d",id] db:db];
  281. else
  282. {
  283. sqlite3_bind_text(stmt, 1, [field_name UTF8String], -1, NULL);
  284. sqlite3_bind_text(stmt, 2, [alias_name UTF8String], -1, NULL);
  285. sqlite3_bind_text(stmt, 3, [field_type UTF8String], -1, NULL);
  286. sqlite3_bind_text(stmt, 4, [func_name UTF8String], -1, NULL);
  287. sqlite3_bind_int(stmt, 5, behavior);
  288. sqlite3_bind_int(stmt, 6, priority);
  289. sqlite3_bind_int(stmt, 7, show);
  290. sqlite3_bind_text(stmt, 8, [user UTF8String], -1, NULL);
  291. if (sqlite3_step(stmt) != SQLITE_DONE)
  292. {
  293. fprintf(stderr, "Error: insert result failed, error infomation: %s\n", sqlite3_errmsg(db));
  294. }
  295. sqlite3_reset(stmt);
  296. }
  297. }
  298. objbehavior = [objfun objectForKey:@"actions"];
  299. NSArray* keysactions= [objbehavior allKeys];
  300. behavior = BEHAVIOR_SEARCH;
  301. for(int j=0;j<keysactions.count;j++)
  302. {
  303. NSString* actionname = keysactions[j];
  304. int action_priority = [[objbehavior valueForKey:actionname] intValue];
  305. int id = [ApexMobileDB get_recordid:db table:@"actions_info" where:[NSString stringWithFormat:@"name='%@' and function_name='%@' and user='%@'",actionname,func_name,user]];
  306. if(id>=0)
  307. [ApexMobileDB execSql:[NSString stringWithFormat:@"update actions_info set abandon = 0 , priority=%d where _id=%d",action_priority,id] db:db];
  308. else
  309. {
  310. sqlite3_bind_text(stmt1, 1, [actionname UTF8String], -1, NULL);
  311. sqlite3_bind_text(stmt1, 2, [func_name UTF8String], -1, NULL);
  312. sqlite3_bind_text(stmt1, 3, [user UTF8String], -1, NULL);
  313. sqlite3_bind_int(stmt1, 4, action_priority);
  314. if (sqlite3_step(stmt1) != SQLITE_DONE)
  315. {
  316. fprintf(stderr, "Error: insert action_info failed, error infomation: %s\n", sqlite3_errmsg(db));
  317. }
  318. sqlite3_reset(stmt1);
  319. }
  320. }
  321. }
  322. [ApexMobileDB execSql:@"delete from fields_info where abandon = 1" db:db];
  323. [ApexMobileDB execSql:@"delete from actions_info where abandon = 1" db:db];
  324. sqlite3_finalize(stmt);
  325. sqlite3_finalize(stmt1);
  326. sqlite3_close(db);
  327. /*
  328. db.setTransactionSuccessful();
  329. db.endTransaction();
  330. */
  331. return RESULT_TRUE;
  332. }
  333. // NSDictionary *weatherInfo = [jsobj objectForKey:@"weatherinfo"];
  334. // txtView.text = [NSString stringWithFormat:@"今天是 %@ %@ %@ 的天气状况是:%@ %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]];
  335. // DebugLog(@"weatherInfo字典里面的内容为--》%@", weatherDic );
  336. return RESULT_USERAUTH_ERROR;
  337. }
  338. +(DetailContent*) get_detailcontent: (NSMutableDictionary *) params
  339. {
  340. DebugLog(@"get_detailcontent");
  341. DetailContent * detailContent = [[DetailContent alloc] init];
  342. NSMutableArray* segments = [[NSMutableArray alloc] init];
  343. detailContent.segments = segments;
  344. if(![NetworkUtils IsNetworkAvailable])
  345. {
  346. detailContent.result_code = RESULT_NET_NOTAVAILABLE;
  347. return detailContent;
  348. }
  349. AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  350. [params setValue:@"handset_search" forKey:@"action"];
  351. // [params setValue:appDelegate.sessionid forKey:@"sessionid"];
  352. NSData* json=[self get_json:URL_REQUEST_RECORDS parameters:params file:nil];
  353. if (json==nil)
  354. {
  355. DebugLog(@"json is wrong");
  356. detailContent.result_code = RESULT_NET_ERROR;
  357. return detailContent;
  358. }
  359. NSError *error=nil;
  360. NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  361. if(jsobj)
  362. {
  363. int result = [[jsobj valueForKey:@"result"] intValue];
  364. if(result== AP_SESSION_EXPIRED)
  365. {
  366. [self Authorize:appDelegate.user password:appDelegate.password];
  367. json=[self get_json:URL_REQUEST_RECORDS parameters:params file:nil];
  368. if (json==nil)
  369. {
  370. DebugLog(@"json is wrong");
  371. detailContent.result_code = RESULT_NET_ERROR;
  372. return detailContent;
  373. }
  374. jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  375. result = [[jsobj valueForKey:@"result"] intValue];
  376. }
  377. if(result!=AP_USER_AUTH)
  378. {
  379. DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
  380. detailContent.result_code = result;
  381. return detailContent;
  382. }
  383. // if([params[@"action_type"] isEqualToString:@"Tracking"])
  384. // {
  385. // NSString *path = [[NSBundle mainBundle] pathForResource:@"fake_tracking.json" ofType:nil];
  386. // NSData *data = [[NSData alloc] initWithContentsOfFile:path];
  387. // NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
  388. // jsobj = json;
  389. // }
  390. int count =[[jsobj valueForKey:@"count"] intValue];
  391. // if ([[params objectForKey:@"action_type"] isEqualToString:@"Detail"]) {
  392. // NSMutableDictionary *mJson = [jsobj mutableCopy];
  393. // NSDictionary *comm = @{
  394. // @"_name": @"Communication",
  395. // @"_type": @"communication",
  396. // @"cc": @"",
  397. // @"receipt": @"",
  398. // @"count": @2,
  399. // @"item0": @{
  400. // @"Sender": @"user name",
  401. // @"msg": @"content bla bla bla...",
  402. // @"mst_time": @"04/28/2018 20:15:33",
  403. // @"email_url": @"https://www.baidu.com"
  404. // },
  405. // @"item1": @{
  406. // @"Sender": @"user name",
  407. // @"msg": @"content bla bla bla...",
  408. // @"mst_time": @"04/28/2018 20:15:33"
  409. // }
  410. // };
  411. // [mJson setObject:comm forKey:[NSString stringWithFormat:@"group%d",count]];
  412. //
  413. // [mJson setObject:@(++count) forKey:@"count"];
  414. //
  415. // jsobj = mJson;
  416. // }
  417. detailContent.result_code = RESULT_TRUE;
  418. if(count==0)
  419. {
  420. return detailContent;
  421. }
  422. for(int i=0;i<count;i++)
  423. {
  424. NSDictionary* segment = [jsobj objectForKey:[NSString stringWithFormat:@"group%d",i]];
  425. [segments addObject:segment];
  426. /*
  427. JSONObject groupobj = jsonObj.getJSONObject("group" + i);
  428. View v = inflater.inflate(R.layout.group_tag, null);
  429. v.setOnClickListener(this);
  430. TextView tvgroup = (TextView) v.findViewById(R.id.tv_group);
  431. String group_name = groupobj.getString("_name");
  432. tvgroup.setText(group_name);
  433. v.setId(commonUtil.generateViewId());
  434. ll_root.addView(v);
  435. String grouptype = groupobj.getString("_type");
  436. */
  437. }
  438. // NSDictionary* objrecords = [jsobj objectForKey:@"records"];
  439. detailContent.originContent = jsobj;
  440. return detailContent;
  441. }
  442. return nil;
  443. }
  444. +(PageData*) get_pagedata: (NSMutableDictionary *) params
  445. {
  446. DebugLog(@"get_pagedata");
  447. if(![NetworkUtils IsNetworkAvailable])
  448. return nil;
  449. AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  450. [params setValue:@"handset_search" forKey:@"action"];
  451. // [params setValue:appDelegate.sessionid forKey:@"sessionid"];
  452. NSData* json=[self get_json:URL_REQUEST_RECORDS parameters:params file:nil];
  453. if (json==nil)
  454. {
  455. DebugLog(@"json is wrong");
  456. return nil;
  457. }
  458. NSError *error=nil;
  459. NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  460. if(jsobj)
  461. {
  462. int result = [[jsobj valueForKey:@"result"] intValue];
  463. if(result== AP_SESSION_EXPIRED)
  464. {
  465. [self Authorize:appDelegate.user password:appDelegate.password];
  466. json=[self get_json:URL_REQUEST_RECORDS parameters:params file:nil];
  467. if (json==nil)
  468. {
  469. DebugLog(@"json is wrong");
  470. return nil;
  471. }
  472. jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  473. result = [[jsobj valueForKey:@"result"] intValue];
  474. }
  475. if(result!=AP_USER_AUTH)
  476. {
  477. DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
  478. return nil;
  479. }
  480. NSDictionary* objrecords = [jsobj objectForKey:@"records"];
  481. PageData * pageData = [[PageData alloc] initWithRecords:objrecords];
  482. return pageData;
  483. }
  484. return nil;
  485. }
  486. +(int) get_recordcount: (NSMutableDictionary *) params// delegate:(id < NSURLConnectionDelegate >)delegate
  487. {
  488. DebugLog(@"get_recordcount");
  489. if(![NetworkUtils IsNetworkAvailable])
  490. return RESULT_NET_NOTAVAILABLE;
  491. AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  492. [params setValue:@"handset_search_count" forKey:@"action"];
  493. // [params setValue:appDelegate.sessionid forKey:@"sessionid"];
  494. NSData* json=[self get_json:URL_REQUEST_COUNT parameters:params file:nil];
  495. if (json==nil)
  496. {
  497. DebugLog(@"json is wrong");
  498. return RESULT_NET_ERROR;
  499. }
  500. NSError *error=nil;
  501. NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  502. if(jsobj)
  503. {
  504. int result = [[jsobj valueForKey:@"result"] intValue];
  505. if(result== AP_SESSION_EXPIRED)
  506. {
  507. [self Authorize:appDelegate.user password:appDelegate.password];
  508. json=[self get_json:URL_REQUEST_COUNT parameters:params file:nil];
  509. if (json==nil)
  510. {
  511. DebugLog(@"json is wrong");
  512. return RESULT_NET_ERROR;
  513. }
  514. jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  515. result = [[jsobj valueForKey:@"result"] intValue];
  516. }
  517. if(result!=AP_USER_AUTH)
  518. {
  519. DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
  520. return RESULT_USERAUTH_ERROR;
  521. }
  522. else
  523. return [[jsobj valueForKey:@"count" ] intValue];
  524. }
  525. return RESULT_ERROR;
  526. }
  527. //+(bool) IsHostAvailable : (NSString*) url
  528. //{
  529. // Reachability *r = [Reachability reachabilityWithHostName:url];
  530. // int i = [r currentReachabilityStatus];
  531. // if ([r currentReachabilityStatus]==NotReachable)
  532. // return false;
  533. // return true;
  534. //}
  535. +(bool) IsNetworkAvailable
  536. {
  537. if (([Reachability reachabilityForInternetConnection].currentReachabilityStatus == NotReachable) &&
  538. ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == NotReachable))
  539. return false;
  540. return true;
  541. }
  542. +(void)post_without_return : (NSString*) url parameters:(NSMutableDictionary *) params //delegate:(id < NSURLConnectionDelegate >)delegate
  543. {
  544. // [self get_json:url parameters:params file:nil err_recorder:nil result_handler:nil decrypt_handler:nil];
  545. // AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  546. //分界线的标识符
  547. NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";
  548. //根据url初始化request
  549. NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]
  550. cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
  551. timeoutInterval:30];
  552. //分界线 --AaB03x
  553. NSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];
  554. //结束符 AaB03x--
  555. NSString *endMPboundary=[[NSString alloc]initWithFormat:@"%@--",MPboundary];
  556. //要上传的图片
  557. // UIImage *image=[params objectForKey:@"pic"];
  558. //得到图片的data
  559. // NSData* data = UIImagePNGRepresentation(image);
  560. //http body的字符串
  561. NSMutableString *body=[[NSMutableString alloc]init];
  562. // NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
  563. // [params setValue:@"handset_login" forKey:@"action"];
  564. // [headers setValue:[NSString stringWithFormat:@"%d",dataLength] forKey:@"Content-Length"];
  565. // [params setValue:appDelegate.sessionid forKey:@"sessionid"];
  566. // [params setValue:password forKey:@"password"];
  567. // [params setValue:[NSString stringWithFormat:@"%d",ver] forKey:@"auth_ver"];
  568. // [headers setValue:headQuerlString forKey:@"param"];
  569. //参数的集合的所有key的集合
  570. NSArray *keys= [params allKeys];
  571. DebugLog(@"================parms==================");
  572. //遍历keys
  573. for(int i=0;i<[keys count];i++)
  574. {
  575. //得到当前key
  576. NSString *key=[keys objectAtIndex:i];
  577. //如果key不是pic,说明value是字符类型,比如name:Boris
  578. if(![key isEqualToString:@"pic"])
  579. {
  580. //添加分界线,换行
  581. [body appendFormat:@"%@\r\n",MPboundary];
  582. //添加字段名称,换2行
  583. [body appendFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",key];
  584. //添加字段的值
  585. [body appendFormat:@"%@\r\n",[params objectForKey:key]];
  586. DebugLog(@"parameter: key=%@ value=%@",key,[params objectForKey:key]);
  587. }
  588. }
  589. DebugLog(@"================parms==================");
  590. ////添加分界线,换行
  591. [body appendFormat:@"%@\r\n",MPboundary];
  592. //声明pic字段,文件名为boris.png
  593. [body appendFormat:@"Content-Disposition: form-data; name=\"pic\"; filename=\"boris.png\"\r\n"];
  594. //声明上传文件的格式
  595. [body appendFormat:@"Content-Type: image/png\r\n\r\n"];
  596. //声明结束符:--AaB03x--
  597. NSString *end=[[NSString alloc]initWithFormat:@"\r\n%@",endMPboundary];
  598. //声明myRequestData,用来放入http body
  599. NSMutableData *myRequestData=[NSMutableData data];
  600. //将body字符串转化为UTF8格式的二进制
  601. [myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];
  602. //将image的data加入
  603. // [myRequestData appendData:data];
  604. //加入结束符--AaB03x--
  605. [myRequestData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];
  606. //设置HTTPHeader中Content-Type的值
  607. NSString *content=[[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@",TWITTERFON_FORM_BOUNDARY];
  608. //设置HTTPHeader
  609. [request setValue:content forHTTPHeaderField:@"Content-Type"];
  610. //设置Content-Length
  611. [request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[myRequestData length]] forHTTPHeaderField:@"Content-Length"];
  612. //设置http body
  613. [request setHTTPBody:myRequestData];
  614. //http method
  615. [request setHTTPMethod:@"POST"];
  616. // NSHTTPURLResponse* urlResponse = nil;
  617. //
  618. // NSError *error = [[NSError alloc] init];
  619. //
  620. [NSURLConnection sendAsynchronousRequest:request queue:nil completionHandler:^(NSURLResponse *response,NSData *data,NSError *error){}];
  621. // NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:nil];
  622. }
  623. +(NSData*)get_marketnews : (NSString*) id limit: (int) limit
  624. {
  625. if(![NetworkUtils IsNetworkAvailable])
  626. return nil;//RESULT_NET_NOTAVAILABLE;
  627. NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
  628. [params setValue:@"Market News" forKey:@"module_name"];
  629. [params setValue:@"search" forKey:@"action_type"];
  630. [params setValue:id forKey:@"id"];
  631. [params setValue:[NSString stringWithFormat:@"%d",limit ] forKey:@"limit"];
  632. NSData* json=[self get_json:URL_ANNOUNCEMENTS parameters:params file:nil];
  633. if (json==nil)
  634. {
  635. DebugLog(@"json is wrong");
  636. return nil;
  637. }
  638. return json;
  639. }
  640. +(NSData*)get_MessageDetail: (int) offset limit:(int) limit from:(NSString*) sid to:(NSString*) eid
  641. {
  642. if(![NetworkUtils IsNetworkAvailable])
  643. return nil;//RESULT_NET_NOTAVAILABLE;
  644. AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  645. // NSString* sess
  646. NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
  647. [params setValue:@"Pull Message" forKey:@"module_name"];
  648. [params setValue:@"handset_search" forKey:@"action"];
  649. [params setValue:sid forKey:@"s_id"];
  650. [params setValue:eid forKey:@"e_id"];
  651. [params setValue:@"detail" forKey:@"action_type"];
  652. [params setValue:@"handset_search" forKey:@"action"];
  653. // [params setValue:appDelegate.sessionid forKey:@"sessionid"];
  654. [params setValue:appDelegate.duid forKey:@"uuid"];
  655. [params setValue:[NSString stringWithFormat:@"%d",offset] forKey:@"offset"];
  656. [params setValue:[NSString stringWithFormat:@"%d",limit] forKey:@"limit"];
  657. // [params setValue:@"20" forKey:@"limit"];
  658. NSData* json=[self get_json:URL_PUSH parameters:params file:nil];
  659. if (json==nil)
  660. {
  661. DebugLog(@"json is wrong");
  662. return nil;
  663. }
  664. NSError *error=nil;
  665. NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  666. int result = [[jsobj valueForKey:@"result" ] intValue] ;
  667. if(result== AP_SESSION_EXPIRED)
  668. {
  669. [self Authorize:appDelegate.user password:appDelegate.password];
  670. json=[self get_json:URL_PUSH parameters:params file:nil];
  671. if (json==nil)
  672. {
  673. DebugLog(@"json is wrong");
  674. return nil;
  675. }
  676. jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  677. result = [[jsobj valueForKey:@"result"] intValue];
  678. }
  679. if(result!= AP_MESSAGE_NEW)
  680. return nil;
  681. return json;
  682. }
  683. +(int) delAllMessage:(NSString*) before
  684. {
  685. if(![NetworkUtils IsNetworkAvailable])
  686. return RESULT_NET_NOTAVAILABLE;//RESULT_NET_NOTAVAILABLE;
  687. AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  688. // NSString* sess
  689. NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
  690. [params setValue:@"Pull Message" forKey:@"module_name"];
  691. [params setValue:@"read_all" forKey:@"action_type"];
  692. [params setValue:@"handset_search" forKey:@"action"];
  693. // [params setValue:appDelegate.sessionid forKey:@"sessionid"];
  694. [params setValue:appDelegate.duid forKey:@"uuid"];
  695. [params setValue:before forKey:@"id"];
  696. NSData* json=[self get_json:URL_PUSH parameters:params file:nil];
  697. if (json==nil)
  698. {
  699. DebugLog(@"json is wrong");
  700. return RESULT_NET_ERROR;
  701. }
  702. NSError *error=nil;
  703. NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  704. int result = [[jsobj valueForKey:@"result" ] intValue] ;
  705. if(result== AP_SESSION_EXPIRED)
  706. {
  707. [self Authorize:appDelegate.user password:appDelegate.password];
  708. json=[self get_json:URL_PUSH parameters:params file:nil];
  709. if (json==nil)
  710. {
  711. DebugLog(@"json is wrong");
  712. return RESULT_NET_ERROR;
  713. }
  714. jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  715. result = [[jsobj valueForKey:@"result"] intValue];
  716. }
  717. return result;
  718. }
  719. +(NSData*)pull_message: (int) offset
  720. {
  721. if(![NetworkUtils IsNetworkAvailable])
  722. return nil;//RESULT_NET_NOTAVAILABLE;
  723. AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  724. // NSString* sess
  725. NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
  726. [params setValue:@"Pull Message" forKey:@"module_name"];
  727. [params setValue:@"ios_list" forKey:@"action_type"];
  728. [params setValue:@"handset_search" forKey:@"action"];
  729. // [params setValue:appDelegate.sessionid forKey:@"sessionid"];
  730. [params setValue:appDelegate.duid forKey:@"uuid"];
  731. [params setValue:[NSString stringWithFormat:@"%d",offset] forKey:@"offset"];
  732. [params setValue:@"20" forKey:@"limit"];
  733. NSData* json=[self get_json:URL_PUSH parameters:params file:nil];
  734. if (json==nil)
  735. {
  736. DebugLog(@"json is wrong");
  737. return nil;
  738. }
  739. NSError *error=nil;
  740. NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  741. int result = [[jsobj valueForKey:@"result" ] intValue] ;
  742. if(result== AP_SESSION_EXPIRED)
  743. {
  744. [self Authorize:appDelegate.user password:appDelegate.password];
  745. json=[self get_json:URL_PUSH parameters:params file:nil];
  746. if (json==nil)
  747. {
  748. DebugLog(@"json is wrong");
  749. return nil;
  750. }
  751. jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  752. result = [[jsobj valueForKey:@"result"] intValue];
  753. }
  754. if(result!= AP_MESSAGE_NEW)
  755. return nil;
  756. return json;
  757. }
  758. +(bool) UpdateServiceLocation
  759. {
  760. if(![NetworkUtils IsNetworkAvailable])
  761. return false;//RESULT_NET_NOTAVAILABLE;
  762. NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
  763. [params setValue:@"Location" forKey:@"module_name"];
  764. [params setValue:@"search" forKey:@"action_type"];
  765. [params setValue:@"999" forKey:@"limit"];
  766. NSData* json=[self get_json:URL_LOCATIONS parameters:params file:nil];
  767. if (json==nil)
  768. return false;
  769. NSError *error=nil;
  770. NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
  771. NSString* remote_ver = [jsobj valueForKey:@"version"] ;
  772. NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
  773. NSString *local_ver =[defaults stringForKey:@"location_ver"];
  774. int total = [[jsobj valueForKey:@"total"] intValue];
  775. BOOL bigger = [remote_ver compare:local_ver];
  776. // if(!bigger)
  777. // return false;
  778. sqlite3 *db =[ApexMobileDB get_db];
  779. [ApexMobileDB execSql:@"delete from locations" db:db];
  780. char* sql = "insert into locations(area,company,city,longitude,latitude,address,telephone,fax,contact,email) values(?,?,?,?,?,?,?,?,?,?)";
  781. sqlite3_stmt *stmt;
  782. sqlite3_prepare_v2(db, sql, -1, &stmt, nil);
  783. NSDictionary* objrecords = [jsobj objectForKey:@"records"];
  784. for(int i=0;i<total;i++)
  785. {
  786. NSDictionary* objlocation = [objrecords objectForKey:[NSString stringWithFormat:@"record%d",i]];
  787. NSString* area = [objlocation valueForKey:@"area"];
  788. NSString* company = [objlocation valueForKey:@"company"];
  789. NSString* city = [objlocation valueForKey:@"city"];
  790. NSString* longitude = [objlocation valueForKey:@"longitude"] ;
  791. NSString* latitude = [objlocation valueForKey:@"latitude"] ;
  792. NSString* address = [objlocation valueForKey:@"address"];
  793. NSString* telephone = [objlocation valueForKey:@"telephone"];
  794. NSString* fax = [objlocation valueForKey:@"fax"];
  795. NSString* contact = [objlocation valueForKey:@"contact"];
  796. NSString* email = [objlocation valueForKey:@"email"];
  797. if([area isEqual:[NSNull null]])
  798. area=@"";
  799. if(area==nil)
  800. area=@"";
  801. if([area isEqualToString:@"null"])
  802. area=@"";
  803. if([company isEqual:[NSNull null]])
  804. company=@"";
  805. if(company==nil)
  806. company=@"";
  807. if([company isEqualToString:@"null"])
  808. company=@"";
  809. if([city isEqual:[NSNull null]])
  810. city=@"";
  811. if(city==nil)
  812. city=@"";
  813. if([city isEqualToString:@"null"])
  814. city=@"";
  815. if([longitude isEqual:[NSNull null]])
  816. longitude=@"";
  817. if(longitude==nil)
  818. longitude=@"";
  819. if([longitude isEqualToString:@"null"])
  820. longitude=@"";
  821. if([latitude isEqual:[NSNull null]])
  822. latitude=@"";
  823. if(latitude==nil)
  824. latitude=@"";
  825. if([latitude isEqualToString:@"null"])
  826. latitude=@"";
  827. if([address isEqual:[NSNull null]])
  828. address=@"";
  829. if(address==nil)
  830. address=@"";
  831. if([address isEqualToString:@"null"])
  832. address=@"";
  833. if([telephone isEqual:[NSNull null]])
  834. telephone=@"";
  835. if(telephone==nil)
  836. telephone=@"";
  837. if([telephone isEqualToString:@"null"])
  838. telephone=@"";
  839. if([fax isEqual:[NSNull null]])
  840. fax=@"";
  841. if(fax==nil)
  842. fax=@"";
  843. if([fax isEqualToString:@"null"])
  844. fax=@"";
  845. if([contact isEqual:[NSNull null]])
  846. contact=@"";
  847. if(contact==nil)
  848. contact=@"";
  849. if([contact isEqualToString:@"null"])
  850. contact=@"";
  851. if([email isEqual:[NSNull null]])
  852. email=@"";
  853. if(email==nil)
  854. email=@"";
  855. if([email isEqualToString:@"null"])
  856. email=@"";
  857. sqlite3_bind_text(stmt, 1, [area UTF8String], -1, NULL);
  858. sqlite3_bind_text(stmt, 2, [company UTF8String], -1, NULL);
  859. sqlite3_bind_text(stmt, 3, [city UTF8String], -1, NULL);
  860. sqlite3_bind_text(stmt, 4, [longitude UTF8String], -1, NULL);
  861. sqlite3_bind_text(stmt, 5, [latitude UTF8String], -1, NULL);
  862. sqlite3_bind_text(stmt, 6, [address UTF8String], -1, NULL);
  863. sqlite3_bind_text(stmt, 7, [telephone UTF8String], -1, NULL);
  864. sqlite3_bind_text(stmt, 8, [fax UTF8String], -1, NULL);
  865. sqlite3_bind_text(stmt, 9, [contact UTF8String], -1, NULL);
  866. sqlite3_bind_text(stmt, 10, [email UTF8String], -1, NULL);
  867. if (sqlite3_step(stmt) != SQLITE_DONE)
  868. {
  869. fprintf(stderr, "Error: insert search failed, error infomation: %s\nsql:%s\n", sqlite3_errmsg(db),sqlite3_sql(stmt));
  870. }
  871. sqlite3_reset(stmt);
  872. }
  873. sqlite3_finalize(stmt);
  874. sqlite3_close(db);
  875. [defaults removeObjectForKey:@"location_ver"];
  876. [defaults setValue:remote_ver forKey:@"location_ver"];
  877. // [defaults synchronize];
  878. return true;
  879. }
  880. //+(void) testmail1:(UIViewController*) caller
  881. //{
  882. // MFMailComposeViewController *mail=[[MFMailComposeViewController alloc] init];
  883. // mail.mailComposeDelegate=caller;
  884. //
  885. // //设置主题
  886. // [mail setSubject:@"测试发送电子邮件"];
  887. //
  888. // //添加收件人
  889. // NSArray *toRecipients=[NSArray arrayWithObject:@"admin@163.com"];
  890. // [mail setToRecipients:toRecipients];
  891. // //添加抄送;
  892. // NSArray *ccRecipients=[NSArray arrayWithObjects:@"test1@163.com",@"test@qq.com", nil];
  893. // [mail setCcRecipients:ccRecipients];
  894. // //添加密送
  895. // NSArray *bccRecipients=[NSArray arrayWithObject:@"admin@gmail.com"];
  896. // [mail setBccRecipients:bccRecipients];
  897. //
  898. //
  899. // //添加一张图片
  900. // UIImage *addPic=[UIImage imageNamed:@"bg_3"];
  901. // NSData *imageData=UIImagePNGRepresentation(addPic);
  902. // [mail addAttachmentData:imageData mimeType:@"image/png" fileName:@"icon"];
  903. //
  904. // //添加一个xml附件
  905. //// NSString *file=[self fullBundlePathFromRelativePath:@"model.xml"];
  906. //// NSData *xmldata=[NSData dataWithContentsOfFile:file];
  907. //// [mail addAttachmentData:xmldata mimeType:@"" fileName:@"model"];
  908. //
  909. // NSString *emailBody=@"<font color='red'>send test email</font>";
  910. // [mail setMessageBody:emailBody isHTML:YES];
  911. // [caller presentViewController:mail animated:YES completion:nil];
  912. //
  913. //
  914. //}
  915. //+(void) testmail
  916. //{
  917. // NSMutableString *buffer=
  918. // [NSMutableString stringWithString:
  919. // @"<HTML><HEAD><TITLE>PAGE</TITLE></HEAD><BODY>example<img src=\"data:image/png;base64,\/9j\/4AAQSkZJRgABAQAAAQABAAD\/\/gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBkZWZhdWx0IHF1YWxpdHkK\/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy\/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy\/8AAEQgAZABkAwEiAAIRAQMRAf\/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC\/\/EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29\/j5+v\/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC\/\/EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29\/j5+v\/aAAwDAQACEQMRAD8A9JK81JGKQ9acnWkxonjXpV+2TJFU4x0q9AcVIy6yDZXNeI9WGi2qz\/ZZrlnfascQyfc\/SukLfLXD+K7bVrvVIfseovaW0ajcqMFLknnkn0q6cOd8rdgUlFptXXYn8L+JLfxJHO0ULwvC4Vo3IJweh\/n+VdWigJXm3hrR7vSfF891E0QsbnKlGmDPzyD78\/zr0lT8tZq+zOjFRpKd6T0aT9PIqXKcms+QVpzc1nyjmrOYxpByeahYVM7DcR3qFjTIOs8JjGly\/wDXc\/8AoK0UeEiTpc2R0nOP++VooKRkE81Wv9VstJtGu76dIYV4LN3PoPU1M5wa5Dxxpj6hFp0u\/wDdW85Z1IyDkYB\/P+dKTsrjirux0mleMNC1YSfZNQjbyl3vvBTC+vzAcVrQ6\/pnkCZbtGj9V5\/SvGbmGO3ltGd44ljmVQY0wTknH610+jTPqniFrLzHMk2nSrISQdgyAh49yfzrJTu7G06Timd2njPSHG7zJ1izgStCwRj7HFM1HxJo9qHa5nUeXk\/dJPGenr9015vJBJltLMgWfmLaW+62MfkOtZC28niq7uNVvpNw3GONUOBwOO\/FCn3G6F2kmem6Z4utb29EMunz2oYFopHKsGwM\/wAJODjPFbNz4l0qxjY3V2kRBUYbgnPp615r4EjkfVZLd5I1ksiUDYB3e2e\/BP5Ve8RpNba7PLMwbzFQLhf4Qv8AiGpqTtdk+zTnyo6PVPGEBSJNNlieSVPMEkgJQLxjgdc5qHw54im1pbiG6t1juLfbuaPOxwc4Iz06HiuCvdZj05Es2zHudiJslcqwBK9MdQT16mo7DxxcQWd1aWMUbysQiXBYkgkYB98UOdnd7FRoOatHc9NuLS4gj8ySPCE8HI71nyPiuMtYb8app80F5ezP5qrcLLMWDKT83BP1Nd29pj+HP41akpbHPODg7M6jwe27SZj\/ANNz\/wCgrRVfwIMaNc8k\/wClv17fKtFUCOV8Ua7H4e0mS+dPMYELGmcbmPQV5FqHxE1fUX2XCxLb5yIogVBPbJ5Ndr8UHiks7K3lkChpGcDdjOBj+teYDTN+7bMNvUEina6DXdG5aeLLWa8i\/tCCZogoY7cEq4PUev416\/4aisII5dQt5Gea8hAikYABV6jH418\/vpkiDcsiE\/lXr3gqWX\/hDrFXOZFZl65wAxIH60o043G6knuYHivWDN4km0q1AWRYiZZx94ueQPyP61V0CNtN0u6imuU8zdvRHHQkf54rmreV77xlqEwYndLI3JxkFuBXQPbIWAj3guueud2O\/wCPFZVEm7GlKbjqT+DrN7jWdl5eGJ7h2cBDlmYcn6Hmu68VReXa2sgbcwlSBWmYk4Y45I+ufwrzKyuntPFmmLkK6SM2AeBkYx+leheObjGhWDZwWvYyfwBNdVGCcNUYTm1K6Haz4KtNU01kila3uVAKkDKsR69\/xzXmen+GNTnknlDxxpDIyhXGSWHoO3Ne43LiMrzwTXETMLPVJ4snDSM2Pcnd\/WnVhZXRm6jSM+z1O7triJ4IJRKjZzIm1R9fXr2r0bSdXg1fKeWY5lGSucg\/SuHbbI+4g1f8N3K2+sxPK6omWBJOBjBrBK2xPtZSep6P4LXbpV0P+nt\/5LRUvhJdumXB7NcuwPqCBRTN1seI\/GFP3OmP6NIM\/gv+FeULNIBtEjgZ7GvavinYNdeHBMgy1tKHP+6eD\/MV4ntY5wrEewphexIs8+cLK+f96up8PeNb\/Q7MWiRJcQmUyEyZ3DIAIBz7Vy0EcomRvJdwD0x1FeyaJ4R0l9Kt5ZzFK80YZZADgZ9vXtUyk1sa04Opoeb6G7f2ld4B3SfOPpknNbl7JN5aoJFDysqbh0Xnn8hSS6TBZ3GqXkDlmtd6xrjA2jOc+9ZWj6jd3+sWULKih5lCsVPHPSo1k9BuPJZM6m78P6Vpemxajbzn7VERKMvkkjnB+tP8UeKNN1nRbJbK6EkiTh3jIIZcAjODW34gt7mHQrt7pVhiZQhbA4JOBj868vkjjjJAKN2DDoa0oSlFNMWIhFNWPR9WD+NL66htNWaC3hwkJRvkd9uSTjr1xWRo1te2dxNZajIzSqoeF2OQy9Dg96PAFzMqXlpGCImdX3Ljg+mP89K1tb1GIa6qXUohaOIbC5wHz156VLm3OzJqU4+x5upZHTNLpys97tjbY244YnGOKrxTLIuVkVh2IOan0y8W0u2m278E8Zx2xWii5NJdThS6nrfhAsdJlDuXKzkbic5+VaKj8F3gvtGlkEezbOVxuzn5VOf1oolFxfKzqg04po5HXbVb3Trq2YZEsTJ+YryF7exsIyLZcqv3juJyfxr2e9yEYjqBxXhV5dOYTATwXLP65oSuyuZJNWM+5kuXLyBiqknB\/pXoPgzVIh4Wmt5JcT2kRkG4\/wAB54+h\/nXHWTw3NqIBPtl8xhsblWyOtQR5SORMnkBTg9eacoXQoVHB3RH9svFtLqOGUyRE\/vARnaCcZz+NMsZZLW\/tLggjbIrqfof\/AK1UJhsuVUNwQGPPHrWroFot7r1hayfdlnRWz6Z5qoJK5LbbSO6+KWqNvs9LjPbz5Mfkv9a83kDQgqzAlTzg5GfrXo\/xZsVS+sL5RgyRmJv+AnI\/9CNebuD5Uhx1FNK6KrN8+pe07U73SrgXFlOYpCMEgAgj3B4qG\/v7m\/nNxdzPLIeNzGo0O6IH2qK44jIrOy3Fd2sRXCPtEsbFSPvbTivQPDcbx6NbvISXdd3Pp2\/TFcbPaNZtBG8qSmWBJjt7bh0PvXovh6zl1PRIJ4NmFHllc9CvH+FdeEdNT5p\/Iwrc\/LaJ6t8Nm3eHbj\/r7b\/0BKKk+HlrLaaDcxzLhvtbEc9tiUVhiGnVk0a0laCTOc1m7SysJrmQ8Ivp37frXmWi6BYazNNDeXkkVy+SiKAAffJ6\/Su58ZzhNAn9crx\/wIV4\/rOoyRzwvCxjkU7wyHBB7Vk02tDVNJ6q5eutG1LwxfPDcQ+Zb5YpJ\/Cw\/Hv7VnbsRZJ5JGQPpXX6D42Go2g0\/XLeO7t3G3zSPmX6jvV3WdJ0K2sntILQb2+ZZQ5z1\/hPOcccHsaSm1o0VKnGS5os880+7s4dVja8haWPymQKuOteh+DY\/DUdnFPuH9ogjcbgjcG\/2P6Y5rza4spLbVvszMGBQspA981oWfmwTJKuQ8bBh9RVxgptq+pmqjp2dro9c1XSP+EwsDaTSiAxN5kTkZPTGD+deOX0M0Tz2cMDyyxk+Z5alggBwT9K7mfxY40dtu6KVVIMiH25xXOeDWD6vcyyyHAhPB\/jBI\/TpS9+nD3tzWfs6tRcpz0LZhX8qnXTr6+2ra2c828HBRCQccmkvUihvX8lWEDNuUH+Een4dK71PGLQWypp9rbRpGoCb1JIx34NGr2RlaKvzM4VryS6dBMf3kaLEFIwQAMAYr0jQLFdN02ONpZFmPzOUkK8ntwa85xJq\/ioTXDqJJJ9zkLwTnPT8K9NikDkAn8jXPWk1aKKppPU9T+H7l9DuSXd\/wDSmGXbJ+4lFN+HgxoNxj\/n6b\/0BKK0hrFBLc848cMTo\/X\/AJar\/WvINYUCBJOd27FFFadCB+h\/dkP0rojeXDWwVpWYIMKCelFFUgMmYB74SsMsIyM\/jVyNR5WaKKuh8ciavwoiRt0e1sFfQ0+5jSFFlhXynX5cpxkHtRRUYn+KiqP8NlcH5g55ZSGBPPNNnmeS6kkOAXbJAHHNFFEt0Zr4TR0yxhN\/b3Q3B+SQDwSK61X\/ANlee+KKK4qmrOuGx6r8N\/8AkXrn\/r7b\/wBASiiit4fCjN7n\/9k=\" /></BODY></HTML>"];
  920. // NSString* subjectLine =@"Example HTML formatted EMAIL with Image";
  921. //
  922. // NSString *str1 = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorSystemDefault, (CFStringRef) subjectLine, NULL, CFSTR(";/?:@&=+$,"), kCFStringEncodingUTF8));
  923. // NSString *str2 = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorSystemDefault, (CFStringRef)buffer, NULL, CFSTR(";/?:@&=+$,"), kCFStringEncodingUTF8));
  924. //
  925. // NSString *urlString = [NSString stringWithFormat:@"mailto:?subject=%@&body=%@",str1 ,str2 ];
  926. //
  927. // [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
  928. //
  929. //// [NSURL URLWithString:urlString];
  930. //}
  931. +(NSData*)get_announcements : (NSString*) id limit: (int) limit
  932. {
  933. if(![NetworkUtils IsNetworkAvailable])
  934. return nil;//RESULT_NET_NOTAVAILABLE;
  935. NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
  936. [params setValue:@"Announcements" forKey:@"module_name"];
  937. [params setValue:@"search" forKey:@"action_type"];
  938. [params setValue:id forKey:@"id"];
  939. [params setValue:[NSString stringWithFormat:@"%d",limit ] forKey:@"limit"];
  940. NSData* json=[self get_json:URL_ANNOUNCEMENTS parameters:params file:nil];
  941. if (json==nil)
  942. {
  943. DebugLog(@"json is wrong");
  944. return nil;
  945. }
  946. return json;
  947. }
  948. +(void)Logout
  949. {
  950. if(![NetworkUtils IsNetworkAvailable])
  951. return ;//RESULT_NET_NOTAVAILABLE;
  952. NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
  953. AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  954. if(appDelegate.duid !=nil)
  955. [params setValue:appDelegate.duid forKey:@"udid"];
  956. [params setValue:@"handset_logout" forKey:@"action"];
  957. [self post_without_return :URL_UPDATE_AUTH parameters:params];
  958. }
  959. +(int)Authorize : (NSString*) user password:(NSString*) password{
  960. if(![NetworkUtils IsNetworkAvailable])
  961. return RESULT_NET_NOTAVAILABLE;
  962. // if(![RANetwork IsHostAvailable:URL_UPDATE_AUTH])
  963. // return RESULT_NET_ERROR;
  964. __block long ver = 0;
  965. NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
  966. dispatch_async(dispatch_get_main_queue(), ^{
  967. AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  968. ver = appDelegate.authVer;
  969. if(appDelegate.duid !=nil)
  970. [params setValue:appDelegate.duid forKey:@"udid"];
  971. });
  972. [params setValue:@"handset_login" forKey:@"action"];
  973. // [headers setValue:[NSString stringWithFormat:@"%d",dataLength] forKey:@"Content-Length"];
  974. [params setValue:user forKey:@"user"];
  975. [params setValue:password forKey:@"password"];
  976. [params setValue:[NSString stringWithFormat:@"%ld",ver] forKey:@"auth_ver"];
  977. #ifdef TEST
  978. [params setValue:@"true" forKey:@"is_debug"];
  979. #else
  980. [params setValue:@"false" forKey:@"is_debug"];
  981. #endif
  982. NSData* json=[self get_json:URL_UPDATE_AUTH parameters:params file:nil];
  983. if(json==nil)
  984. return RESULT_NET_ERROR;
  985. int ret = [self parse_authinfo:json user:user password:password];
  986. DebugLog(@"parse_authinfo return %d ",ret);
  987. return ret;
  988. }
  989. + (NSDictionary *)collectErrMsg:(NSString *)errMsg DeviceInfo:(NSString *)deviceInfo Time:(NSString *)time {
  990. NSMutableDictionary *params = [@{
  991. @"device_info" : deviceInfo == nil ? @"" : deviceInfo,
  992. @"crash_info" : errMsg == nil ? @"" : errMsg,
  993. @"crash_time" : time == nil ? @"" : time
  994. } mutableCopy];
  995. NSData* json=[self get_json:URL_ERR_LOG parameters:params file:nil];
  996. if (json==nil)
  997. {
  998. return @{
  999. @"result" : @RESULT_NET_ERROR,
  1000. @"err_msg" : MSG_NET_ERROR
  1001. };
  1002. }
  1003. NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:nil];
  1004. return resultDic;
  1005. }
  1006. + (NSDictionary *)requestHome {
  1007. NSMutableDictionary *params = [NSMutableDictionary dictionary];
  1008. // action=hand_new_home_list
  1009. [params setObject:@"hand_new_home_list" forKey:@"action"];
  1010. [params setObject:@(YES) forKey:@"request_location"];
  1011. AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
  1012. if(appDelegate.personalmode)
  1013. params[@"personal_mode"] = @"true";
  1014. else
  1015. params[@"personal_mode"] = @"false";
  1016. NSData* json=[self get_json:URL_HOME parameters:params file:nil];
  1017. if (json==nil)
  1018. {
  1019. return @{
  1020. @"result" : @RESULT_NET_ERROR,
  1021. @"err_msg" : MSG_NET_ERROR
  1022. };
  1023. }
  1024. NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:nil];
  1025. return resultDic;
  1026. }
  1027. + (NSDictionary *)search:(NSMutableDictionary *)params {
  1028. [params setObject:@"handset_search" forKey:@"action"];
  1029. NSData* json=[self get_json:URL_REQUEST_COUNT parameters:params file:nil];
  1030. if (json==nil)
  1031. {
  1032. return @{
  1033. @"result" : @RESULT_NET_ERROR,
  1034. @"err_msg" : MSG_NET_ERROR
  1035. };
  1036. }
  1037. NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:nil];
  1038. return resultDic;
  1039. }
  1040. + (NSDictionary *)requestOrderHistory:(NSMutableDictionary *)params {
  1041. [params setObject:@"hand_new_home_list_all" forKey:@"action"];
  1042. AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
  1043. if(appDelegate.personalmode)
  1044. params[@"personal_mode"] = @"true";
  1045. else
  1046. params[@"personal_mode"] = @"false";
  1047. NSData* json=[self get_json:URL_HISTORY parameters:params file:nil];
  1048. if (json==nil)
  1049. {
  1050. return @{
  1051. @"result" : @RESULT_NET_ERROR,
  1052. @"err_msg" : MSG_NET_ERROR
  1053. };
  1054. }
  1055. NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:nil];
  1056. return resultDic;
  1057. }
  1058. + (void)download_file:(NSMutableDictionary *)params url:(NSString *)url toCachePath:(NSString *)path progressHandler:(progressHandler)progressHandler completionHandler:(resultHandler)result {
  1059. params = [self prepare_addtional_params:params];
  1060. [NetworkUtils downloadFileOffset:0 Param:params from:url method:@"POST" toPath:path progressHandler:progressHandler completionHandler:result];
  1061. }
  1062. + (NSDictionary *)requestKPI {
  1063. NSMutableDictionary *params = [NSMutableDictionary dictionary];
  1064. [params setObject:@"hand_new_kpi" forKey:@"action"];
  1065. AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
  1066. if(appDelegate.personalmode)
  1067. params[@"personal_mode"] = @"true";
  1068. else
  1069. params[@"personal_mode"] = @"false";
  1070. NSData* json=[self get_json:URL_KPI parameters:params file:nil];
  1071. if (json==nil)
  1072. {
  1073. return @{
  1074. @"result" : @RESULT_NET_ERROR,
  1075. @"err_msg" : MSG_NET_ERROR
  1076. };
  1077. }
  1078. NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:nil];
  1079. return resultDic;
  1080. }
  1081. + (NSDictionary *)sendEmail:(NSString *)email CC:(NSString *)cc SerialNo:(NSString *)serialNo {
  1082. if (!email) {
  1083. email = @"";
  1084. }
  1085. if (!serialNo) {
  1086. serialNo = @"";
  1087. }
  1088. NSMutableDictionary *params = [NSMutableDictionary dictionary];
  1089. [params setObject:@"handset_search" forKey:@"action"];
  1090. [params setObject:@"save_communication_email" forKey:@"action_type"];
  1091. [params setObject:serialNo forKey:@"serial_no"];
  1092. [params setObject:email forKey:@"msg"];
  1093. if (cc) {
  1094. [params setObject:cc forKey:@"cc"];
  1095. }
  1096. NSData* json=[self get_json:URL_SEND_COMM_EMAIL parameters:params file:nil];
  1097. if (json==nil)
  1098. {
  1099. return @{
  1100. @"result" : @RESULT_NET_ERROR,
  1101. @"err_msg" : MSG_NET_ERROR
  1102. };
  1103. }
  1104. NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:nil];
  1105. return resultDic;
  1106. }
  1107. + (NSDictionary *)uploadUserSql:(NSString *)sql {
  1108. NSMutableDictionary *params = [NSMutableDictionary dictionary];
  1109. [params setObject:@"handset_search" forKey:@"action"];
  1110. [params setValue:sql forKey:@"sql"];
  1111. NSData* json=[self get_json:URL_UPLOAD_SQL parameters:params file:nil];
  1112. if (json==nil)
  1113. {
  1114. return @{
  1115. @"result" : @RESULT_NET_ERROR,
  1116. @"err_msg" : MSG_NET_ERROR
  1117. };
  1118. }
  1119. NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:nil];
  1120. return resultDic;
  1121. }
  1122. @end