From fe4d49aa2b8f0e50410c848ea358150b017703cf Mon Sep 17 00:00:00 2001
From: zhengyuxuan <zhengyuxuan1995>
Date: 星期四, 20 三月 2025 17:57:47 +0800
Subject: [PATCH] fix:1分钱
---
LifePayment/LifePayment.Application/LifePay/LifePayService.cs | 100 ++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 93 insertions(+), 7 deletions(-)
diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
index 037418e..be6fe13 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -23,6 +23,8 @@
using static LifePayment.Domain.Shared.LifePaymentConstant;
using ZeroD.Util.Fadd;
using Nest;
+using Volo.Abp.Domain.Entities;
+using Volo.Abp.ObjectMapping;
namespace LifePayment.Application;
@@ -36,6 +38,7 @@
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 IDataFilter dataFilter;
@@ -54,6 +57,7 @@
IRepository<LifePayUser, Guid> lifePayUserRepository,
IRepository<LifePayPremium, Guid> lifePayPremiumRepository,
IRepository<LifePayIntroInfo, Guid> lifePayIntroInfoRepository,
+ IRepository<DallyStatistics, Guid> dallyStatisticsRepository,
IAliPayApi aliPayApi,
IWxPayApi wxPayApi,
IOptions<WxPayOption> wxPayOptions,
@@ -69,6 +73,7 @@
_lifePayUserRepository = lifePayUserRepository;
_lifePayPremiumRepository = lifePayPremiumRepository;
_lifePayIntroInfoRepository = lifePayIntroInfoRepository;
+ _dallyStatisticsRepository = dallyStatisticsRepository;
_aliPayApi = aliPayApi;
_wxPayApi = wxPayApi;
_wxPayOptions = wxPayOptions.Value;
@@ -80,6 +85,38 @@
}
#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 +323,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,
@@ -312,6 +349,48 @@
PremiumRate = premium == null ? 0 : premium.Rate,
PremiumPrice = premium == null ? 0 : Math.Round(order.PayAmount * premium.Rate, 2),
Profit = (order.PayAmount - order.PlatformDeductionAmount) * (1.00m - channle.ChannlesRakeRate / 100) - (premium == null ? 0 : Math.Round(order.PayAmount * premium.Rate, 2))
+ };
+
+ return result;
+ }
+
+ public async Task<LifePayRefundOrderOutput> GetLifePayRefundOrderDetail(string orderNo)
+ {
+ var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync();
+ var platformRate = await _lifePayRateRepository.FirstOrDefaultAsync(r => r.RateType == LifePayRateTypeEnum.渚涘簲鍟嗘姌鎵d环);
+ var channle = await _lifePayChannlesRep.FirstOrDefaultAsync(r => r.ChannlesNum == order.ChannelId);
+ var premium = await _lifePayPremiumRepository.Where(x => x.IsDeleted == false && x.PremiumType == order.LifePayType).FirstOrDefaultAsync();
+ CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�");
+ var user = await _lifePayUserRepository.FirstOrDefaultAsync(x => x.Id == order.UserId);
+
+ var channlesRakePrice = (order.PayAmount - (order.PlatformDeductionAmount == null ? 0 : order.PlatformDeductionAmount)) * channle.ChannlesRakeRate / 100;
+ var result = new LifePayRefundOrderOutput()
+ {
+ UserName = user.Name,
+ UserPhoneNumber = user.PhoneNumber,
+ DiscountAmount = order.DiscountAmount,
+ FinishTime = order.FinishTime,
+ Id = order.Id,
+ OutOrderNo = order.OutOrderNo,
+ LifePayChannle = channle.ChannlesName,
+ Status = order.LifePayOrderStatus,
+ LifePayOrderType = order.LifePayOrderType,
+ LifePayType = order.LifePayType,
+ OrderNo = order.OrderNo,
+ PayAmount = order.PayAmount,
+ RechargeAmount = order.RechargeAmount,
+ PayStatus = order.PayStatus,
+ PayTime = order.PayTime,
+ RefundCredentialsImgUrl = order.RefundCredentialsImgUrl.GetOssPath(),
+ CreationTime = order.CreationTime,
+ RefundCheckRemark = order.RefundCheckRemark,
+ RefundApplyRemark = order.RefundApplyRemark,
+ RefundTime = order.RefundTime,
+ RefundOrderNo = order.RefundOrderNo,
+ ACOOLYOrderNo = order.ACOOLYOrderNo,
+ LifePayRefundStatus = order.LifePayRefundStatus,
+ ActualRechargeAmount = order.ActualRechargeAmount,
+ RefundPrice = order.RefundPrice,
};
return result;
@@ -1054,6 +1133,7 @@
order.PayStatus = LifePayStatusEnum.寰呴��娆�;
}
+
await _lifePayOrderRepository.UpdateAsync(order);
}
@@ -1078,23 +1158,29 @@
throw new UserFriendlyException("褰撳墠璁㈠崟鐘舵�佹棤娉曢��娆�");
}
+ var outRefundNo = order.ChannelId + CreateRefundOrderNo();
+ order.RefundOrderNo = outRefundNo;
switch (order.LifePayType)
{
case LifePayTypeEnum.WxPay:
- var wxRefundResult = await WxPayDomesticRefunds(order.OrderNo, order.RefundApplyRemark, Convert.ToInt32(order.PayAmount * 100), Convert.ToInt32(order.PayAmount * 100));
+ var wxRefundResult = await WxPayDomesticRefunds(order.OrderNo, outRefundNo,order.RefundApplyRemark, Convert.ToInt32(order.PayAmount * 100), Convert.ToInt32(order.PayAmount * 100));
if (wxRefundResult.Status == "SUCCESS")
{
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;
@@ -1169,12 +1255,12 @@
/// <param name="total"></param>
/// <param name="currency"></param>
/// <returns></returns>
- public async Task<WxPayDomesticRefundsReponse> WxPayDomesticRefunds(string outTradeNo, string reason, int refund, int total, string currency = "CNY")
+ public async Task<WxPayDomesticRefundsReponse> WxPayDomesticRefunds(string outTradeNo,string outRefundNo, string reason, int refund, int total, string currency = "CNY")
{
WxPayDomesticRefundsRequest req = new WxPayDomesticRefundsRequest
{
OutTradeNo = outTradeNo,
- OutRefundNo = CreateRefundOrderNo(),
+ OutRefundNo = outRefundNo,
Reason = reason,
Amount = new Model_WxPayDomesticRefunds_Amount
{
@@ -1464,10 +1550,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, "鏀粯閲戦閿欒");
--
Gitblit v1.9.1