// // RQPTObjectMolule.m // jiaPei // // Created by 张嵘 on 2022/4/8. // Copyright © 2022 JCZ. All rights reserved. // #import "RQPTObjectMolule.h" #import "MapManager.h" typedef NS_ENUM(NSInteger, RQQRCodeType) { /// 无 RQQRCodeType_NO = 0, /// 莆田门禁 RQQRCodeType_PTMJ = 1, /// 莆田实操 RQQRCodeType_PTSC = 2, /// 浙江模拟 RQQRCodeType_ZJJP = 3, }; @interface RQPTObjectMolule () @property (nonatomic, readwrite, assign) RQQRCodeType rqQRCodeType; @property (nonatomic, readwrite, assign) BOOL isShowChooseSubject; @property (nonatomic, readwrite, copy) NSString *PTSC6_str; @end @implementation RQPTObjectMolule static id rq_ptObjectModule = nil; #pragma mark - init + (instancetype)sharedInstance { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ rq_ptObjectModule = [[self alloc] init]; }); return rq_ptObjectModule; } - (instancetype)init { if (self = [super init]) { } return self; } #pragma mark - PublicMethods // 扫码验证 - (void)uploadScanCodeVerifyWithQRCodeResultStr:(NSString *)resultStr resultBlock:(void (^)(BOOL isSuccess))resultBlock { _rqQRCodeType = RQQRCodeType_NO; @weakify(self) if (![Util connectedToNetWork]) { showMsgUnconnect(); resultBlock(NO); return; } //新需求 - 2023-6-19 // 二维码内容: // #FJMN#xczx@@模拟器序列号@@时间戳 // 例:#FJMN#xczx@@mn3423424@@1677114420415 if ([resultStr containsString:@"#FJMN#"] && resultStr.length > 8) { NSString *testString = [DES3Util decrypt:[resultStr substringFromIndex:6]]; NSArray *array = [testString componentsSeparatedByString:@"@@"]; NSString *devSn = array[1]; NSString *timeStamp = array[2]; NSMutableArray *arr = [NSMutableArray array]; [arr addPro:@"devSn" Value:devSn];///设备ID [arr addPro:@"stuid" Value:RQ_USER_MANAGER.currentUser.outId];///学员ID [arr addPro:@"timestamp" Value:timeStamp];///时间戳 [jiaPeiManager requestAnythingWithURL:@"phoneMnLogin" array:arr data:nil completion:^(NSDictionary * root) { NSString *body = root[@"body"]; [RQ_SHARE_FUNCTION showAlertWithMessage:body completion:nil]; return; }]; } if ([resultStr containsString:@"#DECODE#"] && resultStr.length > 8) { ///程序内某些验证 if([resultStr containsString:@"?text="]){ //特殊处理 NSArray *components = [resultStr componentsSeparatedByString:@"?text="]; resultStr = components.lastObject; } NSString *testString = [DES3Util decrypt:[resultStr substringFromIndex:8]]; NSLog(@"\n原完整内容: %@ \n解密后: #DECODE#%@",resultStr,testString); // testString = @"#LNJP#huizhi@@BFEBFBFF000206A7@@1530258491165"; if (testString == nil) { [RQ_SHARE_FUNCTION showAlertWithMessage:@"二维码内容格式错误(#DECODE#+异常字符串)" completion:nil]; return; } //#DECODE##JSJP#PTMJ@@13503005883@@1611296660969@@119.206163@@26.03922@@1@@3503090060 NSArray *array; if ([testString containsString:@"#JSJP#PTMJ"]) { ///莆田门禁入场/离场 array = [testString componentsSeparatedByString:@"@@"]; testString = [testString substringFromIndex:6]; _rqQRCodeType = RQQRCodeType_PTMJ; /// 二维码明文 /// #JSJP#PTMJ@@SIM卡号@@kind@@regionId@@1611042927509@@119.2065@@26.038985 } else if ([testString containsString:@"#JSJP#PTSC"]) { ///莆田实操签到/签退 array = [testString componentsSeparatedByString:@"@@"]; testString = [testString substringFromIndex:6]; _rqQRCodeType = RQQRCodeType_PTSC; /// 二维码明文 /// #JSJP#PTSC@@13503003479@@1649213031058@@26.038049@@119.206105@@3@@1649212908@@17@@0@@2022-04-06 10:43:51@@0.0@@184.86@@3346341302335557 /// //SIM,//时间戳,//纬度,//经度,//当前科目,//课堂classid,//扫码类型,//卫星定位速度,//GPS时间,//行驶记录速度,//方向 //学员编号 //是否开启水印 //车牌号 //教练名称 } else if ([testString containsString:@"#ZJJP#"]) { testString = [testString substringFromIndex:6]; array = [testString componentsSeparatedByString:@"@@"]; _rqQRCodeType = RQQRCodeType_ZJJP; /// 二维码明文 ///#ZJJP#12345678909@@1@@3310@@1677132394000 ///#ZJJP#SIM卡号@@类型@@地区编号@@时间戳 (类型:1签到 2签退 3过程) } else if ([testString containsString:@"#FJCOACH#"]) { //testString = [testString substringFromIndex:9]; array = [testString componentsSeparatedByString:@"@@"]; [self bindStudentAppCoachIdArr:array]; return; } else if ([testString containsString:@"#iats#"]) {//ning 新增 二维码 扫描 登录 //#DECODE##iats#861766043407976;1708670874970 testString = [testString substringFromIndex:6]; array = [testString componentsSeparatedByString:@";"]; // /iats-api/api/jsjpNotice [self noticeAppjsjpNoticeArr:array]; return; } __block NSString *ptSubjectStr; self.PTSC6_str = @""; if (_rqQRCodeType == RQQRCodeType_PTSC && !RQObjectIsNil(array[5]) && !RQObjectIsNil(array[7])) { ptSubjectStr = array[5]; self.PTSC6_str = [ptSubjectStr copy]; NSString *trainTypeStr = array[7]; if ([trainTypeStr isEqualToString:@"17"]) { if ([ptSubjectStr isEqualToString:@"5"] || RQStringIsEmpty(ptSubjectStr)) { NSMutableArray *editArr = array.mutableCopy; [RQ_ALERTVIEW_MANAGER showAlertWithTitle:@"温馨提示" message:@"请选择培训科目" confirmTitleOne:@"科目二" confirmTitleTwo:@"科目三" cancelTitle:@"取消" confirmOneAction:^{ @strongify(self) RQ_PT_Object_Module.ptSubjectStr = @"2"; [editArr replaceObjectAtIndex:5 withObject:RQ_PT_Object_Module.ptSubjectStr]; [self postUploadScanCodeVerifyWithCodeArr:editArr.copy resultBlock:resultBlock]; } confirmTwoAction:^{ @strongify(self) RQ_PT_Object_Module.ptSubjectStr = @"3"; [editArr replaceObjectAtIndex:5 withObject:RQ_PT_Object_Module.ptSubjectStr]; [self postUploadScanCodeVerifyWithCodeArr:editArr.copy resultBlock:resultBlock]; } cancleAction:^{ resultBlock(NO); }]; } else if ([ptSubjectStr isEqualToString:@"3"] || [ptSubjectStr isEqualToString:@"2"]) { RQ_PT_Object_Module.ptSubjectStr = ptSubjectStr; [self postUploadScanCodeVerifyWithCodeArr:array resultBlock:resultBlock]; } else { [NSObject rq_showAlertViewWithTitle:@"温馨提示" message:@"无训练阶段相关参数" confirmTitle:@"确定"]; resultBlock(NO); } } else if ([trainTypeStr isEqualToString:@"19"]) { if (RQStringIsNotEmpty(RQ_PT_Object_Module.ptSubjectStr)) { NSMutableArray *editArr = array.mutableCopy; [editArr replaceObjectAtIndex:5 withObject:RQ_PT_Object_Module.ptSubjectStr]; [self postUploadScanCodeVerifyWithCodeArr:editArr.copy resultBlock:resultBlock]; } else { [self postUploadScanCodeVerifyWithCodeArr:array resultBlock:resultBlock]; } } else { [self postUploadScanCodeVerifyWithCodeArr:array resultBlock:resultBlock]; } } else if (_rqQRCodeType == RQQRCodeType_ZJJP && !RQObjectIsNil(array[1])) { NSString *type = array[1]; if ([type isEqualToString:@"1"]) { /// 如果是签到需要传科目 if (!self.isShowChooseSubject) { self.isShowChooseSubject = YES; [RQ_ALERTVIEW_MANAGER showAlertWithTitle:@"温馨提示" message:@"请选择培训科目" confirmTitleOne:@"科目二" confirmTitleTwo:@"科目三" cancelTitle:@"取消" confirmOneAction:^{ @strongify(self) RQ_PT_Object_Module.zjSubjectStr = @"2"; [self zjmnWithArr:array]; self.isShowChooseSubject = NO; } confirmTwoAction:^{ @strongify(self) RQ_PT_Object_Module.zjSubjectStr = @"3"; [self zjmnWithArr:array]; self.isShowChooseSubject = NO; } cancleAction:^{ @strongify(self) self.isShowChooseSubject = NO; }]; } } else { /// 签退的时候科目传空字符 RQ_PT_Object_Module.zjSubjectStr = @""; [self zjmnWithArr:array]; } } else { [self postUploadScanCodeVerifyWithCodeArr:array resultBlock:resultBlock]; } } else { NSString *testString = [DES3Util decrypt:resultStr]; NSLog(@"%@",testString); } } //通知设备登录成功 - (void)noticeAppjsjpNoticeArr:(NSArray *)array { NSString *muserId = array[0]; NSString *timestamp = array[1]; //时间戳判断 long long this_timestamp = [[NSDate date] timeIntervalSince1970]*1000; if(this_timestamp-[timestamp longLongValue]>60*5*1000){ ShowMsg(@"操作超时!"); return; } NSMutableArray *arr = [NSMutableArray array]; [arr addPro:@"idcard" Value:RQ_USER_MANAGER.currentUser.loginCode]; [arr addPro:@"imei" Value:muserId]; [arr addPro:@"status" Value:@"0"]; [MBProgressHUD rq_showProgressHUD:@""]; [jiaPeiManager requestAnythingWithURL:@"jsjpNotice" array:arr data:nil completion:^(NSDictionary * result) { NSLog(@"dict=%@",result); if(result){ int code = [result[@"code"] intValue]; if(code==0){ //成功 NSLog(@"通知设备登录成功"); } [RQ_SHARE_FUNCTION showAlertWithMessage:result[@"msg"] completion:nil]; } [MBProgressHUD rq_hideHUD]; }]; } //绑定教练id - (void)bindStudentAppCoachIdArr:(NSArray *)array { //学员绑定教练ID(新需求) - 2023-07-06 //#FJCOACH#@@315483254@@3501 NSString *appCoachId = array[1]; NSString *dqbh = array[2]; if([dqbh isEqualToString:RQ_USER_MANAGER.currentUser.city]){ NSMutableArray *arr = [NSMutableArray array]; [arr addPro:@"appCoachId" Value:appCoachId]; [arr addPro:@"city" Value:RQ_USER_MANAGER.currentUser.city]; [arr addPro:@"id" Value:RQ_USER_MANAGER.currentUser.outId]; [MBProgressHUD rq_showProgressHUD:@""]; [jiaPeiManager requestGetWithURL:@"jsjp-admin/open-api/tms/coachInfo/updateStudentAppCoachIdById" array:arr appendurlString:nil completion:^(id result) { NSLog(@"dict=%@",result); int code = [result[@"code"] intValue]; if(code==0){ //成功 NSLog(@"绑定成功"); } [RQ_SHARE_FUNCTION showAlertWithMessage:result[@"msg"] completion:nil]; [MBProgressHUD rq_hideHUD]; }]; }else { ShowMsg(@"教练和学员不在同一个地区,无法绑定!"); } } - (void)zjmnWithArr:(NSArray *)array { @weakify(self) [[RACScheduler mainThreadScheduler] afterDelay:0.5 schedule:^{ [RQ_CHECKBODY_MANAGER beginCheckBodyWithCheckNum:0 checkBodyType:RQCheckBodyType_PTSC waterMarkArr:@[] completeBlock:^(BOOL success, NSDictionary * _Nullable dic) { @strongify(self) if (success) { [self face2faceWithQRCodeType:_rqQRCodeType rqCodeArr:array photo:dic[@"normalImg"] resultBlock:^(BOOL isSuccess, id a) { @strongify(self) if (isSuccess) { if (!RQObjectIsNil(a)) { NSDictionary *dic = a; NSString *str = dic[@"body"]; if (RQStringIsNotEmpty(str)) { NSMutableArray *uploadTrainFileMnArr = [NSMutableArray array]; [uploadTrainFileMnArr addPro:@"objid" Value:RQ_USER_MANAGER.currentUser.outId];///学员ID [uploadTrainFileMnArr addPro:@"dqbh" Value:RQ_USER_MANAGER.currentUser.city];///地区编号 [uploadTrainFileMnArr addPro:@"sim" Value:array[0]];///SIM卡号 [uploadTrainFileMnArr addPro:@"event" Value:array[1]];///扫码类型:1 签到 2签退 3培训过程 [uploadTrainFileMnArr addPro:@"classId" Value:@""];///課堂ID [uploadTrainFileMnArr addPro:@"photo" Value:str];///人脸照片 NSInteger timeStamp = [RQ_SHARE_FUNCTION getTimeStampWithDate:[NSDate date]]; NSString *timeStampStr = [NSString stringWithFormat:@"%@",[NSNumber numberWithInteger:timeStamp]]; if (timeStampStr.length < 10) { timeStampStr = [NSString stringWithFormat:@"%@",[NSNumber numberWithInteger:[NSString rq_randomNumberWithFrom:1647311377 to:9999999999]]]; } else if (timeStampStr.length > 10) { timeStampStr = [timeStampStr substringFromIndex:timeStampStr.length - 10]; } [uploadTrainFileMnArr addPro:@"picno" Value:timeStampStr];///照片编号 NSString *type = array[1]; if ([type isEqualToString:@"1"]) { /// 签到的时候先签到后上传图片 [self uploadZjmnLoginWithArray:array resultBlock:^(BOOL isSuccess) { @strongify(self) if (isSuccess) { [self uploadTrainFileMnWithArray:uploadTrainFileMnArr.copy resultBlock:^(BOOL isSuccess) { }]; } }]; } else { /// 签退的时候先上传图片后签退 [self uploadTrainFileMnWithArray:uploadTrainFileMnArr.copy resultBlock:^(BOOL isSuccess) { @strongify(self) if (isSuccess) { [self uploadZjmnLoginWithArray:array resultBlock:^(BOOL isSuccess) { if (isSuccess) { NSLog(@"签退成功"); } }]; } else { } }]; } } } } }]; } }]; }]; } - (void)postUploadScanCodeVerifyWithCodeArr:(NSArray *)array resultBlock:(void (^)(BOOL isSuccess))resultBlock { [MBProgressHUD rq_showProgressHUD:@"正在获取当前位置..."]; [RQ_MAP_MANAGER updateLocationWithCompleteBlock:^(BOOL success, CLLocation * _Nonnull location, BMKLocation * _Nullable bmkLocation) { [MBProgressHUD rq_hideHUD]; if (success) { NSString *method = @"uploadScanCodeVerify"; NSInteger faceNum = RQPuTianFaceNum; NSMutableArray *arr = [NSMutableArray array]; NSArray *waterMaekArr = @[]; [arr addPro:@"stuid" Value:RQ_USER_MANAGER.currentUser.outId];///学员ID [arr addPro:@"dqbh" Value:RQ_USER_MANAGER.currentUser.city];///地区编号 [arr addPro:@"lng" Value:[NSString stringWithFormat:@"%f",location.coordinate.longitude]];///手机经度 [arr addPro:@"lat" Value:[NSString stringWithFormat:@"%f",location.coordinate.latitude]];///手机纬度 if (_rqQRCodeType == RQQRCodeType_PTMJ) { [arr addPro:@"kind" Value:array[5]];///扫码类型:1 :入场; 2:离场 [arr addPro:@"sim" Value:array[1]];///SIM卡号 [arr addPro:@"regionId" Value:array[6]];///场地ID [arr addPro:@"timestamp" Value:array[2]];///时间戳 [arr addPro:@"devlng" Value:array[3]];///设备经度 [arr addPro:@"devlat" Value:array[4]];///设备纬度 method = @"uploadScanCodeVerify"; faceNum = RQPuTianFaceNum; } else if (_rqQRCodeType == RQQRCodeType_PTSC) { [arr addPro:@"stunum" Value:array[12]];///学员编号 [arr addPro:@"subject" Value:array[5]];///当前扫码训练阶段 [arr addPro:@"imei" Value:[FCUUID uuidForDevice]];///唯一识别号 [arr addPro:@"event" Value:array[7]];///扫码类型:17 签到 19签退 [arr addPro:@"sim" Value:array[1]];///SIM卡号 [arr addPro:@"timestamp" Value:array[2]];///时间戳 [arr addPro:@"devlng" Value:array[4]];///设备经度 [arr addPro:@"devlat" Value:array[3]];///设备纬度 method = @"uploadScCodeVerify"; faceNum = RQ_USER_MANAGER.scbdFaceCount;//后台配置-根据地区变化 BOOL isOpenWater = array.count > 14? (RQObjectIsNil(array[13])? NO : ![[NSNumber numberWithString:array[13]] boolValue]) : NO; waterMaekArr = isOpenWater? @[[NSDate rq_currentTimestamp], [NSString stringWithFormat:@"经纬度:%@,%@",[NSString stringWithFormat:@"%f",location.coordinate.longitude],[NSString stringWithFormat:@"%f",location.coordinate.latitude]], [NSString stringWithFormat:@"教练姓名:%@",[NSString stringWithFormat:@"%@",array[15]]], [NSString stringWithFormat:@"学员姓名:%@",[NSString stringWithFormat:@"%@",RQStringIsNotEmpty(RQ_USER_MANAGER.currentUser.userName)? RQ_USER_MANAGER.currentUser.userName : @""]], [NSString stringWithFormat:@"车牌号:%@",[NSString stringWithFormat:@"%@",array[14]]], [NSString stringWithFormat:@"驾校:%@",[NSString stringWithFormat:@"%@",RQStringIsNotEmpty(RQ_USER_MANAGER.currentUser.schInfo.name)? RQ_USER_MANAGER.currentUser.schInfo.name : @""]], [NSString stringWithFormat:@"车速:%@km/h",[NSString stringWithFormat:@"%@",array[10]]], ] : @[]; } [MBProgressHUD rq_showProgressHUD:@"验证中..."]; [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary * root) { [MBProgressHUD rq_hideHUD]; if (!root) { resultBlock(NO); [RQ_SHARE_FUNCTION showAlertWithMessage:@"操作失败,请重试!" completion:nil]; [Tools playAudioWithString:@"操作失败,请重试!"]; return; } if ([root[@"code"] integerValue] == 0) { dispatch_async(dispatch_get_main_queue(), ^{ [RQ_CHECKBODY_MANAGER beginCheckBodyWithCheckNum:faceNum checkBodyType:RQCheckBodyType_PTSC waterMarkArr:waterMaekArr completeBlock:^(BOOL success, NSDictionary * _Nullable dic) { if (success) { [self face2faceWithQRCodeType:_rqQRCodeType rqCodeArr:array photo:dic[@"normalImg"] resultBlock:^(BOOL isSuccess, id a) { resultBlock(isSuccess); }]; } }]; }); } else { resultBlock(NO); if ([root[@"body"] isKindOfClass:[NSString class]] && ![root[@"body"] isEqualToString:@""]) { [Tools playAudioWithString:root[@"body"]]; [RQ_SHARE_FUNCTION showAlertWithMessage:root[@"body"] completion:nil]; [Bugly reportException:[NSException exceptionWithName:[NSString stringWithFormat:@"uploadScCodeVerify---%@",root[@"body"]] reason:[arr jsonStringEncoded] userInfo:[RQ_USER_MANAGER.currentUser dictionaryValue]]]; } else { [RQ_SHARE_FUNCTION showAlertWithMessage:@"操作失败,请重试!" completion:nil]; [Tools playAudioWithString:@"操作失败,请重试!"]; } } }]; } else { resultBlock(NO); [RQ_SHARE_FUNCTION showAlertWithMessage:@"定位失败!" completion:nil]; } }]; } #pragma mark - PrivateMethods - (void)face2faceWithQRCodeType:(RQQRCodeType)rqCodeType rqCodeArr:(NSArray *)rqCodeArr photo:(NSString *)photoStr resultBlock:(void (^)(BOOL isSuccess , __nullable id a))resultBlock { @weakify(self) if (![Util connectedToNetWork]) { showMsgUnconnect(); resultBlock(NO, nil); return; } if ([photoStr isEqualToString:@"(null)"] || [photoStr isEqualToString:@""]) { resultBlock(NO, nil); return; } [MBProgressHUD rq_showProgressHUD:@"正在获取当前位置..."]; [RQ_MAP_MANAGER updateLocationWithCompleteBlock:^(BOOL success, CLLocation * _Nonnull location, BMKLocation * _Nullable bmkLocation) { [MBProgressHUD rq_hideHUD]; if (success) { NSString *method; NSTimeInterval timeI = [[NSDate date] timeIntervalSince1970] * 1000;//获取时间戳 单位:s *1000毫秒 NSInteger timeInt = [NSString stringWithFormat:@"%.0f",timeI].integerValue; NSString *currentTimeStr = [NSString stringWithFormat:@"%ld",timeInt]; if (currentTimeStr.length > 10) { currentTimeStr = [currentTimeStr substringFromIndex:currentTimeStr.length - 10]; } NSMutableArray *arr = [NSMutableArray array]; [arr addPro:@"objid" Value:RQ_USER_MANAGER.currentUser.outId];///学员ID或教练ID [arr addPro:@"dqbh" Value:RQ_USER_MANAGER.currentUser.city];///地区编号 [arr addPro:@"photo" Value:photoStr? : @""];///照片Base64数据 if (rqCodeType == RQQRCodeType_PTMJ) { method = @"mjFace2face"; [arr addPro:@"type" Value:@"1"];///拍照类型:1 :学员; 2:教练 [arr addPro:@"kind" Value:rqCodeArr[5]];///扫码类型:1 :入场; 2:离场 [arr addPro:@"sim" Value:rqCodeArr[1]];///SIM卡号 [arr addPro:@"regionId" Value:rqCodeArr[6]];///场地ID [arr addPro:@"lng" Value:[NSString stringWithFormat:@"%f",location.coordinate.longitude]];///手机经度 [arr addPro:@"lat" Value:[NSString stringWithFormat:@"%f",location.coordinate.latitude]];///手机纬度 method = @"mjFace2face"; } else if (rqCodeType == RQQRCodeType_PTSC) { method = @"mjFace2face"; [arr addPro:@"type" Value:@"1"];///拍照类型:1 :学员; 2:教练 [arr addPro:@"classId" Value:rqCodeArr[6]];///课堂ID [arr addPro:@"subject" Value:rqCodeArr[5]];///当前扫码训练阶段 [arr addPro:@"imei" Value:[FCUUID uuidForDevice]];///唯一识别号 [arr addPro:@"event" Value:rqCodeArr[7]];///扫码类型:17 签到 19签退 [arr addPro:@"sim" Value:rqCodeArr[1]];///SIM卡号 [arr addPro:@"speed" Value:rqCodeArr[8]];///卫星定位速度 [arr addPro:@"gpstime" Value:rqCodeArr[9]];///GPS时间 [arr addPro:@"drispeed" Value:rqCodeArr[10]];///行驶记录速度 [arr addPro:@"direction" Value:rqCodeArr[11]];///卫星定位速度 [arr addPro:@"picno" Value:currentTimeStr];///照片编号 [arr addPro:@"lng" Value:[[NSString stringWithFormat:@"%@",rqCodeArr[4]] stringByReplacingOccurrencesOfString:@"." withString:@""]];///设备经度 [arr addPro:@"lat" Value:[[NSString stringWithFormat:@"%@",rqCodeArr[3]] stringByReplacingOccurrencesOfString:@"." withString:@""]];///设备纬度 method = @"scFace2face"; } else if (rqCodeType == RQQRCodeType_ZJJP) { method = @"zjFace2face"; [arr addPro:@"sim" Value:rqCodeArr[0]];///SIM卡号 [arr addPro:@"event" Value:rqCodeArr[1]];///扫码类型:1 签到 2签退 3培训过程 } else { method = @"mjFace2face"; [arr addPro:@"type" Value:@"1"];///拍照类型:1 :学员; 2:教练 } [MBProgressHUD rq_showProgressHUD:@"验证中..."]; [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary * root) { @strongify(self) [MBProgressHUD rq_hideHUD]; if (!root) { resultBlock(NO, nil); [RQ_SHARE_FUNCTION showAlertWithMessage:@"操作失败,请重试!" completion:nil]; [Tools playAudioWithString:@"操作失败,请重试!"]; return; } if ([root[@"code"] integerValue] == 0) { resultBlock(YES, root); if ([root[@"body"] isKindOfClass:[NSString class]] && ![root[@"body"] isEqualToString:@""]) { if (self.rqQRCodeType == RQQRCodeType_ZJJP) { } else { [Tools playAudioWithString:root[@"body"]]; [RQ_SHARE_FUNCTION showAlertWithMessage:root[@"body"] completion:nil]; } } else { if (self.rqQRCodeType == RQQRCodeType_PTSC) { NSString *message = @"操作成功!"; if([self.PTSC6_str isEqualToString:@"5"]){ if ([rqCodeArr[7] integerValue] == 17) { message = @"扫码签到验证成功,请等待设备响应"; } else if ([rqCodeArr[7] integerValue] == 19) { message = @"扫码签退验证成功,请等待设备响应"; } }else{ message = @"扫码成功, 请在设备进行下一步操作"; } [RQ_SHARE_FUNCTION showAlertWithMessage:message completion:nil]; [Tools playAudioWithString:message]; } else if (self.rqQRCodeType == RQQRCodeType_ZJJP) { } else { [RQ_SHARE_FUNCTION showAlertWithMessage:@"操作成功!" completion:nil]; [Tools playAudioWithString:@"操作成功!"]; } } } else { resultBlock(NO, nil); if ([root[@"body"] isKindOfClass:[NSString class]] && ![root[@"body"] isEqualToString:@""]) { [Tools playAudioWithString:root[@"body"]]; [RQ_SHARE_FUNCTION showAlertWithMessage:root[@"body"] completion:nil]; } else { [RQ_SHARE_FUNCTION showAlertWithMessage:@"操作失败,请重试!" completion:nil]; [Tools playAudioWithString:@"操作失败,请重试!"]; } } }]; } else { resultBlock(NO, nil); [RQ_SHARE_FUNCTION showAlertWithMessage:@"定位失败!" completion:nil]; } }]; } - (void)uploadZjmnLoginWithArray:(NSArray *)array resultBlock:(void (^)(BOOL isSuccess))resultBlock { if (![Util connectedToNetWork]) { showMsgUnconnect(); resultBlock(NO); return; } NSString *trainTypeStr = array[1]; NSInteger timeStamp = [RQ_SHARE_FUNCTION getTimeStampWithDate:[NSDate date]]; NSString *timeStampStr = [NSString stringWithFormat:@"%@",[NSNumber numberWithInteger:timeStamp]]; NSString *classIdStr = timeStampStr; if (classIdStr.length < 10) { /// 如果生成时间戳错误 用一个随机十位数代替 classIdStr = [NSString stringWithFormat:@"%@",[NSNumber numberWithInteger:[NSString rq_randomNumberWithFrom:1647311377 to:9999999999]]]; } else if (classIdStr.length > 10) { classIdStr = [classIdStr substringFromIndex:classIdStr.length - 10]; } if ([trainTypeStr isEqualToString:@"1"]) { [QMUITips showLoading:@"签到中..." inView:DefaultTipsParentView]; // [MBProgressHUD rq_showProgressHUD:@"签到中..."]; } else if ([trainTypeStr isEqualToString:@"2"]) { // [MBProgressHUD rq_showProgressHUD:@"签退中..."]; [QMUITips showLoading:@"签退中..." inView:DefaultTipsParentView]; classIdStr = @""; } NSString *method = @"uploadZjmnLogin"; NSMutableArray *arr = [NSMutableArray array]; [arr addPro:@"stuid" Value:RQ_USER_MANAGER.currentUser.outId];///学员ID [arr addPro:@"dqbh" Value:RQ_USER_MANAGER.currentUser.city];///地区编号 [arr addPro:@"sim" Value:array[0]];///SIM卡号 [arr addPro:@"event" Value:array[1]];///扫码类型:1 签到 2签退 3培训过程 [arr addPro:@"subject" Value:RQ_PT_Object_Module.zjSubjectStr];///当前扫码训练阶段 [arr addPro:@"classId" Value:classIdStr];///課堂ID [arr addPro:@"timestamp" Value:array[3]];///时间戳 if (array.count > 4) { [arr addPro:@"trainModel" Value:array[4]];/// 2 普通模拟 8考核模拟 } /// [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary * root) { // [MBProgressHUD rq_hideHUD]; [QMUITips hideAllTips]; if (!root) { resultBlock(NO); [QMUITips showError:@"操作失败,请重试!"]; // [RQ_SHARE_FUNCTION showAlertWithMessage:@"操作失败,请重试!" completion:nil]; [Tools playAudioWithString:@"操作失败,请重试!"]; return; } if ([root[@"code"] integerValue] == 0) { resultBlock(YES); if ([root[@"body"] isKindOfClass:[NSString class]] && ![root[@"body"] isEqualToString:@""]) { [Tools playAudioWithString:root[@"body"]]; [QMUITips showSucceed:root[@"body"]]; // [RQ_SHARE_FUNCTION showAlertWithMessage:root[@"body"] completion:nil]; } else { [QMUITips showError:@"操作成功!"]; // [RQ_SHARE_FUNCTION showAlertWithMessage:@"操作成功!" completion:nil]; [Tools playAudioWithString:@"操作成功!"]; } } else { resultBlock(NO); if ([root[@"body"] isKindOfClass:[NSString class]] && ![root[@"body"] isEqualToString:@""]) { [Tools playAudioWithString:root[@"body"]]; // [RQ_SHARE_FUNCTION showAlertWithMessage:root[@"body"] completion:nil]; [QMUITips showError:root[@"body"]]; } else { [QMUITips showError:@"操作失败,请重试!"]; // [RQ_SHARE_FUNCTION showAlertWithMessage:@"操作失败,请重试!" completion:nil]; [Tools playAudioWithString:@"操作失败,请重试!"]; } } }]; } - (void)uploadTrainFileMnWithArray:(NSArray *)array resultBlock:(void (^)(BOOL isSuccess))resultBlock { if (![Util connectedToNetWork]) { resultBlock(NO); showMsgUnconnect(); return; } NSString *method = @"uploadTrainFileMn"; [jiaPeiManager requestAnythingWithURL:method array:array data:nil completion:^(NSDictionary * root) { if (!root) { resultBlock(NO); [RQ_SHARE_FUNCTION showAlertWithMessage:@"上传失败,请重试!" completion:nil]; [Tools playAudioWithString:@"上传失败,请重试!"]; return; } if ([root[@"code"] integerValue] == 0) { resultBlock(YES); } else { resultBlock(NO); if ([root[@"body"] isKindOfClass:[NSString class]] && ![root[@"body"] isEqualToString:@""]) { [Tools playAudioWithString:root[@"body"]]; [RQ_SHARE_FUNCTION showAlertWithMessage:root[@"body"] completion:nil]; } } }]; } - (NSString *)ptSubjectStr { NSString *key = [NSString stringWithFormat:@"ptSubjectStr-%@",RQ_USER_MANAGER.currentUser.stuNum]; id object = [self getObjectWithKey:key]; if (RQObjectIsNil(object)) { return @""; } else { NSString *myPtSubjectStr = (NSString *)object; return myPtSubjectStr; } } - (void)setPtSubjectStr:(NSString *)ptSubjectStr { NSString *key = [NSString stringWithFormat:@"ptSubjectStr-%@",RQ_USER_MANAGER.currentUser.stuNum]; [self saveObjectWithObject:ptSubjectStr ForKey:key]; } - (NSString *)zjSubjectStr { NSString *key = [NSString stringWithFormat:@"zjSubjectStr-%@",RQ_USER_MANAGER.currentUser.stuNum]; id object = [self getObjectWithKey:key]; if (RQObjectIsNil(object)) { return @""; } else { NSString *myZjSubjectStr = (NSString *)object; return myZjSubjectStr; } } - (void)setZjSubjectStr:(NSString *)zjSubjectStr { NSString *key = [NSString stringWithFormat:@"zjSubjectStr-%@",RQ_USER_MANAGER.currentUser.stuNum]; [self saveObjectWithObject:zjSubjectStr ForKey:key]; } - (void)saveObjectWithObject:(id)object ForKey:(NSString* )key { NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; if (!object) { [ud removeObjectForKey:key]; }else{ [ud setObject:object forKey:key]; } [ud synchronize]; } - (id)getObjectWithKey:(NSString *)key { NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; return [ud objectForKey:key]; } @end