FlexJobApi.Core/FlexJobApi.Core.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
FlexJobApi.Core/Models/ElectronSignServer/Common/ElectronSignServerResult.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/RealEnterpriseInputByCertAccountInput.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
FlexJobApi.UserServer.Application/Users/Commands/SyncUserCommandHandler.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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> 统一社会信用代码 </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> 法人或经办人姓名 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; } } } FlexJobApi.Core/Models/ElectronSignServer/PersonalUserReals/RealEnterpriseInputByCertAccountInput.cs
New file @@ -0,0 +1,143 @@ using 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> /// 统一社会信用代码 /// </summary> [DisplayName("统一社会信用代码")] [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; } } } 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)] 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)