| | |
| | | using FlexJobApi.Core; |
| | | using Furion; |
| | | using Furion.DatabaseAccessor; |
| | | using Furion.DataValidation; |
| | | using Furion.FriendlyException; |
| | | using Furion.HttpRemote; |
| | | using Mapster; |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Security.Principal; |
| | | using System.Text; |
| | | using System.Text.RegularExpressions; |
| | | using System.Threading.Tasks; |
| | |
| | | /// <returns></returns> |
| | | public async Task<ImportEnterpriseEmployeesCommandResult> Handle(ImportEnterpriseEmployeesCommand request, CancellationToken cancellationToken) |
| | | { |
| | | 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 error = new ImportEnterpriseEmployeesCommandResultError(); |
| | | var errors = new List<string>(); |
| | | if (model.Name.IsNull()) |
| | | { |
| | | errors.Add("请填写姓名"); |
| | | } |
| | | if (model.ContactPhoneNumber.IsNull()) |
| | | { |
| | | error.ErrorMessage += "请填写手机号"; |
| | | errors.Add("请填写手机号"); |
| | | } |
| | | else if (!Regex.IsMatch(model.ContactPhoneNumber, @"^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$")) |
| | | else if (!model.ContactPhoneNumber.TryValidate(EnumValidationTypes.ValidPhoneNumber).IsValid) |
| | | { |
| | | error.ErrorMessage += "手机号格式不正确"; |
| | | errors.Add("手机号格式不正确"); |
| | | } |
| | | if (model.Identity.IsNull()) |
| | | { |
| | | errors.Add("请填写身份证号"); |
| | | } |
| | | else if (!model.Identity.TryValidate(EnumValidationTypes.ValiIdentity).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; |
| | | } |
| | | |
| | |
| | | /// <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) |