// // jiaPeiManager.m // jiaPei // // Created by apple on 2016/12/26. // Copyright © 2016年 JCZ. All rights reserved. #import "jiaPeiManager.h" #import "AFNetworking.h" #import "DES3Util.h" #import "DesUtil.h" @implementation jiaPeiManager + (NSDictionary *)getDicWithArray:(NSArray *)array { NSMutableDictionary *questDic = [NSMutableDictionary dictionaryWithCapacity:array.count]; if (!array) { return questDic; } for (NSDictionary *dict in array) { //其实这个判断跟自定义addpro里面重复了,但是鉴于项目有些参数的添加没有使用addpro过滤。所以此处再次判断 if (dict && dict.allValues.count != 0) { [questDic setValue:[dict.allValues firstObject] forKey:[dict.allKeys firstObject]]; } } return questDic; } + (NSString *)getURLWithDict:(NSDictionary *)dic urlPre:(NSString *)urlP { /// 其他请求 NSArray *anotherArray = @[ @"/open-api/teachingVideo/info/treeList", /// 查询教学视频分类树形列表 @"/open-api/teachingVideo/info/getTeachingVideoByTypeId", /// 根据分类ID查询教学视频 ]; BOOL isAnother = [anotherArray containsObject:urlP]; //http://175.42.30.21:9096/xm //生成带有签名的URL NSString *httpUrl = isAnother? anotherDefaultHttp : defaultHttp; NSString *urlDefault = isAnother? anotherDefaultHttpUrl :defaultHttpUrl; //公共请求 NSArray *commonArray = @[@"getAppAdsNew", //广告 @"getMyYuyueInfos", //获取自主预约 @"getMessageInfos", //我的系统消息 @"getTeachTypes", //获取日志类型 @"getMyTeachLogs", //获取日志 @"stuXXList", //获取休学记录 @"getMyReserveOrders", //获取订单 // @"uploadReserveComplaints", //获取投诉 @"getOrderComplaintsByClassId", //根据课堂ID和投诉用户ID查询投诉 @"getAppParam" ]; if ([commonArray containsObject:urlP]) { urlDefault = defaultCommonUrl; } //计时相关 NSArray *trainArray = @[@"getCoachSignForTrain", //获取教练当天签到状态 @"getSignRecords", //获取教练签到记录 @"getCoachSignStuRecords", //获取学员签到列表 @"uploadSignOutOrClassRecord", //签退并上传学时汇总 @"uploadAppTrainSingle", //分钟学时及GPS点上传 @"uploadAppTrainPl", //分钟学时批量上传 @"comparisonPhoto", //学员签到/签退/随机拍照 @"uploadStuSign", //学员签到 @"doTeach", //我要带教 @"saveCoachSignOut", //教练员签退 @"saveCoachSignIn", //教练员签到 @"doDeviceLogOut", //终端注销 @"doDeviceReg", //终端注册 @"getPrice", //培训价格 @"delLogStudent", //霸王签退 @"uploadReserveOrder", //计划生成订单 @"delReserveOrder", //删除计划订单 @"uploadBindStuImei", //学员手机设备绑定 @"getEvaluationCoachList", //教练获得的评价栏目数 @"doComplaint", //学时投诉 @"doEvaluation", //学时评论 @"getTrainFinish", //获取已完成学时 @"getTrainFinishNew", //获取已完成学时新 @"getEvaluationList", //查看学时评论 @"getStuSignFlag", //获取当前学员签到状态 @"forceSignOut", //用classid直接汇总 @"uploadMnStuLogin", //模拟计时签到 @"uploadMnSignOut", //模拟计时签退 @"getStudentTrack", //查询轨迹 @"getSchPlaces", //查询驾校训练点信息 @"getSchPlaceCoachs", //查询训练场下所有教练 @"updateReserveEnd" //预约订单签退 ]; if ([trainArray containsObject:urlP]) { urlDefault = defaultTrainUrl; } if ([urlP isEqualToString:@"comparisonPhoto"] || [urlP isEqualToString:@"takePhoto"]) { urlDefault = defaultUploadUrl; } //模拟计时 NSArray *imitate1Array = @[@"userLogin", @"userLoginOut", @"getUserLearnRecord" ]; if ([imitate1Array containsObject:urlP]) { urlDefault = defaultImitateUrl1; } //模拟计时 NSArray *imitate2Array = @[@"getTrainInsList", @"getDeviceMnList", @"getExamQuota", @"getReserveMnByDevId", @"getReserveMnList", @"getOrderMnList", @"getDiscountHalfHour", @"uploadReserveMn", @"deteleReserveMn" ]; if ([imitate2Array containsObject:urlP]) { urlDefault = defaultImitateUrl2; } // 远程理论计时 NSArray *educationArr = @[@"getCurrentTime", // 获取当前时间 @"uploadEduSignIn", // 远程理论签到 @"uploadEduPic", // 远程理论拍照上传 @"uploadEduSignOut", // 远程理论签退 @"getTheoryStatus", // 获取理论签到状态 @"edufaceToface" // 远程理论人脸比对 ]; if ([educationArr containsObject:urlP]) { urlDefault = defaultEducation; // if ([urlP isEqualToString:@"edufaceToface"] ) { // httpUrl = @"http://175.42.30.21:9096/xm"; // urlDefault = @"webservice/education/"; // } } NSTimeInterval timeI = [[NSDate date] timeIntervalSince1970] * 1000;//获取时间戳 单位:s *1000毫秒 NSString *timeStr = [NSString stringWithFormat:@"%.0f",timeI]; NSString *urlS = @""; if (dic == nil || dic.allValues.count == 0) { if (isAnother) { urlS = [NSString stringWithFormat:@"%@%@%@",httpUrl,urlDefault,urlP]; } else { urlS = [NSString stringWithFormat:@"%@%@%@?ts=%@&user=ios&v=jsjp",httpUrl,urlDefault,urlP,timeStr]; } } else { //添加key字段 NSMutableString *contentString = [NSMutableString stringWithString:[self getSignStringWithDictionary:dic]]; if (isAnother) { if (contentString.length > 1) { NSString *lastString = [contentString substringFromIndex:contentString.length-1]; if ([lastString isEqualToString:@"&"]) { contentString = [contentString substringToIndex:[contentString length]-1].mutableCopy; } } urlS = [NSString stringWithFormat:@"%@%@%@?%@",httpUrl,urlDefault,urlP,contentString]; } else { [contentString appendFormat:@"key=%@", timeStr]; // NSString *strUrl1 = [contentString stringByReplacingOccurrencesOfString:@" " withString:@""]; // NSString *strUrl2 = [strUrl1 stringByReplacingOccurrencesOfString:@"\t" withString:@""]; // NSString *strUrl3 = [strUrl1 stringByReplacingOccurrencesOfString:@"\n" withString:@""]; urlS = [NSString stringWithFormat:@"%@%@%@?ts=%@&sign=%@&user=ios&v=jsjp",httpUrl,urlDefault,urlP,timeStr,[[contentString md5Encrypt] uppercaseString]]; //NSLog(@"urlS----><>%@----><>%@",strUrl3,urlS); } } if ([urlP containsString:@"https://api.weixin.qq.com"]) { urlS = urlP; } return urlS; } + (NSString *)getSignStringWithDictionary:(NSDictionary *)dic { NSMutableString *contentString =[NSMutableString string]; NSDictionary* dict = [NSDictionary dictionaryWithDictionary:dic]; NSArray *keys = [dict allKeys]; //按字母顺序排序 NSArray *sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { return [obj1 compare:obj2 options:NSNumericSearch]; }]; //拼接字符串 for (NSString *categoryId in sortedArray) { // if (![categoryId isEqualToString:@"sign"] && ![categoryId isEqualToString:@"timestamp"]){ if (![categoryId isEqualToString:@"sign"]){ if([categoryId isEqualToString:@"biz_content"]){ NSError *error = nil; NSDictionary* bizDict = [dict objectForKey:@"biz_content"]; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:bizDict options:NSJSONWritingPrettyPrinted error: &error]; NSMutableData *tempJsonData = [NSMutableData dataWithData:jsonData]; NSString* jsonString1 = [[NSString alloc] initWithData:tempJsonData encoding:NSUTF8StringEncoding]; NSString *jsonString2 = [jsonString1 stringByReplacingOccurrencesOfString:@" : " withString:@":"]; [contentString appendFormat:@"biz_content=%@&",jsonString2]; }else{ [contentString appendFormat:@"%@=%@&", categoryId, [dict valueForKey:categoryId]]; } } } return contentString; } //dic > string + (NSString *)dictionaryToJsonString:(NSDictionary *)dic { NSError *parseError = nil; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError]; return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; } //jsonString > dic + (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString { if (jsonString == nil) { return nil; } NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; NSError *err; if (jsonData == nil) { return nil; } NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; if(err) { // NSLog(@"json解析失败:%@",err); ShowMsg([NSString stringWithFormat:@"数据解析失败,%@",err]); return nil; } return dic; } + (void)requestAnythingWithURL:(NSString *)urlString array:(NSArray *)aAarray data:(NSData *)uplownData completion:(MyBlockType)finishBlock { if (uplownData) {//有媒体数据上传的请求 NSString *httpUrl = defaultHttp; NSString *defaultUpload = defaultUploadUrl; NSString *urlS = [NSString stringWithFormat:@"%@%@%@",httpUrl,defaultUpload,urlString]; [urlS stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager]; afSessionManager.requestSerializer = [AFHTTPRequestSerializer serializer]; afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer]; afSessionManager.responseSerializer.acceptableContentTypes = [afSessionManager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"]; afSessionManager.requestSerializer.timeoutInterval = 30; [jiaPeiManager QMLog:urlS obj:aAarray]; [afSessionManager POST:urlS parameters:nil headers:nil constructingBodyWithBlock:^(id _Nonnull formData) { int k = 0; for (NSData *uplownData in aAarray) { NSString *typeString = [Tools typeForImageData:uplownData]; NSString *fileType = [NSString stringWithFormat:@"image.%@",typeString]; NSString *mimeType = [NSString stringWithFormat:@"image/%@",typeString]; k ++; [formData appendPartWithFileData:uplownData name:[NSString stringWithFormat:@"photo%d",k] fileName:fileType mimeType:mimeType]; } } progress:^(NSProgress * _Nonnull uploadProgress) { //NSLog(@"uploadProgress----><>%@-----><>%@",urlS,uploadProgress); } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { if (responseObject == nil) { NSDictionary *dic = nil; finishBlock(dic); return; } NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; //请求成功 //NSLog(@"上传图片-----><>%@----><>%@",urlS,dic); [jiaPeiManager QMLog:urlS obj:dic]; RemoveHUD(); finishBlock(dic); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { //请求失败 // NSLog(@"上传---><>%@",error); [jiaPeiManager QMLog:urlS obj:error.description]; RemoveHUD(); //失败的时候 要把失败的事情传输回去 if ([error.domain isEqualToString:NSURLErrorDomain]) { // network error finishBlock(@{@"code" : @"1",@"body" : @"请检查网络连接"}); } else { NSString *errorStr = [NSError rq_tipsFromError:error]; if (errorStr && ![errorStr isEqualToString:@""]) { finishBlock(@{@"code" : @"1",@"body" : errorStr}); } else { NSDictionary *dic = nil; finishBlock(dic); } } }]; }else{//无媒体数据上传的请求 NSDictionary *dic = [jiaPeiManager getDicWithArray:aAarray]; if (aAarray == nil) { dic = nil; }else { NSArray *keyArr = @[@"userOutId", @"stuOutId", @"queryValue", @"outId", @"stuId"]; NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@"SELF IN %@",keyArr]; NSArray * filter = [[dic allKeys] filteredArrayUsingPredicate:filterPredicate]; if (filter.count > 0) { if (!dic[filter.firstObject] || [dic[filter.firstObject] length] < 1) { ShowMsg(@"未绑定运管账号,无法进行此操作"); return; } } } //生成请求加密后的url NSString *urlS = [jiaPeiManager getURLWithDict:dic urlPre:urlString]; [jiaPeiManager QMLog:urlS obj:dic]; if (![urlString isEqualToString:@"getSchInfoListByTujian"]) { NSLog(@"发起请求---urlString---><>%@--->\n%@",urlS,dic); } //设置请求管理器 AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager]; afSessionManager.requestSerializer = [AFJSONRequestSerializer serializer]; afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer]; afSessionManager.responseSerializer.acceptableContentTypes = [afSessionManager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"]; afSessionManager.requestSerializer.timeoutInterval = [urlString isEqualToString:@"uploadEduPic"]? 60 : 30; [afSessionManager POST:urlS parameters:dic headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { //请求成功 if (responseObject == nil) { NSDictionary *dic = nil; finishBlock(dic); return; } NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; if (![urlString isEqualToString:@"getSchInfoListByTujian"]) { NSLog(@"请求成功123---urlString---><>%@--->\n%@",urlS,dic); } [jiaPeiManager QMLog:urlS obj:dic]; finishBlock(dic); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { //请求失败 // NSLog(@"请求失败123----><>%@",error); RemoveHUD(); [jiaPeiManager QMLog:urlS obj:error.description]; //失败的时候 要把失败的事情传输回去 if ([error.domain isEqualToString:NSURLErrorDomain]) { // network error finishBlock(@{@"code" : @"1",@"body" : @"请检查网络连接"}); } else { NSString *errorStr = [NSError rq_tipsFromError:error]; if (errorStr && ![errorStr isEqualToString:@""]) { finishBlock(@{@"code" : @"1",@"body" : errorStr}); } else { NSDictionary *dic = nil; finishBlock(dic); } } }]; } } + (void)requestGetAnythingWithURL:(NSString *)urlString completion:(MyBlockType)finishBlock { [self requestGetAnythingWithURL:urlString array:nil appendurlString:nil completion:finishBlock]; } + (void)requestGetAnythingWithURL:(NSString *)urlString appendurlString:(NSString *)appendurlString completion:(MyBlockType)finishBlock { [self requestGetAnythingWithURL:urlString array:nil appendurlString:appendurlString completion:finishBlock]; } + (void)requestGetAnythingWithURL:(NSString *)urlString array:(NSArray *)array completion:(MyBlockType)finishBlock { [self requestGetAnythingWithURL:urlString array:array appendurlString:nil completion:finishBlock]; } + (void)requestGetAnythingWithURL:(NSString *)urlString array:(NSArray *)array appendurlString:(NSString *)appendurlString completion:(MyBlockType)finishBlock { //生成请求加密后的url NSString *urlS = [jiaPeiManager getURLWithDict:[jiaPeiManager getDicWithArray:array] urlPre:urlString]; if (appendurlString) { NSMutableString *mutlStr = [NSMutableString stringWithString:urlS]; NSRange range = [urlS rangeOfString:urlString]; [mutlStr insertString:appendurlString atIndex:NSMaxRange(range)]; urlS = mutlStr.copy; } // NSLog(@"-----><>%@--------><>%@",urlString,urlS); //设置请求管理器 AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager]; afSessionManager.requestSerializer = [AFJSONRequestSerializer serializer]; afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer]; [jiaPeiManager QMLog:urlS obj:array]; [afSessionManager GET:urlS parameters:nil headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { //NSLog(@"请求返回123-------><>%@",responseObject); if (responseObject == nil) { NSDictionary *dic = nil; finishBlock(dic); return; } NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; //NSLog(@"请求返回123---------><>%@",dic); [jiaPeiManager QMLog:urlS obj:dic]; finishBlock(dic); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { [jiaPeiManager QMLog:urlS obj:error.description]; //失败的时候 要把失败的事情传输回去 @{@"code":@"1",@"body":@"请求失败"} //在AFNetworking方法error代码块中 if ([error.domain isEqualToString:NSURLErrorDomain]) { // network error finishBlock(@{@"code" : @"1",@"body" : @"请检查网络连接"}); } else { NSString *errorStr = [NSError rq_tipsFromError:error]; if (errorStr && ![errorStr isEqualToString:@""]) { finishBlock(@{@"code" : @"1",@"body" : errorStr}); } else { NSDictionary *dic = nil; finishBlock(dic); } } }]; } + (void)requestPostAnythingWithURL:(NSString *)urlString parameters:(NSDictionary *)parameters completion:(MyBlockType)finishBlock { //生成请求加密后的url NSString *urlS = [jiaPeiManager getURLWithDict:nil urlPre:urlString]; // NSLog(@"-----><>%@--------><>%@",urlString,urlS); //设置请求管理器 AFHTTPSessionManager *afSessionManager = [AFHTTPSessionManager manager]; afSessionManager.requestSerializer = [AFJSONRequestSerializer serializer]; afSessionManager.responseSerializer = [AFHTTPResponseSerializer serializer]; [afSessionManager POST:urlS parameters:nil headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { //NSLog(@"请求返回123-------><>%@",responseObject); if (responseObject == nil) { NSDictionary *dic = nil; finishBlock(dic); return; } NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; //NSLog(@"请求返回123---------><>%@",dic); finishBlock(dic); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { //失败的时候 要把失败的事情传输回去 @{@"code":@"1",@"body":@"请求失败"} //在AFNetworking方法error代码块中 if ([error.domain isEqualToString:NSURLErrorDomain]) { // network error finishBlock(@{@"code" : @"1",@"body" : @"请检查网络连接"}); } else { NSString *errorStr = [NSError rq_tipsFromError:error]; if (errorStr && ![errorStr isEqualToString:@""]) { finishBlock(@{@"code" : @"1",@"body" : errorStr}); } else { NSDictionary *dic = nil; finishBlock(dic); } } }]; } #pragma mark 公共请求 +(void)requestADImage { if (![Util connectedToNetWork]) { NSString *filePath = [Tools getPathWithFileName:@"ads.plist"]; if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { NSArray *arr = [NSArray arrayWithContentsOfFile:filePath]; myDelegate.adArray = arr; } } NSMutableArray *arr=[NSMutableArray array]; [arr addPro:@"type" Value:@"4"]; NSString* method = @"getAppAdsNew"; [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary *root) { RemoveHUD(); if (!root || [root[@"code"] isEqualToString:@"1"]) { //如果没广告图片 就从这里获取 NSString *filePath = [Tools getPathWithFileName:@"ads.plist"]; if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { NSArray *arr = [NSArray arrayWithContentsOfFile:filePath]; myDelegate.adArray = arr; } }else{ //有广告 就更新本地广告 if ([(NSArray *)root[@"body"] count] > 0) { myDelegate.adArray = root[@"body"]; NSString *filePath = [Tools getPathWithFileName:@"ads.plist"]; [root[@"body"] writeToFile:filePath atomically:YES]; } } //这个判断是否可以在广告加载钱接收到广告 其实和放另一个地方是一样的效果 NSMutableArray *array = [NSMutableArray array]; for (NSDictionary *dic in myDelegate.adArray) { if ([dic[@"LOCATION"] isEqualToString:@"100"]) { [array addObject:dic[@"IMG"]]; } } RQ_COMMON_MANAGER.adPaths = array; NSMutableArray *adMutArr = [NSMutableArray array]; [[[myDelegate.adArray.rac_sequence.signal deliverOnMainThread] filter:^BOOL(NSDictionary *dict) { if ([dict[@"OPENTYPE"] isEqualToString:@"2"] || [dict[@"OPENTYPE"] isEqualToString:@"3"]) { return [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"wechat://"]]; } else { return YES; } }] subscribeNext:^(NSDictionary *dict) { [adMutArr addObject:dict]; } completed:^{ myDelegate.adArray = adMutArr.copy; NSString *filePath = [Tools getPathWithFileName:@"ads.plist"]; [root[@"body"] writeToFile:filePath atomically:YES]; [[NSNotificationCenter defaultCenter] postNotificationName:@"updateAD" object:@"isSuccess"]; }]; }]; } /**主要是为了更新用户数据. 比如上传头像后 */ +(void)reLoginWithCompletion:(BlockTypeVo)finishBlcok { NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSMutableArray *arr=[NSMutableArray array]; NSDictionary *udDic = [ud objectForKey:@"jiaPeiLoginTest"]; if ([udDic[@"loginType"] isEqualToString:@"1"]) { [arr property:RQStringIsNotEmpty(RQ_USER_MANAGER.currentUser.loginCode)? RQ_USER_MANAGER.currentUser.loginCode : @"" forKey:@"loginCode"]; [arr property:RQ_USER_MANAGER.currentUser.password forKey:@"password"]; [arr property:@"" forKey:@"openId"]; //如果是第三方登录 填写token nickName [arr property:@"" forKey:@"nickName"]; //如果是第三方登录 填写获取到的昵称 [arr property:@"" forKey:@"photo"]; //如果是第三方登录 填写获取到的照片全路径 [arr property:@"" forKey:@"sex"]; //如果是第三方登录 填写获取到的用户性别 }else{ [arr property:@"" forKey:@"loginCode"]; [arr property:@"" forKey:@"password"]; [arr property:udDic[@"openId"] forKey:@"openId"]; //如果是第三方登录 填写token [arr property:udDic[@"nickName"] forKey:@"nickName"]; //如果是第三方登录 填写获取到的昵称 [arr property:udDic[@"photo"] forKey:@"photo"]; //如果是第三方登录 填写获取到的照片全路径 [arr property:udDic[@"sex"] forKey:@"sex"]; //如果是第三方登录 填写获取到的用户性别 } [arr property:udDic[@"loginType"] forKey:@"loginType"];//登录类型 [arr property:@"2" forKey:@"appType"]; NSString *systemName = [[UIDevice currentDevice] systemName]; NSString *systemVersion = [[UIDevice currentDevice] systemVersion]; [arr property:[NSString stringWithFormat:@"%@%@",systemName,systemVersion] forKey:@"systemVersion"]; NSString *identifier = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]; NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; [arr property:[NSString stringWithFormat:@"%@%@",identifier,currentVersion] forKey:@"version"]; NSString* method = @"stuLogin"; [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary *dict) { RemoveHUD(); //NSLog(@"更新数据-->%@-----%@",arr,dict); if (!dict) { return; } if ( [dict[@"code"] isEqualToString:@"1"]) { return ; } if ( [dict[@"code"] isEqualToString:@"0"]) { } //更新信息 // defUser.userDict = [NSMutableDictionary dictionaryWithDictionary:dict[@"body"]]; // if ([defUser.userDict[@"schInfo"] isKindOfClass:[NSDictionary class]]) // { // defUser.userSchDict = [NSMutableDictionary dictionaryWithDictionary:defUser.userDict[@"schInfo"]]; // }else{ // defUser.userSchDict = nil; // } RQUserModel *user = [RQUserModel modelWithDictionary:[NSMutableDictionary dictionaryWithDictionary:dict[@"body"]]]; /// 存储用户数据 [RQ_USER_MANAGER loginUser:user]; myDelegate.isLogin = YES; [RQ_VIP_Module isVipWithSubject:0 complete:^(BOOL isVip) { }]; [RQ_VIP_Module isActiveWithCcomplete:^(RQActivationModel * _Nullable activationModel, BOOL isSuccess) {}]; if (finishBlcok) { finishBlcok(); } }]; } //QM-console-log + (void)QMLog:(NSString *)urlString obj:(id )obj { #if defined(DEBUG)||defined(_DEBUG) if(isOffQMConsole){ NSMutableString *log = [NSMutableString stringWithFormat:@">>>>>>>>>>>>>>>>>>>>>jiaPeiManager>>>>>>>>>>>>>>>>>>>>>>>>>>"]; [log appendFormat:@"urlString=======>:%@", urlString]; [log appendFormat:@"obj======>:%@", obj]; [log appendString:@"<<<<<<<<<<<<<<<<<<<<