FlexJobApi.Core/Entities/Common/FileStore.cs
File was deleted FlexJobApi.Core/Entities/Common/FileVirtualPath.cs
File was deleted FlexJobApi.Core/Entities/Users/Enterprise.cs
@@ -38,20 +38,56 @@ public string SocietyCreditCode { get; set; } /// <summary> /// 营业执照照片Id /// </summary> public Guid? LicenseImageId { get; set; } /// <summary> /// 营业执照照片 /// </summary> public FileVirtualPath LicenseImage { get; set; } public string LicenseImage { get; set; } /// <summary> /// 法人姓名 /// </summary> [MaxLength(32)] public string LegalPerson { get; set; } /// <summary> /// 法人身份证号 /// </summary> [MaxLength(18)] public string LegalIdentity { get; set; } /// <summary> /// 所在省份Id /// </summary> public Guid? ProvinceId { get; set; } /// <summary> /// 所在省份 /// </summary> public DictionaryData Province { get; set; } /// <summary> /// 所在城市Id /// </summary> public Guid? CityId { get; set; } /// <summary> /// 所在城市 /// </summary> public DictionaryData City { get; set; } /// <summary> /// 所属行业Id /// </summary> public Guid? IndustryTypeId { get; set; } /// <summary> /// 所属行业 /// </summary> public DictionaryData IndustryType { get; set; } /// <summary> /// 主营业务 /// </summary> public string MainBusiness { get; set; } /// <summary> /// 联系人 @@ -63,7 +99,12 @@ /// 联系电话 /// </summary> [MaxLength(11)] public string ContactNumber { get; set; } public string ContactPhoneNumber { get; set; } /// <summary> /// 联系邮箱 /// </summary> public string ContactEmail { get; set; } /// <summary> /// 法人或经办人实名方式 @@ -83,24 +124,14 @@ public string Identity { get; set; } /// <summary> /// 法人或经办人身份证人像面Id /// </summary> public Guid? IdentityImgId { get; set; } /// <summary> /// 法人或经办人身份证人像面 /// </summary> public FileVirtualPath IdentityImg { get; set; } /// <summary> /// 法人或经办人身份证国徽面Id /// </summary> public Guid? IdentityBackImgId { get; set; } public string IdentityImg { get; set; } /// <summary> /// 法人或经办人身份证国徽面 /// </summary> public FileVirtualPath IdentityBackImg { get; set; } public string IdentityBackImg { get; set; } /// <summary> /// 法人或经办人银行卡号 @@ -109,9 +140,9 @@ public string BankCard { get; set; } /// <summary> /// 法人或经办人银行卡照片Id /// 法人或经办人银行卡照片 /// </summary> public Guid? BankCardImgId { get; set; } public string BankCardImg { get; set; } /// <summary> /// 法人或经办人手机号 @@ -139,6 +170,8 @@ /// </summary> public bool IsReal { get; set; } /// <summary> /// 部门 /// </summary> FlexJobApi.Core/Entities/Users/UserAuth.cs
@@ -22,14 +22,9 @@ } /// <summary> /// 头像Id /// </summary> public Guid? AvatarId { get; set; } /// <summary> /// 头像 /// </summary> public FileVirtualPath Avatar { get; set; } public string Avatar { get; set; } /// <summary> /// 姓名 @@ -67,24 +62,14 @@ public string Identity { get; set; } /// <summary> /// 身份证人像面Id /// </summary> public Guid? IdentityImgId { get; set; } /// <summary> /// 身份证人像面 /// </summary> public FileVirtualPath IdentityImg { get; set; } /// <summary> /// 身份证国徽面Id /// </summary> public Guid? IdentityBackImgId { get; set; } public string IdentityImg { get; set; } /// <summary> /// 身份证国徽面 /// </summary> public FileVirtualPath IdentityBackImg { get; set; } public string IdentityBackImg { get; set; } /// <summary> /// 银行卡号 @@ -93,14 +78,9 @@ public string BankCard { get; set; } /// <summary> /// 银行卡照片Id /// </summary> public Guid? BankCardImgId { get; set; } /// <summary> /// 银行卡照片 /// </summary> public FileVirtualPath BankCardImg { get; set; } public string BankCardImg { get; set; } /// <summary> /// 实名通道 FlexJobApi.Core/Entities/Users/UserInfo.cs
@@ -89,6 +89,16 @@ public DictionaryData EducationalBackground { get; set; } /// <summary> /// 常驻省份Id /// </summary> public Guid? ProvinceId { get; set; } /// <summary> /// 常驻省份 /// </summary> public DictionaryData Province { get; set; } /// <summary> /// 常驻城市Id /// </summary> public Guid? CityId { get; set; } FlexJobApi.Core/Entities/Users/UserInfoCredential.cs
@@ -60,24 +60,14 @@ public string IssueUnit { get; set; } /// <summary> /// 证书正面照片Id /// </summary> public Guid ImgId { get; set; } /// <summary> /// 证书正面照片 /// </summary> public FileVirtualPath Img { get; set; } /// <summary> /// 证书反面照片Id /// </summary> public Guid? BackImgId { get; set; } public string Img { get; set; } /// <summary> /// 证书反面照片 /// </summary> public FileVirtualPath BackImg { get; set; } public string BackImg { get; set; } } } FlexJobApi.Core/Entities/Users/UserInfoPhoto.cs
@@ -22,13 +22,8 @@ public UserInfo UserInfo { get; set; } /// <summary> /// 照片Id /// </summary> public Guid ImgId { get; set; } /// <summary> /// 照片 /// </summary> public FileVirtualPath Img { get; set; } public string Img { get; set; } } } FlexJobApi.Core/FlexJobApi.Core.xml
@@ -159,91 +159,6 @@ 是否禁用 </summary> </member> <member name="T:FlexJobApi.Core.FileStore"> <summary> 文件存储 </summary> </member> <member name="P:FlexJobApi.Core.FileStore.Access"> <summary> 通道 </summary> </member> <member name="P:FlexJobApi.Core.FileStore.AbsolutePath"> <summary> 绝对路径 </summary> </member> <member name="P:FlexJobApi.Core.FileStore.RelativePath"> <summary> 相对路径 </summary> </member> <member name="P:FlexJobApi.Core.FileStore.Name"> <summary> 名称 </summary> </member> <member name="P:FlexJobApi.Core.FileStore.Extension"> <summary> 扩展名 </summary> </member> <member name="P:FlexJobApi.Core.FileStore.ContentType"> <summary> 内容类型 </summary> </member> <member name="P:FlexJobApi.Core.FileStore.FileType"> <summary> 文件类型 </summary> </member> <member name="P:FlexJobApi.Core.FileStore.Length"> <summary> 文件大小(字节) </summary> </member> <member name="P:FlexJobApi.Core.FileStore.Hash"> <summary> 哈希 </summary> </member> <member name="P:FlexJobApi.Core.FileStore.ImageWidth"> <summary> 宽度(像素) </summary> </member> <member name="P:FlexJobApi.Core.FileStore.ImageHeight"> <summary> 高度(像素) </summary> </member> <member name="T:FlexJobApi.Core.FileVirtualPath"> <summary> 文件虚拟路径 </summary> </member> <member name="P:FlexJobApi.Core.FileVirtualPath.StoreId"> <summary> 文件存储Id </summary> </member> <member name="P:FlexJobApi.Core.FileVirtualPath.Store"> <summary> 文件存储 </summary> </member> <member name="P:FlexJobApi.Core.FileVirtualPath.Name"> <summary> 名称 </summary> </member> <member name="P:FlexJobApi.Core.FileVirtualPath.VirtualPath"> <summary> 虚拟路径 </summary> </member> <member name="T:FlexJobApi.Core.Resource"> <summary> 资源 @@ -789,11 +704,6 @@ 统一社会信用代码 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.LicenseImageId"> <summary> 营业执照照片Id </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.LicenseImage"> <summary> 营业执照照片 @@ -804,14 +714,39 @@ 法人姓名 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.ProvinceId"> <summary> 所在省份Id </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.Province"> <summary> 所在省份 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.CityId"> <summary> 所在城市Id </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.City"> <summary> 所在城市 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.Contacts"> <summary> 联系人 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.ContactNumber"> <member name="P:FlexJobApi.Core.Enterprise.ContactPhoneNumber"> <summary> 联系电话 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.ContactEmail"> <summary> 联系邮箱 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.PersonalRealMethod"> @@ -829,19 +764,9 @@ 法人或经办人身份证号 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.IdentityImgId"> <summary> 法人或经办人身份证人像面Id </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.IdentityImg"> <summary> 法人或经办人身份证人像面 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.IdentityBackImgId"> <summary> 法人或经办人身份证国徽面Id </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.IdentityBackImg"> @@ -854,9 +779,9 @@ 法人或经办人银行卡号 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.BankCardImgId"> <member name="P:FlexJobApi.Core.Enterprise.BankCardImg"> <summary> 法人或经办人银行卡照片Id 法人或经办人银行卡照片 </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.PhoneNumber"> @@ -1144,19 +1069,9 @@ 身份证号 </summary> </member> <member name="P:FlexJobApi.Core.UserAuth.IdentityImgId"> <summary> 身份证人像面Id </summary> </member> <member name="P:FlexJobApi.Core.UserAuth.IdentityImg"> <summary> 身份证人像面 </summary> </member> <member name="P:FlexJobApi.Core.UserAuth.IdentityBackImgId"> <summary> 身份证国徽面Id </summary> </member> <member name="P:FlexJobApi.Core.UserAuth.IdentityBackImg"> @@ -1167,11 +1082,6 @@ <member name="P:FlexJobApi.Core.UserAuth.BankCard"> <summary> 银行卡号 </summary> </member> <member name="P:FlexJobApi.Core.UserAuth.BankCardImgId"> <summary> 银行卡照片Id </summary> </member> <member name="P:FlexJobApi.Core.UserAuth.BankCardImg"> @@ -1262,6 +1172,16 @@ <member name="P:FlexJobApi.Core.UserInfo.EducationalBackground"> <summary> 学历 </summary> </member> <member name="P:FlexJobApi.Core.UserInfo.ProvinceId"> <summary> 常驻省份Id </summary> </member> <member name="P:FlexJobApi.Core.UserInfo.Province"> <summary> 常驻省份 </summary> </member> <member name="P:FlexJobApi.Core.UserInfo.CityId"> @@ -1404,19 +1324,9 @@ 发证单位 </summary> </member> <member name="P:FlexJobApi.Core.UserInfoCredential.ImgId"> <summary> 证书正面照片Id </summary> </member> <member name="P:FlexJobApi.Core.UserInfoCredential.Img"> <summary> 证书正面照片 </summary> </member> <member name="P:FlexJobApi.Core.UserInfoCredential.BackImgId"> <summary> 证书反面照片Id </summary> </member> <member name="P:FlexJobApi.Core.UserInfoCredential.BackImg"> @@ -1487,11 +1397,6 @@ <member name="P:FlexJobApi.Core.UserInfoPhoto.UserInfo"> <summary> 用户信息 </summary> </member> <member name="P:FlexJobApi.Core.UserInfoPhoto.ImgId"> <summary> 照片Id </summary> </member> <member name="P:FlexJobApi.Core.UserInfoPhoto.Img"> @@ -2337,7 +2242,12 @@ </member> <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQuery.CategoryId"> <summary> 类别Id 类别Id(Id/编号二选一) </summary> </member> <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQuery.CategoryCode"> <summary> 类别编号(Id/编号二选一) </summary> </member> <member name="P:FlexJobApi.Core.GetDictionaryDataSelectQuery.ParentId"> @@ -2397,7 +2307,12 @@ </member> <member name="P:FlexJobApi.Core.GetDictionaryDatasQuery.CategoryId"> <summary> 类别Id 类别Id(Id/编号二选一) </summary> </member> <member name="P:FlexJobApi.Core.GetDictionaryDatasQuery.CategoryCode"> <summary> 类别编号(Id/编号二选一) </summary> </member> <member name="P:FlexJobApi.Core.GetDictionaryDatasQuery.Keywords"> FlexJobApi.Core/Models/User/Enterprises/Commands/SaveEnterpriseCommand.cs
New file @@ -0,0 +1,109 @@ 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> [Resource([EnumResourceController.Enterprise])] public class SaveEnterpriseCommand : SaveDataCommand { /// <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> /// 所在省份Id /// </summary> public Guid? ProvinceId { get; set; } /// <summary> /// 所在省份 /// </summary> public DictionaryData Province { get; set; } /// <summary> /// 所在城市Id /// </summary> public Guid? CityId { get; set; } /// <summary> /// 所在城市 /// </summary> public DictionaryData City { get; set; } /// <summary> /// 所属行业Id /// </summary> public Guid? IndustryTypeId { get; set; } /// <summary> /// 所属行业 /// </summary> public DictionaryData IndustryType { 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 string UserName { get; set; } /// <summary> /// 密码 /// </summary> public string Password { get; set; } } } FlexJobApi.Core/Models/User/Enterprises/Queries/GetEnterprisesQuery.cs
@@ -22,7 +22,7 @@ /// <summary> /// 是否已配置 /// </summary> public bool IsConfigured { get; set; } public bool? IsConfigured { get; set; } } /// <summary> FlexJobApi.Core/Utils/JwtUtils/CurrentLogier.cs
@@ -26,7 +26,7 @@ /// <summary> /// 头像 /// </summary> public Guid? AvatarId { get; set; } public string Avatar { get; set; } /// <summary> /// 昵称 FlexJobApi.User.Application/Auths/Commands/PasswordLoginCommandHandler.cs
@@ -33,7 +33,7 @@ .Select(it => new { it.Id, it.UserAuth.AvatarId, it.UserAuth.Avatar, it.UserAuth.Name, it.UserAuth.UserName, it.UserAuth.PhoneNumber, @@ -47,7 +47,7 @@ var logier = new CurrentLogier { UserInfoId = userInfo.Id, AvatarId = userInfo.AvatarId, Avatar = userInfo.Avatar, Name = userInfo.Name, UserName = userInfo.UserName, PhoneNumber = userInfo.PhoneNumber, FlexJobApi.User.Application/Enterprises/Commands/EnterpriseCommandHandler.cs
New file @@ -0,0 +1,81 @@ using FlexJobApi.Core; using Furion.DatabaseAccessor; using Furion.DataEncryption; 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.User.Application { /// <summary> /// 企业命令处理器 /// </summary> public class EnterpriseCommandHandler( IRepository<Enterprise> rep, IRepository<UserInfo> repUserInfo ) : IRequestHandler<SaveEnterpriseCommand, Guid> { private readonly IRepository<Enterprise> rep = rep; private readonly IRepository<UserInfo> repUserInfo = repUserInfo; /// <summary> /// 保存企业 /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task<Guid> Handle(SaveEnterpriseCommand request, CancellationToken cancellationToken) { var entity = await rep.AsQueryable() .FirstOrDefaultAsync(it => it.SocietyCreditCode == request.SocietyCreditCode); if (entity == null) { entity = new Enterprise(); request.Adapt(entity); await rep.InsertAsync(entity); } else { request.Adapt(entity); await rep.UpdateAsync(entity); } var userInfo = await repUserInfo.AsQueryable() .Include(it => it.UserAuth) .FirstOrDefaultAsync(it => it.Type == EnumUserType.Enterprise && it.UserAuth.UserName == request.UserName); if (userInfo == null) { userInfo = new UserInfo { EnterpriseId = entity.Id, Type = EnumUserType.Enterprise, Status = EnumUserInfoStatus.Normal, UserAuth = new UserAuth { UserName = request.UserName, PhoneNumber = request.ContactPhoneNumber, Password = PBKDF2Encryption.Encrypt(request.Password) } }; await repUserInfo.InsertAsync(userInfo); } else { if (userInfo.EnterpriseId != entity.Id) throw Oops.Oh(EnumErrorCodeType.s405, "该账号"); userInfo.UserAuth.PhoneNumber = request.ContactPhoneNumber; await repUserInfo.UpdateAsync(userInfo); } return entity.Id; } } } FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs
New file @@ -0,0 +1,43 @@ using FlexJobApi.Core; using MediatR; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.User.Application { /// <summary> /// 企业查询处理器 /// </summary> public class EnterprisesQueryHandler : IRequestHandler<GetEnterprisesQuery, PagedListQueryResult<GetEnterprisesQueryResultItem>> { /// <summary> /// 查询企业信息分页列表数据 /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public Task<PagedListQueryResult<GetEnterprisesQueryResultItem>> Handle(GetEnterprisesQuery request, CancellationToken cancellationToken) { return request.PageModel.GetPagedListAsync<Enterprise, GetEnterprisesQueryResultItem>( q => { if (request.Keywords.IsNotNull()) { q = q.Where(it => it.EnterpriseName.Contains(request.Keywords) || it.LegalPerson.Contains(request.Keywords) || it.Contacts.Contains(request.Keywords)); } if (request.IsConfigured.HasValue) { } return q; }, cancellationToken: cancellationToken); } } }