sunpengfei
47 分钟以前 8cc3bff6979c8e3d66e9d4caa91398c3f0e58f0a
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;
@@ -140,18 +154,6 @@
                    }
                }
                if (entity.AccountBookStatus == EnumEnterpriseWalletAccountBookStatus.Normal)
                {
                    var response = alipayUtils.FundAccountbookQuery(new AlipayFundAccountbookQueryModel
                    {
                        AccountBookId = entity.AccountBookId,
                        SceneCode = "SATF_FUND_BOOK",
                        MerchantUserId = entity.Code,
                    });
                    if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg);
                    entity.Balance = response.AvailableAmount.ToDecimal() ?? 0;
                    update = true;
                }
            }
            if (update)
@@ -162,6 +164,7 @@
            var model = entity.Adapt<GetEnterpriseWalletQueryResult>();
            var expandindirectOrder = await repEnterpriseWalletExpandindirectOrder.AsQueryable()
                .Include(it => it.Files)
                .OrderByDescending(it => it.CreatedTime)
                .Where(it => it.WalletId == model.Id)
                .FirstOrDefaultAsync();
@@ -189,6 +192,14 @@
                    }
                    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
@@ -196,7 +207,35 @@
                model.ExpandindirectOrderStatus = EnumEnterpriseWalletExpandindirectOrderStatus.Wait;
            }
            if (entity.AccountBookStatus == EnumEnterpriseWalletAccountBookStatus.Normal)
            {
                var response = alipayUtils.FundAccountbookQuery(new AlipayFundAccountbookQueryModel
                {
                    AccountBookId = entity.AccountBookId,
                    SceneCode = "SATF_FUND_BOOK",
                    MerchantUserId = entity.Code,
                    ExtInfo = new
                    {
                        agreement_no = entity.AgreementNo
                    }.ToJson()
                });
                if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg);
                entity.Balance = response.AvailableAmount.ToDecimal() ?? 0;
                await rep.UpdateNowAsync(entity);
            }
            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>
@@ -262,6 +301,10 @@
                AccountBookId = entity.AccountBookId,
                SceneCode = "SATF_FUND_BOOK",
                MerchantUserId = entity.Code,
                ExtInfo = new
                {
                    agreement_no = entity.AgreementNo
                }.ToJson()
            });
            if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg);
            entity.Balance = response.AvailableAmount.ToDecimal() ?? 0;