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