From 423abcb9d7af20b0d18a49cc4f13167f4b64107f Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期四, 11 九月 2025 14:19:00 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs | 81 ++++++++++++++++++++++++++++++++++++++-- 1 files changed, 77 insertions(+), 4 deletions(-) diff --git a/FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs b/FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs index 4f681cd..9e4c2a6 100644 --- a/FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs +++ b/FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs @@ -16,16 +16,20 @@ /// 鐢ㄦ埛绠�鍘嗗懡浠ゅ鐞嗗櫒 /// </summary> public class UserResumeCommandHandler( - IRepository<User> rep + IRepository<User> rep, + IRepository<EnterpriseUserCollect> repEnterpriseUserCollect ) : IRequestHandler<SaveUserResumePersonalCommand, Guid>, IRequestHandler<SaveUserResumeJobSeekingCommand, Guid>, IRequestHandler<SaveUserResumeCredentialCommand, Guid>, IRequestHandler<DeleteUserResumeCredentialCommand, int>, IRequestHandler<SaveUserResumeWorkExperienceCommand, Guid>, - IRequestHandler<SaveUserResumeDetailCommand, Guid> + IRequestHandler<SaveUserResumeDetailCommand, Guid>, + IRequestHandler<CollectUserResumeCommand, Guid>, + IRequestHandler<ContactUserResumeCommand, Guid> { private readonly IRepository<User> rep = rep; + private readonly IRepository<EnterpriseUserCollect> repEnterpriseUserCollect = repEnterpriseUserCollect; /// <summary> /// 淇濆瓨鐢ㄦ埛绠�鍘�-涓汉淇℃伅 @@ -61,10 +65,10 @@ /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> - public Task<Guid> Handle(SaveUserResumeCredentialCommand request, CancellationToken cancellationToken) + public async Task<Guid> Handle(SaveUserResumeCredentialCommand request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); - return request.SaveData<UserCredential, SaveUserResumeCredentialCommand>( + var entity = await request.SaveData<UserCredential, SaveUserResumeCredentialCommand>( q => rep.GetPersonalQueryable(false).SelectMany(it => it.UserCredentials), update: (entity) => { @@ -75,6 +79,7 @@ } }, cancellationToken: cancellationToken); + return entity.Id; } /// <summary> @@ -114,5 +119,73 @@ .Include(it => it.Photos) .UpdateData(request, cancellationToken: cancellationToken); } + + /// <summary> + /// 鏀惰棌鐏靛伐 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<Guid> Handle(CollectUserResumeCommand request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + if (logier.Type != EnumUserType.Enterprise) throw Oops.Oh(EnumErrorCodeType.s400, "闇�浼佷笟鐢ㄦ埛鏂瑰彲鑱旂郴"); + var entity = await repEnterpriseUserCollect.AsQueryable() + .FirstOrDefaultAsync(it => it.EnterpriseId == logier.EnterpriseId && it.UserId == request.Id); + if (entity == null) + { + entity = new EnterpriseUserCollect + { + EnterpriseId = logier.EnterpriseId!.Value, + UserId = request.Id, + IsCollected = true, + CollectedTime = request.IsCollected + ? DateTime.Now + : null + }; + await repEnterpriseUserCollect.InsertAsync(entity); + } + else if (entity.IsCollected != request.IsCollected) + { + entity.IsCollected = request.IsCollected; + entity.CollectedTime = request.IsCollected + ? DateTime.Now + : null; + await repEnterpriseUserCollect.UpdateAsync(entity); + } + return entity.Id; + } + + /// <summary> + /// 鑱旂郴鐏靛伐 + /// </summary> + /// <param name="request"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<Guid> Handle(ContactUserResumeCommand request, CancellationToken cancellationToken) + { + var logier = JwtUtils.GetCurrentLogier(); + if (logier.Type != EnumUserType.Enterprise) throw Oops.Oh(EnumErrorCodeType.s400, "闇�浼佷笟鐢ㄦ埛鏂瑰彲鑱旂郴"); + var entity = await repEnterpriseUserCollect.AsQueryable() + .FirstOrDefaultAsync(it => it.EnterpriseId == logier.EnterpriseId && it.UserId == request.Id); + if (entity == null) + { + entity = new EnterpriseUserCollect + { + EnterpriseId = logier.EnterpriseId!.Value, + UserId = request.Id, + IsContacted = true, + ContactedTime = DateTime.Now + }; + await repEnterpriseUserCollect.InsertAsync(entity); + } + else if (entity.IsContacted == false) + { + entity.IsContacted = true; + entity.ContactedTime = DateTime.Now; + await repEnterpriseUserCollect.UpdateAsync(entity); + } + return entity.Id; + } } } -- Gitblit v1.9.1