From c108924b578a76c3152cbc569d3995d35130a505 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期四, 21 八月 2025 18:57:55 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/RealEnterpriseInputByCertAccountInput.cs | 143 +++++++++++++++++++++++ FlexJobApi.Core/FlexJobApi.Core.xml | 115 +++++++++++++++++++ FlexJobApi.Core/Models/ElectronSignServer/Common/ElectronSignServerResult.cs | 1 FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs | 12 ++ FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs | 58 +++++++- 5 files changed, 318 insertions(+), 11 deletions(-) diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml index d936be7..0a9ebb5 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.xml +++ b/FlexJobApi.Core/FlexJobApi.Core.xml @@ -4918,6 +4918,111 @@ 涓汉 </summary> </member> + <member name="T:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput"> + <summary> + 鏍规嵁璇佷功璐﹀彿浼佷笟瀹炲悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.CustomerId"> + <summary> + 瀹㈡埛Id + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.CertAccount"> + <summary> + 涓婁笂绛捐瘉涔﹁处鍙凤紙閫夊~锛� + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.OutUserId"> + <summary> + 澶栭儴浼佷笟Id + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.Proxy"> + <summary> + 鏄惁濮旀墭缁忓姙浜� + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.RealMethod"> + <summary> + 娉曚汉/缁忓姙浜哄疄鍚嶈璇佹柟寮忥紙10涓汉鎵嬫満鍙蜂笁瑕佺礌 20閾惰鍗″瑕佺礌 30鍒疯劯璁よ瘉锛� + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.EnterpriseName"> + <summary> + 浼佷笟鍏ㄧО + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.SocietyCreditCode"> + <summary> + 缁熶竴绀句細淇$敤浠g爜 + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.LicenseUrl"> + <summary> + 钀ヤ笟鎵х収鏂囦欢鍦板潃 + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.LegalPerson"> + <summary> + 娉曚汉濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.Name"> + <summary> + 娉曚汉鎴栫粡鍔炰汉濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.Identity"> + <summary> + 娉曚汉鎴栫粡鍔炰汉韬唤璇佸彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.IdentityImgUrl"> + <summary> + 韬唤璇佷汉鍍忛潰Url + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.IdentityBackImgUrl"> + <summary> + 韬唤璇佸浗寰介潰Url + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.BankCard"> + <summary> + 娉曚汉鎴栫粡鍔炰汉閾惰鍗″彿 + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.BankCardImgUrl"> + <summary> + 閾惰鍗$収鐗� + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.Mobile"> + <summary> + 娉曚汉鎴栫粡鍔炰汉鎵嬫満鍙� + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountInput.ProxyPowerAttorneyUrl"> + <summary> + 浼佷笟鎺堟潈涔� + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountOutput.Id"> + <summary> + 璁よ瘉娴佹按鍙� + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountOutput.Status"> + <summary> + 鐘舵�侊紙0鏈疄鍚� 10鏍¢獙涓� 99瀹炲悕澶辫触 100宸插疄鍚嶏級 + </summary> + </member> + <member name="P:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealEnterpriseInputByCertAccountOutput.CertAccount"> + <summary> + 涓婁笂绛捐瘉涔﹁处鍙凤紙閫夊~锛� + </summary> + </member> <member name="T:FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals.RealPersonalInput"> <summary> 涓汉鐢ㄦ埛瀹炲悕 @@ -10595,6 +10700,16 @@ 娉曚汉鎴栫粡鍔炰汉瀹炲悕鏂瑰紡 </summary> </member> + <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterpriseAuth.LegalPerson"> + <summary> + 娉曚汉濮撳悕 + </summary> + </member> + <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterpriseAuth.LegalIdentity"> + <summary> + 娉曚汉韬唤璇佸彿 + </summary> + </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterpriseAuth.Name"> <summary> 娉曚汉鎴栫粡鍔炰汉濮撳悕 diff --git a/FlexJobApi.Core/Models/ElectronSignServer/Common/ElectronSignServerResult.cs b/FlexJobApi.Core/Models/ElectronSignServer/Common/ElectronSignServerResult.cs index 6af3a64..2f34fa1 100644 --- a/FlexJobApi.Core/Models/ElectronSignServer/Common/ElectronSignServerResult.cs +++ b/FlexJobApi.Core/Models/ElectronSignServer/Common/ElectronSignServerResult.cs @@ -19,5 +19,6 @@ { public string Code { get; set; } public string Message { get; set; } + public object Data { get; set; } } } diff --git a/FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/RealEnterpriseInputByCertAccountInput.cs b/FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/RealEnterpriseInputByCertAccountInput.cs new file mode 100644 index 0000000..5b25f32 --- /dev/null +++ b/FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/RealEnterpriseInputByCertAccountInput.cs @@ -0,0 +1,143 @@ +锘縰sing System; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals +{ + /// <summary> + /// 鏍规嵁璇佷功璐﹀彿浼佷笟瀹炲悕 + /// </summary> + [Resource([EnumResourceController.ElectronSignServerElectronSign], Method = EnumResourceMethod.Post, Route = "/api/ElectronSign/RealEnterpriseByCertAccount")] + public class RealEnterpriseInputByCertAccountInput + { + /// <summary> + /// 瀹㈡埛Id + /// </summary> + public Guid CustomerId { get; set; } + + /// <summary> + /// 涓婁笂绛捐瘉涔﹁处鍙凤紙閫夊~锛� + /// </summary> + [DisplayName("涓婁笂绛捐瘉涔﹁处鍙�")] + [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")] + public string CertAccount { get; set; } + + /// <summary> + /// 澶栭儴浼佷笟Id + /// </summary> + [DisplayName("澶栭儴浼佷笟Id")] + [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")] + public string OutUserId { get; set; } + + /// <summary> + /// 鏄惁濮旀墭缁忓姙浜� + /// </summary> + public bool Proxy { get; set; } + + /// <summary> + /// 娉曚汉/缁忓姙浜哄疄鍚嶈璇佹柟寮忥紙10涓汉鎵嬫満鍙蜂笁瑕佺礌 20閾惰鍗″瑕佺礌 30鍒疯劯璁よ瘉锛� + /// </summary> + [DisplayName("娉曚汉/缁忓姙浜哄疄鍚嶈璇佹柟寮�")] + [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")] + public EnumElectronSignPersonalRealMethod RealMethod { get; set; } + + /// <summary> + /// 浼佷笟鍏ㄧО + /// </summary> + [DisplayName("浼佷笟鍏ㄧО")] + [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")] + public string EnterpriseName { get; set; } + + /// <summary> + /// 缁熶竴绀句細淇$敤浠g爜 + /// </summary> + [DisplayName("缁熶竴绀句細淇$敤浠g爜")] + [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")] + public string SocietyCreditCode { get; set; } + + /// <summary> + /// 钀ヤ笟鎵х収鏂囦欢鍦板潃 + /// </summary> + [DisplayName("钀ヤ笟鎵х収")] + [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")] + public string LicenseUrl { get; set; } + + /// <summary> + /// 娉曚汉濮撳悕 + /// </summary> + [DisplayName("娉曚汉濮撳悕")] + [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")] + public string LegalPerson { get; set; } + + /// <summary> + /// 娉曚汉鎴栫粡鍔炰汉濮撳悕 + /// </summary> + [DisplayName("娉曚汉鎴栫粡鍔炰汉濮撳悕")] + [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")] + public string Name { get; set; } + + /// <summary> + /// 娉曚汉鎴栫粡鍔炰汉韬唤璇佸彿 + /// </summary> + [DisplayName("娉曚汉鎴栫粡鍔炰汉韬唤璇佸彿")] + [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")] + public string Identity { get; set; } + + /// <summary> + /// 韬唤璇佷汉鍍忛潰Url + /// </summary> + [DisplayName("韬唤璇佷汉鍍忛潰Url")] + [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")] + public string IdentityImgUrl { get; set; } + + /// <summary> + /// 韬唤璇佸浗寰介潰Url + /// </summary> + [DisplayName("韬唤璇佸浗寰介潰Url")] + [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")] + public string IdentityBackImgUrl { get; set; } + + /// <summary> + /// 娉曚汉鎴栫粡鍔炰汉閾惰鍗″彿 + /// </summary> + public string BankCard { get; set; } + + /// <summary> + /// 閾惰鍗$収鐗� + /// </summary> + public string BankCardImgUrl { get; set; } + + /// <summary> + /// 娉曚汉鎴栫粡鍔炰汉鎵嬫満鍙� + /// </summary> + [DisplayName("娉曚汉鎴栫粡鍔炰汉鎵嬫満鍙�")] + public string Mobile { get; set; } + + /// <summary> + /// 浼佷笟鎺堟潈涔� + /// </summary> + public string ProxyPowerAttorneyUrl { get; set; } + } + + public class RealEnterpriseInputByCertAccountOutput + { + /// <summary> + /// 璁よ瘉娴佹按鍙� + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// 鐘舵�侊紙0鏈疄鍚� 10鏍¢獙涓� 99瀹炲悕澶辫触 100宸插疄鍚嶏級 + /// </summary> + public EnumElectronSignRealStatus Status { get; set; } + + /// <summary> + /// 涓婁笂绛捐瘉涔﹁处鍙凤紙閫夊~锛� + /// </summary> + public string CertAccount { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs b/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs index 1d341eb..7e1fc6a 100644 --- a/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs +++ b/FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs @@ -200,6 +200,18 @@ public EnumPersonalRealMethod? PersonalRealMethod { get; set; } /// <summary> + /// 娉曚汉濮撳悕 + /// </summary> + [MaxLength(32)] + public string LegalPerson { get; set; } + + /// <summary> + /// 娉曚汉韬唤璇佸彿 + /// </summary> + [MaxLength(18)] + public string LegalIdentity { get; set; } + + /// <summary> /// 娉曚汉鎴栫粡鍔炰汉濮撳悕 /// </summary> [MaxLength(32)] diff --git a/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs b/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs index 0e33dde..06e9887 100644 --- a/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs +++ b/FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs @@ -2,8 +2,10 @@ using FlexJobApi.Core.Models.ElectronSignServer.Common; using FlexJobApi.Core.Models.ElectronSignServer.PersonalUserReals; using FlexJobApi.Core.Models.ElectronSignServer.Users; +using Furion; using Furion.DatabaseAccessor; using Furion.DataEncryption; +using Furion.DistributedIDGenerator; using Furion.FriendlyException; using Mapster; using MediatR; @@ -49,10 +51,6 @@ { enterprise = new Enterprise(); } - if (enterprise.EnterpriseAuth == null) - { - enterprise.EnterpriseAuth = new EnterpriseAuth(); - } request.Enterprise.Adapt(enterprise); enterprise.LicenseImage = GetOssUrl(enterprise.LicenseImage, request.Enterprise.LicenseImage); if (enterprise.LicenseImage.IsNotNull() && enterprise.EnterpriseType.IsNull()) @@ -60,8 +58,17 @@ var result = await BaiduOcrUtils.OcrBusinessLicense(enterprise.LicenseImage); if (result?.Model != null) { - result.Model.Adapt(enterprise); + enterprise.EnterpriseType = result.Model.EnterpriseType; + enterprise.RegisteredCapital = result.Model.RegisteredCapital; + enterprise.EstablishmentDate = result.Model.EstablishmentDate; + enterprise.Address = result.Model.Address; + enterprise.MainBusiness = result.Model.MainBusiness; } + } + + if (enterprise.EnterpriseAuth == null) + { + enterprise.EnterpriseAuth = new EnterpriseAuth(); } enterprise.EnterpriseAuth.EnterpriseName = enterprise.EnterpriseName; enterprise.EnterpriseAuth.SocietyCreditCode = enterprise.SocietyCreditCode; @@ -72,6 +79,11 @@ enterprise.EnterpriseAuth.IdentityBackImg = GetOssUrl(enterprise.EnterpriseAuth.IdentityBackImg, request.Enterprise.EnterpriseAuth.IdentityBackImg); enterprise.EnterpriseAuth.BankCardImg = GetOssUrl(enterprise.EnterpriseAuth.BankCardImg, request.Enterprise.EnterpriseAuth.BankCardImg); + if (enterprise.Id == Guid.Empty) + await repEnterprise.InsertAsync(enterprise); + else + await repEnterprise.UpdateAsync(enterprise); + if (enterprise.EnterpriseAuth.ElectronSignEnterpriseId == null) { var resultRegOrUpdateUser = await new RegOrUpdateUserInput @@ -80,7 +92,7 @@ UserType = EnumElectronSignUserType.Personal, EnterpriseName = enterprise.EnterpriseName, SocietyCreditCode = enterprise.SocietyCreditCode, - Name = enterprise.EnterpriseAuth.Name, + Name = enterprise.EnterpriseAuth.Name ?? enterprise.Contacts, Identity = enterprise.EnterpriseAuth.Identity, Mobile = enterprise.EnterpriseAuth.PhoneNumber, CertAccount = enterprise.EnterpriseAuth.CertAccount @@ -88,7 +100,7 @@ if (resultRegOrUpdateUser?.Success == true) { - enterprise!.EnterpriseAuth!.ElectronSignEnterpriseId = resultRegOrUpdateUser.Result; + enterprise.EnterpriseAuth.ElectronSignEnterpriseId = resultRegOrUpdateUser.Result; } else { @@ -96,10 +108,34 @@ } } - if (enterprise.Id == Guid.Empty) - await repEnterprise.InsertAsync(enterprise); - else - await repEnterprise.UpdateAsync(enterprise); + if (enterprise.IsReal) + { + var resultReal = await new RealEnterpriseInputByCertAccountInput + { + CustomerId = App.GetConfig<Guid>("ElectronSignServer:AppId"), + OutUserId = enterprise.Id.ToString(), + EnterpriseName = enterprise.EnterpriseName, + SocietyCreditCode = enterprise.SocietyCreditCode, + Name = enterprise.EnterpriseAuth.Name ?? enterprise.Contacts, + Identity = enterprise.EnterpriseAuth.Identity, + Mobile = enterprise.EnterpriseAuth.PhoneNumber, + BankCard = enterprise.EnterpriseAuth.BankCard, + BankCardImgUrl = enterprise.EnterpriseAuth.BankCardImg, + LicenseUrl = enterprise.EnterpriseAuth.LicenseImage, + IdentityImgUrl = enterprise.EnterpriseAuth.IdentityImg, + IdentityBackImgUrl = enterprise.EnterpriseAuth.IdentityBackImg, + ProxyPowerAttorneyUrl = enterprise.EnterpriseAuth.ProxyPowerAttorneyUrl, + LegalPerson = enterprise.EnterpriseAuth.LegalPerson, + Proxy = enterprise.EnterpriseAuth.Proxy ?? false, + RealMethod = (EnumElectronSignPersonalRealMethod)enterprise.EnterpriseAuth.EnterpriseRealMethod!.Value, + CertAccount = enterprise.EnterpriseAuth.CertAccount + }.SendHttpAsync<RealEnterpriseInputByCertAccountInput, ElectronSignServerResult<RealEnterpriseInputByCertAccountOutput>>(EnumResourceHttpProvider.ElectronSignServerCustomer); + if (resultReal?.Success != true || resultReal?.Result.Status != EnumElectronSignRealStatus.Real) + { + throw Oops.Oh(EnumErrorCodeType.s510, resultReal?.Message ?? "璐﹀彿瀹炲悕寮傚父"); + } + enterprise.EnterpriseAuth.CertAccount = resultReal.Result.CertAccount; + } var user = await repUser.AsQueryable() .Include(it => it.UserRoles) -- Gitblit v1.9.1