sunpengfei
2025-08-20 a9ee8bf270eb8a3315808b24b41417be4b1a8a9a
feat:开发
2个文件已添加
6个文件已修改
362 ■■■■■ 已修改文件
FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.CommonServer.Application/OcrUtils/Commands/OcrCommandHandler.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/FlexJobApi.Core.xml 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityOcrCommand.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetLicenseOcrCommand.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityResult.cs 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.UserServer.Application/ElectronSign/Commands/ContractTemplateCommandHandler.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml
@@ -208,11 +208,6 @@
            文字识别营业执照
            </summary>
        </member>
        <member name="M:FlexJobApi.CommonServer.Application.OcrCommandHandler.#ctor">
            <summary>
            文字识别营业执照
            </summary>
        </member>
        <member name="M:FlexJobApi.CommonServer.Application.OcrCommandHandler.Handle(FlexJobApi.Core.GetLicenseOcrCommand,System.Threading.CancellationToken)">
            <summary>
            文字识别营业执照
@@ -221,6 +216,14 @@
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:FlexJobApi.CommonServer.Application.OcrCommandHandler.Handle(FlexJobApi.Core.GetIdentityOcrCommand,System.Threading.CancellationToken)">
            <summary>
            文字识别身份证
            </summary>
            <param name="request"></param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="T:FlexJobApi.CommonServer.Application.CheckHealthQueryHandler">
            <summary>
            健康校验
FlexJobApi.CommonServer.Application/OcrUtils/Commands/OcrCommandHandler.cs
@@ -12,8 +12,9 @@
    /// <summary>
    /// 文字识别营业执照
    /// </summary>
    public class OcrCommandHandler() :
        IRequestHandler<GetLicenseOcrCommand, GetLicenseOcrCommandResult>
    public class OcrCommandHandler :
        IRequestHandler<GetLicenseOcrCommand, GetLicenseOcrCommandResult>,
        IRequestHandler<GetIdentityOcrCommand, GetIdentityOcrCommandResult>
    {
        /// <summary>
        /// 文字识别营业执照
@@ -26,5 +27,17 @@
            var result = await request.Url.OcrBusinessLicense(request.Scene, request.IsOssUrl);
            return result.Adapt<GetLicenseOcrCommandResult>();
        }
        /// <summary>
        /// 文字识别身份证
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task<GetIdentityOcrCommandResult> Handle(GetIdentityOcrCommand request, CancellationToken cancellationToken)
        {
            var result = await request.Url.OcrBusinessLicense(request.Scene, request.IsOssUrl);
            return result.Adapt<GetIdentityOcrCommandResult>();
        }
    }
}
FlexJobApi.Core/FlexJobApi.Core.xml
@@ -4463,6 +4463,46 @@
            数据库审计日志
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetIdentityOcrCommand">
            <summary>
            文字识别身份证
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetIdentityOcrCommand.Access">
            <summary>
            通道
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetIdentityOcrCommand.Scene">
            <summary>
            场景
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetIdentityOcrCommand.Url">
            <summary>
            链接地址
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetIdentityOcrCommand.IsOssUrl">
            <summary>
            是否为云存储相对地址
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetIdentityOcrCommandResult">
            <summary>
            文字识别身份证
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetIdentityOcrCommandResult.Url">
            <summary>
            地址
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetIdentityOcrCommandResult.Model">
            <summary>
            模型
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.GetLicenseOcrCommand">
            <summary>
            文字识别营业执照
@@ -7138,6 +7178,11 @@
            模板Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetContractTemplateQueryResult.Id">
            <summary>
            模板Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetContractTemplateQueryResult.EnterpriseId">
            <summary>
            企业Id
@@ -7180,7 +7225,7 @@
        </member>
        <member name="P:FlexJobApi.Core.GetContractTemplateQueryResultValue.Id">
            <summary>
            Id
            变量Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.GetContractTemplateQueryResultValue.Type">
@@ -10902,6 +10947,81 @@
            经营范围
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.BaiduOcrIdentityResult">
            <summary>
            百度文字识别结果
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.BaiduOcrIdentityResult.Url">
            <summary>
            地址
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.BaiduOcrIdentityResult.Model">
            <summary>
            模型
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.BaiduOcrIdentityResult.ErrorCode">
            <summary>
            错误码
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.BaiduOcrIdentityResult.ErrorMessage">
            <summary>
            错误消息
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.BaiduOcrIdentityResult.WordsResult">
            <summary>
            文字结果
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.BaiduOcrIdentityResultModel">
            <summary>
            百度文字识别结果
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.EnterpriseName">
            <summary>
            企业全称
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.SocietyCreditCode">
            <summary>
            统一社会信用代码
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.LegalPerson">
            <summary>
            法人姓名
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.EnterpriseType">
            <summary>
            企业类型
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.RegisteredCapital">
            <summary>
            注册资本
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.EstablishmentDate">
            <summary>
            成立日期
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.Address">
            <summary>
            企业地址
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.BaiduOcrIdentityResultModel.MainBusiness">
            <summary>
            经营范围
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.BaiduOcrResultWord">
            <summary>
            百度文字识别结果
@@ -10955,6 +11075,14 @@
            <param name="scene"></param>
            <param name="isOssUrl"></param>
        </member>
        <member name="M:FlexJobApi.Core.BaiduOcrUtils.OcrIdentity(System.String,System.String,System.Boolean)">
            <summary>
            营业执照OCR
            </summary>
            <param name="url"></param>
            <param name="scene"></param>
            <param name="isOssUrl"></param>
        </member>
        <member name="T:FlexJobApi.Core.BaiduOptions">
            <summary>
            百度配置
FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetIdentityOcrCommand.cs
New file
@@ -0,0 +1,52 @@
using MediatR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
    /// <summary>
    /// 文字识别身份证
    /// </summary>
    [Resource([EnumResourceController.CommonServerOcrUtils], Method = EnumResourceMethod.Post)]
    public class GetIdentityOcrCommand : IRequest<GetIdentityOcrCommandResult>
    {
        /// <summary>
        /// 通道
        /// </summary>
        public EnumOcrAccess Access { get; set; }
        /// <summary>
        /// 场景
        /// </summary>
        public string Scene { get; set; }
        /// <summary>
        /// 链接地址
        /// </summary>
        public string Url { get; set; }
        /// <summary>
        /// 是否为云存储相对地址
        /// </summary>
        public bool IsOssUrl { get; set; }
    }
    /// <summary>
    /// 文字识别身份证
    /// </summary>
    public class GetIdentityOcrCommandResult
    {
        /// <summary>
        /// 地址
        /// </summary>
        public string Url { get; set; }
        /// <summary>
        /// 模型
        /// </summary>
        public BaiduOcrBusinessLicenseResultModel Model { get; set; }
    }
}
FlexJobApi.Core/Models/CommonServer/OcrUtils/Commands/GetLicenseOcrCommand.cs
@@ -11,7 +11,7 @@
    /// <summary>
    /// 文字识别营业执照
    /// </summary>
    [Resource([EnumResourceController.CommonServerOcrUtils])]
    [Resource([EnumResourceController.CommonServerOcrUtils], Method = EnumResourceMethod.Post)]
    public class GetLicenseOcrCommand : IRequest<GetLicenseOcrCommandResult>
    {
        /// <summary>
FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrIdentityResult.cs
New file
@@ -0,0 +1,90 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
    /// <summary>
    /// 百度文字识别结果
    /// </summary>
    public class BaiduOcrIdentityResult
    {
        /// <summary>
        /// 地址
        /// </summary>
        public string Url { get; set; }
        /// <summary>
        /// 模型
        /// </summary>
        public BaiduOcrIdentityResultModel Model { get; set; }
        /// <summary>
        /// 错误码
        /// </summary>
        [JsonProperty("error_code")]
        public string ErrorCode { get; set; }
        /// <summary>
        /// 错误消息
        /// </summary>
        [JsonProperty("error_msg")]
        public string ErrorMessage { get; set; }
        /// <summary>
        /// 文字结果
        /// </summary>
        [JsonProperty("words_result")]
        public Dictionary<string, BaiduOcrResultWord> WordsResult { get; set; }
    }
    /// <summary>
    /// 百度文字识别结果
    /// </summary>
    public class BaiduOcrIdentityResultModel
    {
        /// <summary>
        /// 企业全称
        /// </summary>
        public string EnterpriseName { get; set; }
        /// <summary>
        /// 统一社会信用代码
        /// </summary>
        public string SocietyCreditCode { get; set; }
        /// <summary>
        /// 法人姓名
        /// </summary>
        public string LegalPerson { get; set; }
        /// <summary>
        /// 企业类型
        /// </summary>
        public string EnterpriseType { get; set; }
        /// <summary>
        /// 注册资本
        /// </summary>
        public string RegisteredCapital { get; set; }
        /// <summary>
        /// 成立日期
        /// </summary>
        public string EstablishmentDate { get; set; }
        /// <summary>
        /// 企业地址
        /// </summary>
        public string Address { get; set; }
        /// <summary>
        /// 经营范围
        /// </summary>
        public string MainBusiness { get; set; }
    }
}
FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs
@@ -66,5 +66,49 @@
            return result;
        }
        /// <summary>
        /// 营业执照OCR
        /// </summary>
        /// <param name="url"></param>
        /// <param name="scene"></param>
        /// <param name="isOssUrl"></param>
        public static async Task<BaiduOcrIdentityResultModel> OcrIdentity(this string url, string scene = null, bool isOssUrl = true)
        {
            var options = App.GetOptions<BaiduOptions>();
            var ocr = new Ocr(options.Ocr.Key, options.Ocr.Secret);
            ocr.Timeout = 60000;
            JObject value;
            if (isOssUrl)
            {
                var downloadUrl = AliyunOSSUtils.GetUrl(url);
                var buffer = await App.GetRequiredService<IHttpRemoteService>().GetAsByteArrayAsync(downloadUrl);
                value = ocr.Idcard(buffer, "1");
            }
            else
            {
                var upload = AliyunOSSUtils.Upload(scene, url);
                url = upload.Url;
                //value = ocr.Idcard(upload.Buffer);
            }
            //var result = value.ToObject<BaiduOcrIdentityResult>();
            //result.Url = url;
            //if (result.ErrorCode.IsNotNull())
            //{
            //    return result;
            //}
            //result.Model = new BaiduOcrIdentityResultModel
            //{
            //    EnterpriseName = result.WordsResult["单位名称"].Words,
            //    SocietyCreditCode = result.WordsResult["社会信用代码"].Words,
            //    LegalPerson = result.WordsResult["法人"].Words,
            //    EnterpriseType = result.WordsResult["类型"].Words,
            //    RegisteredCapital = result.WordsResult["注册资本"].Words,
            //    EstablishmentDate = result.WordsResult["成立日期"].Words,
            //    Address = result.WordsResult["地址"].Words,
            //    MainBusiness = result.WordsResult["经营范围"].Words,
            //};
            //return result;
            throw new Exception();
        }
    }
}
FlexJobApi.UserServer.Application/ElectronSign/Commands/ContractTemplateCommandHandler.cs
@@ -69,10 +69,18 @@
                         entity.UpdatedUserId = logier.Id;
                         entity.UpdatedTime = DateTime.Now;
                     }
                     if (entity.Access.HasValue && entity.TemplateId.IsNotNull() && entity.Status == EnumContractTemplateStatus.Wait)
                     if (entity.Access.HasValue && entity.TemplateId.IsNotNull())
                     {
                         entity.Status = EnumContractTemplateStatus.Completed;
                         entity.CompletedTime = DateTime.Now;
                         if (entity.Status == EnumContractTemplateStatus.Wait)
                         {
                             entity.Status = EnumContractTemplateStatus.Completed;
                             entity.CompletedTime = DateTime.Now;
                         }
                     }
                     else
                     {
                         entity.Status = EnumContractTemplateStatus.Wait;
                         entity.CompletedTime = null;
                     }
                 },
                 cancellationToken);