FlexJobApi.Core/Entities/UserServer/Enterprises/Enterprise.cs
@@ -88,7 +88,27 @@ public DictionaryData IndustryType { 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/Entities/UserServer/Users/User.cs
@@ -260,6 +260,16 @@ /// </summary> public List<EnterpriseUserCollect> EnterpriseUserCollects { get; set; } /// <summary> /// 数据来源 /// </summary> public EnumDataSource? DataSource { get; set; } /// <summary> /// 数据来源Id /// </summary> public Guid? DataSourceId { get; set; } public void Configure(EntityTypeBuilder<User> entityBuilder, DbContext dbContext, Type dbContextLocator) { entityBuilder FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs
@@ -26,7 +26,7 @@ [ErrorCodeItemMetadata("{0}不存在")] s404 = 404, /// <summary> /// 该{0}已存在,请确认后再试 /// {0}已存在,请确认后再试 /// </summary> [ErrorCodeItemMetadata("{0}已存在,请确认后再试")] s405 = 405, FlexJobApi.Core/Enums/Users/EnumUserSource.cs
New file @@ -0,0 +1,19 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 数据来源 /// </summary> public enum EnumDataSource { /// <summary> /// 818 /// </summary> HumanResources = 10 } } FlexJobApi.Core/FlexJobApi.Core.xml
@@ -1244,9 +1244,29 @@ 所属行业 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.EnterpriseType"> <summary> 企业类型 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.RegisteredCapital"> <summary> 注册资本 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.EstablishmentDate"> <summary> 成立日期 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.Address"> <summary> 企业地址 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.MainBusiness"> <summary> 主营业务 经营范围 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.Contacts"> @@ -2157,6 +2177,16 @@ 谁家企业收藏/联系我 </summary> </member> <member name="P:FlexJobApi.Core.User.DataSource"> <summary> 数据来源 </summary> </member> <member name="P:FlexJobApi.Core.User.DataSourceId"> <summary> 数据来源Id </summary> </member> <member name="T:FlexJobApi.Core.UserAuth"> <summary> 用户认证 @@ -2284,7 +2314,7 @@ </member> <member name="F:FlexJobApi.Core.EnumErrorCodeType.s405"> <summary> 该{0}已存在,请确认后再试 {0}已存在,请确认后再试 </summary> </member> <member name="F:FlexJobApi.Core.EnumErrorCodeType.s406"> @@ -3140,6 +3170,16 @@ <member name="F:FlexJobApi.Core.EnumUserRealMethod.Face"> <summary> 刷脸认证 </summary> </member> <member name="T:FlexJobApi.Core.EnumDataSource"> <summary> 数据来源 </summary> </member> <member name="F:FlexJobApi.Core.EnumDataSource.HumanResources"> <summary> 818 </summary> </member> <member name="T:FlexJobApi.Core.EnumUserStatus"> @@ -8509,6 +8549,191 @@ 状态 </summary> </member> <member name="T:FlexJobApi.Core.SyncEnterpriseUserCommand"> <summary> 同步企业用户 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommand.DataSource"> <summary> 数据来源 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommand.DataSourceId"> <summary> 数据来源Id </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommand.Password"> <summary> 密码 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommand.Name"> <summary> 姓名 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommand.UserName"> <summary> 用户名 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommand.PhoneNumber"> <summary> 手机号 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommand.Enterprise"> <summary> 企业 </summary> </member> <member name="T:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise"> <summary> 同步企业用户 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.EnterpriseName"> <summary> 企业全称 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.SocietyCreditCode"> <summary> 统一社会信用代码 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.LicenseImage"> <summary> 营业执照照片 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.LegalPerson"> <summary> 法人姓名 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.LegalIdentity"> <summary> 法人身份证号 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.ProvinceCode"> <summary> 所在省份编号 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.CityCode"> <summary> 所在城市编号 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.IndustryTypeCode"> <summary> 所属行业编号 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.EnterpriseType"> <summary> 企业类型 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.RegisteredCapital"> <summary> 注册资本 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.EstablishmentDate"> <summary> 成立日期 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.Address"> <summary> 企业地址 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.MainBusiness"> <summary> 经营范围 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.Contacts"> <summary> 联系人 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.ContactPhoneNumber"> <summary> 联系电话 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.ContactEmail"> <summary> 联系邮箱 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.PayAccess"> <summary> 支付通道 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.BankName"> <summary> 开户总行 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.BankBranchName"> <summary> 开户支行 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.BankCard"> <summary> 银行账户 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.IsCheckedBankCard"> <summary> 是否已校验银行账户 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.RealAccess"> <summary> 实名通道 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.RealVerifyCost"> <summary> 实名费用 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.SignCost"> <summary> 签约费用 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.MergeSignCost"> <summary> 一口价 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.SmsAccess"> <summary> 短信通道 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.SmsCost"> <summary> 短信费用 </summary> </member> <member name="P:FlexJobApi.Core.SyncEnterpriseUserCommandEnterprise.IsReal"> <summary> 是否实名 </summary> </member> <member name="T:FlexJobApi.Core.GetEnterpriseLoginInfoQuery"> <summary> 查询企业用户登录信息 @@ -9099,7 +9324,7 @@ 企业地址 </summary> </member> <member name="P:FlexJobApi.Core.BaiduOcrBusinessLicenseResultModel.BusinessScope"> <member name="P:FlexJobApi.Core.BaiduOcrBusinessLicenseResultModel.MainBusiness"> <summary> 经营范围 </summary> FlexJobApi.Core/Models/UserServer/Users/Commands/SyncEnterpriseUserCommand.cs
@@ -1,5 +1,8 @@ using System; using Mapster; using MediatR; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -9,8 +12,198 @@ /// <summary> /// 同步企业用户 /// </summary> public class SyncEnterpriseUserCommand [Resource([EnumResourceController.User])] public class SyncEnterpriseUserCommand : IRequest<Guid> { /// <summary> /// 数据来源 /// </summary> public EnumDataSource? DataSource { get; set; } /// <summary> /// 数据来源Id /// </summary> public Guid? DataSourceId { get; set; } /// <summary> /// 密码 /// </summary> public string Password { get; set; } /// <summary> /// 姓名 /// </summary> public string Name { get; set; } /// <summary> /// 用户名 /// </summary> public string UserName { get; set; } /// <summary> /// 手机号 /// </summary> public string PhoneNumber { get; set; } /// <summary> /// 企业 /// </summary> [AdaptIgnore] public SyncEnterpriseUserCommandEnterprise Enterprise { get; set; } } /// <summary> /// 同步企业用户 /// </summary> public class SyncEnterpriseUserCommandEnterprise { /// <summary> /// 企业全称 /// </summary> [Required] [MaxLength(128)] public string EnterpriseName { get; set; } /// <summary> /// 统一社会信用代码 /// </summary> [Required] [MaxLength(18)] public string SocietyCreditCode { get; set; } /// <summary> /// 营业执照照片 /// </summary> public string LicenseImage { get; set; } /// <summary> /// 法人姓名 /// </summary> [MaxLength(32)] public string LegalPerson { get; set; } /// <summary> /// 法人身份证号 /// </summary> [MaxLength(18)] public string LegalIdentity { get; set; } /// <summary> /// 所在省份编号 /// </summary> public string ProvinceCode { get; set; } /// <summary> /// 所在城市编号 /// </summary> public string CityCode { get; set; } /// <summary> /// 所属行业编号 /// </summary> public string IndustryTypeCode { 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; } /// <summary> /// 联系人 /// </summary> [MaxLength(32)] public string Contacts { get; set; } /// <summary> /// 联系电话 /// </summary> [MaxLength(11)] public string ContactPhoneNumber { get; set; } /// <summary> /// 联系邮箱 /// </summary> public string ContactEmail { get; set; } /// <summary> /// 支付通道 /// </summary> public EnumPayAccess? PayAccess { get; set; } /// <summary> /// 开户总行 /// </summary> public string BankName { get; set; } /// <summary> /// 开户支行 /// </summary> public string BankBranchName { get; set; } /// <summary> /// 银行账户 /// </summary> [MaxLength(32)] public string BankCard { get; set; } /// <summary> /// 是否已校验银行账户 /// </summary> public bool IsCheckedBankCard { get; set; } /// <summary> /// 实名通道 /// </summary> public EnumRealAccess? RealAccess { get; set; } /// <summary> /// 实名费用 /// </summary> public decimal? RealVerifyCost { get; set; } /// <summary> /// 签约费用 /// </summary> public decimal? SignCost { get; set; } /// <summary> /// 一口价 /// </summary> public decimal? MergeSignCost { get; set; } /// <summary> /// 短信通道 /// </summary> public EnumSmsAccess? SmsAccess { get; set; } /// <summary> /// 短信费用 /// </summary> public decimal SmsCost { get; set; } /// <summary> /// 是否实名 /// </summary> public bool IsReal { get; set; } } } FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrBusinessLicenseResult.cs
@@ -85,6 +85,6 @@ /// <summary> /// 经营范围 /// </summary> public string BusinessScope { get; set; } public string MainBusiness { get; set; } } } FlexJobApi.Core/Utils/BaiduUtils/BaiduOcrUtils.cs
@@ -61,7 +61,7 @@ RegisteredCapital = result.WordsResult["注册资本"].Words, EstablishmentDate = result.WordsResult["成立日期"].Words, Address = result.WordsResult["地址"].Words, BusinessScope = result.WordsResult["经营范围"].Words, MainBusiness = result.WordsResult["经营范围"].Words, }; return result; } FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
@@ -296,7 +296,7 @@ </member> <member name="F:FlexJobApi.UserServer.Application.EnumUserErrorCodeType.u1010"> <summary> 该手机号已被注册 手机号已被注册 </summary> </member> <member name="F:FlexJobApi.UserServer.Application.EnumUserErrorCodeType.u1100"> @@ -687,6 +687,24 @@ <param name="cancellationToken"></param> <returns></returns> </member> <member name="T:FlexJobApi.UserServer.Application.SyncEnterpriseUserCommandHandler"> <summary> </summary> </member> <member name="M:FlexJobApi.UserServer.Application.SyncEnterpriseUserCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Enterprise})"> <summary> </summary> </member> <member name="M:FlexJobApi.UserServer.Application.SyncEnterpriseUserCommandHandler.Handle(FlexJobApi.Core.SyncEnterpriseUserCommand,System.Threading.CancellationToken)"> <summary> 同步企业用户 </summary> <param name="request"></param> <param name="cancellationToken"></param> <returns></returns> </member> <member name="T:FlexJobApi.UserServer.Application.UserInfos.Commands.UserInfoCommandHandler"> <summary> 用户信息命令处理器 FlexJobApi.UserServer.Application/Users/Commands/SyncEnterpriseUserCommandHandler.cs
New file @@ -0,0 +1,70 @@ using FlexJobApi.Core; using Furion.DatabaseAccessor; using Furion.FriendlyException; using Mapster; using MediatR; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.UserServer.Application { /// <summary> /// /// </summary> public class SyncEnterpriseUserCommandHandler( IRepository<User> repUser, IRepository<Enterprise> repEnterprise ) : IRequestHandler<SyncEnterpriseUserCommand, Guid> { private readonly IRepository<User> repUser = repUser; private readonly IRepository<Enterprise> repEnterprise = repEnterprise; /// <summary> /// 同步企业用户 /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task<Guid> Handle(SyncEnterpriseUserCommand request, CancellationToken cancellationToken) { var enterprise = await repEnterprise.AsQueryable() .Where(it => it.SocietyCreditCode == request.Enterprise.SocietyCreditCode) .FirstOrDefaultAsync(cancellationToken); if (enterprise == null) { enterprise = new Enterprise(); request.Enterprise.Adapt(enterprise); await repEnterprise.InsertAsync(enterprise); } else { request.Enterprise.Adapt(enterprise); await repEnterprise.UpdateAsync(enterprise); } var user = await repUser.AsQueryable() .Where(it => it.Type == EnumUserType.Enterprise && it.EnterpriseId == enterprise.Id && it.UserName == request.UserName) .FirstOrDefaultAsync(cancellationToken); if (user == null) { var exist = await repUser.AsQueryable().AsNoTracking() .AnyAsync(it => it.Type == EnumUserType.Enterprise && it.UserName == request.UserName); if (exist) throw Oops.Oh(EnumErrorCodeType.s405, "账号"); user = new User(); request.Adapt(user); await repUser.InsertAsync(user); } else { request.Adapt(user); await repUser.UpdateAsync(user); } return user.Id; } } } FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs
@@ -62,5 +62,6 @@ await rep.UpdateAsync(entity); return entity.UserRoles.Count; } } } FlexJobApi.Web.Entry/appsettings.json
@@ -42,13 +42,6 @@ "RoleSessionName": "SessionTest", "Policy": "{\"Version\":\"1\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"oss:PutObject\",\"Resource\":[\"acs:oss:*:*:waterdroptest2/*\",\"acs:oss:*:*:parkmanagement/*\",\"acs:oss:*:*:jurenlian/*\"]}]}", "DurationSeconds": 3600 } }, "Baidu": { "Ocr": { "Key": "Htx3y6eFnlW92WvHx9aW44f8", "Secret": "k1rDa3vjVtArrQio9LtR5AjqARSw45WO" } }, "SMS": { "Enable": true, @@ -95,4 +88,11 @@ "BankWalletAccountOpen": "SMS_473860301" } } }, "Baidu": { "Ocr": { "Key": "Htx3y6eFnlW92WvHx9aW44f8", "Secret": "k1rDa3vjVtArrQio9LtR5AjqARSw45WO" } } }