Просмотр исходного кода

外勤签到 人脸识别 添加ERP标识

huangyp 6 лет назад
Родитель
Сommit
bc8747cfda

+ 27 - 2
shiku_im/shiku_im/controller/CRMViewController.m

@@ -37,6 +37,9 @@
 #import "ZXVisitReportViewController.h"
 #import "UASProCityNavHeader.h"
 #import "FaceGroupVC.h"
+#import "FaceUserListVC.h"
+#import <IDLFaceSDK/IDLFaceSDK.h>
+#import "NetAccessModel.h"
 static NSString *cellID = @"cellID";
 
 @interface CRMViewController ()<UITableViewDelegate,UITableViewDataSource>
@@ -217,8 +220,30 @@ static NSString *cellID = @"cellID";
 
 -(void)dan:(UIButton *)sender
 {
-    FaceGroupVC *vc = [[FaceGroupVC alloc]init];
-    [self.navigationController pushViewController:vc animated:YES];
+//    FaceUserListVC *vc = [[FaceUserListVC alloc]init];
+//    [self.navigationController pushViewController:vc animated:YES];
+    
+    // 设置鉴权
+//    NSString* licensePath = [[NSBundle mainBundle] pathForResource:FACE_LICENSE_NAME ofType:FACE_LICENSE_SUFFIX];
+//    NSAssert([[NSFileManager defaultManager] fileExistsAtPath:licensePath], @"license文件路径不对,请仔细查看文档");
+//    [[FaceSDKManager sharedInstance] setLicenseID:FACE_LICENSE_ID andLocalLicenceFile:licensePath];
+//    [[NetAccessModel sharedInstance] getAccessTokenWithAK:FACE_API_KEY SK:FACE_SECRET_KEY];
+//
+//    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+//
+//        [[NetAccessModel sharedInstance] deleteFaceUserGroupWithGroupID:FORMAT(@"%@",@"20000087") completion:^(NSError *error, id resultObject) {
+//            [MBProgressHUD hideHUD];
+//
+//            NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:resultObject options:NSJSONReadingAllowFragments error:nil];
+//            SLog(@"人脸识别数据:%@",dict);
+//
+//            //先判断接口请求是否成功
+//            NSString *success = FORMAT(@"%@",dict[@"error_msg"]);
+//            if ([success isEqualToString:@"SUCCESS"]) {
+//
+//            }
+//        }];
+//    });
 }
 
 //隐藏打卡编号

+ 1 - 1
shiku_im/shiku_im/controller/ZXsubButton.h

@@ -12,5 +12,5 @@
 
 @property(nonatomic,copy)NSString * type;
 @property(nonatomic,strong)NSString * numId;
-
+@property(nonatomic,strong)NSString * backUpString;//备用字符串
 @end

+ 1 - 1
shiku_im/shiku_im/controller/myOA/ALLURLHeader.h

@@ -13,7 +13,7 @@
 /*ip地址*/
 #define g_id  [[NSUserDefaults standardUserDefaults] objectForKey:@"ipAndPort"]
 //#define g_id @"http://192.168.253.63:8080/uas_system/"
-//#define g_id @"http://10.1.80.197:8888/uas-system/"
+//#define g_id @"http://10.1.80.60:8080/uas-system/"
 /*新账户中心token*/
 #define g_accountToken [[NSUserDefaults standardUserDefaults] objectForKey:@"accountToken"]
 /*sessionId*/

+ 160 - 64
shiku_im/shiku_im/controller/myOA/JOOutWorkPlanVC.m

@@ -970,40 +970,84 @@
 
 #pragma mark --- 人脸验证流程
 - (void)identify:(NSString*)bestImageStr originImage:(UIImage *)originImage andViewController:(DetectionViewController *)dvc andImageData:(NSData *)imageData{
-    __weak typeof(self) weakSelf = self;
-    [[NetAccessModel sharedInstance] identifyUserLivenessWithFaceImageStr:bestImageStr completion:^(NSError *error, id resultObject) {
-        
-        if (resultObject) {
-            NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:resultObject options:NSJSONReadingAllowFragments error:nil];
-            SLog(@"人脸识别数据:%@",dict);
-            
-            //先判断接口请求是否成功
-            NSString *success = FORMAT(@"%@",dict[@"error_msg"]);
-            if ([success isEqualToString:@"SUCCESS"]) {
-                //判断人脸库是否存在当前用户
-                NSArray *userList = dict[@"result"][@"user_list"];
-                if (userList.count == 0) {
-                    //无此用户走人脸注册流程
-                    [UASAlertView showWithTitle:nil content:@"您未录入人脸照片,点击“确定”录入系统" sureTitle:@"确定录入" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+    
+    // 设置鉴权
+    NSString* licensePath = [[NSBundle mainBundle] pathForResource:FACE_LICENSE_NAME ofType:FACE_LICENSE_SUFFIX];
+    NSAssert([[NSFileManager defaultManager] fileExistsAtPath:licensePath], @"license文件路径不对,请仔细查看文档");
+    [[FaceSDKManager sharedInstance] setLicenseID:FACE_LICENSE_ID andLocalLicenceFile:licensePath];
+    
+    [SVProgressHUD appearance].defaultStyle = SVProgressHUDStyleDark;
+    
+    [[NetAccessModel sharedInstance] getAccessTokenWithAK:FACE_API_KEY SK:FACE_SECRET_KEY];
+    
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+       
+        __weak typeof(self) weakSelf = self;
+        [[NetAccessModel sharedInstance] identifyUserLivenessWithFaceImageStr:bestImageStr completion:^(NSError *error, id resultObject) {
+            
+            if (resultObject) {
+                NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:resultObject options:NSJSONReadingAllowFragments error:nil];
+                SLog(@"人脸识别数据:%@",dict);
+                
+                //先判断接口请求是否成功
+                NSString *success = FORMAT(@"%@",dict[@"error_msg"]);
+                if ([success isEqualToString:@"SUCCESS"]) {
+                    //判断人脸库是否存在当前用户
+                    NSArray *userList = dict[@"result"][@"user_list"];
+                    if (userList.count == 0) {
+                        //无此用户走人脸注册流程
+                        [UASAlertView showWithTitle:nil content:@"您未录入人脸照片,点击“确定”录入系统" sureTitle:@"确定录入" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+                            if (index == 2) {
+                                [weakSelf RegisterUserFactToBaiduFaceListWithFaceImageString:bestImageStr andViewController:dvc andImageData:imageData];
+                            }
+                            if (index == 1) {
+                                [dvc dismissViewControllerAnimated:YES completion:nil];
+                            }
+                        }];
+                        
+                    }else{
+                        NSDictionary *userDic = userList[0];
+                        float score = [[userDic objectForKey:@"score"] floatValue];
+                        if (score > 85) {
+                            //是本人,走打卡流程
+                            [dvc dismissViewControllerAnimated:YES completion:nil];
+                            
+                            [self startPunchCard:imageData];
+                        }else{
+                            //不是本人
+                            [UASAlertView showWithTitle:nil content:@"抱歉,没有认出你哦" sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+                                if (index == 2) {
+                                    [IDLFaceDetectionManager.sharedInstance reset];
+                                    [[IDLFaceDetectionManager sharedInstance] startInitial];
+                                    dvc.hasFinished = NO;
+                                    [dvc startCapture];
+                                }
+                                if (index == 1) {
+                                    [dvc dismissViewControllerAnimated:YES completion:nil];
+                                }
+                            }];
+                        }
+                    }
+                }
+                else if ([success isEqualToString:@"liveness check fail"]){
+                    [UASAlertView showWithTitle:nil content:@"不能拿照片骗我哦" sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
                         if (index == 2) {
-                            [weakSelf RegisterUserFactToBaiduFaceListWithFaceImageString:bestImageStr andViewController:dvc andImageData:imageData];
+                            [IDLFaceDetectionManager.sharedInstance reset];
+                            [[IDLFaceDetectionManager sharedInstance] startInitial];
+                            dvc.hasFinished = NO;
+                            [dvc startCapture];
                         }
                         if (index == 1) {
                             [dvc dismissViewControllerAnimated:YES completion:nil];
                         }
                     }];
-                    
-                }else{
-                    NSDictionary *userDic = userList[0];
-                    float score = [[userDic objectForKey:@"score"] floatValue];
-                    if (score > 85) {
-                        //是本人,走打卡流程
-                        [dvc dismissViewControllerAnimated:YES completion:nil];
-
-                        [self startPunchCard:imageData];
+                }
+                else{
+                    if ([FORMAT(@"%@",[dict objectForKey:@"error_code"])isEqualToString:@"222207"]) {
+                        //无此用户走人脸注册流程,先到ERP看是否传过人脸
+                        [self getERPhaveFace:bestImageStr originImage:originImage andViewController:dvc andImageData:imageData];
                     }else{
-                        //不是本人
-                        [UASAlertView showWithTitle:nil content:@"抱歉,没有认出你哦" sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+                        [UASAlertView showWithTitle:nil content:success sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
                             if (index == 2) {
                                 [IDLFaceDetectionManager.sharedInstance reset];
                                 [[IDLFaceDetectionManager sharedInstance] startInitial];
@@ -1017,46 +1061,66 @@
                     }
                 }
             }
-            else if ([success isEqualToString:@"liveness check fail"]){
-                [UASAlertView showWithTitle:nil content:@"不能拿照片骗我哦" sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
-                    if (index == 2) {
-                        [IDLFaceDetectionManager.sharedInstance reset];
-                        [[IDLFaceDetectionManager sharedInstance] startInitial];
-                        dvc.hasFinished = NO;
-                        [dvc startCapture];
-                    }
-                    if (index == 1) {
-                        [dvc dismissViewControllerAnimated:YES completion:nil];
-                    }
-                }];
-            }
-            else{
-                if ([FORMAT(@"%@",[dict objectForKey:@"error_code"])isEqualToString:@"222207"]) {
-                    //无此用户走人脸注册流程
-                    [UASAlertView showWithTitle:nil content:@"您未录入人脸照片,点击“确定”录入系统" sureTitle:@"确定录入" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
-                        if (index == 2) {
-                            [weakSelf RegisterUserFactToBaiduFaceListWithFaceImageString:bestImageStr andViewController:dvc andImageData:imageData];
-                        }
-                        if (index == 1) {
-                            [dvc dismissViewControllerAnimated:YES completion:nil];
-                        }
-                    }];
-                }else{
-                    [UASAlertView showWithTitle:nil content:success sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
-                        if (index == 2) {
-                            [IDLFaceDetectionManager.sharedInstance reset];
-                            [[IDLFaceDetectionManager sharedInstance] startInitial];
-                            dvc.hasFinished = NO;
-                            [dvc startCapture];
-                        }
-                        if (index == 1) {
-                            [dvc dismissViewControllerAnimated:YES completion:nil];
-                        }
-                    }];
+            
+        }];
+        
+    });
+}
+
+#pragma mark --- 勉强操作:百度会抽风,所以在ERP做是否传过人脸的标识
+- (void)getERPhaveFace:(NSString*)bestImageStr originImage:(UIImage *)originImage andViewController:(DetectionViewController *)dvc andImageData:(NSData *)imageData{
+    
+    __weak typeof(self) weakSelf = self;
+    
+    NSString *url = [NSString stringWithFormat:@"%@/mobile/getUploadPictureSign.action",g_id];
+    
+    NSDictionary *param = @{
+                            @"master":g_master,
+                            @"em_imid":g_server.myself.userId,
+                            @"emcode":g_emcode
+                            };
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    UASNetworkManager *mannage = [UASNetworkManager shareManager];
+    
+    mannage.responseSerializer = [AFJSONResponseSerializer serializer];
+    
+    [mannage request:url method:POST parameters:param progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+        
+        NSString *faceStr = FORMAT(@"%@",responseObject[@"em_uploadsign"]);
+        
+        if ([faceStr isEqualToString:@"1"]) {
+            
+            [UASAlertView showWithTitle:nil content:@"抱歉,没有认出你哦" sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+                if (index == 2) {
+                    [IDLFaceDetectionManager.sharedInstance reset];
+                    [[IDLFaceDetectionManager sharedInstance] startInitial];
+                    dvc.hasFinished = NO;
+                    [dvc startCapture];
                 }
-            }
+                if (index == 1) {
+                    [dvc dismissViewControllerAnimated:YES completion:nil];
+                }
+            }];
+            
+        }else{
+            
+            //无此用户走人脸注册流程
+            [UASAlertView showWithTitle:nil content:@"您未录入人脸照片,点击“确定”录入系统" sureTitle:@"确定录入" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+                if (index == 2) {
+                    [weakSelf RegisterUserFactToBaiduFaceListWithFaceImageString:bestImageStr andViewController:dvc andImageData:imageData];
+                }
+                if (index == 1) {
+                    [dvc dismissViewControllerAnimated:YES completion:nil];
+                }
+            }];
+            
         }
         
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        
+        
     }];
 }
 
@@ -1071,13 +1135,45 @@
         //先判断接口请求是否成功
         NSString *success = FORMAT(@"%@",dict[@"error_msg"]);
         if ([success isEqualToString:@"SUCCESS"]) {
+            
             [dvc dismissViewControllerAnimated:YES completion:nil];
+            //在ERP上做标识
+            [self changeFaceStateToERP];
             //注册成功后,走打卡流程
             [self startPunchCard:imageData];
         }
     }];
 }
 
+#pragma mark --- 百度人脸注册成功后,在ERP上做个标识
+-(void)changeFaceStateToERP
+{
+    NSString *url = [NSString stringWithFormat:@"%@/mobile/updateUploadPictureSign.action",g_id];
+    
+    NSDictionary *param = @{
+                            @"master":g_master,
+                            @"em_imid":g_server.myself.userId,
+                            @"emcode":g_emcode,
+                            @"em_uploadsign":@"1"
+                            };
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    UASNetworkManager *mannage = [UASNetworkManager shareManager];
+    
+    mannage.responseSerializer = [AFJSONResponseSerializer serializer];
+    
+    [mannage request:url method:POST parameters:param progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+        // wdddnsstring *string = development ;
+        // whatthefuck *string = velopment ;
+        // 
+        
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        
+        
+    }];
+}
+
 
 //2.1导航栏右按钮--设置界面
 - (void)pushToSetting

+ 1 - 1
shiku_im/shiku_im/controller/myOA/JOWQSCDKViewController.m

@@ -1011,7 +1011,7 @@
     //接口
     NSString * urlAddress=@"mobile/oa/saveOutSign.action";
     //Caller
-    NSString * caller=@"c";
+    NSString * caller=@"Mobile_outsign";
     
     /**
      1,打卡地址

+ 1 - 1
shiku_im/shiku_im/shiku_im-Info.plist

@@ -33,7 +33,7 @@
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>6.3.8</string>
+	<string>6.4.1</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleURLTypes</key>

+ 5 - 3
shiku_im/shiku_im/文件夹3/人脸识别/NetManager/NetAccessModel.m

@@ -62,11 +62,13 @@
 
 #pragma mark --- 人脸搜索
 - (void)identifyUserLivenessWithFaceImageStr:(NSString *)imageStr  completion:(FinishBlockWithObject)completionBlock {
-    NSDictionary* parm = @{@"image_type":@"BASE64",
-                           @"image":imageStr,
+    NSDictionary* parm = @{
                            @"group_id_list":g_B2B_enuu,
-                           @"liveness_control":@"HIGH",
                            @"user_id":g_server.myself.userId,
+                           @"image_type":@"BASE64",
+                           @"image":imageStr,
+                           @"liveness_control":@"NORMAL",
+                           @"quality_control":@"NORMAL",
                            };
     [[NetManager sharedInstance] postDataWithPath:[NSString stringWithFormat:@"%@?access_token=%@",IDENTIFY_URL,self.accessToken] parameters:parm completion:^(NSError *error, id resultObject) {
         completionBlock(error,resultObject);

+ 32 - 0
shiku_im/shiku_im/文件夹3/人脸识别/View/FaceGroupVC.m

@@ -144,6 +144,7 @@ static NSString *cellID = @"cellID";
                         Fmodel.userCompanyUU = g_B2B_enuu;
                         Fmodel.userName = model.emname;
                         Fmodel.userPhone = model.emphone;
+                        Fmodel.userEmcode = model.emcode;
                         [self.detailArr addObject:Fmodel];
                     }
                     
@@ -182,6 +183,7 @@ static NSString *cellID = @"cellID";
                         Fmodel.userCompanyUU = g_B2B_enuu;
                         Fmodel.userName = model.EM_NAME;
                         Fmodel.userPhone = model.EM_MOBILE;
+                        Fmodel.userEmcode = model.EM_CODE;
                         [self.detailArr addObject:Fmodel];
                     }
                 }
@@ -317,6 +319,7 @@ static NSString *cellID = @"cellID";
                         FaceModel *model = self.detailArr[i];
                         if ([model.userID isEqualToString:btn.numId]) {
                             [self.detailArr removeObjectAtIndex:i];
+                            [self changeFaceStateToERP:model.userID and:model.userEmcode];
                             self.listData = self.detailArr;
                             [self.tableView reloadData];
                         }
@@ -325,8 +328,36 @@ static NSString *cellID = @"cellID";
             }];
         }
     }];
+}
+
+#pragma mark --- 百度人脸注册成功后,在ERP上做个标识
+-(void)changeFaceStateToERP:(NSString *)userIMID and:(NSString *)userEMCODE
+{
+    [MBProgressHUD showMessage:@"删除人脸数据" toView:self.view];
+    
+    NSString *url = [NSString stringWithFormat:@"%@/mobile/updateUploadPictureSign.action",g_id];
+    
+    NSDictionary *param = @{
+                            @"master":g_master,
+                            @"em_imid":userIMID,
+                            @"emcode":userEMCODE,
+                            @"em_uploadsign":@"0"
+                            };
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
     
+    UASNetworkManager *mannage = [UASNetworkManager shareManager];
     
+    mannage.responseSerializer = [AFJSONResponseSerializer serializer];
+    
+    [mannage request:url method:POST parameters:param progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+        
+        [MBProgressHUD hideHUDForView:self.view];
+        
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        
+        [MBProgressHUD hideHUDForView:self.view];
+    }];
 }
 
 #pragma mark --- TableView Delegat / DataSource
@@ -347,6 +378,7 @@ static NSString *cellID = @"cellID";
     cell.nameStr.text = model.userName;
     cell.phoneStr.text = model.userPhone;
     cell.deleteBtn.numId = model.userID;
+    cell.deleteBtn.backUpString = model.userEmcode;
     
     [cell.deleteBtn addTarget:self action:@selector(deleteUserWithGroupIDAndUserIDWithButton:) forControlEvents:UIControlEventTouchUpInside];
     

+ 1 - 1
shiku_im/shiku_im/文件夹3/人脸识别/View/FaceModel.h

@@ -15,5 +15,5 @@
 @property (nonatomic,strong) NSString *userCompanyMaster;//用户公司账套
 @property (nonatomic,strong) NSString *userName;//用户名字
 @property (nonatomic,strong) NSString *userPhone;//用户电话
-
+@property (nonatomic,strong) NSString *userEmcode;//用户emcode
 @end