zhengyuxuan
2025-03-27 efef23b91cfcdf3e242258876b2b4ae8abb8fb7e
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;
@@ -835,6 +838,11 @@
        var channle = await GetLifePayChannlesDtoByNum(input.ChannelId);
        CheckExtensions.IfTrueThrowUserFriendlyException(channle == null, "渠道不存在");
        var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.话费订单 && x.PayStatus == LifePayStatusEnum.已支付
        && x.LifePayOrderStatus == LifePayOrderStatusEnum.充值中 && x.OrderParamDetailJsonStr.Contains(input.ProductData.IspCode)
        && x.OrderParamDetailJsonStr.Contains(input.ProductData.Phone)).ToListAsync();
        CheckExtensions.IfTrueThrowUserFriendlyException(repeatOrder.Count() > 0, "您有同户号订单正在充值中,请勿重复充值");
        //var rate = await GetRate();
        //CheckExtensions.IfTrueThrowUserFriendlyException(rate.IsNullOrEmpty(), "未配置折扣");
@@ -891,7 +899,10 @@
        //var rate = await GetRate();
        //CheckExtensions.IfTrueThrowUserFriendlyException(rate.IsNullOrEmpty(), "未配置折扣");
        var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.电费订单 && x.PayStatus == LifePayStatusEnum.已支付
         && x.LifePayOrderStatus == LifePayOrderStatusEnum.充值中 && x.OrderParamDetailJsonStr.Contains(input.ProductData.ElectricType)
         && x.OrderParamDetailJsonStr.Contains(input.ProductData.ElectricAccount)).ToListAsync();
                CheckExtensions.IfTrueThrowUserFriendlyException(repeatOrder.Count() > 0, "您有同户号订单正在充值中,请勿重复充值");
        var rate = await GetLifePayRate(channle, LifePayRateTypeEnum.默认电费折扣);
@@ -943,6 +954,10 @@
        //var rate = await GetRate();
        //CheckExtensions.IfTrueThrowUserFriendlyException(rate.IsNullOrEmpty(), "未配置折扣");
        var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.燃气订单 && x.PayStatus == LifePayStatusEnum.已支付
        && x.LifePayOrderStatus == LifePayOrderStatusEnum.充值中 && x.OrderParamDetailJsonStr.Contains(input.ProductData.GasOrgType)
        && x.OrderParamDetailJsonStr.Contains(input.ProductData.GasAccount)).ToListAsync();
        CheckExtensions.IfTrueThrowUserFriendlyException(repeatOrder.Count() > 0, "您有同户号订单正在充值中,请勿重复充值");
        var rate = await GetLifePayRate(channle, LifePayRateTypeEnum.默认燃气折扣);
@@ -1798,15 +1813,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)