From 6f450ffa6628d206d4f60284e16e84e4adbcd789 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期二, 19 八月 2025 13:12:02 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs |   76 +++++++++++++++++++++++++++++++++++++-
 1 files changed, 74 insertions(+), 2 deletions(-)

diff --git a/FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs b/FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs
index 4f681cd..128fbbe 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>
         /// 淇濆瓨鐢ㄦ埛绠�鍘�-涓汉淇℃伅
@@ -114,5 +118,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