From 20af9888642273b5ff389f1fd8e80582083ef0b5 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 11 九月 2025 15:52:17 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs |   19 ++++++++++++++++---
 1 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs b/FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs
index 1fa4b10..3f4bfdd 100644
--- a/FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs
+++ b/FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs
@@ -158,7 +158,7 @@
         public async Task<Guid> Handle(SureTaskSettlementOrderCommand request, CancellationToken cancellationToken)
         {
             var entity = await TaskInfoRepository.GetQueryable(rep, false)
-                .Include(it => it.TaskInfoUsers)
+                .Include(it => it.TaskInfoUsers).ThenInclude(it => it.EnterpriseEmployee)
                 .Where(it => it.Id == request.TaskInfoId)
                 .FirstOrDefaultAsync();
             if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "浠诲姟");
@@ -167,6 +167,7 @@
             entity.SettlementOrderStatus = EnumTaskSettlementOrderStatus.Completed;
             entity.SettlementOrderUrl = request.SettlementOrderUrl;
             entity.SettlementOrderName = entity.SettlementOrderUrl.Substring(entity.SettlementOrderUrl.LastIndexOf("/") + 1);
+            entity.SettlementOrderTime = DateTime.Now;
             entity.SettlementStatus = EnumTaskSettlementStatus.Wait;
             entity.SettlementUserCount = request.TaskInfoUsers.Count;
             entity.SettlementAmount = request.TaskInfoUsers.Sum(it => it.SettlementAmount ?? 0);
@@ -183,11 +184,22 @@
                 if (model.ActualSettlementAmount > 0 && model.ActualSettlementAmount < 1) throw Oops.Oh(EnumErrorCodeType.s510, $"{model.Name}瀹炲彂閲戦涓嶅彲灏忎簬1鍏�");
                 user.Bank = model.Bank;
                 user.BankBranch = model.BankBranch;
+                user.ReceiveName = user.EnterpriseEmployee.Name;
                 user.ReceiveAccount = model.ReceiveAccount;
                 user.SettlementAmount = model.SettlementAmount;
                 user.ActualSettlementAmount = model.ActualSettlementAmount;
                 user.SettlementStatus = EnumTaskSettlementStatus.Wait;
             }
+
+            foreach (var user in entity.TaskInfoUsers)
+            {
+                var model = request.TaskInfoUsers.FirstOrDefault(it => it.Id == user.Id);
+                if (model == null)
+                {
+                    user.SettlementStatus = null;
+                }
+            }
+
             await rep.UpdateAsync(entity);
             return entity.Id;
         }
@@ -234,9 +246,10 @@
                 .FirstOrDefaultAsync();
             if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "浠诲姟");
             if (entity.SettlementOrderStatus != EnumTaskSettlementOrderStatus.Completed) throw Oops.Oh(EnumErrorCodeType.s510, "璇峰厛涓婁紶缁撶畻鍗曞苟纭");
-            if (entity.SettlementStatus == EnumTaskSettlementStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s510, "鏈紑濮嬬粨绠楋紝璇峰厛涓婁紶缁撶畻鍗曞苟纭");
+            if (entity.SettlementStatus == null) throw Oops.Oh(EnumErrorCodeType.s510, "鏈紑濮嬬粨绠楋紝璇峰厛涓婁紶缁撶畻鍗曞苟纭");
             if (entity.SettlementStatus == EnumTaskSettlementStatus.Completed) throw Oops.Oh(EnumErrorCodeType.s510, "宸茬粨绠�");
             entity.SettlementStatus = EnumTaskSettlementStatus.InProcess;
+            entity.SettlementOperatorUserId = logier.Id;
             entity.SettlementStartTime = DateTime.Now;
             foreach (var user in entity.TaskInfoUsers)
             {
@@ -250,7 +263,7 @@
                 .FirstOrDefaultAsync();
             if (wallet == null) throw Oops.Oh(EnumErrorCodeType.s404, "浼佷笟閽卞寘");
             if (wallet.SignStatus != EnumEnterpriseWalletSignStatus.Normal) throw Oops.Oh(EnumErrorCodeType.s404, "浼佷笟閽卞寘鏈绾�");
-            if (wallet.AccountBookStatus != EnumEnterpriseWalletAccountBookStatus.Normal) throw Oops.Oh(EnumErrorCodeType.s404, "浼佷笟閽卞寘璁拌处鏈湭寮�閫�");
+            if (wallet.AccountBookStatus != EnumEnterpriseWalletAccountBookStatus.Normal) throw Oops.Oh(EnumErrorCodeType.s510, "浼佷笟閽卞寘璁拌处鏈湭寮�閫�");
             var response = alipayUtils.FundAccountbookQuery(new AlipayFundAccountbookQueryModel
             {
                 AccountBookId = wallet.AccountBookId,

--
Gitblit v1.9.1