zhengyuxuan
2025-03-27 f9bc1d677008142990cdef0b824700a4bcb72a71
LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -51,6 +51,7 @@
    private readonly IAlipayInterfaceManager _alipayInterfaceManager;
    private readonly IWxPayApi _wxPayApi;
    private readonly WxPayOption _wxPayOptions;
    private readonly InitSetting _initSettingOptions;
    private readonly IACOOLYManager _aCOOLYManager;
@@ -67,6 +68,7 @@
                          IAlipayInterfaceManager aliPayInterfaceManager,
                          IWxPayApi wxPayApi,
                          IOptions<WxPayOption> wxPayOptions,
                          IOptions<InitSetting> initSettingOptions,
                          IRepository<LifePayChannles, Guid> lifePayChannlesRep,
                          IRepository<LifePayAccount, Guid> lifePayAccount,
                          IDataFilter dataFilter,
@@ -83,6 +85,7 @@
        _alipayInterfaceManager = aliPayInterfaceManager;
        _wxPayApi = wxPayApi;
        _wxPayOptions = wxPayOptions.Value;
        _initSettingOptions = initSettingOptions.Value;
        _distributedEventBus = distributedEventBus;
        _lifePayChannlesRep = lifePayChannlesRep;
        _lifePayAccount = lifePayAccount;
@@ -817,6 +820,34 @@
            return "";
        }
    }
    /// <summary>
    /// 查询支付宝支付订单信息
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public async Task<AlipayTradeQueryResponse> QueryAlipayTrade(OrderInQuiryInput input)
    {
        var result = await _aliPayApi.OrderInQuiry(input);
        return result;
    }
    /// <summary>
    /// 查询支付宝退款订单信息
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public async Task<AlipayTradeFastpayRefundQueryResponse> QueryAlipayTradeRefund(OrderInQuiryInput input)
    {
        var result = await _aliPayApi.QueryAlipayTradeRefund(input);
        return result;
    }
    public async Task WxPayDomesticRefundsQuery(string outTradeNo)
    {
        await _wxPayApi.WxPayDomesticRefundsQuery(outTradeNo);
    }
    #endregion
    #region 操作
@@ -837,10 +868,10 @@
        var channle = await GetLifePayChannlesDtoByNum(input.ChannelId);
        CheckExtensions.IfTrueThrowUserFriendlyException(channle == null, "渠道不存在");
        var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.话费订单
        && x.LifePayOrderStatus == LifePayOrderStatusEnum.充值中 && x.OrderParamDetailJsonStr.Contains(input.ProductData.IspCode)
        var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.话费订单 && x.PayStatus == LifePayStatusEnum.已支付
        && x.LifePayOrderStatus == LifePayOrderStatusEnum.充值中
        && x.OrderParamDetailJsonStr.Contains(input.ProductData.Phone)).ToListAsync();
        CheckExtensions.IfTrueThrowUserFriendlyException(repeatOrder.Count() > 0, "您有同户号订单正在充值中,请勿重复充值");
         CheckExtensions.IfTrueThrowUserFriendlyException(repeatOrder.Count() > 0, "您有同户号订单正在充值中,请勿重复充值");
        //var rate = await GetRate();
        //CheckExtensions.IfTrueThrowUserFriendlyException(rate.IsNullOrEmpty(), "未配置折扣");
@@ -898,10 +929,10 @@
        //var rate = await GetRate();
        //CheckExtensions.IfTrueThrowUserFriendlyException(rate.IsNullOrEmpty(), "未配置折扣");
        var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.电费订单
         && x.LifePayOrderStatus == LifePayOrderStatusEnum.充值中 && x.OrderParamDetailJsonStr.Contains(input.ProductData.ElectricType)
        var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.电费订单 && x.PayStatus == LifePayStatusEnum.已支付
         && x.LifePayOrderStatus == LifePayOrderStatusEnum.充值中
         && x.OrderParamDetailJsonStr.Contains(input.ProductData.ElectricAccount)).ToListAsync();
                CheckExtensions.IfTrueThrowUserFriendlyException(repeatOrder.Count() > 0, "您有同户号订单正在充值中,请勿重复充值");
        CheckExtensions.IfTrueThrowUserFriendlyException(repeatOrder.Count() > 0, "您有同户号订单正在充值中,请勿重复充值");
        var rate = await GetLifePayRate(channle, LifePayRateTypeEnum.默认电费折扣);
@@ -953,8 +984,8 @@
        //var rate = await GetRate();
        //CheckExtensions.IfTrueThrowUserFriendlyException(rate.IsNullOrEmpty(), "未配置折扣");
        var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.燃气订单
        && x.LifePayOrderStatus == LifePayOrderStatusEnum.充值中 && x.OrderParamDetailJsonStr.Contains(input.ProductData.GasOrgType)
        var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.燃气订单 && x.PayStatus == LifePayStatusEnum.已支付
        && x.LifePayOrderStatus == LifePayOrderStatusEnum.充值中
        && x.OrderParamDetailJsonStr.Contains(input.ProductData.GasAccount)).ToListAsync();
        CheckExtensions.IfTrueThrowUserFriendlyException(repeatOrder.Count() > 0, "您有同户号订单正在充值中,请勿重复充值");
@@ -1826,15 +1857,21 @@
    private (decimal PayAmont, decimal DiscountAmount, decimal RechargeAmount) CalculateAmount(decimal amount, decimal rate)
    {
        /// 正常支付
        var payAmount = decimal.Round(amount * rate / 100, 2, MidpointRounding.AwayFromZero);
        if (_initSettingOptions.OpenTheOnePennyTest)
        {
            /// 1分钱支付
            decimal payAmount = 0.01m;
        /// 1分钱支付
        //decimal payAmount = 0.01m;
            CheckExtensions.IfTrueThrowUserFriendlyException(payAmount < 0.01m, "支付金额错误");
        CheckExtensions.IfTrueThrowUserFriendlyException(payAmount < 0.01m, "支付金额错误");
        return (payAmount, amount - payAmount, amount);
            return (payAmount, amount - payAmount, amount);
        }
        else
        {
            /// 正常支付
            var payAmount = decimal.Round(amount * rate / 100, 2, MidpointRounding.AwayFromZero);
            return (payAmount, amount - payAmount, amount);
        }
    }
    private void SetOrderStatus(LifePayOrder order, string code)