123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499 |
- //
- // 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
- {
- //生成带有签名的URL
- NSString *httpUrl = defaultHttp;
-
- NSString *urlDefault = defaultHttpUrl;
-
- //公共请求
- NSArray *commonArray = @[@"getAppAdsNew", //广告
- @"getMyYuyueInfos", //获取自主预约
- @"getMessageInfos", //我的系统消息
- @"getTeachTypes", //获取日志类型
- @"getMyTeachLogs", //获取日志
- @"stuXXList", //获取休学记录
- @"getMyReserveOrders", //获取订单
- // @"uploadReserveComplaints", //获取投诉
- @"getOrderComplaintsByClassId" //根据课堂ID和投诉用户ID查询投诉
- ];
-
- 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;
- }
-
-
- NSTimeInterval timeI = [[NSDate date] timeIntervalSince1970] * 1000;//获取时间戳 单位:s *1000毫秒
- NSString *urlS = @"";
- if (dic == nil) {
- urlS = [NSString stringWithFormat:@"%@%@%@?ts=%@&user=ios&v=jsjp",httpUrl,urlDefault,urlP,[NSString stringWithFormat:@"%.0f",timeI]];
- }else{
-
- //添加key字段
- NSMutableString *contentString = [NSMutableString stringWithString:[self getSignStringWithDictionary:dic]];
- [contentString appendFormat:@"key=%@", [NSString stringWithFormat:@"%.0f",timeI]];
-
- // 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,[NSString stringWithFormat:@"%.0f",timeI],[[contentString md5Encrypt] uppercaseString]];
- //NSLog(@"urlS----><>%@----><>%@",strUrl3,urlS);
- }
-
- 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:@"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;
-
- [afSessionManager POST:urlS parameters:nil headers:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _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);
- RemoveHUD();
- finishBlock(dic);
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
-
- //请求失败
- // NSLog(@"上传---><>%@",error);
- RemoveHUD();
- //失败的时候 要把失败的事情传输回去
- 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];
-
- 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 = 15;
-
- [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);
- }
-
- finishBlock(dic);
-
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
- //请求失败
- // NSLog(@"请求失败123----><>%@",error);
- RemoveHUD();
-
- //失败的时候 要把失败的事情传输回去
- NSDictionary *dic = nil;
- finishBlock(dic);
- }];
- }
- }
- + (void)requestGetAnythingWithURL:(NSString *)urlString 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 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);
- finishBlock(dic);
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
-
- //请求失败
- // NSLog(@"请求失败123----><>%@",error);
- //失败的时候 要把失败的事情传输回去 @{@"code":@"1",@"body":@"请求失败"}
- 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 ([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"]];
- }
- }
- defUser.adPaths = array;
-
- [[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:defUser.sfzmhm forKey:@"loginCode"];
- [arr property:defUser.userDict[@"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;
- }
- myDelegate.isLogin = YES;
-
- if (finishBlcok) {
- finishBlcok();
- }
- }];
- }
- @end
- void DubugLog(NSString *logString)
- {
- if (!isOfficial) {
- NSLog(@"%@",logString);
- }
- }
|