sunpengfei
16 小时以前 19863208cfdaf01735e75fbdafa33e426e735c04
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);
@@ -177,17 +178,28 @@
                if (user == null) throw Oops.Oh(EnumErrorCodeType.s404, $"灵工{model.Name}");
                if (user.SettlementStatus == EnumTaskSettlementStatus.InProcess) throw Oops.Oh(EnumErrorCodeType.s510, $"{model.Name}结算中不可修改,请先撤回");
                if (user.SettlementStatus == EnumTaskSettlementStatus.Completed) throw Oops.Oh(EnumErrorCodeType.s510, $"{model.Name}已结算不可修改");
                if (user.CheckReceiveStatus != EnumTaskCheckReceiveStatus.Completed) throw Oops.Oh(EnumErrorCodeType.s510, $"{model.Name}未验收");
                //if (user.CheckReceiveStatus != EnumTaskCheckReceiveStatus.Completed) throw Oops.Oh(EnumErrorCodeType.s510, $"{model.Name}未验收");
                if (model.SettlementAmount < 0) throw Oops.Oh(EnumErrorCodeType.s510, $"{model.Name}结算金额不可负数");
                if (model.ActualSettlementAmount < 0) throw Oops.Oh(EnumErrorCodeType.s510, $"{model.Name}实发金额不可负数");
                if (model.ActualSettlementAmount > 0 && model.ActualSettlementAmount < (decimal)0.3) throw Oops.Oh(EnumErrorCodeType.s510, $"{model.Name}实发金额不可小于1元");
                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;
        }
@@ -237,6 +249,7 @@
            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,12 +263,16 @@
                .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,
                SceneCode = "SATF_FUND_BOOK",
                MerchantUserId = wallet.Code,
                ExtInfo = new
                {
                    agreement_no = wallet.AgreementNo
                }.ToJson()
            });
            if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg);
            wallet.Balance = response.AvailableAmount.ToDecimal() ?? 0;