From 4e058fba79d9c56fe8941533b8308c73b34fa4fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=BD=87=E9=98=B3?= Date: Thu, 30 May 2024 07:30:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=AF=E7=94=A8=E5=8F=8C=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CPF_Cef/Common/ChunkedUpload.cs | 94 +++++++++++++++++++++++++++------ CPF_Cef/MainModel.cs | 15 ++++-- CPF_Cef/Parame.cs | 4 +- 3 files changed, 92 insertions(+), 21 deletions(-) diff --git a/CPF_Cef/Common/ChunkedUpload.cs b/CPF_Cef/Common/ChunkedUpload.cs index 50e225a..0697b37 100644 --- a/CPF_Cef/Common/ChunkedUpload.cs +++ b/CPF_Cef/Common/ChunkedUpload.cs @@ -18,6 +18,8 @@ using CPF; using CPF.Windows; using static System.Net.Mime.MediaTypeNames; using System.Text.RegularExpressions; +using AksWebBrowser.Devices; +using LibVLCSharp.Shared; namespace AksWebBrowser.Common { @@ -271,7 +273,7 @@ namespace AksWebBrowser.Common { var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Post, Parame.signUrl); - var content = new StringContent("{\r\n command: \"finger\",\r\n command_num: 121,\r\n data: {\r\n operation: \"" + type + "\",\r\n operation_code: " + typeCode + ",\r\n parameters: {\r\n }\r\n }\r\n }", null, "application/json"); + var content = new StringContent("{\r\n \"command\": \"finger\",\r\n \"command_num\": 121,\r\n \"data\": {\r\n \"operation\": \"open\",\r\n \"operation_code\": 1,\r\n \"parameters\": {\r\n }\r\n }\r\n}", null, "text/plain"); request.Content = content; var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); @@ -354,22 +356,82 @@ namespace AksWebBrowser.Common //读取parameters数据 string parameters = jo3["parameters"].ToString(); JObject jo4 = (JObject)JsonConvert.DeserializeObject(parameters); - IDCardModel iDCardModel = new IDCardModel(); - iDCardModel.Name = jo4["cn_name"].ToString(); - iDCardModel.Sex = jo4["sex"].ToString(); - iDCardModel.Nation = jo4["nation"].ToString(); - iDCardModel.BirthDay = jo4["birth_date"].ToString(); - iDCardModel.Addr = jo4["address"].ToString(); - iDCardModel.Id = jo4["idcard_number"].ToString(); - iDCardModel.Regorg = jo4["deparment"].ToString(); - iDCardModel.StartDate = jo4["validity_begin"].ToString(); - iDCardModel.EndDate = jo4["balidity_end"].ToString(); - iDCardModel.ImageBase64 = "data:image/jpg;base64," + jo4["face_data"].ToString(); - var OBJ = new + string base64 = jo4["face_data"].ToString(); + if (Parame.isTMZ) { - Data = iDCardModel - }; - return JsonConvert.SerializeObject(OBJ); ; + //生成文件 + string dirpath = Utils.getSystemPaht() + @"/wwwroot/FileTxt"; + if (!Directory.Exists(dirpath)) + { + Directory.CreateDirectory(dirpath); + } + var tempFile = dirpath + "/faceA.txt"; + using (StreamWriter sw = new StreamWriter(tempFile)) + { + sw.Write(base64); + sw.Close(); + sw.Dispose(); + } + //生成图片 + string dirpath1 = Utils.getSystemPaht() + @"/wwwroot/Face"; + if (!Directory.Exists(dirpath1)) + { + Directory.CreateDirectory(dirpath1); + } + var faceA = dirpath1 + "/faceA.jpg"; + string command = $"base64 -d {tempFile} > {faceA}"; + MainModel.ShllCommad(command); + //删除图片 + Task.Run(() => + { + File.Delete(tempFile); + }); + //开启人脸比对 + LhtCF lht = new LhtCF(); + string stat = lht.LhtCFFace("", faceA); + if (stat == "100") + { + IDCardModel iDCardModel = new IDCardModel(); + iDCardModel.Name = jo4["cn_name"].ToString(); + iDCardModel.Sex = jo4["sex"].ToString(); + iDCardModel.Nation = jo4["nation"].ToString(); + iDCardModel.BirthDay = jo4["birth_date"].ToString(); + iDCardModel.Addr = jo4["address"].ToString(); + iDCardModel.Id = jo4["idcard_number"].ToString(); + iDCardModel.Regorg = jo4["deparment"].ToString(); + iDCardModel.StartDate = jo4["validity_begin"].ToString(); + iDCardModel.EndDate = jo4["balidity_end"].ToString(); + iDCardModel.ImageBase64 = "data:image/jpg;base64," + base64; + var OBJ = new + { + Data = iDCardModel + }; + return JsonConvert.SerializeObject(OBJ); + } + else + { + + return "500"; + } + } + else { + IDCardModel iDCardModel = new IDCardModel(); + iDCardModel.Name = jo4["cn_name"].ToString(); + iDCardModel.Sex = jo4["sex"].ToString(); + iDCardModel.Nation = jo4["nation"].ToString(); + iDCardModel.BirthDay = jo4["birth_date"].ToString(); + iDCardModel.Addr = jo4["address"].ToString(); + iDCardModel.Id = jo4["idcard_number"].ToString(); + iDCardModel.Regorg = jo4["deparment"].ToString(); + iDCardModel.StartDate = jo4["validity_begin"].ToString(); + iDCardModel.EndDate = jo4["balidity_end"].ToString(); + iDCardModel.ImageBase64 = "data:image/jpg;base64," + base64; + var OBJ = new + { + Data = iDCardModel + }; + return JsonConvert.SerializeObject(OBJ); + } } else { diff --git a/CPF_Cef/MainModel.cs b/CPF_Cef/MainModel.cs index 673d549..d94480d 100644 --- a/CPF_Cef/MainModel.cs +++ b/CPF_Cef/MainModel.cs @@ -249,7 +249,14 @@ namespace AKS.EnterpriseLibrary.WebBrowser } else { - return "{\"keycode\":\"" + code + "\",\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":" + IdcardStr + "}"; + if (IdcardStr == "500") + { + result = "{\"keycode\":\"" + code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "身份证持有者非本人" + "\"}"; + } + else + { + result = "{\"keycode\":\"" + code + "\",\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":" + IdcardStr + "}"; + } } SubmitLogs(result, "IDCardRead"); return result; @@ -557,7 +564,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser { if (param == null) { - return "{\"keycode\":\"" +"" + "\",\"message\":\"Falied\",\"code\":\"400\",\"status\":false,\"data\":\"" + "参数解析错误" + "\"}"; + return "{\"keycode\":\"" + "" + "\",\"message\":\"Falied\",\"code\":\"400\",\"status\":false,\"data\":\"" + "参数解析错误" + "\"}"; } if (!isFuncisFuncObject("ReadFingerData")) { @@ -588,7 +595,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser Task.Run(() => { HttpPostResponseByFinger("open", 1); }); event2.WaitOne(); string result = string.Empty; - Log.Info("指纹数据"+ fingerStr); + Log.Info("指纹数据" + fingerStr); if (string.IsNullOrEmpty(fingerStr)) { result = "{\"keycode\":\"" + param.code + "\",\"message\":\"Falied\",\"code\":\"400\",\"status\":false,\"data\":\"" + "读取失败" + "\"}"; @@ -596,7 +603,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser } else { - result = "{\"keycode\":\"" + param.code + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"data\":\"" + fingerStr + "\"}"; + result = "{\"keycode\":\"" + param.code + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"jpg\",\"data\":\"" + fingerStr + "\"}"; } SubmitLogs(result, "ReadFingerData"); return result; diff --git a/CPF_Cef/Parame.cs b/CPF_Cef/Parame.cs index a16bb1e..8cd20df 100644 --- a/CPF_Cef/Parame.cs +++ b/CPF_Cef/Parame.cs @@ -25,7 +25,7 @@ namespace AksWebBrowser public static string Ip = "192.168.1.166"; //高拍仪url public static string gpyUrl = "http://127.0.0.1:6543"; - //签字版 + //签字版、指纹、身份证 public static string signUrl = "http://127.0.0.1:9399/device"; //票据打印机 public static string pritPj = "/dev/ttyS7"; @@ -33,6 +33,8 @@ namespace AksWebBrowser public static int pritPjPort = 38400; //打印名字 public static string PrinterName = "Lexmark-MS430-Series"; + //是否启用双目 + public static bool isTMZ = true; } public struct Func {