sunpengfei
19 小时以前 d997afbfb26532dfbffcb569757e1be8fdd75088
FlexJobApi.UserServer.Application/EnterpriseWallets/Queries/EnterpriseWalletQueryHandler.cs
@@ -2,6 +2,7 @@
using Azure;
using FlexJobApi.Core;
using Furion.DatabaseAccessor;
using Furion.DistributedIDGenerator;
using Furion.FriendlyException;
using Mapster;
using MediatR;
@@ -57,11 +58,24 @@
                .FirstOrDefaultAsync();
            if (entity == null)
            {
                entity = new EnterpriseWallet();
                entity.EnterpriseId = request.EnterpriseId!.Value;
                entity.Access = EnumEnterpriseWalletAccess.Alipay;
                entity.PersonalProductCode = "FUND_SAFT_SIGN_WITHHOLDING_P";
                entity.SignScene = "INDUSTRY|SATF_ACC";
                entity.ThirdPartyType = "PARTNER";
                entity.ProductCode = "FUND_SAFT_SIGN_WITHHOLDING";
                entity.SignStatus = EnumEnterpriseWalletSignStatus.Wait;
                await SetCode(entity);
                await rep.InsertAsync(entity);
                return new GetEnterpriseWalletQueryResult
                {
                    Id = entity.Id,
                    Code = entity.Code,
                    Access = request.Access,
                    SignStatus = EnumEnterpriseWalletSignStatus.Wait,
                    ExpandindirectOrderStatus = EnumEnterpriseWalletExpandindirectOrderStatus.Wait
                    ExpandindirectOrderStatus = EnumEnterpriseWalletExpandindirectOrderStatus.Wait,
                };
            }
            var update = false;
@@ -97,6 +111,12 @@
                        entity.CreditAuthMode = response.CreditAuthMode;
                        update = true;
                    }
                    else
                    {
                        entity.ErrorCode = response.Code;
                        entity.FailReason = response.SubMsg ?? response.Msg;
                        update = true;
                    }
                }
                if (entity.SignStatus == EnumEnterpriseWalletSignStatus.Normal && entity.AccountBookStatus != EnumEnterpriseWalletAccountBookStatus.Normal)
@@ -112,18 +132,26 @@
                            cert_no = enterprise.SocietyCreditCode
                        }.ToJson()
                    });
                    if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg);
                    entity.AccountBookId = response.AccountBookId;
                    entity.BankAccName = response.ExtCardInfo.BankAccName;
                    entity.CardBank = response.ExtCardInfo.CardBank;
                    entity.CardBranch = response.ExtCardInfo.CardBranch;
                    entity.CardDeposit = response.ExtCardInfo.CardDeposit;
                    entity.CardLocation = response.ExtCardInfo.CardLocation;
                    entity.CardNo = response.ExtCardInfo.CardNo;
                    entity.AccountBookStatus = response.ExtCardInfo.Status == "A"
                        ? EnumEnterpriseWalletAccountBookStatus.Normal
                        : EnumEnterpriseWalletAccountBookStatus.Exception;
                    update = true;
                    if (!response.IsError)
                    {
                        entity.AccountBookId = response.AccountBookId;
                        entity.BankAccName = response.ExtCardInfo.BankAccName;
                        entity.CardBank = response.ExtCardInfo.CardBank;
                        entity.CardBranch = response.ExtCardInfo.CardBranch;
                        entity.CardDeposit = response.ExtCardInfo.CardDeposit;
                        entity.CardLocation = response.ExtCardInfo.CardLocation;
                        entity.CardNo = response.ExtCardInfo.CardNo;
                        entity.AccountBookStatus = response.ExtCardInfo.Status == "A"
                            ? EnumEnterpriseWalletAccountBookStatus.Normal
                            : EnumEnterpriseWalletAccountBookStatus.Exception;
                        update = true;
                    }
                    else
                    {
                        entity.ErrorCode = response.Code;
                        entity.FailReason = response.SubMsg ?? response.Msg;
                        update = true;
                    }
                }
                if (entity.AccountBookStatus == EnumEnterpriseWalletAccountBookStatus.Normal)
@@ -147,21 +175,64 @@
            var model = entity.Adapt<GetEnterpriseWalletQueryResult>();
            var expandindirectOrder = await repEnterpriseWalletExpandindirectOrder.AsQueryable().AsNoTracking()
            var expandindirectOrder = await repEnterpriseWalletExpandindirectOrder.AsQueryable()
                .Include(it => it.Files)
                .OrderByDescending(it => it.CreatedTime)
                .Where(it => it.WalletId == model.Id)
                .Select(it => new
                {
                    it.OrderStatus
                })
                .FirstOrDefaultAsync();
            model.ExpandindirectOrderStatus = expandindirectOrder == null
                ? EnumEnterpriseWalletExpandindirectOrderStatus.Wait
                : expandindirectOrder.OrderStatus;
            if (expandindirectOrder != null)
            {
                if (expandindirectOrder.OrderStatus == EnumEnterpriseWalletExpandindirectOrderStatus.PROCESSING)
                {
                    var response = alipayUtils.FundExpandindirectOrderQuery(new Aop.Api.Domain.AlipayFundExpandindirectOrderQueryModel
                    {
                        BizScene = expandindirectOrder.BizScene,
                        OrderId = expandindirectOrder.OrderId,
                        OutBizNo = expandindirectOrder.OutBizNo,
                        ProductCode = expandindirectOrder.ProductCode,
                    });
                    if (!response.IsError)
                    {
                        expandindirectOrder.Status = response.Status;
                        expandindirectOrder.OrderStatus = expandindirectOrder.Status.ToEnum<EnumEnterpriseWalletExpandindirectOrderStatus>("未识别的状态")!.Value;
                        expandindirectOrder.TaskFinishTime = response.TaskFinishTime.ToDateTime();
                        expandindirectOrder.RiskReviewRemark = response.RiskReviewRemark;
                    }
                    else
                    {
                        expandindirectOrder.RiskReviewRemark = response.SubMsg ?? response.Msg;
                    }
                    await repEnterpriseWalletExpandindirectOrder.UpdateNowAsync(expandindirectOrder);
                }
                model.Name = expandindirectOrder.Name;
                model.Identity = expandindirectOrder.Identity;
                model.Scene = expandindirectOrder.Scene;
                model.SceneDirections = expandindirectOrder.SceneDirections;
                model.TaskFinishTime = expandindirectOrder.TaskFinishTime;
                model.SitesInfo = expandindirectOrder.Sites?.JsonTo<GetEnterpriseWalletExpandindirectOrderQueryResultSites>();
                model.Files = expandindirectOrder.Files?.Adapt<List<GetEnterpriseWalletExpandindirectOrderQueryResultFile>>() ?? new List<GetEnterpriseWalletExpandindirectOrderQueryResultFile>();
                model.ExpandindirectOrderStatus = expandindirectOrder.OrderStatus;
            }
            else
            {
                model.ExpandindirectOrderStatus = EnumEnterpriseWalletExpandindirectOrderStatus.Wait;
            }
            return model;
        }
        private async Task SetCode(EnterpriseWallet entity)
        {
            entity.Code = $"{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}";
            var exist = await rep.AsQueryable().AsNoTracking()
                .AnyAsync(it => it.Code == entity.Code);
            if (exist)
            {
                await SetCode(entity);
            }
        }
        /// <summary>
        /// 查询企业钱包交易详情
        /// </summary>