From 72ed026e6dc651e7bd1f77f41face93a7a9f49cb Mon Sep 17 00:00:00 2001
From: zhengyuxuan <zhengyuxuan1995>
Date: 星期四, 27 三月 2025 08:58:34 +0800
Subject: [PATCH] fix:新增在线客服配置、户号编辑功能优化、用户列表更新
---
LifePayment/LifePayment.Application/LifePay/LifePayService.cs | 210 ++++++++++++++++++++++++++++------------------------
1 files changed, 113 insertions(+), 97 deletions(-)
diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
index 0972372..4820c56 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -402,7 +402,8 @@
var channle = await _lifePayChannlesRep.FirstOrDefaultAsync(r => r.ChannlesNum == order.ChannelId);
CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�");
var user = await _lifePayUserRepository.FirstOrDefaultAsync(x => x.Id == order.UserId);
- var orderpirce = await GetOrderPrice(order.RechargeAmount, order.PayAmount, order.PlatformRate, order.ChannleRate, order.ChannlesRakeRate, order.PremiumRate);
+ CheckExtensions.IfTrueThrowUserFriendlyException(user == null, "鐢ㄦ埛涓嶅瓨鍦�");
+ var orderpirce = await GetOrderPrice(order.RechargeAmount, order.PayAmount, order.PlatformRate ?? 0, order.ChannleRate ?? 0, order.ChannlesRakeRate ?? 0, order.PremiumRate ?? 0);
var result = new LifePayOrderOutput()
@@ -441,7 +442,8 @@
ChannlesRakePrice = orderpirce.ChannlesRakePrice,
PremiumRate = order.PremiumRate,
PremiumPrice = orderpirce.PremiumPrice,
- Profit = orderpirce.Profit
+ Profit = orderpirce.Profit,
+ RefundOrderNo = order.RefundOrderNo,
};
return result;
@@ -859,7 +861,7 @@
RechargeAmount = amount.RechargeAmount,
ChannelId = channle.ChannlesNum,
PlatformRate = platformRate.Rate,
- PlatformDeductionAmount = amount.RechargeAmount * platformRate.Rate /100,
+ PlatformDeductionAmount = amount.RechargeAmount * platformRate.Rate / 100,
ChannleRate = rate,
ChannlesRakeRate = channle.ChannlesRakeRate,
//ChannlesRakePrice = amount.RechargeAmount * (channle.ChannlesRate - platformRate.Rate) / 100 * channle.ChannlesRakeRate / 100
@@ -1320,7 +1322,7 @@
case LifePayRefundStatusEnum.閫�娆句腑:
order.LifePayOrderStatus = LifePayOrderStatusEnum.閫�娆句腑;
break;
- default:break;
+ default: break;
}
}
@@ -1330,7 +1332,7 @@
/// <param name="orderNo"></param>
/// <param name="outOrderNo"></param>
/// <returns></returns>
- public async Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status, ACOOLYStatusEnum acoolyStatus, decimal payAmount,string refundApplyRemark)
+ public async Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status, ACOOLYStatusEnum acoolyStatus, decimal payAmount, string refundApplyRemark)
{
var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync();
CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�");
@@ -1398,7 +1400,7 @@
switch (order.LifePayType)
{
case LifePayTypeEnum.WxPay:
- var wxRefundResult = await WxPayDomesticRefunds(order.OrderNo, outRefundNo,order.RefundApplyRemark, Convert.ToInt32(input.RefundPrice * 100), Convert.ToInt32(order.PayAmount * 100));
+ var wxRefundResult = await WxPayDomesticRefunds(order.OrderNo, outRefundNo, order.RefundApplyRemark, Convert.ToInt32(input.RefundPrice * 100), Convert.ToInt32(order.PayAmount * 100));
if (wxRefundResult.Status == "SUCCESS")
{
order.LifePayOrderStatus = LifePayOrderStatusEnum.宸查��娆�;
@@ -1500,7 +1502,7 @@
/// <param name="total"></param>
/// <param name="currency"></param>
/// <returns></returns>
- public async Task<WxPayDomesticRefundsReponse> WxPayDomesticRefunds(string outTradeNo,string outRefundNo, 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
{
@@ -1535,7 +1537,7 @@
var userAccount = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.Id == input.Id)
.FirstOrDefaultAsync();
CheckExtensions.IfTrueThrowUserFriendlyException(userAccount == null, "鎴峰彿涓嶅瓨鍦�");
- var repeatAccountContent = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.LifePayType == input.LifePayType && x.Content == input.Content && x.Id != input.Id)
+ var repeatAccountContent = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.LifePayType == input.LifePayType && x.Content == input.Content && x.Id != input.Id && x.IsDeleted == false)
.FirstOrDefaultAsync();
CheckExtensions.IfTrueThrowUserFriendlyException(repeatAccountContent != null, "鎴峰彿宸插瓨鍦�");
@@ -1549,22 +1551,36 @@
}
else
{
- var repeatAccountContent = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.LifePayType == input.LifePayType && x.Content == input.Content)
+ var repeatAccountContent = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.LifePayType == input.LifePayType && x.Content == input.Content && x.IsDeleted == false)
.FirstOrDefaultAsync();
- CheckExtensions.IfTrueThrowUserFriendlyException(repeatAccountContent != null, "鎴峰彿宸插瓨鍦�");
- var userAccount = new LifePayAccount
+ /// CheckExtensions.IfTrueThrowUserFriendlyException(repeatAccountContent != null, "鎴峰彿宸插瓨鍦�");
+ if (repeatAccountContent != null)
{
- Id = Guid.NewGuid(),
- UserId = input.UserId,
- Content = input.Content,
- Province = input.Province,
- LifePayType = input.LifePayType,
- City = input.City,
- Remark = input.Remark,
- Operators = input.Operators,
- ExtraProperties = input.ExtraProperties,
- };
- await _lifePayAccount.InsertAsync(userAccount);
+ repeatAccountContent.LifePayType = input.LifePayType;
+ repeatAccountContent.Content = input.Content;
+ repeatAccountContent.Province = input.Province;
+ repeatAccountContent.City = input.City;
+ repeatAccountContent.Remark = input.Remark;
+ repeatAccountContent.Operators = input.Operators;
+ repeatAccountContent.ExtraProperties = input.ExtraProperties;
+ }
+ else
+ {
+ var userAccount = new LifePayAccount
+ {
+ Id = Guid.NewGuid(),
+ UserId = input.UserId,
+ Content = input.Content,
+ Province = input.Province,
+ LifePayType = input.LifePayType,
+ City = input.City,
+ Remark = input.Remark,
+ Operators = input.Operators,
+ ExtraProperties = input.ExtraProperties,
+ };
+ await _lifePayAccount.InsertAsync(userAccount);
+ }
+
}
if (input.LifePayType == LifePayOrderTypeEnum.璇濊垂璁㈠崟)
@@ -2020,39 +2036,39 @@
.WhereIf(input.LifePayOrderType.HasValue, x => x.LifePayOrderType == input.LifePayOrderType.Value)
.WhereIf(input.UserId.HasValue, x => x.UserId == input.UserId.Value)
.WhereIf(input.KeyWords.IsNotNullOrEmpty(), x => x.OrderNo.Contains(input.KeyWords) || x.OutOrderNo.Contains(input.KeyWords) || x.ACOOLYOrderNo.Contains(input.KeyWords) || channles.Contains(x.ChannelId))
- join b in _lifePayChannlesRep on a.ChannelId equals b.ChannlesNum into temp
- from b in temp.DefaultIfEmpty()
- select new LifePayOrderListOutput
- {
- DiscountAmount = a.DiscountAmount,
- FinishTime = a.FinishTime,
- Id = a.Id,
- LifePayOrderStatus = a.LifePayOrderStatus,
- LifePayOrderType = a.LifePayOrderType,
- LifePayType = a.LifePayType,
- OrderNo = a.OrderNo,
- PayAmount = a.PayAmount,
- PhoneNumber = a.PhoneNumber,
- RechargeAmount = a.RechargeAmount,
- UserId = a.UserId,
- OutOrderNo = a.OutOrderNo,
- PayStatus = a.PayStatus,
- PayTime = a.PayTime,
- ACOOLYOrderNo = a.ACOOLYOrderNo,
- RefundCredentialsImgUrl = a.RefundCredentialsImgUrl.GetOssPath(),
- RefundPrice = a.RefundPrice,
- CreationTime = a.CreationTime,
- RefundCheckRemark = a.RefundCheckRemark,
- RefundApplyRemark = a.RefundApplyRemark,
- RefundTime = a.RefundTime,
- ChannelName = b.ChannlesName,
- ActualRechargeAmount = a.ActualRechargeAmount,
- PlatformDeductionAmount = a.PlatformDeductionAmount,
- ACOOLYStatus = a.ACOOLYStatus,
- LifePayRefundStatus = a.LifePayRefundStatus,
- });
+ join b in _lifePayChannlesRep on a.ChannelId equals b.ChannlesNum into temp
+ from b in temp.DefaultIfEmpty()
+ select new LifePayOrderListOutput
+ {
+ DiscountAmount = a.DiscountAmount,
+ FinishTime = a.FinishTime,
+ Id = a.Id,
+ LifePayOrderStatus = a.LifePayOrderStatus,
+ LifePayOrderType = a.LifePayOrderType,
+ LifePayType = a.LifePayType,
+ OrderNo = a.OrderNo,
+ PayAmount = a.PayAmount,
+ PhoneNumber = a.PhoneNumber,
+ RechargeAmount = a.RechargeAmount,
+ UserId = a.UserId,
+ OutOrderNo = a.OutOrderNo,
+ PayStatus = a.PayStatus,
+ PayTime = a.PayTime,
+ ACOOLYOrderNo = a.ACOOLYOrderNo,
+ RefundCredentialsImgUrl = a.RefundCredentialsImgUrl.GetOssPath(),
+ RefundPrice = a.RefundPrice,
+ CreationTime = a.CreationTime,
+ RefundCheckRemark = a.RefundCheckRemark,
+ RefundApplyRemark = a.RefundApplyRemark,
+ RefundTime = a.RefundTime,
+ ChannelName = b.ChannlesName,
+ ActualRechargeAmount = a.ActualRechargeAmount,
+ PlatformDeductionAmount = a.PlatformDeductionAmount,
+ ACOOLYStatus = a.ACOOLYStatus,
+ LifePayRefundStatus = a.LifePayRefundStatus,
+ });
-
+
return result;
}
@@ -2071,40 +2087,40 @@
.WhereIf(input.LifePayOrderType.HasValue, x => x.LifePayOrderType == input.LifePayOrderType.Value)
.WhereIf(input.UserId.HasValue, x => x.UserId == input.UserId.Value)
.WhereIf(input.KeyWords.IsNotNullOrEmpty(), x => x.PhoneNumber.Contains(input.KeyWords) || x.OrderNo.Contains(input.KeyWords) || x.OutOrderNo.Contains(input.KeyWords) || x.ACOOLYOrderNo.Contains(input.KeyWords))
- join b in _lifePayChannlesRep on a.ChannelId equals b.ChannlesNum into temp
- from b in temp.DefaultIfEmpty()
- select new LifePayOrderListOutput
- {
- DiscountAmount = a.DiscountAmount,
- FinishTime = a.FinishTime,
- Id = a.Id,
- LifePayOrderStatus = a.LifePayOrderStatus,
- LifePayOrderType = a.LifePayOrderType,
- LifePayType = a.LifePayType,
- OrderNo = a.OrderNo,
- PayAmount = a.PayAmount,
- PhoneNumber = a.PhoneNumber,
- RechargeAmount = a.RechargeAmount,
- UserId = a.UserId,
- OutOrderNo = a.OutOrderNo,
- PayStatus = a.PayStatus,
- PayTime = a.PayTime,
- ACOOLYOrderNo = a.ACOOLYOrderNo,
- RefundCredentialsImgUrl = a.RefundCredentialsImgUrl.GetOssPath(),
- CreationTime = a.CreationTime,
- RefundCheckRemark = a.RefundCheckRemark,
- RefundApplyRemark = a.RefundApplyRemark,
- RefundApplyTime = a.RefundApplyTime,
- RefundTime = a.RefundTime,
- RefundOrderNo = a.RefundOrderNo,
- RefundPrice = a.RefundPrice,
- ChannelName = b.ChannlesName,
- ActualRechargeAmount = a.ActualRechargeAmount,
- PlatformDeductionAmount = a.PlatformDeductionAmount,
- ACOOLYStatus = a.ACOOLYStatus,
- LifePayRefundStatus = a.LifePayRefundStatus,
- ActualReceivedAmount = a.ActualReceivedAmount.HasValue? a.ActualReceivedAmount.Value : 0
- });
+ join b in _lifePayChannlesRep on a.ChannelId equals b.ChannlesNum into temp
+ from b in temp.DefaultIfEmpty()
+ select new LifePayOrderListOutput
+ {
+ DiscountAmount = a.DiscountAmount,
+ FinishTime = a.FinishTime,
+ Id = a.Id,
+ LifePayOrderStatus = a.LifePayOrderStatus,
+ LifePayOrderType = a.LifePayOrderType,
+ LifePayType = a.LifePayType,
+ OrderNo = a.OrderNo,
+ PayAmount = a.PayAmount,
+ PhoneNumber = a.PhoneNumber,
+ RechargeAmount = a.RechargeAmount,
+ UserId = a.UserId,
+ OutOrderNo = a.OutOrderNo,
+ PayStatus = a.PayStatus,
+ PayTime = a.PayTime,
+ ACOOLYOrderNo = a.ACOOLYOrderNo,
+ RefundCredentialsImgUrl = a.RefundCredentialsImgUrl.GetOssPath(),
+ CreationTime = a.CreationTime,
+ RefundCheckRemark = a.RefundCheckRemark,
+ RefundApplyRemark = a.RefundApplyRemark,
+ RefundApplyTime = a.RefundApplyTime,
+ RefundTime = a.RefundTime,
+ RefundOrderNo = a.RefundOrderNo,
+ RefundPrice = a.RefundPrice,
+ ChannelName = b.ChannlesName,
+ ActualRechargeAmount = a.ActualRechargeAmount,
+ PlatformDeductionAmount = a.PlatformDeductionAmount,
+ ACOOLYStatus = a.ACOOLYStatus,
+ LifePayRefundStatus = a.LifePayRefundStatus,
+ ActualReceivedAmount = a.ActualReceivedAmount.HasValue ? a.ActualReceivedAmount.Value : 0
+ });
return result;
}
private IQueryable<CreateEditPayChannelsInput> GetLifePayChannlesListFilter()
@@ -2123,8 +2139,8 @@
});
}
- public async Task<OrderPriceReturn> GetOrderPrice(decimal price, decimal priceAmount, decimal? platformRate,decimal? channleRate,
- decimal? channlesRakeRate,decimal? premiumRate)
+ public async Task<OrderPriceReturn> GetOrderPrice(decimal price, decimal priceAmount, decimal platformRate, decimal channleRate,
+ decimal channlesRakeRate, decimal premiumRate)
{
/// 姣涘埄
var grossProfit = price * (channleRate - platformRate) / 100;
@@ -2133,20 +2149,20 @@
var platformPrice = price * platformRate / 100;
/// 鎵嬬画璐�
- var premiumPrice = priceAmount * premiumRate / 100;
+ var premiumPrice = priceAmount * (premiumRate) / 100;
/// 娓犻亾浣i噾 锛�(鍏呭�奸潰棰� * 娓犻亾鎶樻墸姣斾緥)-(鍏呭�奸潰棰� * 骞冲彴鎶樻墸姣斾緥)锛�* 浣i噾姣斾緥
- var channlesRakePrice = grossProfit * channlesRakeRate / 100;
+ var channlesRakePrice = grossProfit * (channlesRakeRate) / 100;
/// 鍒╂鼎
- var profit = grossProfit - channlesRakePrice - premiumPrice;
+ var profit = grossProfit - channlesRakePrice - (premiumRate);
return new OrderPriceReturn()
{
- PlatformPrice = platformPrice.HasValue? platformPrice.Value :0,
- PremiumPrice = premiumPrice.HasValue ? premiumPrice.Value : 0,
- ChannlesRakePrice = channlesRakePrice.HasValue? channlesRakePrice.Value:0,
- Profit = profit.HasValue ? profit.Value : 0
+ PlatformPrice = platformPrice,
+ PremiumPrice = premiumPrice,
+ ChannlesRakePrice = channlesRakePrice,
+ Profit = profit
};
}
--
Gitblit v1.9.1