From b495fa9f03462cf6007e1e035a7ed8abe5382c1c Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期四, 14 八月 2025 13:59:36 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 104 insertions(+), 5 deletions(-) diff --git a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs index fbda053..1dea969 100644 --- a/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs +++ b/FlexJobApi.UserServer.Application/EnterpriseEmployees/Commands/EnterpriseEmployeesCommandHandler.cs @@ -1,13 +1,20 @@ 锘縰sing FlexJobApi.Core; +using Furion; using Furion.DatabaseAccessor; +using Furion.DataValidation; using Furion.FriendlyException; +using Furion.HttpRemote; using Mapster; using MediatR; using Microsoft.EntityFrameworkCore; +using MiniExcelLibs; +using NetTopologySuite.Index.HPRtree; using System; using System.Collections.Generic; using System.Linq; +using System.Security.Principal; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; namespace FlexJobApi.UserServer.Application @@ -18,14 +25,105 @@ public class EnterpriseEmployeesCommandHandler( IRepository<EnterpriseEmployee> rep ) : - IRequestHandler<ImportEnterpriseEmployeesCommand, int>, + IRequestHandler<ImportEnterpriseEmployeesCommand, ImportEnterpriseEmployeesCommandResult>, IRequestHandler<EditEnterpriseEmployeeCommand, Guid> { private readonly IRepository<EnterpriseEmployee> rep = rep; - public Task<int> Handle(ImportEnterpriseEmployeesCommand request, CancellationToken cancellationToken) + /// <summary> + /// 瀵煎叆鐏靛伐淇℃伅 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<ImportEnterpriseEmployeesCommandResult> Handle(ImportEnterpriseEmployeesCommand request, CancellationToken cancellationToken) { - throw new NotImplementedException(); + var logier = JwtUtils.GetCurrentLogier(); + var result = new ImportEnterpriseEmployeesCommandResult(); + var models = await request.ExcelUrl.ImportExcelFromOSS<ImportEnterpriseEmployeesCommandModel>(); + var identities = models.DistinctSelect(it => it.Identity); + var enterpriseEmployees = await rep.AsQueryable() + .Where(it => it.EnterpriseId == logier.EnterpriseId && identities.Contains(it.Identity)) + .ToListAsync(); + foreach (var model in models) + { + var errors = new List<string>(); + if (model.Name.IsNull()) + { + errors.Add("璇峰~鍐欏鍚�"); + } + if (model.ContactPhoneNumber.IsNull()) + { + errors.Add("璇峰~鍐欐墜鏈哄彿"); + } + else if (!model.ContactPhoneNumber.TryValidate(EnumValidationTypes.PhoneNumber).IsValid) + { + errors.Add("鎵嬫満鍙锋牸寮忎笉姝g‘"); + } + if (model.Identity.IsNull()) + { + errors.Add("璇峰~鍐欒韩浠借瘉鍙�"); + } + else if (!model.Identity.TryValidate(EnumValidationTypes.Identity).IsValid) + { + errors.Add("韬唤璇佸彿鏍煎紡涓嶆纭�"); + } + else if (models.Any(it => it.Identity == model.Identity)) + { + errors.Add("韬唤璇佸彿閲嶅"); + } + else + { + model.Gender = model.Identity.GetGender(); + model.Birthday = model.Identity.GetBirthday(); + model.Age = model.Identity.GetAge(); + } + + if (errors.IsNull()) + { + var enterpriseEmployee = enterpriseEmployees.FirstOrDefault(it => it.Identity == model.Identity); + if (enterpriseEmployee == null) + { + enterpriseEmployee = new EnterpriseEmployee + { + EnterpriseId = logier.EnterpriseId!.Value, + Name = model.Name, + Identity = model.Identity, + ContactPhoneNumber = model.ContactPhoneNumber, + Gender = model.Gender, + Birthday = model.Birthday, + Age = model.Age, + }; + await rep.InsertAsync(enterpriseEmployee); + } + else + { + if (enterpriseEmployee.UserId.HasValue) + { + errors.Add("璇ョ伒宸ュ凡鎶ュ悕鏃犳硶淇敼淇℃伅"); + } + else + { + enterpriseEmployee.Name = model.Name; + enterpriseEmployee.ContactPhoneNumber = model.ContactPhoneNumber; + enterpriseEmployee.Gender = model.Gender; + enterpriseEmployee.Birthday = model.Birthday; + enterpriseEmployee.Age = model.Age; + await rep.UpdateAsync(enterpriseEmployee); + } + } + } + if (errors.IsNotNull()) + { + var error = model.Adapt<ImportEnterpriseEmployeesCommandResultError>(); + error.ErrorMessage = errors.SplitJoin("锛�"); + result.Errors.Add(error); + } + } + result.TotalCount = models.Count; + result.FailCount = result.Errors.Count; + result.SuccessCount = result.TotalCount - result.FailCount; + return result; } /// <summary> @@ -36,9 +134,10 @@ /// <returns></returns> public Task<Guid> Handle(EditEnterpriseEmployeeCommand request, CancellationToken cancellationToken) { + var logier = JwtUtils.GetCurrentLogier(); return request.SaveData<EnterpriseEmployee, EditEnterpriseEmployeeCommand>( - null, - null, + q => q.Where(it => it.EnterpriseId == logier.EnterpriseId), + it => it.EnterpriseId == logier.EnterpriseId && it.Id != request.Id && it.Identity == request.Identity, (entity) => { if (request.Id.HasValue && entity.UserId.HasValue) -- Gitblit v1.9.1