zhengyuxuan
2025-03-21 e452d5b2384236c1ccc9031dec6cadcddbbb585a
fix:提交
5个文件已修改
108 ■■■■ 已修改文件
LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LifePayment/LifePayment.Application/LifePay/LifePayService.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LifePayment/LifePayment.Application/Setting/OperateHistoryService.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs
@@ -219,6 +219,28 @@
    /// </summary>
    public string? ChannelId { get; set; }
    /// <summary>
    /// 平台折扣比例
    /// </summary>
    public decimal? PlatformRate { get; set; }
    /// <summary>
    /// 渠道折扣
    /// </summary>
    public decimal? ChannleRate { get; set; }
    /// <summary>
    /// 渠道佣金比例
    /// </summary>
    public decimal? ChannlesRakeRate { get; set; }
    /// <summary>
    /// 手续费比例
    /// </summary>
    public decimal PremiumRate { get; set; }
}
//public class ChannelsBaseInput : PageInput
LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -26,6 +26,7 @@
using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectMapping;
using NPOI.SS.Formula.Functions;
using StackExchange.Redis;
namespace LifePayment.Application;
@@ -402,10 +403,8 @@
    public async Task<LifePayOrderOutput> GetLifePayOrderDetail(string orderNo)
    {
        var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync();
        var platformRate = await _lifePayRateRepository.FirstOrDefaultAsync(r => r.RateType == LifePayRateTypeEnum.供应商折扣价);
        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, "订单不存在");
         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;
@@ -436,16 +435,16 @@
            LifePayRefundStatus = order.LifePayRefundStatus,
            ActualRechargeAmount = order.ActualRechargeAmount,
            RefundPrice = order.RefundPrice,
            PlatformRate = platformRate.Rate,
            PlatformRate = order.PlatformRate,
            PlatformPrice = order.PlatformDeductionAmount,
            ElecBillUrl = order.ElecBillUrl.GetOssPath(),
            RefundElecBillUrl = order.RefundElecBillUrl.GetOssPath(),
            ChannleRate = channle.ChannlesRate,
            ChannlesRakeRate = channle.ChannlesRakeRate,
            ChannlesRakePrice = channlesRakePrice.HasValue ? 0 : Math.Round(channlesRakePrice.Value, 2),
            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))
            PremiumRate = order.PremiumRate,
            PremiumPrice = Math.Round(order.PayAmount * order.PremiumRate, 2),
            Profit = (order.PayAmount - order.PlatformDeductionAmount) * (1.00m - channle.ChannlesRakeRate / 100) - Math.Round(order.PayAmount * order.PremiumRate, 2)
        };
        return result;
@@ -833,6 +832,9 @@
        var amount = CalculateAmount(input.ProductData.ParValue, rate.FirstOrDefault(x => x.RateType == LifePayRateTypeEnum.默认话费折扣).Rate);
        var platformRate = await _lifePayRateRepository.FirstOrDefaultAsync(r => r.RateType == LifePayRateTypeEnum.供应商折扣价);
        var orderInput = new CreateLifePayOrderInput
        {
            OrderNo = channle.ChannlesNum + CreateOrderNo(),
@@ -846,7 +848,10 @@
            PayAmount = amount.PayAmont,
            DiscountAmount = amount.DiscountAmount,
            RechargeAmount = amount.RechargeAmount,
            ChannelId = channle.ChannlesNum
            ChannelId = channle.ChannlesNum,
            PlatformRate = platformRate.Rate,
            ChannleRate = channle.ChannlesRate,
            ChannlesRakeRate = channle.ChannlesRakeRate,
        };
        await CreateLifePayOrder(orderInput);
@@ -877,6 +882,8 @@
        var amount = CalculateAmount(input.ProductData.ParValue, rate.FirstOrDefault(x => x.RateType == LifePayRateTypeEnum.默认电费折扣).Rate);
        var platformRate = await _lifePayRateRepository.FirstOrDefaultAsync(r => r.RateType == LifePayRateTypeEnum.供应商折扣价);
        var orderInput = new CreateLifePayOrderInput
        {
            OrderNo = channle.ChannlesNum + CreateOrderNo(),
@@ -890,7 +897,10 @@
            PayAmount = amount.PayAmont,
            DiscountAmount = amount.DiscountAmount,
            RechargeAmount = amount.RechargeAmount,
            ChannelId = channle.ChannlesNum
            ChannelId = channle.ChannlesNum,
            PlatformRate = platformRate.Rate,
            ChannleRate = channle.ChannlesRate,
            ChannlesRakeRate = channle.ChannlesRakeRate,
        };
        await CreateLifePayOrder(orderInput);
@@ -920,6 +930,8 @@
        CheckExtensions.IfTrueThrowUserFriendlyException(rate.IsNullOrEmpty(), "未配置折扣");
        var amount = CalculateAmount(input.ProductData.ParValue, rate.FirstOrDefault(x => x.RateType == LifePayRateTypeEnum.默认燃气折扣).Rate);
        var platformRate = await _lifePayRateRepository.FirstOrDefaultAsync(r => r.RateType == LifePayRateTypeEnum.供应商折扣价);
        var orderInput = new CreateLifePayOrderInput
        {
@@ -959,7 +971,8 @@
        CheckExtensions.IfTrueThrowUserFriendlyException(order.LifePayType.HasValue, "当前订单已选择支付类型");
        order.LifePayType = input.LifePayType;
        var premium = await _lifePayPremiumRepository.Where(x => x.IsDeleted == false && x.PremiumType == order.LifePayType).FirstOrDefaultAsync();
        order.PremiumRate = premium == null ? 0 : premium.Rate;
        await _lifePayOrderRepository.UpdateAsync(order);
        var desc = "生活缴费-";
@@ -1304,13 +1317,15 @@
        {
            return;
        }
        if (input.RefundPrice > order.PayAmount)
        {
            throw new UserFriendlyException("退款的金额不能大于实付金额");
        }
        if (input.LifePayRefundType == LifePayRefundTypeEnum.全额退款 && input.RefundPrice != order.PayAmount)
        if (input.LifePayRefundType == LifePayRefundTypeEnum.全额退款)
        {
            throw new UserFriendlyException("全额退款的金额与实付金额不一致");
            input.RefundPrice = order.PayAmount;
        }
        if (order.LifePayOrderStatus != LifePayOrderStatusEnum.已失败 && order.PayStatus != LifePayStatusEnum.待退款 && order.LifePayOrderStatus != LifePayOrderStatusEnum.退款待审核)
LifePayment/LifePayment.Application/Setting/OperateHistoryService.cs
@@ -43,15 +43,17 @@
        public async Task<PageOutput<OperateHistoryDto>> GetOperateHistoryByType(QueryOperateHistoryByTypeInput input)
        {
            var query = _operateHistory.AsQueryable();
            switch (input.OperateHistoryType)
            {
                case OperateHistoryTypeEnum.AccountManage:
                    query = query.Where(x => x.UserId == input.TypeId
                                          && LifePaymentConstant.LogsSpecies.AccountManageOperateNameList.Contains(x.OperateName));
                    break;
                case OperateHistoryTypeEnum.LifePayChannles:
                    query = query.Where(x => x.RelationId == input.TypeId);
                    break;
                default:
                    query = query.Where(x => x.RelationId == input.TypeId);
LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs
@@ -167,5 +167,26 @@
        /// </summary>
        public string? RefundElecBillUrl { get; set; }
        /// <summary>
        /// 平台折扣比例
        /// </summary>
        public decimal? PlatformRate { get; set; }
        /// <summary>
        /// 渠道折扣
        /// </summary>
        public decimal? ChannleRate { get; set; }
        /// <summary>
        /// 渠道佣金比例
        /// </summary>
        public decimal? ChannlesRakeRate { get; set; }
        /// <summary>
        /// 手续费比例
        /// </summary>
        public decimal PremiumRate { get; set; }
    }
}
LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
@@ -400,6 +400,26 @@
            下单渠道
            </summary>
        </member>
        <member name="P:LifePayment.Application.Contracts.CreateLifePayOrderInput.PlatformRate">
            <summary>
            平台折扣比例
            </summary>
        </member>
        <member name="P:LifePayment.Application.Contracts.CreateLifePayOrderInput.ChannleRate">
            <summary>
            渠道折扣
            </summary>
        </member>
        <member name="P:LifePayment.Application.Contracts.CreateLifePayOrderInput.ChannlesRakeRate">
            <summary>
            渠道佣金比例
            </summary>
        </member>
        <member name="P:LifePayment.Application.Contracts.CreateLifePayOrderInput.PremiumRate">
            <summary>
            手续费比例
            </summary>
        </member>
        <member name="P:LifePayment.Application.Contracts.QueryLifePayOrderListInput.LifePayOrderType">
            <summary>
            订单类型