From ecc217f694e03e660ef54bbada24fcb4ee59a728 Mon Sep 17 00:00:00 2001 From: zhengyuxuan <zhengyuxuan1995> Date: 星期五, 21 三月 2025 09:33:12 +0800 Subject: [PATCH] 回单下载 --- LifePayment/LifePayment.Application/LifePay/LifePayService.cs | 125 +++++++++++++++++++++++++++++++++++++++-- 1 files changed, 119 insertions(+), 6 deletions(-) diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs index 4491695..a06be30 100644 --- a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs +++ b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs @@ -23,6 +23,9 @@ using static LifePayment.Domain.Shared.LifePaymentConstant; using ZeroD.Util.Fadd; using Nest; +using Volo.Abp.Domain.Entities; +using Volo.Abp.ObjectMapping; +using NPOI.SS.Formula.Functions; namespace LifePayment.Application; @@ -36,11 +39,14 @@ private readonly IRepository<LifePayOrder, Guid> _lifePayOrderRepository; private readonly IRepository<LifePayUser, Guid> _lifePayUserRepository; private readonly IRepository<LifePayIntroInfo, Guid> _lifePayIntroInfoRepository; + private readonly IRepository<DallyStatistics, Guid> _dallyStatisticsRepository; private readonly IRepository<LifePayChannles, Guid> _lifePayChannlesRep; private readonly IRepository<LifePayAccount, Guid> _lifePayAccount; + private readonly IRepository<OperateHistory, Guid> _operateHistory; private readonly IDataFilter dataFilter; private readonly IChannelFilter _channelFilter; private readonly IAliPayApi _aliPayApi; + private readonly IAlipayInterfaceManager _alipayInterfaceManager; private readonly IWxPayApi _wxPayApi; private readonly WxPayOption _wxPayOptions; @@ -54,7 +60,10 @@ IRepository<LifePayUser, Guid> lifePayUserRepository, IRepository<LifePayPremium, Guid> lifePayPremiumRepository, IRepository<LifePayIntroInfo, Guid> lifePayIntroInfoRepository, + IRepository<DallyStatistics, Guid> dallyStatisticsRepository, + IRepository<OperateHistory, Guid> operateHistory, IAliPayApi aliPayApi, + IAlipayInterfaceManager aliPayInterfaceManager, IWxPayApi wxPayApi, IOptions<WxPayOption> wxPayOptions, IRepository<LifePayChannles, Guid> lifePayChannlesRep, @@ -69,7 +78,9 @@ _lifePayUserRepository = lifePayUserRepository; _lifePayPremiumRepository = lifePayPremiumRepository; _lifePayIntroInfoRepository = lifePayIntroInfoRepository; + _dallyStatisticsRepository = dallyStatisticsRepository; _aliPayApi = aliPayApi; + _alipayInterfaceManager = aliPayInterfaceManager; _wxPayApi = wxPayApi; _wxPayOptions = wxPayOptions.Value; _distributedEventBus = distributedEventBus; @@ -77,9 +88,42 @@ _lifePayAccount = lifePayAccount; this.dataFilter = dataFilter; _channelFilter = channelFilter; + _operateHistory = operateHistory; } #region 鏌ヨ + + public async Task<TopStatisticsOutput> GetTopStatistics() + { + var today = DateTime.Now.ToString("yyyy-MM-dd"); + var statistics = await _dallyStatisticsRepository.Where(x => x.CreationTime.ToString("yyyy-MM-dd") == today).FirstOrDefaultAsync(); + if (statistics == null) + { + //var accumulatedReceipts = await _lifePayOrderRepository.Where(x => x.CreationTime < today).SumAsync(x => x.PayAmount); + + var entity = new DallyStatistics() + { + Id = GuidGenerator.Create(), + CreationTime = DateTime.Now, + Amount = "0", + AccumulatedReceipts = "0", + ReceiptsYesterda = "0", + AccumulatedOrders = "0", + OrdersNumYesterda = "0", + YesterdaSuccess = "0", + YesterdaFail = "0", + AccumulatedUsers = "0", + }; + + return new TopStatisticsOutput(); + } + else + { + var result = ObjectMapper.Map<DallyStatistics,TopStatisticsOutput>(statistics); + return result; + } + + } /// <summary> /// 鑾峰彇鐢佃垂闈㈠�� @@ -286,7 +330,7 @@ Id = order.Id, OutOrderNo = order.OutOrderNo, LifePayChannle = channle.ChannlesName, - LifePayOrderStatus = order.LifePayOrderStatus, + Status = order.LifePayOrderStatus, LifePayOrderType = order.LifePayOrderType, LifePayType = order.LifePayType, OrderNo = order.OrderNo, @@ -336,7 +380,7 @@ Id = order.Id, OutOrderNo = order.OutOrderNo, LifePayChannle = channle.ChannlesName, - LifePayOrderStatus = order.LifePayOrderStatus, + Status = order.LifePayOrderStatus, LifePayOrderType = order.LifePayOrderType, LifePayType = order.LifePayType, OrderNo = order.OrderNo, @@ -348,7 +392,9 @@ CreationTime = order.CreationTime, RefundCheckRemark = order.RefundCheckRemark, RefundApplyRemark = order.RefundApplyRemark, + RefundApplyTime = order.RefundApplyTime, RefundTime = order.RefundTime, + RefundOrderNo = order.RefundOrderNo, ACOOLYOrderNo = order.ACOOLYOrderNo, LifePayRefundStatus = order.LifePayRefundStatus, ActualRechargeAmount = order.ActualRechargeAmount, @@ -621,7 +667,54 @@ }); return result; } + public async Task<string> GetBillErceiptExport(string orderNo) + { + try + { + var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync(); + CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "鏈壘鍒拌鍗曚俊鎭�"); + if (order.LifePayType == LifePayTypeEnum.AliPay) + { + var elecInfoInput = new DataBillErceiptApplyInput + { + Type = "FUND_DETAIL", + Key = orderNo + }; + + var elecInfoOutput = await _alipayInterfaceManager.DataBillErceiptApply(elecInfoInput); + if (elecInfoOutput != null) + { + var elecFileInput = new DataBillEreceiptQueryInput + { + FileId = elecInfoOutput.FileId, + }; + var elecFileOutput = await _alipayInterfaceManager.DataBillEreceiptQuery(elecFileInput); + if (!string.IsNullOrEmpty(elecFileOutput.DownloadUrl)) + { + return elecFileOutput.DownloadUrl; + } + return ""; + } + return ""; + } + else + { + WxPayTradeBillApplyRequest req = new WxPayTradeBillApplyRequest + { + OutBillNo = order.OutOrderNo, + }; + + var res = await _wxPayApi.WxPayTradeBillApply(req); + return ""; + } + } + catch (Exception ex) + { + _logger.LogError("鑾峰彇璁㈠崟鍙蜂负{0}鐢靛瓙鍥炲崟鍑虹幇閿欒锛歿1}", orderNo, ex.Message); + return ""; + } + } #endregion #region 鎿嶄綔 @@ -971,10 +1064,12 @@ OpenId = openid } }; + Logger.LogError("璋冪敤璇锋眰锛�" + req.ToJson()); var timestamp = DateTimeOffset.Now.ToUnixTimeSeconds(); string nonce = Guid.NewGuid().ToString(); var res = await _wxPayApi.PayTransactionsJsAPI(req); + Logger.LogError("璋冪敤缁撴灉锛�" + res.ToJson()); string package = "prepay_id=" + res.PrepayId; ModelPaymentMiniPay info = new ModelPaymentMiniPay(); if (res != null) @@ -1128,15 +1223,19 @@ { order.PayStatus = LifePayStatusEnum.宸查��娆�; order.LifePayOrderStatus = LifePayOrderStatusEnum.宸查��娆�; + order.LifePayRefundStatus = LifePayRefundStatusEnum.宸查��娆�; } else if (wxRefundResult.Status == "PROCESSING") { order.PayStatus = LifePayStatusEnum.閫�娆句腑; order.LifePayOrderStatus = LifePayOrderStatusEnum.閫�娆句腑; + order.LifePayRefundStatus = LifePayRefundStatusEnum.閫�娆句腑; } else { - throw new UserFriendlyException("閫�娆惧け璐�"); + order.PayStatus = LifePayStatusEnum.寰呴��娆�; + order.LifePayOrderStatus = LifePayOrderStatusEnum.閫�娆惧け璐�; + order.LifePayRefundStatus = LifePayRefundStatusEnum.寰呴��娆�; } break; @@ -1163,7 +1262,7 @@ #region 璁板綍鏃ュ織 - await PublishLifePayOrderHistoryEvent("閫�娆�", "閫�娆�", order.Id); + await LifePayOrderHistory("閫�娆�", "閫�娆�", order.Id, (int)OperateHistoryTypeEnum.LifePayRefund); #endregion @@ -1506,10 +1605,10 @@ private (decimal PayAmont, decimal DiscountAmount, decimal RechargeAmount) CalculateAmount(decimal amount, decimal rate) { /// 姝e父鏀粯 - //var payAmount = decimal.Round(amount * rate / 100, 2, MidpointRounding.AwayFromZero); + var payAmount = decimal.Round(amount * rate / 100, 2, MidpointRounding.AwayFromZero); /// 1鍒嗛挶鏀粯 - decimal payAmount = 0.01m; + //decimal payAmount = 0.01m; CheckExtensions.IfTrueThrowUserFriendlyException(payAmount < 0.01m, "鏀粯閲戦閿欒"); @@ -1551,6 +1650,20 @@ await _distributedEventBus.PublishAsync(recordEto, false); } + private async Task LifePayOrderHistory(string operateContent, string operateName, Guid relationId, int? tableType = (int)OperateHistoryTypeEnum.LifePayRefund) + { + var operateHistory = new OperateHistory + { + CreatorName = CurrentUser.Name, + OperateContent = operateName, + OperateName = operateName, + RelationId = relationId, + TableType = tableType + + }; + await _operateHistory.InsertAsync(operateHistory); + } + /// <summary> /// 鑾峰彇鏀粯浜岀淮鐮� /// </summary> -- Gitblit v1.9.1