zhengyuxuan
2025-04-01 5e918c353d039a75f552f4eb0cc251e96ef809ab
LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -29,6 +29,7 @@
using StackExchange.Redis;
using static Volo.Abp.Identity.Settings.IdentitySettingNames;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
using LifePayment.Application.LifePay;
namespace LifePayment.Application;
@@ -47,6 +48,7 @@
    private readonly IRepository<LifePayAccount, Guid> _lifePayAccount;
    private readonly IRepository<OperateHistory, Guid> _operateHistory;
    private readonly IRepository<LifePayChannlesRake, Guid> _lifePayChannlesRakeRepository;
    private readonly ILifePayOrderService _lifePayOrderService;
    private readonly IDataFilter dataFilter;
    private readonly IChannelFilter _channelFilter;
    private readonly IAliPayApi _aliPayApi;
@@ -67,6 +69,7 @@
                          IRepository<LifePayIntroInfo, Guid> lifePayIntroInfoRepository,
                          IRepository<LifePayChannlesRake, Guid> lifePayChannlesRakeRepository,
                          IRepository<OperateHistory, Guid> operateHistory,
                          ILifePayOrderService lifePayOrderService,
                          IAliPayApi aliPayApi,
                          IAlipayInterfaceManager aliPayInterfaceManager,
                          IWxPayApi wxPayApi,
@@ -86,6 +89,7 @@
        _lifePayPremiumRepository = lifePayPremiumRepository;
        _lifePayIntroInfoRepository = lifePayIntroInfoRepository;
        _aliPayApi = aliPayApi;
        _lifePayOrderService = lifePayOrderService;
        _alipayInterfaceManager = aliPayInterfaceManager;
        _wxPayApi = wxPayApi;
        _wxPayOptions = wxPayOptions.Value;
@@ -844,12 +848,20 @@
    /// <returns></returns>
    public async Task<AlipayTradeFastpayRefundQueryResponse> QueryAlipayTradeRefund(OrderInQuiryInput input)
    {
        var result = await _aliPayApi.QueryAlipayTradeRefund(input);
        var order = await _lifePayOrderRepository.Where(x => x.OrderNo == input.OutTradeNo).FirstOrDefaultAsync();
        input.OutRefundNo = order.RefundOrderNo;
        var result = await _aliPayApi.QueryAlipayTradeRefund(input);
        if (result.Code == AlipayResultCode.Success && result.RefundStatus == AlipayRefundStatus.Success)
        {
            order.LifePayOrderStatus = LifePayOrderStatusEnum.已退款;
            order.LifePayRefundStatus = LifePayRefundStatusEnum.已退款;
            await _lifePayOrderService.AddLifePayExpensesReceipts(new AddLifePayExpensesReceiptsInput()
            {
                OrderNo = order.RefundOrderNo,
                OutOrderNo = result.TradeNo,
                LifePayType = LifePayTypeEnum.AliPay,
                ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Receipts
            });
        }
        return result;
@@ -1321,7 +1333,7 @@
        await _lifePayOrderRepository.UpdateAsync(order);
    }
    public async Task WxPayDomesticRefundsHandler(string orderNo, LifePayRefundStatusEnum refundStatus)
    public async Task LifePayRefundsHandler(string orderNo, LifePayRefundStatusEnum refundStatus)
    {
        var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync();
        CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "订单不存在");
@@ -1339,6 +1351,7 @@
        }
    }
    /// <summary>
    /// ACOOLYO订单通知处理
    /// </summary>
@@ -1350,10 +1363,10 @@
        var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync();
        CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "订单不存在");
        //if (order.LifePayOrderStatus == LifePayOrderStatusEnum.已完成)
        //{
        //    return;
        //}
        if (order.LifePayOrderStatus >= LifePayOrderStatusEnum.已完成)
        {
            return;
        }
        order.PlatformDeductionAmount = payAmount;
        if (acoolyOrderNo.IsNotNullOrEmpty())
@@ -1430,7 +1443,6 @@
        }
        var outRefundNo = order.ChannelId + CreateRefundOrderNo();
        order.RefundOrderNo = outRefundNo;
        switch (order.LifePayType)
        {
            case LifePayTypeEnum.WxPay:
@@ -1459,12 +1471,13 @@
                    throw new UserFriendlyException("退款失败:" + aliRefundResult.SubMsg);
                }
                order.LifePayOrderStatus = LifePayOrderStatusEnum.已退款;
                order.LifePayRefundStatus = LifePayRefundStatusEnum.已退款;
                order.LifePayOrderStatus = LifePayOrderStatusEnum.退款中;
                order.LifePayRefundStatus = LifePayRefundStatusEnum.退款中;
                break;
            default: throw new UserFriendlyException("退款失败");
        }
        order.RefundOrderNo = outRefundNo;
        order.RefundCredentialsImgUrl = input.RefundCredentialsImgUrl;
        order.RefundCheckRemark = input.RefundCheckRemark;
        order.RefundTime = DateTime.Now;
@@ -1598,7 +1611,7 @@
            await _lifePayAccount.InsertAsync(userAccount);
        }
        if (input.LifePayType == LifePayOrderTypeEnum.PhoneOrder)
        if (input.LifePayType == LifePayOrderTypeEnum.PhoneOrder || input.LifePayType == LifePayOrderTypeEnum.ElectricOrder)
        {
            var extraProperties = JsonConvert.DeserializeObject<Model_UserAccountExtraProperties>(input.ExtraProperties);
            if (!string.IsNullOrEmpty(extraProperties.Name) && extraProperties.Phone == user.PhoneNumber)