From b4cd0bf2d7196f8f057ec62649ced5d6e31d443f Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期三, 13 八月 2025 17:05:36 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskCheckReceiveQueryHandler.cs |   61 ++++++++++++++++++++++++++----
 1 files changed, 53 insertions(+), 8 deletions(-)

diff --git a/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskCheckReceiveQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskCheckReceiveQueryHandler.cs
index 1517eef..81dc10c 100644
--- a/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskCheckReceiveQueryHandler.cs
+++ b/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskCheckReceiveQueryHandler.cs
@@ -49,6 +49,14 @@
             {
                 q = q.Where(it => it.EnterpriseId == logier.EnterpriseId);
             }
+            if (request.Keywords.IsNotNull())
+            {
+                q = q.Where(it =>
+                    it.TaskInfoUsers.Any(tu =>
+                        tu.EnterpriseEmployee.User.Name.Contains(request.Keywords)
+                        || tu.EnterpriseEmployee.User.PhoneNumber.Contains(request.Keywords)
+                        || tu.EnterpriseEmployee.User.Identity.Contains(request.Keywords)));
+            }
             if (logier.ClientType == EnumClientType.Wxmp)
             {
                 if (request.CheckReceiveStatus == null)
@@ -60,18 +68,19 @@
                     throw Oops.Oh(EnumErrorCodeType.s400, "璇烽�夋嫨鏃ユ湡");
                 }
                 q = q.Where(it =>
-                    it.TaskInfoUsers.Any(tu =>
-                        tu.EnterpriseEmployee.UserId == logier.Id
+                    (logier.Type == EnumUserType.Enterprise ? it.EnterpriseId == logier.EnterpriseId : true)
+                    && it.TaskInfoUsers.Any(tu =>
+                        (logier.Type == EnumUserType.Personal ? tu.EnterpriseEmployee.UserId == logier.Id : true)
                         && (request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitSubmit
                         ? !tu.Submits.Any(s => s.Date.Date == request.Date.Value.Date)
                         : tu.Submits.Any(s =>
                             s.Date.Date == request.Date.Value.Date
                             && (request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitSubmit
                             ? s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit
-                            : request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitCheckReceive
+                            : (request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitCheckReceive
                             ? s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive
                             : (s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Success
-                            || s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Fail))))));
+                            || s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Fail)))))));
             }
             else
             {
@@ -109,9 +118,32 @@
             {
                 q = q.Where(it => it.TaskInfo.EnterpriseId == logier.EnterpriseId);
             }
+            if (logier.Type == EnumUserType.Enterprise && logier.ClientType == EnumClientType.Wxmp)
+            {
+                if (request.CheckReceiveStatus == null)
+                {
+                    throw Oops.Oh(EnumErrorCodeType.s400, "璇烽�夋嫨楠屾敹鐘舵��");
+                }
+                if (request.Date == null)
+                {
+                    throw Oops.Oh(EnumErrorCodeType.s400, "璇烽�夋嫨鏃ユ湡");
+                }
+                q = q.Where(it =>
+                    it.TaskInfo.EnterpriseId == logier.EnterpriseId
+                    && (request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitSubmit
+                        ? !it.Submits.Any(s => s.Date.Date == request.Date.Value.Date)
+                        : it.Submits.Any(s =>
+                            s.Date.Date == request.Date.Value.Date
+                            && (request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitSubmit
+                            ? s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit
+                            : (request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitCheckReceive
+                            ? s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive
+                            : (s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Success
+                            || s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Fail))))));
+            }
             var s = q.Select(it => new GetCheckReceiveTaskQueryResultItem
             {
-                Id = it.TaskInfoId,
+                Id = it.Id,
                 TaskInfoCode = it.TaskInfo.Code,
                 TaskInfoName = it.TaskInfo.Name,
                 Avatar = it.EnterpriseEmployee.User.Avatar,
@@ -156,6 +188,8 @@
             result.ObjectData = await repTaskInfoUser.AsQueryable().AsNoTracking()
                 .Where(it => it.Id == request.Id)
                 .GetDetail<TaskInfoUser, GetCheckReceiveTaskUserSubmitsQueryResultObjectData>();
+            result.ObjectData.EnterpriseEmployeeUser.IsBindBankCard = await repTaskInfo.Change<UserBankCard>().AsQueryable().AsNoTracking()
+                .AnyAsync(it => it.UserId == result.ObjectData.EnterpriseEmployeeUser.Id);
             return result;
         }
 
@@ -167,9 +201,20 @@
         /// <returns></returns>
         public Task<GetCheckReceiveTaskUserSubmitQueryResult> Handle(GetCheckReceiveTaskUserSubmitQuery request, CancellationToken cancellationToken)
         {
-            return repTaskInfoUserSubmit.AsQueryable().AsNoTracking()
-                .Where(it => it.Id == request.Id)
-                .GetDetail<TaskInfoUserSubmit, GetCheckReceiveTaskUserSubmitQueryResult>();
+            var q = repTaskInfoUserSubmit.AsQueryable().AsNoTracking();
+            if (request.SubmitId.HasValue)
+            {
+                q = q.Where(it => it.Id == request.SubmitId.Value);
+            }
+            else if (request.Date.HasValue && request.TaskInfoId.HasValue)
+            {
+                q = q.Where(it => it.Date.Date == request.Date.Value.Date && it.TaskInfoUser.TaskInfoId == request.TaskInfoId.Value);
+            }
+            else if (request.Date.HasValue && request.TaskInfoUserId.HasValue)
+            {
+                q = q.Where(it => it.Date.Date == request.Date.Value.Date && it.TaskInfoUserId == request.TaskInfoUserId.Value);
+            }
+            return q.GetDetail<TaskInfoUserSubmit, GetCheckReceiveTaskUserSubmitQueryResult>();
         }
     }
 }

--
Gitblit v1.9.1