|
|
|
@ -32,6 +32,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser
|
|
|
|
|
public class MainModel : CPF.CpfObject |
|
|
|
|
{ |
|
|
|
|
private static List<IWebSocketConnection> allSockets; |
|
|
|
|
|
|
|
|
|
//初始化网络连接 |
|
|
|
|
public static void DeviceControllerInit() |
|
|
|
|
{ |
|
|
|
@ -245,19 +246,8 @@ namespace AKS.EnterpriseLibrary.WebBrowser
|
|
|
|
|
/// <returns></returns> |
|
|
|
|
public static string IDCardRead(string content) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Task.Run(async () => |
|
|
|
|
{ |
|
|
|
|
StartFace(IdcardStr); |
|
|
|
|
}); |
|
|
|
|
@event9.WaitOne(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var param = content.ConvertToAnonymousType(new |
|
|
|
|
{ |
|
|
|
|
code = default(string), |
|
|
|
@ -272,24 +262,59 @@ namespace AKS.EnterpriseLibrary.WebBrowser
|
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
if (IdcardStr == "500") |
|
|
|
|
{ |
|
|
|
|
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "身份证持有者非本人" + "\"}"; |
|
|
|
|
} |
|
|
|
|
else if (IdcardStr.Contains("HttpClient.Timeout")) |
|
|
|
|
if (IdcardStr.Contains("HttpClient.Timeout")) |
|
|
|
|
{ |
|
|
|
|
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "身份证读取失败" + "\"}"; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":" + IdcardStr + "}"; |
|
|
|
|
|
|
|
|
|
if (Parame.isSM) |
|
|
|
|
{ |
|
|
|
|
Task.Run(async () => |
|
|
|
|
{ |
|
|
|
|
StartFace(IdcardStr); |
|
|
|
|
JObject jo = (JObject)JsonConvert.DeserializeObject(IdcardStr); |
|
|
|
|
string data = jo["Data"].ToString(); |
|
|
|
|
jo = (JObject)JsonConvert.DeserializeObject(data); |
|
|
|
|
string ImageBase64 = jo["ImageBase64"].ToString(); |
|
|
|
|
StartFace(ImageBase64); |
|
|
|
|
}); |
|
|
|
|
@event9.WaitOne(); |
|
|
|
|
if (!string.IsNullOrEmpty(smresults)) |
|
|
|
|
{ |
|
|
|
|
if (smresults == "200") |
|
|
|
|
{ |
|
|
|
|
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":" + IdcardStr + "}"; |
|
|
|
|
} |
|
|
|
|
else if (smresults == "500") |
|
|
|
|
{ |
|
|
|
|
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证超时" + "\"}"; |
|
|
|
|
} |
|
|
|
|
else if (smresults == "600") |
|
|
|
|
{ |
|
|
|
|
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一活体检测失败" + "\"}"; |
|
|
|
|
} |
|
|
|
|
else if (smresults == "700") |
|
|
|
|
{ |
|
|
|
|
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "服务端连接异常" + "\"}"; |
|
|
|
|
} |
|
|
|
|
else if (smresults == "800") |
|
|
|
|
{ |
|
|
|
|
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "身份证持有者非本人" + "\"}"; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证失败。" + "\"}"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + "人证合一验证失败." + "\"}"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
result = "{\"timestamp\":\"" + Utils.GetTimestamp() + "\",\"keycode\":\"" + param.code + "\",\"message\":\"seccse\",\"code\":\"200\",\"status\":true,\"data\":" + IdcardStr + "}"; |
|
|
|
|
} |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
@ -1625,7 +1650,7 @@ namespace AKS.EnterpriseLibrary.WebBrowser
|
|
|
|
|
/// </summary> |
|
|
|
|
private static string smresults = string.Empty; |
|
|
|
|
private static AutoResetEvent @event9 = new AutoResetEvent(false); |
|
|
|
|
private static async void StartFace(string IdcardStr) |
|
|
|
|
private static async void StartFace(string ImageBase64) |
|
|
|
|
{ |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
@ -1635,10 +1660,11 @@ namespace AKS.EnterpriseLibrary.WebBrowser
|
|
|
|
|
function = "CF_OpenCamera", |
|
|
|
|
show = 1, |
|
|
|
|
fx = 200, |
|
|
|
|
fy = 450, |
|
|
|
|
fw = 640, |
|
|
|
|
fh = 480 |
|
|
|
|
fy = 800, |
|
|
|
|
fw = 800, |
|
|
|
|
fh = 600 |
|
|
|
|
}; |
|
|
|
|
Task.Delay(1000).Wait(); |
|
|
|
|
//打开摄像头 |
|
|
|
|
webSocket.Send(JsonConvert.SerializeObject(mode), "CF_OpenCamera"); |
|
|
|
|
//开始活检 |
|
|
|
@ -1647,36 +1673,72 @@ namespace AKS.EnterpriseLibrary.WebBrowser
|
|
|
|
|
{ |
|
|
|
|
//关闭摄像头 |
|
|
|
|
webSocket.Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera"); |
|
|
|
|
//关闭连接 |
|
|
|
|
webSocket.Close(); |
|
|
|
|
} |
|
|
|
|
else if (smresults == "700")//服务端未启动 |
|
|
|
|
{ |
|
|
|
|
//关闭连接 |
|
|
|
|
webSocket.Close(); |
|
|
|
|
} |
|
|
|
|
{ webSocket.Close(); } |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
JObject jo = (JObject)JsonConvert.DeserializeObject(smresults); |
|
|
|
|
string nEventId = jo["nEventId"].ToString(); |
|
|
|
|
if (nEventId == "100") |
|
|
|
|
{ |
|
|
|
|
string faceA = Utils.Base64ByImages(IdcardStr); |
|
|
|
|
string faceB = Utils.Base64ByImages(jo["ImgBase64"].ToString()); |
|
|
|
|
//var faceA = "/data/home/aks/aks/wwwroot/TmpFile/faceA.jpg"; |
|
|
|
|
//var faceB = "/data/home/aks/aks/wwwroot/TmpFile/faceB.jpg"; |
|
|
|
|
string faceA = Utils.Base64ByImagesPath(ImageBase64.Replace("data:image/jpg;base64,", ""), "faceA"); |
|
|
|
|
string faceB = Utils.Base64ByImagesPath(jo["ImgBase64"].ToString(), "faceB"); |
|
|
|
|
var mode2 = new |
|
|
|
|
{ |
|
|
|
|
function = "CF_FaceCompare", |
|
|
|
|
filePathA = faceA, |
|
|
|
|
filePathB = faceB |
|
|
|
|
}; |
|
|
|
|
//开始人脸比对 |
|
|
|
|
|
|
|
|
|
smresults = await webSocket.Send(JsonConvert.SerializeObject(mode2), "CF_FaceCompare"); |
|
|
|
|
Log.Info(smresults); |
|
|
|
|
//停止活检 |
|
|
|
|
webSocket.Send("{\"function\":\"CF_StopLiveDetect\"}", "CF_StopLiveDetect"); |
|
|
|
|
//关闭摄像头 |
|
|
|
|
webSocket.Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera"); |
|
|
|
|
if (smresults == "500" || smresults == "400")//500:超时,400:接收数据错误 |
|
|
|
|
{ |
|
|
|
|
//关闭摄像头 |
|
|
|
|
webSocket.Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera"); |
|
|
|
|
webSocket.Close(); |
|
|
|
|
} |
|
|
|
|
else if (smresults == "700")//服务端未启动 |
|
|
|
|
{ webSocket.Close(); } |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
//活体检测失败 |
|
|
|
|
smresults = "600"; |
|
|
|
|
jo = (JObject)JsonConvert.DeserializeObject(smresults); |
|
|
|
|
string success = jo["success"].ToString(); |
|
|
|
|
if (success == "0") |
|
|
|
|
{ |
|
|
|
|
string score = jo["score"].ToString(); |
|
|
|
|
if (Convert.ToInt32(score) >= Parame.score) |
|
|
|
|
{ |
|
|
|
|
smresults = "200";//比对成功 |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
smresults = "800";//非本人 |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
smresults = "400"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
//停止活检 |
|
|
|
|
webSocket.Send("{\"function\":\"CF_StopLiveDetect\"}", "CF_StopLiveDetect"); |
|
|
|
|
//关闭摄像头 |
|
|
|
|
webSocket.Send("{\"function\":\"CF_CloseCamera\"}", "CF_CloseCamera"); |
|
|
|
|
//关闭连接 |
|
|
|
|
//活体检测失败 |
|
|
|
|
smresults = "600"; |
|
|
|
|
} |
|
|
|
|
webSocket.Close(); |
|
|
|
|
} |
|
|
|
|
@event9.Set(); |
|
|
|
|