This commit is contained in:
2026-06-29 15:54:30 +08:00
parent ad6d7ea29e
commit 2c795c12b8
2 changed files with 135 additions and 75 deletions

View File

@@ -3,6 +3,7 @@ using System.Text;
using Dlhis.Basic.Organization.Response;
using Kurisu.AspNetCore.CustomClass;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Dlhis.Basic.Organization.Services;
@@ -72,7 +73,7 @@ public class AliyunClient : IAliyunClient
var bodyString = BuildBodyString(parameters);
var client = _httpClientFactory.CreateClient();
client.DefaultRequestHeaders.Add("Host", Endpoint);
//client.DefaultRequestHeaders.Add("Host", Endpoint);
var content = new StringContent(bodyString, Encoding.UTF8, "application/x-www-form-urlencoded");
var response = await client.PostAsync(url, content);
var rawResponse = await response.Content.ReadAsStringAsync();
@@ -89,26 +90,39 @@ public class AliyunClient : IAliyunClient
RawResponse = rawResponse
};
var response = JsonConvert.DeserializeObject<AliyunId3MetaVerifyApiResponse>(rawResponse);
result.RequestId = response.RequestId;
result.Code = response.Code;
result.Message = response.Message;
result.BizCode = response.ResultObject.BizCode;
result.Similarity = ParseVerifyScore(response.ResultObject.FaceDetail);
result.Passed = response.ResultObject.BizCode switch
try
{
"1" => true,
"2" or "3" => false,
_ => null
};
var response = JsonConvert.DeserializeObject<AliyunId3MetaVerifyApiResponse>(rawResponse);
result.RequestId = response?.RequestId;
result.Code = response?.Code;
result.Message = response?.Message;
result.BizCode = response?.ResultObject?.BizCode;
result.Similarity = ParseVerifyScore(response?.ResultObject?.FaceDetail);
result.Passed = result.BizCode switch
{
"1" => true,
"2" or "3" => false,
_ => null
};
}
catch (Exception e)
{
result.Code = "ParseError";
result.Message = $"阿里云响应解析失败:{e.Message}";
}
return result;
}
private static double ParseVerifyScore(string faceDetail)
private static double? ParseVerifyScore(string faceDetail)
{
var detail = JsonConvert.DeserializeObject<AliyunId3MetaVerifyFaceDetail>(faceDetail);
return detail.VerifyScore;
if (string.IsNullOrWhiteSpace(faceDetail))
{
return null;
}
var detail = JObject.Parse(faceDetail);
return detail.Value<double?>("verifyScore");
}
private static string ComputeSignature(SortedDictionary<string, string> parameters, string httpMethod, string accessKeySecret)
@@ -176,9 +190,4 @@ public class AliyunClient : IAliyunClient
public string FaceDetail { get; set; }
}
private class AliyunId3MetaVerifyFaceDetail
{
[JsonProperty("verifyScore")]
public double VerifyScore { get; set; }
}
}