jiaPeiManager.m 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679
  1. //
  2. // jiaPeiManager.m
  3. // jiaPei
  4. //
  5. // Created by apple on 2016/12/26.
  6. // Copyright © 2016年 JCZ. All rights reserved.
  7. #import "jiaPeiManager.h"
  8. #import "AFNetworking.h"
  9. #import "DES3Util.h"
  10. #import "DesUtil.h"
  11. @implementation jiaPeiManager
  12. + (NSDictionary *)getDicWithArray:(NSArray *)array
  13. {
  14. NSMutableDictionary *questDic = [NSMutableDictionary dictionaryWithCapacity:array.count];
  15. if (!array) {
  16. return questDic;
  17. }
  18. for (NSDictionary *dict in array) {
  19. //其实这个判断跟自定义addpro里面重复了,但是鉴于项目有些参数的添加没有使用addpro过滤。所以此处再次判断
  20. if (dict && dict.allValues.count != 0) {
  21. [questDic setValue:[dict.allValues firstObject] forKey:[dict.allKeys firstObject]];
  22. }
  23. }
  24. return questDic;
  25. }
  26. + (NSString *)getURLWithDict:(NSDictionary *)dic urlPre:(NSString *)urlP {
  27. /// 其他请求
  28. NSArray *anotherArray = @[
  29. @"/open-api/teachingVideo/info/treeList", /// 查询教学视频分类树形列表
  30. @"/open-api/teachingVideo/info/getTeachingVideoByTypeId", /// 根据分类ID查询教学视频
  31. ];
  32. BOOL isAnother = [anotherArray containsObject:urlP];
  33. //http://175.42.30.21:9096/xm
  34. //生成带有签名的URL
  35. NSString *httpUrl = isAnother? anotherDefaultHttp : defaultHttp;
  36. NSString *urlDefault = isAnother? anotherDefaultHttpUrl :defaultHttpUrl;
  37. //公共请求
  38. NSArray *commonArray = @[@"getAppAdsNew", //广告
  39. @"getMyYuyueInfos", //获取自主预约
  40. @"getMessageInfos", //我的系统消息
  41. @"getTeachTypes", //获取日志类型
  42. @"getMyTeachLogs", //获取日志
  43. @"stuXXList", //获取休学记录
  44. @"getMyReserveOrders", //获取订单
  45. // @"uploadReserveComplaints", //获取投诉
  46. @"getOrderComplaintsByClassId", //根据课堂ID和投诉用户ID查询投诉
  47. @"getAppParam"
  48. ];
  49. if ([commonArray containsObject:urlP]) {
  50. urlDefault = defaultCommonUrl;
  51. }
  52. //计时相关
  53. NSArray *trainArray = @[@"getCoachSignForTrain", //获取教练当天签到状态
  54. @"getSignRecords", //获取教练签到记录
  55. @"getCoachSignStuRecords", //获取学员签到列表
  56. @"uploadSignOutOrClassRecord", //签退并上传学时汇总
  57. @"uploadAppTrainSingle", //分钟学时及GPS点上传
  58. @"uploadAppTrainPl", //分钟学时批量上传
  59. @"comparisonPhoto", //学员签到/签退/随机拍照
  60. @"uploadStuSign", //学员签到
  61. @"doTeach", //我要带教
  62. @"saveCoachSignOut", //教练员签退
  63. @"saveCoachSignIn", //教练员签到
  64. @"doDeviceLogOut", //终端注销
  65. @"doDeviceReg", //终端注册
  66. @"getPrice", //培训价格
  67. @"delLogStudent", //霸王签退
  68. @"uploadReserveOrder", //计划生成订单
  69. @"delReserveOrder", //删除计划订单
  70. @"uploadBindStuImei", //学员手机设备绑定
  71. @"getEvaluationCoachList", //教练获得的评价栏目数
  72. @"doComplaint", //学时投诉
  73. @"doEvaluation", //学时评论
  74. @"getTrainFinish", //获取已完成学时
  75. @"getTrainFinishNew", //获取已完成学时新
  76. @"getEvaluationList", //查看学时评论
  77. @"getStuSignFlag", //获取当前学员签到状态
  78. @"forceSignOut", //用classid直接汇总
  79. @"uploadMnStuLogin", //模拟计时签到
  80. @"uploadMnSignOut", //模拟计时签退
  81. @"getStudentTrack", //查询轨迹
  82. @"getSchPlaces", //查询驾校训练点信息
  83. @"getSchPlaceCoachs", //查询训练场下所有教练
  84. @"updateReserveEnd" //预约订单签退
  85. ];
  86. if ([trainArray containsObject:urlP]) {
  87. urlDefault = defaultTrainUrl;
  88. }
  89. if ([urlP isEqualToString:@"comparisonPhoto"] || [urlP isEqualToString:@"takePhoto"]) {
  90. urlDefault = defaultUploadUrl;
  91. }
  92. //模拟计时
  93. NSArray *imitate1Array = @[@"userLogin",
  94. @"userLoginOut",
  95. @"getUserLearnRecord"
  96. ];
  97. if ([imitate1Array containsObject:urlP]) {
  98. urlDefault = defaultImitateUrl1;
  99. }
  100. //模拟计时
  101. NSArray *imitate2Array = @[@"getTrainInsList",
  102. @"getDeviceMnList",
  103. @"getExamQuota",
  104. @"getReserveMnByDevId",
  105. @"getReserveMnList",
  106. @"getOrderMnList",
  107. @"getDiscountHalfHour",
  108. @"uploadReserveMn",
  109. @"deteleReserveMn"
  110. ];
  111. if ([imitate2Array containsObject:urlP]) {
  112. urlDefault = defaultImitateUrl2;
  113. }
  114. // 远程理论计时
  115. NSArray *educationArr = @[@"getCurrentTime", // 获取当前时间
  116. @"uploadEduSignIn", // 远程理论签到
  117. @"uploadEduPic", // 远程理论拍照上传
  118. @"uploadEduSignOut", // 远程理论签退
  119. @"getTheoryStatus", // 获取理论签到状态
  120. @"edufaceToface" // 远程理论人脸比对
  121. ];
  122. if ([educationArr containsObject:urlP]) {
  123. urlDefault = defaultEducation;
  124. // if ([urlP isEqualToString:@"edufaceToface"] ) {
  125. // httpUrl = @"http://175.42.30.21:9096/xm";
  126. // urlDefault = @"webservice/education/";
  127. // }
  128. }
  129. NSTimeInterval timeI = [[NSDate date] timeIntervalSince1970] * 1000;//获取时间戳 单位:s *1000毫秒
  130. NSString *timeStr = [NSString stringWithFormat:@"%.0f",timeI];
  131. NSString *urlS = @"";
  132. if (dic == nil || dic.allValues.count == 0) {
  133. if (isAnother) {
  134. urlS = [NSString stringWithFormat:@"%@%@%@",httpUrl,urlDefault,urlP];
  135. } else {
  136. urlS = [NSString stringWithFormat:@"%@%@%@?ts=%@&user=ios&v=jsjp",httpUrl,urlDefault,urlP,timeStr];
  137. }
  138. } else {
  139. //添加key字段
  140. NSMutableString *contentString = [NSMutableString stringWithString:[self getSignStringWithDictionary:dic]];
  141. if (isAnother) {
  142. if (contentString.length > 1) {
  143. NSString *lastString = [contentString substringFromIndex:contentString.length-1];
  144. if ([lastString isEqualToString:@"&"]) {
  145. contentString = [contentString substringToIndex:[contentString length]-1].mutableCopy;
  146. }
  147. }
  148. urlS = [NSString stringWithFormat:@"%@%@%@?%@",httpUrl,urlDefault,urlP,contentString];
  149. } else {
  150. [contentString appendFormat:@"key=%@", timeStr];
  151. // NSString *strUrl1 = [contentString stringByReplacingOccurrencesOfString:@" " withString:@""];
  152. // NSString *strUrl2 = [strUrl1 stringByReplacingOccurrencesOfString:@"\t" withString:@""];
  153. // NSString *strUrl3 = [strUrl1 stringByReplacingOccurrencesOfString:@"\n" withString:@""];
  154. urlS = [NSString stringWithFormat:@"%@%@%@?ts=%@&sign=%@&user=ios&v=jsjp",httpUrl,urlDefault,urlP,timeStr,[[contentString md5Encrypt] uppercaseString]];
  155. //NSLog(@"urlS----><>%@----><>%@",strUrl3,urlS);
  156. }
  157. }
  158. if ([urlP containsString:@"https://api.weixin.qq.com"]) {
  159. urlS = urlP;
  160. }
  161. return urlS;
  162. }
  163. + (NSString *)getSignStringWithDictionary:(NSDictionary *)dic
  164. {
  165. NSMutableString *contentString =[NSMutableString string];
  166. NSDictionary* dict = [NSDictionary dictionaryWithDictionary:dic];
  167. NSArray *keys = [dict allKeys];
  168. //按字母顺序排序
  169. NSArray *sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
  170. return [obj1 compare:obj2 options:NSNumericSearch];
  171. }];
  172. //拼接字符串
  173. for (NSString *categoryId in sortedArray) {
  174. // if (![categoryId isEqualToString:@"sign"] && ![categoryId isEqualToString:@"timestamp"]){
  175. if (![categoryId isEqualToString:@"sign"]){
  176. if([categoryId isEqualToString:@"biz_content"]){
  177. NSError *error = nil;
  178. NSDictionary* bizDict = [dict objectForKey:@"biz_content"];
  179. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:bizDict options:NSJSONWritingPrettyPrinted error: &error];
  180. NSMutableData *tempJsonData = [NSMutableData dataWithData:jsonData];
  181. NSString* jsonString1 = [[NSString alloc] initWithData:tempJsonData encoding:NSUTF8StringEncoding];
  182. NSString *jsonString2 = [jsonString1 stringByReplacingOccurrencesOfString:@" : " withString:@":"];
  183. [contentString appendFormat:@"biz_content=%@&",jsonString2];
  184. }else{
  185. [contentString appendFormat:@"%@=%@&", categoryId, [dict valueForKey:categoryId]];
  186. }
  187. }
  188. }
  189. return contentString;
  190. }
  191. //dic > string
  192. + (NSString *)dictionaryToJsonString:(NSDictionary *)dic
  193. {
  194. NSError *parseError = nil;
  195. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];
  196. return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
  197. }
  198. //jsonString > dic
  199. + (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {
  200. if (jsonString == nil) {
  201. return nil;
  202. }
  203. NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
  204. NSError *err;
  205. if (jsonData == nil) {
  206. return nil;
  207. }
  208. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
  209. options:NSJSONReadingMutableContainers
  210. error:&err];
  211. if(err) {
  212. // NSLog(@"json解析失败:%@",err);
  213. ShowMsg([NSString stringWithFormat:@"数据解析失败,%@",err]);
  214. return nil;
  215. }
  216. return dic;
  217. }
  218. + (void)requestAnythingWithURL:(NSString *)urlString array:(NSArray *)aAarray data:(NSData *)uplownData completion:(MyBlockType)finishBlock
  219. {
  220. if (uplownData) {//有媒体数据上传的请求
  221. NSString *httpUrl = defaultHttp;
  222. NSString *defaultUpload = defaultUploadUrl;
  223. NSString *urlS = [NSString stringWithFormat:@"%@%@%@",httpUrl,defaultUpload,urlString];
  224. [urlS stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
  225. AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager];
  226. afSessionManager.requestSerializer = [AFHTTPRequestSerializer serializer];
  227. afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
  228. afSessionManager.responseSerializer.acceptableContentTypes = [afSessionManager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
  229. afSessionManager.requestSerializer.timeoutInterval = 30;
  230. [jiaPeiManager QMLog:urlS obj:aAarray];
  231. [afSessionManager POST:urlS parameters:nil headers:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
  232. int k = 0;
  233. for (NSData *uplownData in aAarray) {
  234. NSString *typeString = [Tools typeForImageData:uplownData];
  235. NSString *fileType = [NSString stringWithFormat:@"image.%@",typeString];
  236. NSString *mimeType = [NSString stringWithFormat:@"image/%@",typeString];
  237. k ++;
  238. [formData appendPartWithFileData:uplownData
  239. name:[NSString stringWithFormat:@"photo%d",k]
  240. fileName:fileType
  241. mimeType:mimeType];
  242. }
  243. } progress:^(NSProgress * _Nonnull uploadProgress) {
  244. //NSLog(@"uploadProgress----><>%@-----><>%@",urlS,uploadProgress);
  245. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  246. if (responseObject == nil) {
  247. NSDictionary *dic = nil;
  248. finishBlock(dic);
  249. return;
  250. }
  251. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject
  252. options:NSJSONReadingMutableContainers
  253. error:nil];
  254. //请求成功
  255. //NSLog(@"上传图片-----><>%@----><>%@",urlS,dic);
  256. [jiaPeiManager QMLog:urlS obj:dic];
  257. RemoveHUD();
  258. finishBlock(dic);
  259. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  260. //请求失败
  261. // NSLog(@"上传---><>%@",error);
  262. [jiaPeiManager QMLog:urlS obj:error.description];
  263. RemoveHUD();
  264. //失败的时候 要把失败的事情传输回去
  265. if ([error.domain isEqualToString:NSURLErrorDomain]) {
  266. // network error
  267. finishBlock(@{@"code" : @"1",@"body" : @"请检查网络连接"});
  268. } else {
  269. NSString *errorStr = [NSError rq_tipsFromError:error];
  270. if (errorStr && ![errorStr isEqualToString:@""]) {
  271. finishBlock(@{@"code" : @"1",@"body" : errorStr});
  272. } else {
  273. NSDictionary *dic = nil;
  274. finishBlock(dic);
  275. }
  276. }
  277. }];
  278. }else{//无媒体数据上传的请求
  279. NSDictionary *dic = [jiaPeiManager getDicWithArray:aAarray];
  280. if (aAarray == nil) {
  281. dic = nil;
  282. }else {
  283. NSArray *keyArr = @[@"userOutId", @"stuOutId", @"queryValue", @"outId", @"stuId"];
  284. NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@"SELF IN %@",keyArr];
  285. NSArray * filter = [[dic allKeys] filteredArrayUsingPredicate:filterPredicate];
  286. if (filter.count > 0) {
  287. if (!dic[filter.firstObject] || [dic[filter.firstObject] length] < 1) {
  288. ShowMsg(@"未绑定运管账号,无法进行此操作");
  289. return;
  290. }
  291. }
  292. }
  293. //生成请求加密后的url
  294. NSString *urlS = [jiaPeiManager getURLWithDict:dic urlPre:urlString];
  295. [jiaPeiManager QMLog:urlS obj:dic];
  296. if (![urlString isEqualToString:@"getSchInfoListByTujian"]) {
  297. NSLog(@"发起请求---urlString---><>%@--->\n%@",urlS,dic);
  298. }
  299. //设置请求管理器
  300. AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager];
  301. afSessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
  302. afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
  303. afSessionManager.responseSerializer.acceptableContentTypes = [afSessionManager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
  304. afSessionManager.requestSerializer.timeoutInterval = [urlString isEqualToString:@"uploadEduPic"]? 60 : 30;
  305. [afSessionManager POST:urlS parameters:dic headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  306. //请求成功
  307. if (responseObject == nil) {
  308. NSDictionary *dic = nil;
  309. finishBlock(dic);
  310. return;
  311. }
  312. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject
  313. options:NSJSONReadingMutableContainers
  314. error:nil];
  315. if (![urlString isEqualToString:@"getSchInfoListByTujian"]) {
  316. NSLog(@"请求成功123---urlString---><>%@--->\n%@",urlS,dic);
  317. }
  318. [jiaPeiManager QMLog:urlS obj:dic];
  319. finishBlock(dic);
  320. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  321. //请求失败
  322. // NSLog(@"请求失败123----><>%@",error);
  323. RemoveHUD();
  324. [jiaPeiManager QMLog:urlS obj:error.description];
  325. //失败的时候 要把失败的事情传输回去
  326. if ([error.domain isEqualToString:NSURLErrorDomain]) {
  327. // network error
  328. finishBlock(@{@"code" : @"1",@"body" : @"请检查网络连接"});
  329. } else {
  330. NSString *errorStr = [NSError rq_tipsFromError:error];
  331. if (errorStr && ![errorStr isEqualToString:@""]) {
  332. finishBlock(@{@"code" : @"1",@"body" : errorStr});
  333. } else {
  334. NSDictionary *dic = nil;
  335. finishBlock(dic);
  336. }
  337. }
  338. }];
  339. }
  340. }
  341. + (void)requestGetAnythingWithURL:(NSString *)urlString completion:(MyBlockType)finishBlock {
  342. [self requestGetAnythingWithURL:urlString array:nil appendurlString:nil completion:finishBlock];
  343. }
  344. + (void)requestGetAnythingWithURL:(NSString *)urlString appendurlString:(NSString *)appendurlString completion:(MyBlockType)finishBlock {
  345. [self requestGetAnythingWithURL:urlString array:nil appendurlString:appendurlString completion:finishBlock];
  346. }
  347. + (void)requestGetAnythingWithURL:(NSString *)urlString array:(NSArray *)array completion:(MyBlockType)finishBlock {
  348. [self requestGetAnythingWithURL:urlString array:array appendurlString:nil completion:finishBlock];
  349. }
  350. + (void)requestGetAnythingWithURL:(NSString *)urlString array:(NSArray *)array appendurlString:(NSString *)appendurlString completion:(MyBlockType)finishBlock {
  351. //生成请求加密后的url
  352. NSString *urlS = [jiaPeiManager getURLWithDict:[jiaPeiManager getDicWithArray:array] urlPre:urlString];
  353. if (appendurlString) {
  354. NSMutableString *mutlStr = [NSMutableString stringWithString:urlS];
  355. NSRange range = [urlS rangeOfString:urlString];
  356. [mutlStr insertString:appendurlString atIndex:NSMaxRange(range)];
  357. urlS = mutlStr.copy;
  358. }
  359. // NSLog(@"-----><>%@--------><>%@",urlString,urlS);
  360. //设置请求管理器
  361. AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager];
  362. afSessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
  363. afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
  364. [jiaPeiManager QMLog:urlS obj:array];
  365. [afSessionManager GET:urlS parameters:nil headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  366. //NSLog(@"请求返回123-------><>%@",responseObject);
  367. if (responseObject == nil) {
  368. NSDictionary *dic = nil;
  369. finishBlock(dic);
  370. return;
  371. }
  372. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject
  373. options:NSJSONReadingMutableContainers
  374. error:nil];
  375. //NSLog(@"请求返回123---------><>%@",dic);
  376. [jiaPeiManager QMLog:urlS obj:dic];
  377. finishBlock(dic);
  378. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  379. [jiaPeiManager QMLog:urlS obj:error.description];
  380. //失败的时候 要把失败的事情传输回去 @{@"code":@"1",@"body":@"请求失败"}
  381. //在AFNetworking方法error代码块中
  382. if ([error.domain isEqualToString:NSURLErrorDomain]) {
  383. // network error
  384. finishBlock(@{@"code" : @"1",@"body" : @"请检查网络连接"});
  385. } else {
  386. NSString *errorStr = [NSError rq_tipsFromError:error];
  387. if (errorStr && ![errorStr isEqualToString:@""]) {
  388. finishBlock(@{@"code" : @"1",@"body" : errorStr});
  389. } else {
  390. NSDictionary *dic = nil;
  391. finishBlock(dic);
  392. }
  393. }
  394. }];
  395. }
  396. + (void)requestPostAnythingWithURL:(NSString *)urlString parameters:(NSDictionary *)parameters completion:(MyBlockType)finishBlock
  397. {
  398. //生成请求加密后的url
  399. NSString *urlS = [jiaPeiManager getURLWithDict:nil urlPre:urlString];
  400. // NSLog(@"-----><>%@--------><>%@",urlString,urlS);
  401. //设置请求管理器
  402. AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager];
  403. afSessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
  404. afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
  405. [afSessionManager POST:urlS parameters:nil headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  406. //NSLog(@"请求返回123-------><>%@",responseObject);
  407. if (responseObject == nil) {
  408. NSDictionary *dic = nil;
  409. finishBlock(dic);
  410. return;
  411. }
  412. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject
  413. options:NSJSONReadingMutableContainers
  414. error:nil];
  415. //NSLog(@"请求返回123---------><>%@",dic);
  416. finishBlock(dic);
  417. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  418. //失败的时候 要把失败的事情传输回去 @{@"code":@"1",@"body":@"请求失败"}
  419. //在AFNetworking方法error代码块中
  420. if ([error.domain isEqualToString:NSURLErrorDomain]) {
  421. // network error
  422. finishBlock(@{@"code" : @"1",@"body" : @"请检查网络连接"});
  423. } else {
  424. NSString *errorStr = [NSError rq_tipsFromError:error];
  425. if (errorStr && ![errorStr isEqualToString:@""]) {
  426. finishBlock(@{@"code" : @"1",@"body" : errorStr});
  427. } else {
  428. NSDictionary *dic = nil;
  429. finishBlock(dic);
  430. }
  431. }
  432. }];
  433. }
  434. #pragma mark 公共请求
  435. +(void)requestADImage
  436. {
  437. if (![Util connectedToNetWork]) {
  438. NSString *filePath = [Tools getPathWithFileName:@"ads.plist"];
  439. if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
  440. NSArray *arr = [NSArray arrayWithContentsOfFile:filePath];
  441. myDelegate.adArray = arr;
  442. }
  443. }
  444. NSMutableArray *arr=[NSMutableArray array];
  445. [arr addPro:@"type" Value:@"4"];
  446. NSString* method = @"getAppAdsNew";
  447. [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary *root) {
  448. RemoveHUD();
  449. if (!root || [root[@"code"] isEqualToString:@"1"]) {
  450. //如果没广告图片 就从这里获取
  451. NSString *filePath = [Tools getPathWithFileName:@"ads.plist"];
  452. if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
  453. NSArray *arr = [NSArray arrayWithContentsOfFile:filePath];
  454. myDelegate.adArray = arr;
  455. }
  456. }else{
  457. //有广告 就更新本地广告
  458. if ([(NSArray *)root[@"body"] count] > 0) {
  459. myDelegate.adArray = root[@"body"];
  460. NSString *filePath = [Tools getPathWithFileName:@"ads.plist"];
  461. [root[@"body"] writeToFile:filePath atomically:YES];
  462. }
  463. }
  464. //这个判断是否可以在广告加载钱接收到广告 其实和放另一个地方是一样的效果
  465. NSMutableArray *array = [NSMutableArray array];
  466. for (NSDictionary *dic in myDelegate.adArray) {
  467. if ([dic[@"LOCATION"] isEqualToString:@"100"]) {
  468. [array addObject:dic[@"IMG"]];
  469. }
  470. }
  471. RQ_COMMON_MANAGER.adPaths = array;
  472. NSMutableArray *adMutArr = [NSMutableArray array];
  473. [[[myDelegate.adArray.rac_sequence.signal deliverOnMainThread] filter:^BOOL(NSDictionary *dict) {
  474. if ([dict[@"OPENTYPE"] isEqualToString:@"2"] || [dict[@"OPENTYPE"] isEqualToString:@"3"]) {
  475. return [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"wechat://"]];
  476. } else {
  477. return YES;
  478. }
  479. }] subscribeNext:^(NSDictionary *dict) {
  480. [adMutArr addObject:dict];
  481. } completed:^{
  482. myDelegate.adArray = adMutArr.copy;
  483. NSString *filePath = [Tools getPathWithFileName:@"ads.plist"];
  484. [root[@"body"] writeToFile:filePath atomically:YES];
  485. [[NSNotificationCenter defaultCenter] postNotificationName:@"updateAD" object:@"isSuccess"];
  486. }];
  487. }];
  488. }
  489. /**主要是为了更新用户数据.
  490. 比如上传头像后
  491. */
  492. +(void)reLoginWithCompletion:(BlockTypeVo)finishBlcok
  493. {
  494. NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
  495. NSMutableArray *arr=[NSMutableArray array];
  496. NSDictionary *udDic = [ud objectForKey:@"jiaPeiLoginTest"];
  497. if ([udDic[@"loginType"] isEqualToString:@"1"]) {
  498. [arr property:RQStringIsNotEmpty(RQ_USER_MANAGER.currentUser.loginCode)? RQ_USER_MANAGER.currentUser.loginCode : @"" forKey:@"loginCode"];
  499. [arr property:RQ_USER_MANAGER.currentUser.password forKey:@"password"];
  500. [arr property:@"" forKey:@"openId"]; //如果是第三方登录 填写token nickName
  501. [arr property:@"" forKey:@"nickName"]; //如果是第三方登录 填写获取到的昵称
  502. [arr property:@"" forKey:@"photo"]; //如果是第三方登录 填写获取到的照片全路径
  503. [arr property:@"" forKey:@"sex"]; //如果是第三方登录 填写获取到的用户性别
  504. }else{
  505. [arr property:@"" forKey:@"loginCode"];
  506. [arr property:@"" forKey:@"password"];
  507. [arr property:udDic[@"openId"] forKey:@"openId"]; //如果是第三方登录 填写token
  508. [arr property:udDic[@"nickName"] forKey:@"nickName"]; //如果是第三方登录 填写获取到的昵称
  509. [arr property:udDic[@"photo"] forKey:@"photo"]; //如果是第三方登录 填写获取到的照片全路径
  510. [arr property:udDic[@"sex"] forKey:@"sex"]; //如果是第三方登录 填写获取到的用户性别
  511. }
  512. [arr property:udDic[@"loginType"] forKey:@"loginType"];//登录类型
  513. [arr property:@"2" forKey:@"appType"];
  514. NSString *systemName = [[UIDevice currentDevice] systemName];
  515. NSString *systemVersion = [[UIDevice currentDevice] systemVersion];
  516. [arr property:[NSString stringWithFormat:@"%@%@",systemName,systemVersion] forKey:@"systemVersion"];
  517. NSString *identifier = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
  518. NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
  519. [arr property:[NSString stringWithFormat:@"%@%@",identifier,currentVersion] forKey:@"version"];
  520. NSString* method = @"stuLogin";
  521. [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary *dict) {
  522. RemoveHUD();
  523. //NSLog(@"更新数据-->%@-----%@",arr,dict);
  524. if (!dict) {
  525. return;
  526. }
  527. if ( [dict[@"code"] isEqualToString:@"1"]) {
  528. return ;
  529. }
  530. if ( [dict[@"code"] isEqualToString:@"0"]) {
  531. }
  532. //更新信息
  533. // defUser.userDict = [NSMutableDictionary dictionaryWithDictionary:dict[@"body"]];
  534. // if ([defUser.userDict[@"schInfo"] isKindOfClass:[NSDictionary class]])
  535. // {
  536. // defUser.userSchDict = [NSMutableDictionary dictionaryWithDictionary:defUser.userDict[@"schInfo"]];
  537. // }else{
  538. // defUser.userSchDict = nil;
  539. // }
  540. RQUserModel *user = [RQUserModel modelWithDictionary:[NSMutableDictionary dictionaryWithDictionary:dict[@"body"]]];
  541. /// 存储用户数据
  542. [RQ_USER_MANAGER loginUser:user];
  543. myDelegate.isLogin = YES;
  544. [RQ_VIP_Module isVipWithSubject:0 complete:^(BOOL isVip) {
  545. }];
  546. [RQ_VIP_Module isActiveWithCcomplete:^(RQActivationModel * _Nullable activationModel, BOOL isSuccess) {}];
  547. if (finishBlcok) {
  548. finishBlcok();
  549. }
  550. }];
  551. }
  552. //QM-console-log
  553. + (void)QMLog:(NSString *)urlString obj:(id )obj
  554. {
  555. #if defined(DEBUG)||defined(_DEBUG)
  556. if(isOffQMConsole){
  557. NSMutableString *log = [NSMutableString stringWithFormat:@">>>>>>>>>>>>>>>>>>>>>jiaPeiManager>>>>>>>>>>>>>>>>>>>>>>>>>>"];
  558. [log appendFormat:@"urlString=======>:%@", urlString];
  559. [log appendFormat:@"obj======>:%@", obj];
  560. [log appendString:@"<<<<<<<<<<<<<<<<<<<<<jiaPeiManager<<<<<<<<<<<<<<<<<<<<<<<<<<"];
  561. [QMUIConsole log:log];
  562. }
  563. #endif
  564. }
  565. + (void)QMLogStr:(NSString *)log
  566. {
  567. if(isOffQMConsole){
  568. [QMUIConsole log:log];
  569. }
  570. }
  571. @end
  572. void DubugLog(NSString *logString)
  573. {
  574. if (!isOfficial) {
  575. NSLog(@"%@",logString);
  576. }
  577. }