jiaPeiManager.m 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986
  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 *noticeArray = @[@"jsjpNotice",
  102. ];
  103. if ([noticeArray containsObject:urlP]) {
  104. httpUrl = @"http://121.46.4.11:18090/";
  105. urlDefault = @"iats-api/api/";
  106. }
  107. //模拟计时
  108. NSArray *imitate2Array = @[@"getTrainInsList",
  109. @"getDeviceMnList",
  110. @"getExamQuota",
  111. @"getReserveMnByDevId",
  112. @"getReserveMnList",
  113. @"getOrderMnList",
  114. @"getDiscountHalfHour",
  115. @"uploadReserveMn",
  116. @"deteleReserveMn"
  117. ];
  118. if ([imitate2Array containsObject:urlP]) {
  119. urlDefault = defaultImitateUrl2;
  120. }
  121. //课堂api用特殊
  122. NSArray *classroomArray = @[@"getStunocarSignInfo",
  123. @"getStunocarPhoto",
  124. @"stunocarfaceToface",
  125. @"updateStunocarPhoto",
  126. @"uploadStunocarSignIn",
  127. @"uploadStunocarSignOut",
  128. @"education/imageup",
  129. ];
  130. for (NSString *item in classroomArray) {
  131. if ([urlP containsString:item]) {
  132. httpUrl = @"http://121.46.4.11:18081/";
  133. urlDefault = @"api/";
  134. }
  135. }
  136. // //实车认证
  137. // NSArray *carAuthenticationArray = @[@"uploadStudentLive",
  138. // ];
  139. // if ([carAuthenticationArray containsObject:urlP]) {
  140. // urlDefault = @"xmtmsappservice/appservice/";
  141. // }
  142. // 远程理论计时
  143. NSArray *educationArr = @[@"getCurrentTime", // 获取当前时间
  144. @"uploadEduSignIn", // 远程理论签到
  145. @"uploadEduPic", // 远程理论拍照上传
  146. @"uploadEduSignOut", // 远程理论签退
  147. @"getTheoryStatus", // 获取理论签到状态
  148. @"edufaceToface" // 远程理论人脸比对
  149. ];
  150. if ([educationArr containsObject:urlP]) {
  151. urlDefault = defaultEducation;
  152. // if ([urlP isEqualToString:@"edufaceToface"] ) {
  153. // httpUrl = @"http://175.42.30.21:9096/xm";
  154. // urlDefault = @"webservice/education/";
  155. // }
  156. }
  157. NSTimeInterval timeI = [[NSDate date] timeIntervalSince1970] * 1000;//获取时间戳 单位:s *1000毫秒
  158. NSString *timeStr = [NSString stringWithFormat:@"%.0f",timeI];
  159. NSString *urlS = @"";
  160. if (dic == nil || dic.allValues.count == 0) {
  161. if (isAnother) {
  162. urlS = [NSString stringWithFormat:@"%@%@%@",httpUrl,urlDefault,urlP];
  163. } else {
  164. urlS = [NSString stringWithFormat:@"%@%@%@?ts=%@&user=ios&v=jsjp",httpUrl,urlDefault,urlP,timeStr];
  165. }
  166. } else {
  167. //添加key字段
  168. NSMutableString *contentString = [NSMutableString stringWithString:[self getSignStringWithDictionary:dic]];
  169. if (isAnother) {
  170. if (contentString.length > 1) {
  171. NSString *lastString = [contentString substringFromIndex:contentString.length-1];
  172. if ([lastString isEqualToString:@"&"]) {
  173. contentString = [contentString substringToIndex:[contentString length]-1].mutableCopy;
  174. }
  175. }
  176. urlS = [NSString stringWithFormat:@"%@%@%@?%@",httpUrl,urlDefault,urlP,contentString];
  177. } else {
  178. [contentString appendFormat:@"key=%@", timeStr];
  179. // NSString *strUrl1 = [contentString stringByReplacingOccurrencesOfString:@" " withString:@""];
  180. // NSString *strUrl2 = [strUrl1 stringByReplacingOccurrencesOfString:@"\t" withString:@""];
  181. // NSString *strUrl3 = [strUrl1 stringByReplacingOccurrencesOfString:@"\n" withString:@""];
  182. urlS = [NSString stringWithFormat:@"%@%@%@?ts=%@&sign=%@&user=ios&v=jsjp",httpUrl,urlDefault,urlP,timeStr,[[contentString md5Encrypt] uppercaseString]];
  183. //NSLog(@"urlS----><>%@----><>%@",strUrl3,urlS);
  184. }
  185. }
  186. if ([urlP containsString:@"https://api.weixin.qq.com"]) {
  187. urlS = urlP;
  188. }
  189. return urlS;
  190. }
  191. + (NSString *)getSignStringWithDictionary:(NSDictionary *)dic
  192. {
  193. NSMutableString *contentString =[NSMutableString string];
  194. NSDictionary* dict = [NSDictionary dictionaryWithDictionary:dic];
  195. NSArray *keys = [dict allKeys];
  196. //按字母顺序排序
  197. NSArray *sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
  198. return [obj1 compare:obj2 options:NSNumericSearch];
  199. }];
  200. //拼接字符串
  201. for (NSString *categoryId in sortedArray) {
  202. // if (![categoryId isEqualToString:@"sign"] && ![categoryId isEqualToString:@"timestamp"]){
  203. if (![categoryId isEqualToString:@"sign"]){
  204. if([categoryId isEqualToString:@"biz_content"]){
  205. NSError *error = nil;
  206. NSDictionary* bizDict = [dict objectForKey:@"biz_content"];
  207. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:bizDict options:NSJSONWritingPrettyPrinted error: &error];
  208. NSMutableData *tempJsonData = [NSMutableData dataWithData:jsonData];
  209. NSString* jsonString1 = [[NSString alloc] initWithData:tempJsonData encoding:NSUTF8StringEncoding];
  210. NSString *jsonString2 = [jsonString1 stringByReplacingOccurrencesOfString:@" : " withString:@":"];
  211. [contentString appendFormat:@"biz_content=%@&",jsonString2];
  212. }else{
  213. [contentString appendFormat:@"%@=%@&", categoryId, [dict valueForKey:categoryId]];
  214. }
  215. }
  216. }
  217. return contentString;
  218. }
  219. //dic > string
  220. + (NSString *)dictionaryToJsonString:(NSDictionary *)dic
  221. {
  222. NSError *parseError = nil;
  223. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];
  224. return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
  225. }
  226. //jsonString > dic
  227. + (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {
  228. if (jsonString == nil) {
  229. return nil;
  230. }
  231. NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
  232. NSError *err;
  233. if (jsonData == nil) {
  234. return nil;
  235. }
  236. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
  237. options:NSJSONReadingMutableContainers
  238. error:&err];
  239. if(err) {
  240. // NSLog(@"json解析失败:%@",err);
  241. ShowMsg([NSString stringWithFormat:@"数据解析失败,%@",err]);
  242. return nil;
  243. }
  244. return dic;
  245. }
  246. + (void)NYRequestAnythingDataWithURL:(NSString *)urlString contentType:(NSString *)contentType parameters:(id )parameters completion:(MyBlockType)finishBlock
  247. {
  248. AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager];
  249. afSessionManager.requestSerializer = [AFHTTPRequestSerializer serializer];
  250. if(contentType!=NULL){
  251. // 替换 requestSerializer
  252. afSessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
  253. }else{
  254. afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
  255. }
  256. afSessionManager.responseSerializer.acceptableContentTypes =
  257. [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];
  258. afSessionManager.requestSerializer.timeoutInterval = 30;
  259. // 2. 设置请求头
  260. [afSessionManager.requestSerializer setValue:@"SwaggerBootstrapUi" forHTTPHeaderField:@"Request-Origion"];
  261. [afSessionManager.requestSerializer setValue:@"*/*" forHTTPHeaderField:@"accept"];
  262. [afSessionManager.requestSerializer setValue:@"" forHTTPHeaderField:@"Authorization"]; // 空授权头
  263. if(contentType!=NULL){
  264. [afSessionManager.requestSerializer setValue:contentType forHTTPHeaderField:@"Content-Type"];
  265. }else{
  266. [afSessionManager.requestSerializer setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
  267. }
  268. if(!isOfficial){
  269. urlString = [urlString stringByReplacingOccurrencesOfString:@"jsjp-admin.zzxcx.net" withString:@"jsjp-admin1.zzxcx.net"];
  270. // path = [path stringByReplacingOccurrencesOfString:@"https://jsjp-admin.zzxcx.net" withString:@"http://192.168.31.101:8080"];
  271. // path = [path stringByReplacingOccurrencesOfString:@"/jsjp-admin" withString:@""];
  272. // path = [path stringByReplacingOccurrencesOfString:@"userInfo/vip/info" withString:@"gzpt/userInfo/vip/info"];
  273. }
  274. [afSessionManager POST:urlString parameters:parameters headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  275. if (responseObject == nil) {
  276. NSDictionary *dic = nil;
  277. finishBlock(dic);
  278. return;
  279. }
  280. if(contentType!=NULL){
  281. // 替换 requestSerializer
  282. finishBlock(responseObject);
  283. }else{
  284. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject
  285. options:NSJSONReadingMutableContainers
  286. error:nil];
  287. finishBlock(dic);
  288. }
  289. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  290. NSString *errorStr = [NSError rq_tipsFromError:error];
  291. if (errorStr && ![errorStr isEqualToString:@""]) {
  292. finishBlock(@{@"code" : @"1",@"body" : errorStr});
  293. } else {
  294. NSDictionary *dic = nil;
  295. finishBlock(dic);
  296. }
  297. }];
  298. }
  299. + (void)requestAnythingImageWithURL:(NSString *)urlString array:(NSArray *)aAarray data:(NSData *)uplownData completion:(MyBlockType)finishBlock
  300. {
  301. //比传uplownData
  302. NSDictionary *dic = [jiaPeiManager getDicWithArray:aAarray];
  303. if (aAarray == nil) {
  304. dic = nil;
  305. }else {
  306. NSArray *keyArr = @[@"userOutId", @"stuOutId", @"queryValue", @"outId", @"stuId"];
  307. NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@"SELF IN %@",keyArr];
  308. NSArray * filter = [[dic allKeys] filteredArrayUsingPredicate:filterPredicate];
  309. if (filter.count > 0) {
  310. if (!dic[filter.firstObject] || [dic[filter.firstObject] length] < 1) {
  311. ShowMsg(@"未绑定运管账号,无法进行此操作");
  312. return;
  313. }
  314. }
  315. }
  316. //生成请求加密后的url
  317. NSString *urlS = [[jiaPeiManager getURLWithDict:dic urlPre:urlString] stringByReplacingOccurrencesOfString:@"/api" withString:@""];
  318. AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager];
  319. afSessionManager.requestSerializer = [AFHTTPRequestSerializer serializer];
  320. afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
  321. afSessionManager.responseSerializer.acceptableContentTypes = [afSessionManager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
  322. afSessionManager.requestSerializer.timeoutInterval = 30;
  323. [afSessionManager POST:urlS parameters:nil headers:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
  324. NSString *typeString = [Tools typeForImageData:uplownData];
  325. NSString *fileType = [NSString stringWithFormat:@"image.%@",typeString];
  326. NSString *mimeType = [NSString stringWithFormat:@"image/%@",typeString];
  327. NSTimeInterval timeI = [[NSDate date] timeIntervalSince1970] * 1000;//获取时间戳 单位:s *1000毫秒
  328. NSString *timeStr = [NSString stringWithFormat:@"%.0f",timeI];
  329. [formData appendPartWithFileData:uplownData
  330. name:[NSString stringWithFormat:@"photo%@",timeStr]
  331. fileName:fileType
  332. mimeType:mimeType];
  333. } progress:^(NSProgress * _Nonnull uploadProgress) {
  334. //NSLog(@"uploadProgress----><>%@-----><>%@",urlS,uploadProgress);
  335. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  336. if (responseObject == nil) {
  337. NSDictionary *dic = nil;
  338. finishBlock(dic);
  339. return;
  340. }
  341. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject
  342. options:NSJSONReadingMutableContainers
  343. error:nil];
  344. //请求成功
  345. //NSLog(@"上传图片-----><>%@----><>%@",urlS,dic);
  346. [jiaPeiManager QMLog:urlS obj:dic];
  347. RemoveHUD();
  348. finishBlock(dic);
  349. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  350. //请求失败
  351. RemoveHUD();
  352. //失败的时候 要把失败的事情传输回去
  353. if ([error.domain isEqualToString:NSURLErrorDomain]) {
  354. // network error
  355. finishBlock(@{@"code" : @"1",@"body" : @"请检查网络连接"});
  356. } else {
  357. NSString *errorStr = [NSError rq_tipsFromError:error];
  358. if (errorStr && ![errorStr isEqualToString:@""]) {
  359. finishBlock(@{@"code" : @"1",@"body" : errorStr});
  360. } else {
  361. NSDictionary *dic = nil;
  362. finishBlock(dic);
  363. }
  364. }
  365. }];
  366. }
  367. + (void)requestAnythingWithURL:(NSString *)urlString arrayAES:(NSArray *)aAarray data:(NSData *)uplownData completion:(MyBlockType)finishBlock{
  368. NSDictionary *dic = [jiaPeiManager getDicWithArray:aAarray];
  369. if (aAarray == nil) {
  370. dic = nil;
  371. }else {
  372. NSArray *keyArr = @[@"userOutId", @"stuOutId", @"queryValue", @"outId", @"stuId"];
  373. NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@"SELF IN %@",keyArr];
  374. NSArray * filter = [[dic allKeys] filteredArrayUsingPredicate:filterPredicate];
  375. if (filter.count > 0) {
  376. if (!dic[filter.firstObject] || [dic[filter.firstObject] length] < 1) {
  377. ShowMsg(@"未绑定运管账号,无法进行此操作");
  378. return;
  379. }
  380. }
  381. }
  382. //生成请求加密后的url
  383. NSString *urlS = [jiaPeiManager getURLWithDict:dic urlPre:urlString];
  384. [jiaPeiManager QMLog:urlS obj:dic];
  385. if (![urlString isEqualToString:@"getSchInfoListByTujian"]) {
  386. NSLog(@"发起请求---urlString---><>%@--->\n%@",urlS,dic);
  387. }
  388. //设置请求管理器
  389. AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager];
  390. afSessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
  391. afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
  392. // [afSessionManager.requestSerializer setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
  393. afSessionManager.responseSerializer.acceptableContentTypes = [afSessionManager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
  394. afSessionManager.requestSerializer.timeoutInterval = [urlString isEqualToString:@"uploadEduPic"]? 60 : 30;
  395. NSString *dict_str = [NYTools encryptAES:dic.yy_modelToJSONString];
  396. NSDictionary *body_dict = @{
  397. @"body":dict_str
  398. };
  399. [afSessionManager POST:urlS parameters:body_dict headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  400. //请求成功
  401. if (responseObject == nil) {
  402. NSDictionary *dic = nil;
  403. finishBlock(dic);
  404. return;
  405. }
  406. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject
  407. options:NSJSONReadingMutableContainers
  408. error:nil];
  409. if (![urlString isEqualToString:@"getSchInfoListByTujian"]) {
  410. NSLog(@"请求成功123---urlString---><>%@--->\n%@",urlS,dic);
  411. }
  412. [jiaPeiManager QMLog:urlS obj:dic];
  413. finishBlock(dic);
  414. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  415. //请求失败
  416. // NSLog(@"请求失败123----><>%@",error);
  417. RemoveHUD();
  418. [jiaPeiManager QMLog:urlS obj:error.description];
  419. //失败的时候 要把失败的事情传输回去
  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. + (void)requestAnythingWithURL:(NSString *)urlString array:(NSArray *)aAarray data:(NSData *)uplownData completion:(MyBlockType)finishBlock
  435. {
  436. if (uplownData) {//有媒体数据上传的请求
  437. NSString *httpUrl = defaultHttp;
  438. NSString *defaultUpload = defaultUploadUrl;
  439. NSString *urlS = [NSString stringWithFormat:@"%@%@%@",httpUrl,defaultUpload,urlString];
  440. [urlS stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
  441. AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager];
  442. afSessionManager.requestSerializer = [AFHTTPRequestSerializer serializer];
  443. afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
  444. afSessionManager.responseSerializer.acceptableContentTypes = [afSessionManager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
  445. afSessionManager.requestSerializer.timeoutInterval = 30;
  446. [jiaPeiManager QMLog:urlS obj:aAarray];
  447. [afSessionManager POST:urlS parameters:nil headers:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
  448. int k = 0;
  449. for (NSData *uplownData in aAarray) {
  450. NSString *typeString = [Tools typeForImageData:uplownData];
  451. NSString *fileType = [NSString stringWithFormat:@"image.%@",typeString];
  452. NSString *mimeType = [NSString stringWithFormat:@"image/%@",typeString];
  453. k ++;
  454. [formData appendPartWithFileData:uplownData
  455. name:[NSString stringWithFormat:@"photo%d",k]
  456. fileName:fileType
  457. mimeType:mimeType];
  458. }
  459. } progress:^(NSProgress * _Nonnull uploadProgress) {
  460. //NSLog(@"uploadProgress----><>%@-----><>%@",urlS,uploadProgress);
  461. } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  462. if (responseObject == nil) {
  463. NSDictionary *dic = nil;
  464. finishBlock(dic);
  465. return;
  466. }
  467. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject
  468. options:NSJSONReadingMutableContainers
  469. error:nil];
  470. //请求成功
  471. //NSLog(@"上传图片-----><>%@----><>%@",urlS,dic);
  472. [jiaPeiManager QMLog:urlS obj:dic];
  473. RemoveHUD();
  474. finishBlock(dic);
  475. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  476. //请求失败
  477. // NSLog(@"上传---><>%@",error);
  478. [jiaPeiManager QMLog:urlS obj:error.description];
  479. RemoveHUD();
  480. //失败的时候 要把失败的事情传输回去
  481. if ([error.domain isEqualToString:NSURLErrorDomain]) {
  482. // network error
  483. finishBlock(@{@"code" : @"1",@"body" : @"请检查网络连接"});
  484. } else {
  485. NSString *errorStr = [NSError rq_tipsFromError:error];
  486. if (errorStr && ![errorStr isEqualToString:@""]) {
  487. finishBlock(@{@"code" : @"1",@"body" : errorStr});
  488. } else {
  489. NSDictionary *dic = nil;
  490. finishBlock(dic);
  491. }
  492. }
  493. }];
  494. }else{//无媒体数据上传的请求
  495. NSDictionary *dic = [jiaPeiManager getDicWithArray:aAarray];
  496. if (aAarray == nil) {
  497. dic = nil;
  498. }else {
  499. NSArray *keyArr = @[@"userOutId", @"stuOutId", @"queryValue", @"outId", @"stuId"];
  500. NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@"SELF IN %@",keyArr];
  501. NSArray * filter = [[dic allKeys] filteredArrayUsingPredicate:filterPredicate];
  502. if (filter.count > 0) {
  503. if (!dic[filter.firstObject] || [dic[filter.firstObject] length] < 1) {
  504. ShowMsg(@"未绑定运管账号,无法进行此操作");
  505. return;
  506. }
  507. }
  508. }
  509. //生成请求加密后的url
  510. NSString *urlS = [jiaPeiManager getURLWithDict:dic urlPre:urlString];
  511. [jiaPeiManager QMLog:urlS obj:dic];
  512. if (![urlString isEqualToString:@"getSchInfoListByTujian"]) {
  513. NSLog(@"发起请求---urlString---><>%@--->\n%@",urlS,dic);
  514. }
  515. //设置请求管理器
  516. AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager];
  517. afSessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
  518. afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
  519. afSessionManager.responseSerializer.acceptableContentTypes = [afSessionManager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
  520. afSessionManager.requestSerializer.timeoutInterval = [urlString isEqualToString:@"uploadEduPic"]? 60 : 30;
  521. [afSessionManager POST:urlS parameters:dic headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  522. //请求成功
  523. if (responseObject == nil) {
  524. NSDictionary *dic = nil;
  525. finishBlock(dic);
  526. return;
  527. }
  528. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject
  529. options:NSJSONReadingMutableContainers
  530. error:nil];
  531. if (![urlString isEqualToString:@"getSchInfoListByTujian"]) {
  532. NSLog(@"请求成功123---urlString---><>%@--->\n%@",urlS,dic);
  533. }
  534. [jiaPeiManager QMLog:urlS obj:dic];
  535. finishBlock(dic);
  536. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  537. //请求失败
  538. // NSLog(@"请求失败123----><>%@",error);
  539. RemoveHUD();
  540. [jiaPeiManager QMLog:urlS obj:error.description];
  541. //失败的时候 要把失败的事情传输回去
  542. if ([error.domain isEqualToString:NSURLErrorDomain]) {
  543. // network error
  544. finishBlock(@{@"code" : @"1",@"body" : @"请检查网络连接"});
  545. } else {
  546. NSString *errorStr = [NSError rq_tipsFromError:error];
  547. if (errorStr && ![errorStr isEqualToString:@""]) {
  548. finishBlock(@{@"code" : @"1",@"body" : errorStr});
  549. } else {
  550. NSDictionary *dic = nil;
  551. finishBlock(dic);
  552. }
  553. }
  554. }];
  555. }
  556. }
  557. + (void)requestGetAnythingWithURL:(NSString *)urlString completion:(MyBlockType)finishBlock {
  558. [self requestGetAnythingWithURL:urlString array:nil appendurlString:nil completion:finishBlock];
  559. }
  560. + (void)requestGetAnythingWithURL:(NSString *)urlString appendurlString:(NSString *)appendurlString completion:(MyBlockType)finishBlock {
  561. [self requestGetAnythingWithURL:urlString array:nil appendurlString:appendurlString completion:finishBlock];
  562. }
  563. + (void)requestGetAnythingWithURL:(NSString *)urlString array:(NSArray *)array completion:(MyBlockType)finishBlock {
  564. [self requestGetAnythingWithURL:urlString array:array appendurlString:nil completion:finishBlock];
  565. }
  566. + (void)requestGetWithURL:(NSString *)urlString array:(NSArray *)array appendurlString:(NSString *)appendurlString completion:(MyBlockType)finishBlock
  567. {
  568. NSString *urlS = [NSString stringWithFormat:@"%@/%@",coachDefaultHttp,urlString];
  569. //设置请求管理器
  570. AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager];
  571. afSessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
  572. afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
  573. afSessionManager.requestSerializer.timeoutInterval = 30;
  574. /// 安全策略
  575. AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy];
  576. //allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
  577. //如果是需要验证自建证书,需要设置为YES
  578. securityPolicy.allowInvalidCertificates = YES;
  579. //validatesDomainName 是否需要验证域名,默认为YES;
  580. //假如证书的域名与你请求的域名不一致,需把该项设置为NO
  581. //主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。
  582. securityPolicy.validatesDomainName = NO;
  583. afSessionManager.securityPolicy = securityPolicy;
  584. /// 支持解析
  585. afSessionManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",
  586. @"text/json",
  587. @"text/javascript",
  588. @"text/html",
  589. @"text/plain",
  590. @"text/html; charset=UTF-8",
  591. nil];
  592. NSMutableDictionary *parameters = nil;
  593. if(array&&array.count){
  594. parameters = [NSMutableDictionary dictionary];
  595. for (NSDictionary *item in array) {
  596. [parameters addEntriesFromDictionary:item];
  597. }
  598. }
  599. [jiaPeiManager QMLog:urlS obj:array];
  600. [afSessionManager GET:urlS parameters:parameters headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  601. //NSLog(@"请求返回123-------><>%@",responseObject);
  602. if (responseObject == nil) {
  603. NSDictionary *dic = nil;
  604. finishBlock(dic);
  605. return;
  606. }
  607. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject
  608. options:NSJSONReadingMutableContainers
  609. error:nil];
  610. //NSLog(@"请求返回123---------><>%@",dic);
  611. [jiaPeiManager QMLog:urlS obj:dic];
  612. finishBlock(dic);
  613. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  614. [jiaPeiManager QMLog:urlS obj:error.description];
  615. //失败的时候 要把失败的事情传输回去 @{@"code":@"1",@"body":@"请求失败"}
  616. //在AFNetworking方法error代码块中
  617. if ([error.domain isEqualToString:NSURLErrorDomain]) {
  618. // network error
  619. finishBlock(@{@"code" : @"1",@"body" : @"请检查网络连接"});
  620. } else {
  621. NSString *errorStr = [NSError rq_tipsFromError:error];
  622. if (errorStr && ![errorStr isEqualToString:@""]) {
  623. finishBlock(@{@"code" : @"1",@"body" : errorStr});
  624. } else {
  625. NSDictionary *dic = nil;
  626. finishBlock(dic);
  627. }
  628. }
  629. }];
  630. }
  631. + (void)requestGetAnythingWithURL:(NSString *)urlString array:(NSArray *)array appendurlString:(NSString *)appendurlString completion:(MyBlockType)finishBlock {
  632. //生成请求加密后的url
  633. NSString *urlS = [jiaPeiManager getURLWithDict:[jiaPeiManager getDicWithArray:array] urlPre:urlString];
  634. if (appendurlString) {
  635. NSMutableString *mutlStr = [NSMutableString stringWithString:urlS];
  636. NSRange range = [urlS rangeOfString:urlString];
  637. [mutlStr insertString:appendurlString atIndex:NSMaxRange(range)];
  638. urlS = mutlStr.copy;
  639. }
  640. // NSLog(@"-----><>%@--------><>%@",urlString,urlS);
  641. //设置请求管理器
  642. AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager];
  643. afSessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
  644. afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
  645. [jiaPeiManager QMLog:urlS obj:array];
  646. [afSessionManager GET:urlS parameters:nil headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  647. //NSLog(@"请求返回123-------><>%@",responseObject);
  648. if (responseObject == nil) {
  649. NSDictionary *dic = nil;
  650. finishBlock(dic);
  651. return;
  652. }
  653. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject
  654. options:NSJSONReadingMutableContainers
  655. error:nil];
  656. //NSLog(@"请求返回123---------><>%@",dic);
  657. [jiaPeiManager QMLog:urlS obj:dic];
  658. finishBlock(dic);
  659. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  660. [jiaPeiManager QMLog:urlS obj:error.description];
  661. //失败的时候 要把失败的事情传输回去 @{@"code":@"1",@"body":@"请求失败"}
  662. //在AFNetworking方法error代码块中
  663. if ([error.domain isEqualToString:NSURLErrorDomain]) {
  664. // network error
  665. finishBlock(@{@"code" : @"1",@"body" : @"请检查网络连接"});
  666. } else {
  667. NSString *errorStr = [NSError rq_tipsFromError:error];
  668. if (errorStr && ![errorStr isEqualToString:@""]) {
  669. finishBlock(@{@"code" : @"1",@"body" : errorStr});
  670. } else {
  671. NSDictionary *dic = nil;
  672. finishBlock(dic);
  673. }
  674. }
  675. }];
  676. }
  677. + (void)requestPostAnythingWithURL:(NSString *)urlString parameters:(NSDictionary *)parameters completion:(MyBlockType)finishBlock
  678. {
  679. //生成请求加密后的url
  680. NSString *urlS = [jiaPeiManager getURLWithDict:nil urlPre:urlString];
  681. // NSLog(@"-----><>%@--------><>%@",urlString,urlS);
  682. //设置请求管理器
  683. AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager];
  684. afSessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
  685. afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
  686. [afSessionManager POST:urlS parameters:nil headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
  687. //NSLog(@"请求返回123-------><>%@",responseObject);
  688. if (responseObject == nil) {
  689. NSDictionary *dic = nil;
  690. finishBlock(dic);
  691. return;
  692. }
  693. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject
  694. options:NSJSONReadingMutableContainers
  695. error:nil];
  696. //NSLog(@"请求返回123---------><>%@",dic);
  697. finishBlock(dic);
  698. } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
  699. //失败的时候 要把失败的事情传输回去 @{@"code":@"1",@"body":@"请求失败"}
  700. //在AFNetworking方法error代码块中
  701. if ([error.domain isEqualToString:NSURLErrorDomain]) {
  702. // network error
  703. finishBlock(@{@"code" : @"1",@"body" : @"请检查网络连接"});
  704. } else {
  705. NSString *errorStr = [NSError rq_tipsFromError:error];
  706. if (errorStr && ![errorStr isEqualToString:@""]) {
  707. finishBlock(@{@"code" : @"1",@"body" : errorStr});
  708. } else {
  709. NSDictionary *dic = nil;
  710. finishBlock(dic);
  711. }
  712. }
  713. }];
  714. }
  715. #pragma mark 公共请求
  716. +(void)requestADImage
  717. {
  718. if (![Util connectedToNetWork]) {
  719. NSString *filePath = [Tools getPathWithFileName:@"ads.plist"];
  720. if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
  721. NSArray *arr = [NSArray arrayWithContentsOfFile:filePath];
  722. myDelegate.adArray = arr;
  723. }
  724. }
  725. NSMutableArray *arr=[NSMutableArray array];
  726. [arr addPro:@"type" Value:@"4"];
  727. NSString* method = @"getAppAdsNew";
  728. [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary *root) {
  729. RemoveHUD();
  730. if (!root || [root[@"code"] isEqualToString:@"1"]) {
  731. //如果没广告图片 就从这里获取
  732. NSString *filePath = [Tools getPathWithFileName:@"ads.plist"];
  733. if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
  734. NSArray *arr = [NSArray arrayWithContentsOfFile:filePath];
  735. myDelegate.adArray = arr;
  736. }
  737. }else{
  738. //有广告 就更新本地广告
  739. if ([(NSArray *)root[@"body"] count] > 0) {
  740. myDelegate.adArray = root[@"body"];
  741. NSString *filePath = [Tools getPathWithFileName:@"ads.plist"];
  742. [root[@"body"] writeToFile:filePath atomically:YES];
  743. }
  744. }
  745. //这个判断是否可以在广告加载钱接收到广告 其实和放另一个地方是一样的效果
  746. NSMutableArray *array = [NSMutableArray array];
  747. for (NSDictionary *dic in myDelegate.adArray) {
  748. if ([dic[@"LOCATION"] isEqualToString:@"100"]) {
  749. [array addObject:dic[@"IMG"]];
  750. }
  751. }
  752. RQ_COMMON_MANAGER.adPaths = array;
  753. NSMutableArray *adMutArr = [NSMutableArray array];
  754. [[[myDelegate.adArray.rac_sequence.signal deliverOnMainThread] filter:^BOOL(NSDictionary *dict) {
  755. if ([dict[@"OPENTYPE"] isEqualToString:@"2"] || [dict[@"OPENTYPE"] isEqualToString:@"3"]) {
  756. return [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"wechat://"]];
  757. } else {
  758. return YES;
  759. }
  760. }] subscribeNext:^(NSDictionary *dict) {
  761. [adMutArr addObject:dict];
  762. } completed:^{
  763. myDelegate.adArray = adMutArr.copy;
  764. NSString *filePath = [Tools getPathWithFileName:@"ads.plist"];
  765. [root[@"body"] writeToFile:filePath atomically:YES];
  766. [[NSNotificationCenter defaultCenter] postNotificationName:@"updateAD" object:@"isSuccess"];
  767. }];
  768. }];
  769. }
  770. /**主要是为了更新用户数据.
  771. 比如上传头像后
  772. */
  773. +(void)reLoginWithCompletion:(BlockTypeVo)finishBlcok
  774. {
  775. NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
  776. NSMutableArray *arr=[NSMutableArray array];
  777. NSDictionary *udDic = [ud objectForKey:@"jiaPeiLoginTest"];
  778. if ([udDic[@"loginType"] isEqualToString:@"1"]) {
  779. [arr property:RQStringIsNotEmpty(RQ_USER_MANAGER.currentUser.loginCode)? RQ_USER_MANAGER.currentUser.loginCode : @"" forKey:@"loginCode"];
  780. [arr property:RQ_USER_MANAGER.currentUser.password forKey:@"password"];
  781. [arr property:@"" forKey:@"openId"]; //如果是第三方登录 填写token nickName
  782. [arr property:@"" forKey:@"nickName"]; //如果是第三方登录 填写获取到的昵称
  783. [arr property:@"" forKey:@"photo"]; //如果是第三方登录 填写获取到的照片全路径
  784. [arr property:@"" forKey:@"sex"]; //如果是第三方登录 填写获取到的用户性别
  785. }else{
  786. [arr property:@"" forKey:@"loginCode"];
  787. [arr property:@"" forKey:@"password"];
  788. [arr property:udDic[@"openId"] forKey:@"openId"]; //如果是第三方登录 填写token
  789. [arr property:udDic[@"nickName"] forKey:@"nickName"]; //如果是第三方登录 填写获取到的昵称
  790. [arr property:udDic[@"photo"] forKey:@"photo"]; //如果是第三方登录 填写获取到的照片全路径
  791. [arr property:udDic[@"sex"] forKey:@"sex"]; //如果是第三方登录 填写获取到的用户性别
  792. }
  793. [arr property:udDic[@"loginType"] forKey:@"loginType"];//登录类型
  794. [arr property:@"2" forKey:@"appType"];
  795. NSString *systemName = [[UIDevice currentDevice] systemName];
  796. NSString *systemVersion = [[UIDevice currentDevice] systemVersion];
  797. [arr property:[NSString stringWithFormat:@"%@%@",systemName,systemVersion] forKey:@"systemVersion"];
  798. NSString *identifier = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
  799. NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
  800. [arr property:[NSString stringWithFormat:@"%@%@",identifier,currentVersion] forKey:@"version"];
  801. NSString* method = @"stuLogin";
  802. [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary *dict) {
  803. RemoveHUD();
  804. NSLog(@"更新数据-->%@-----%@",arr,dict);
  805. if (!dict) {
  806. return;
  807. }
  808. if ( [dict[@"code"] isEqualToString:@"1"]) {
  809. return ;
  810. }
  811. if ( [dict[@"code"] isEqualToString:@"0"]) {
  812. }
  813. //更新信息
  814. // defUser.userDict = [NSMutableDictionary dictionaryWithDictionary:dict[@"body"]];
  815. // if ([defUser.userDict[@"schInfo"] isKindOfClass:[NSDictionary class]])
  816. // {
  817. // defUser.userSchDict = [NSMutableDictionary dictionaryWithDictionary:defUser.userDict[@"schInfo"]];
  818. // }else{
  819. // defUser.userSchDict = nil;
  820. // }
  821. RQUserModel *user = [RQUserModel modelWithDictionary:[NSMutableDictionary dictionaryWithDictionary:dict[@"body"]]];
  822. /// 存储用户数据
  823. [RQ_USER_MANAGER loginUser:user];
  824. myDelegate.isLogin = YES;
  825. [RQ_VIP_Module isVipWithSubject:0 complete:^(BOOL isVip) {
  826. }];
  827. [RQ_VIP_Module isActiveWithCcomplete:^(RQActivationModel * _Nullable activationModel, BOOL isSuccess) {}];
  828. if (finishBlcok) {
  829. finishBlcok();
  830. }
  831. }];
  832. }
  833. //QM-console-log
  834. + (void)QMLog:(NSString *)urlString obj:(id )obj
  835. {
  836. #if defined(DEBUG)||defined(_DEBUG)
  837. if(isOffQMConsole){
  838. NSMutableString *log = [NSMutableString stringWithFormat:@">>>>>>>>>>>>>>>>>>>>>jiaPeiManager>>>>>>>>>>>>>>>>>>>>>>>>>>"];
  839. [log appendFormat:@"urlString=======>:%@", urlString];
  840. [log appendFormat:@"obj======>:%@", obj];
  841. [log appendString:@"<<<<<<<<<<<<<<<<<<<<<jiaPeiManager<<<<<<<<<<<<<<<<<<<<<<<<<<"];
  842. [QMUIConsole log:log];
  843. }
  844. #endif
  845. }
  846. + (void)QMLogStr:(NSString *)log
  847. {
  848. if(isOffQMConsole){
  849. [QMUIConsole log:log];
  850. }
  851. }
  852. @end
  853. void DubugLog(NSString *logString)
  854. {
  855. if (!isOfficial) {
  856. NSLog(@"%@",logString);
  857. }
  858. }