From 83b72e32a89988dd721ef7bc8ea673751092fb4a Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期三, 10 十二月 2025 16:11:13 +0800
Subject: [PATCH] fix: bug
---
LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs | 322 +++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 258 insertions(+), 64 deletions(-)
diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
index af8d6e1..da0c289 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
@@ -1,7 +1,10 @@
锘縰sing LifePayment.Application.Contracts;
+using LifePayment.Domain;
using LifePayment.Domain.LifePay;
using LifePayment.Domain.Models;
using LifePayment.Domain.Shared;
+using Microsoft.EntityFrameworkCore;
+using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -9,13 +12,9 @@
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
-using Microsoft.EntityFrameworkCore;
using ZeroD.Util;
-using LifePayment.Domain;
+using ZeroD.Util.Fadd;
using static LifePayment.Domain.Shared.LifePaymentConstant;
-using Newtonsoft.Json;
-using LifePayment.Domain.Common;
-using Spire.Pdf.Exporting.XPS.Schema;
namespace LifePayment.Application.LifePay
{
@@ -60,7 +59,7 @@
public async Task<PageOutput<LifePayConsumptionListOutput>> GetLifePayConsumptionPage(LifePayConsumptionPageInput input)
{
var channles = await _lifePayChannlesRep.Where(x => x.ChannlesName.Contains(input.KeyWord)).Select(x => x.ChannlesNum).ToListAsync();
- var list = await _lifePayConsumption.Where(x => x.IsDeleted == false)
+ var list = await _lifePayConsumption
.WhereIf(input.KeyWord.IsNotNullOrEmpty(), x => x.OrderNo.Contains(input.KeyWord) || x.AcoolyOrderNo.Contains(input.KeyWord) || channles.Contains(x.ChannelId))
.WhereIf(input.Flow.HasValue, x => x.Flow == input.Flow)
.WhereIf(input.TimeBegin.HasValue, x => x.FinishTime >= input.TimeBegin)
@@ -76,15 +75,15 @@
FrozenStatus = x.FrozenStatus,
Flow = x.Flow,
DeductionAmount = x.DeductionAmount,
- FrozenAmount = x.FrozenAmount.Value
+ FrozenAmount = x.FrozenAmount ?? 0
})
.GetPageResult(input.PageModel);
- var totalDeductionAmount = await _lifePayConsumption.Where(x => x.IsDeleted == false).SumAsync(x => x.DeductionAmount);
- var totalFrozenAmount = await _lifePayConsumption.Where(x => x.IsDeleted == false).SumAsync(x => x.FrozenAmount);
+ var totalDeductionAmount = await _lifePayConsumption.Where(it => it.ACOOLYStatus == ACOOLYStatusEnum.宸插畬鎴� || it.ACOOLYStatus == ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�).SumAsync(x => x.DeductionAmount);
+ var totalFrozenAmount = await _lifePayConsumption.Where(it => it.ACOOLYStatus == ACOOLYStatusEnum.鍏呭�间腑 || it.ACOOLYStatus == ACOOLYStatusEnum.鍏呭�煎け璐�).SumAsync(x => x.FrozenAmount);
LifePayConsumptionStatistics objectData = new LifePayConsumptionStatistics();
objectData.TotalDeductionAmount = totalDeductionAmount;
- objectData.TotalFrozenAmount = totalFrozenAmount.Value;
+ objectData.TotalFrozenAmount = totalFrozenAmount ?? 0;
list.ObjectData = objectData;
return list;
}
@@ -96,7 +95,7 @@
/// <returns></returns>
public async Task<PageOutput<LifePayRechargeReceiptsListOutput>> GetLifePayRechargeReceiptsPage(LifePayRechargeReceiptsPageInput input)
{
- var list = await _lifePayRechargeReceiptsRepository.Where(x => x.IsDeleted == false)
+ var list = await _lifePayRechargeReceiptsRepository
.WhereIf(input.KeyWord.IsNotNullOrEmpty(), x => x.OrderNo.Contains(input.KeyWord))
.WhereIf(input.CreationTimeBegin.HasValue, x => x.CreationTime >= input.CreationTimeBegin)
.WhereIf(input.CreationTimeEnd.HasValue, x => x.CreationTime <= input.CreationTimeEnd)
@@ -111,7 +110,7 @@
})
.GetPageResult(input.PageModel);
- var total = await _lifePayRechargeReceiptsRepository.Where(x => x.IsDeleted == false).SumAsync(x => x.RechargeAmount);
+ var total = await _lifePayRechargeReceiptsRepository.SumAsync(x => x.RechargeAmount);
LifePayRechargeReceiptsStatistics objectData = new LifePayRechargeReceiptsStatistics();
objectData.TotalRechargeAmount = total;
list.ObjectData = objectData;
@@ -125,7 +124,7 @@
/// <returns></returns>
public async Task<PageOutput<LifePayExpensesReceiptsListOutput>> GetLifePayExpensesReceiptsPage(LifePayExpensesReceiptsPageInput input)
{
- var list = await _lifePayExpensesReceiptsRepository.Where(x => x.IsDeleted == false)
+ var list = await _lifePayExpensesReceiptsRepository
.WhereIf(input.KeyWord.IsNotNullOrEmpty(), x => x.OrderNo.Contains(input.KeyWord) || x.OutOrderNo.Contains(input.KeyWord))
.WhereIf(input.LifePayType.HasValue, x => x.LifePayType == input.LifePayType)
.WhereIf(input.ExpensesReceiptsType.HasValue, x => x.ExpensesReceiptsType == input.ExpensesReceiptsType)
@@ -138,14 +137,14 @@
OrderNo = x.OrderNo,
OutOrderNo = x.OutOrderNo,
LifePayType = x.LifePayType,
- ExpensesReceiptsType = x.ExpensesReceiptsType.Value,
+ ExpensesReceiptsType = x.ExpensesReceiptsType ?? 0,
Amount = x.Amount,
FinishTime = x.FinishTime
})
.GetPageResult(input.PageModel);
- var totalIncome = await _lifePayExpensesReceiptsRepository.Where(x => x.IsDeleted == false && x.ExpensesReceiptsType == ExpensesReceiptsTypeEnum.Expenses).SumAsync(x => x.Amount);
- var totalRefund = await _lifePayExpensesReceiptsRepository.Where(x => x.IsDeleted == false && x.ExpensesReceiptsType == ExpensesReceiptsTypeEnum.Receipts).SumAsync(x => x.Amount);
+ var totalIncome = await _lifePayExpensesReceiptsRepository.Where(x => x.ExpensesReceiptsType == ExpensesReceiptsTypeEnum.Expenses).SumAsync(x => x.Amount);
+ var totalRefund = await _lifePayExpensesReceiptsRepository.Where(x => x.ExpensesReceiptsType == ExpensesReceiptsTypeEnum.Receipts).SumAsync(x => x.Amount);
LifePayExpensesReceiptsStatistics objectData = new LifePayExpensesReceiptsStatistics();
objectData.TotalIncome = totalIncome;
@@ -162,7 +161,7 @@
/// <returns></returns>
public async Task<PageOutput<LifePayChannlesRakeListOutput>> GetLifePayChannlesRakePage(LifePayChannlesRakePageInput input)
{
- var list = await _lifePayChannlesRakeRepository.Where(x => x.IsDeleted == false)
+ var list = await _lifePayChannlesRakeRepository
.WhereIf(input.ChannelId.IsNotNullOrEmpty(), x => x.ChannelId == input.ChannelId)
.WhereIf(input.CreationTimeBegin.HasValue, x => x.CreationTime >= input.CreationTimeBegin)
.WhereIf(input.CreationTimeEnd.HasValue, x => x.CreationTime <= input.CreationTimeEnd)
@@ -182,7 +181,13 @@
})
.GetPageResult(input.PageModel);
- var totalRakePrice = await _lifePayChannlesRakeRepository.Where(x => x.IsDeleted == false).SumAsync(x => x.ChannlesRakePrice);
+ var totalRakePrice = await _lifePayChannlesRakeRepository
+ .WhereIf(input.ChannelId.IsNotNullOrEmpty(), x => x.ChannelId == input.ChannelId)
+ .WhereIf(input.CreationTimeBegin.HasValue, x => x.CreationTime >= input.CreationTimeBegin)
+ .WhereIf(input.CreationTimeEnd.HasValue, x => x.CreationTime <= input.CreationTimeEnd)
+ .WhereIf(input.FinishTimeBegin.HasValue, x => x.FinishTime >= input.FinishTimeBegin)
+ .WhereIf(input.FinishTimeEnd.HasValue, x => x.FinishTime <= input.FinishTimeEnd)
+ .SumAsync(x => x.ChannlesRakePrice);
LifePayLifePayChannlesRakeStatistics objectData = new LifePayLifePayChannlesRakeStatistics();
objectData.TotalRakePrice = totalRakePrice;
@@ -209,8 +214,9 @@
s.PayAmountStr = s.PayAmount.ToString("F2");
s.ChannlesRakeRateStr = s.ChannlesRakeRate.ToString("F0") + "%";
s.ChannlesRakePriceStr = s.ChannlesRakePrice.ToString("F2");
- s.FinishTimeStr = s.FinishTime.ToString(LifePaymentConstant.DateTimeFormatStr.yyyyMMddHHmmss);
+ s.FinishTimeStr = s.FinishTime.HasValue ? s.FinishTime.Value.ToString(LifePaymentConstant.DateTimeFormatStr.yyyyMMddHHmmss) : "";
});
+ CheckExtensions.IfTrueThrowUserFriendlyException(result.IsNullOrEmpty(), "鏆傛棤鏁版嵁瀵煎嚭");
return result;
}
@@ -228,11 +234,11 @@
CheckExtensions.IfTrueThrowUserFriendlyException(input.OrderNo == null, "璇疯緭鍏ヤ笟鍔¤鍗曞彿");
CheckExtensions.IfTrueThrowUserFriendlyException(input.RechargeAmount <= 0, "鍏呭�奸噾棰濆簲澶т簬0");
CheckExtensions.IfTrueThrowUserFriendlyException(input.Voucher == null, "璇锋彁浜ゅ厖鍊煎嚟璇�");
- var repeat = await _lifePayRechargeReceiptsRepository.Where(x => x.IsDeleted == false && x.OrderNo == input.OrderNo).FirstOrDefaultAsync();
- CheckExtensions.IfTrueThrowUserFriendlyException(repeat != null && repeat.Id != input.Id, "涓氬姟璁㈠崟鍙烽噸澶�");
+ var repeat = await _lifePayRechargeReceiptsRepository.Where(x => x.OrderNo == input.OrderNo && x.Id != input.Id).AnyAsync();
+ CheckExtensions.IfTrueThrowUserFriendlyException(repeat, "涓氬姟璁㈠崟鍙烽噸澶�");
if (input.Id.HasValue)
{
- var payRechargeReceipts = await _lifePayRechargeReceiptsRepository.Where(x => x.IsDeleted == false && x.Id == input.Id.Value).FirstOrDefaultAsync();
+ var payRechargeReceipts = await _lifePayRechargeReceiptsRepository.Where(x => x.Id == input.Id.Value).FirstOrDefaultAsync();
payRechargeReceipts.OrderNo = input.OrderNo;
payRechargeReceipts.RechargeAmount = input.RechargeAmount;
payRechargeReceipts.Remark = input.Remark;
@@ -260,8 +266,8 @@
public async Task AddLifePayExpensesReceipts(AddLifePayExpensesReceiptsInput input)
{
var repeat = await _lifePayExpensesReceiptsRepository.Where(x => x.ExpensesReceiptsType == input.ExpensesReceiptsType
- && x.OrderNo == input.OrderNo).FirstOrDefaultAsync();
- if (repeat == null)
+ && x.OrderNo == input.OrderNo).AnyAsync();
+ if (!repeat)
{
var data = new LifePayExpensesReceipts()
{
@@ -292,7 +298,7 @@
var query = await _aliPayApi.QueryAlipayTradeRefund(new OrderInQuiryInput() { OutTradeNo = input.OrderNo, OutRefundNo = input.OutRefundNo });
if (query.Code == AlipayResultCode.Success && query.RefundStatus == AlipayRefundStatus.Success)
{
- data.OrderNo = input.OutRefundNo;
+ data.OrderNo = input.OrderNo;
data.ExtraProperties = JsonConvert.SerializeObject(query);
data.FinishTime = Convert.ToDateTime(query.GmtRefundPay);
data.Amount = Convert.ToDecimal(query.RefundAmount);
@@ -309,6 +315,7 @@
data.OrderNo = input.OrderNo;
data.ExtraProperties = JsonConvert.SerializeObject(query);
data.FinishTime = Convert.ToDateTime(query.SuccessTime);
+ data.Amount = Convert.ToDecimal(query.Amount.Total) / 100;
await _lifePayExpensesReceiptsRepository.InsertAsync(data);
}
}
@@ -317,9 +324,10 @@
var query = await _wxPayApi.WxPayDomesticRefundsQuery(input.OutRefundNo);
if (query.Status == WxPayRefundStatus.閫�娆炬垚鍔�)
{
- data.OrderNo = input.OutRefundNo;
+ data.OrderNo = input.OrderNo;
data.ExtraProperties = JsonConvert.SerializeObject(query);
data.FinishTime = Convert.ToDateTime(query.SuccessTime);
+ data.Amount = Convert.ToDecimal(query.Amount.Total) / 100;
await _lifePayExpensesReceiptsRepository.InsertAsync(data);
}
}
@@ -330,34 +338,120 @@
}
/// <summary>
+ /// 鑾峰彇閫�娆惧钩鍙版祦姘磋鎯�
+ /// </summary>
+ /// <returns></returns>
+ public async Task<GetRefundPlatformTradeDetailOutput> GetRefundPlatformTradeDetail(string orderNo)
+ {
+ var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync();
+ CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�");
+ CheckExtensions.IfTrueThrowUserFriendlyException(order.LifePayRefundStatus != LifePayRefundStatusEnum.寰呴��娆� && order.LifePayRefundStatus != LifePayRefundStatusEnum.閫�娆句腑, "褰撳墠璁㈠崟鐘舵�佹棤娉曟煡鐪嬮��娆炬祦姘�");
+ CheckExtensions.IfTrueThrowUserFriendlyException(order.RefundOrderNo.IsNullOrEmpty(), "涓嶅瓨鍦ㄩ��娆炬祦姘磋鍗�");
+
+ var result = new GetRefundPlatformTradeDetailOutput();
+
+ if (order.LifePayType == LifePayTypeEnum.AliPay)
+ {
+ var query = await _aliPayApi.QueryAlipayTradeRefund(new OrderInQuiryInput() { OutTradeNo = order.OrderNo, OutRefundNo = order.RefundOrderNo });
+ result.OrderNo = order.OrderNo;
+ result.RefundOrderNo = order.RefundOrderNo;
+ result.OutOrderNo = query.TradeNo;
+ result.LifePayType = LifePayTypeEnum.AliPay;
+ result.RefundTime = order.RefundTime;
+ result.RefundSuccessTime = query.GmtRefundPay.IsNullOrEmpty() ? null : Convert.ToDateTime(query.GmtRefundPay);
+ result.RefundPlatformStatus = MapAlipayRefundStatusToPlatformEnum(query.RefundStatus);
+ }
+ else if (order.LifePayType == LifePayTypeEnum.WxPay)
+ {
+ var query = await _wxPayApi.WxPayDomesticRefundsQuery(order.RefundOrderNo);
+ result.OrderNo = order.OrderNo;
+ result.RefundOrderNo = order.RefundOrderNo;
+ result.OutOrderNo = query.TransactionId;
+ result.LifePayType = LifePayTypeEnum.WxPay;
+ result.RefundTime = query.CreateTime.IsNullOrEmpty() ? null : Convert.ToDateTime(query.CreateTime);
+ result.RefundSuccessTime = query.SuccessTime.IsNullOrEmpty() ? null : Convert.ToDateTime(query.SuccessTime);
+ result.RefundPlatformStatus = MapWxpayRefundStatusToPlatformEnum(query.Status);
+ }
+
+ return result;
+ }
+
+ /// <summary>
+ /// 鏀粯瀹濋��娆剧姸鎬佹槧灏勫埌閫氱敤閫�娆惧钩鍙扮姸鎬侊紙Switch 鐗堟湰锛�
+ /// </summary>
+ /// <param name="alipayStatus">鏀粯瀹濋��娆剧姸鎬�</param>
+ /// <returns>閫氱敤閫�娆惧钩鍙扮姸鎬�</returns>
+ public static RefundPlatformStatusEnum MapAlipayRefundStatusToPlatformEnum(string alipayRefundStatus)
+ {
+ return alipayRefundStatus switch
+ {
+ AlipayRefundStatus.Success => RefundPlatformStatusEnum.SUCCESS,
+ _ => RefundPlatformStatusEnum.PROCESSING
+ };
+ }
+
+ /// <summary>
+ /// 寰俊閫�娆剧姸鎬佹槧灏勫埌閫氱敤閫�娆惧钩鍙扮姸鎬侊紙Switch 鐗堟湰锛�
+ /// </summary>
+ /// <param name="wxPayRefundStatus">寰俊閫�娆剧姸鎬�</param>
+ /// <returns>閫氱敤閫�娆惧钩鍙扮姸鎬�</returns>
+ public static RefundPlatformStatusEnum MapWxpayRefundStatusToPlatformEnum(string wxPayRefundStatus)
+ {
+ return wxPayRefundStatus switch
+ {
+ WxPayRefundStatus.閫�娆炬垚鍔� => RefundPlatformStatusEnum.SUCCESS,
+ WxPayRefundStatus.閫�娆惧叧闂� => RefundPlatformStatusEnum.CLOSED,
+ WxPayRefundStatus.閫�娆惧鐞嗕腑 => RefundPlatformStatusEnum.PROCESSING,
+ _ => RefundPlatformStatusEnum.ABNORMAL
+ };
+ }
+
+ /// <summary>
/// 缁熻鎵�鏈夋秷璐规祦姘�
/// </summary>
/// <returns></returns>
public async Task GetAllLifePayConsumption()
{
var orderList = await _lifePayOrderRepository.Where(x => x.PayStatus == LifePayStatusEnum.宸叉敮浠�).ToListAsync();
-
foreach (var item in orderList)
{
- LifePayConsumption lifePayConsumption = new LifePayConsumption()
+
+ if (item.ACOOLYStatus != null)
{
- OrderNo = item.OrderNo,
- AcoolyOrderNo = item.ACOOLYOrderNo,
- Amount = item.PlatformDeductionAmount.Value,
- //ACOOLYStatus =
-
- };
-
- //switch (item.ACOOLYStatus)
- //{
- // case ACOOLYStatusEnum.鍏呭�间腑:
-
- // break;
- // default:break;
- //}
+ switch (item.ACOOLYStatus)
+ {
+ case ACOOLYStatusEnum.鍏呭�间腑:
+ await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�间腑, item.OrderNo, item.ACOOLYOrderNo,
+ item.PlatformDeductionAmount ?? 0, item.ChannelId, item.CreationTime, item.FinishTime);
+ break;
+ case ACOOLYStatusEnum.鍏呭�兼垚鍔�:
+ await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�间腑, item.OrderNo, item.ACOOLYOrderNo,
+ item.PlatformDeductionAmount ?? 0, item.ChannelId, item.CreationTime, item.FinishTime);
+ await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�兼垚鍔�, item.OrderNo, item.ACOOLYOrderNo,
+ item.PlatformDeductionAmount ?? 0, item.ChannelId, item.CreationTime, item.FinishTime);
+ break;
+ case ACOOLYStatusEnum.宸插畬鎴�:
+ await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�间腑, item.OrderNo, item.ACOOLYOrderNo,
+ item.PlatformDeductionAmount ?? 0, item.ChannelId, item.CreationTime, item.FinishTime);
+ await CreatLifePayConsumption(ACOOLYStatusEnum.宸插畬鎴�, item.OrderNo, item.ACOOLYOrderNo,
+ item.PlatformDeductionAmount ?? 0, item.ChannelId, item.CreationTime, item.FinishTime);
+ break;
+ case ACOOLYStatusEnum.鍏呭�煎け璐�:
+ await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�间腑, item.OrderNo, item.ACOOLYOrderNo,
+ item.PlatformDeductionAmount ?? 0, item.ChannelId, item.CreationTime, item.FinishTime);
+ await CreatLifePayConsumption(ACOOLYStatusEnum.鍏呭�煎け璐�, item.OrderNo, item.ACOOLYOrderNo,
+ item.PlatformDeductionAmount ?? 0, item.ChannelId, item.CreationTime, item.FinishTime);
+ break;
+ default: break;
+ }
+ }
}
}
+ /// <summary>
+ /// 缁熻鎵�鏈夋敹鏀祦姘�
+ /// </summary>
+ /// <returns></returns>
public async Task GetAllLifePayExpensesReceipts()
{
var orderlist = await (from a in _lifePayOrderRepository.Where(x => x.PayStatus >= LifePayStatusEnum.宸叉敮浠�)
@@ -368,8 +462,8 @@
OrderNo = a.OrderNo,
OutOrderNo = a.OutOrderNo,
RefundOrderNo = a.RefundOrderNo,
- LifePayType = a.LifePayType.Value,
- Amount = a.PayAmount.Value,
+ LifePayType = a.LifePayType ?? 0,
+ Amount = a.PayAmount ?? 0,
ExpensesReceiptsType = b.ExpensesReceiptsType
}).ToListAsync();
foreach (var item in orderlist)
@@ -389,42 +483,55 @@
await AddLifePayExpensesReceipts(input);
/// 鍑鸿处
+ AddLifePayExpensesReceiptsInput receipts = new AddLifePayExpensesReceiptsInput()
+ {
+ OrderNo = item.OrderNo,
+ OutOrderNo = item.OutOrderNo,
+ LifePayType = item.LifePayType,
+ Amount = item.Amount,
+ ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Expenses
+ };
if (item.RefundOrderNo.IsNotNullOrEmpty())
{
- input.OutRefundNo = item.OrderNo;
- input.ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Receipts;
- await AddLifePayExpensesReceipts(input);
-
- input.OutRefundNo = item.RefundOrderNo;
- input.ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Receipts;
- await AddLifePayExpensesReceipts(input);
+ receipts.OutRefundNo = item.RefundOrderNo;
+ receipts.ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Receipts;
+ await AddLifePayExpensesReceipts(receipts);
}
}
}
}
+ /// <summary>
+ /// 鑾峰彇鍏ㄩ儴娓犻亾鍒嗕剑
+ /// </summary>
+ /// <returns></returns>
public async Task GetAllChannlesRake()
{
- var orderlist = await _lifePayOrderRepository.Where(x => x.IsDeleted == false && x.PayStatus == LifePayStatusEnum.宸叉敮浠� && x.LifePayOrderStatus == LifePayOrderStatusEnum.宸插畬鎴�).ToListAsync();
+ var orderlist = await _lifePayOrderRepository.Where(x => x.PayStatus == LifePayStatusEnum.宸叉敮浠� && x.LifePayOrderStatus == LifePayOrderStatusEnum.宸插畬鎴�).ToListAsync();
foreach (var item in orderlist)
{
/// 姣涘埄
var grossProfit = item.RechargeAmount * (item.ChannleRate - item.PlatformRate) / 100;
/// 娓犻亾浣i噾 锛�(鍏呭�奸潰棰� * 娓犻亾鎶樻墸姣斾緥)-(鍏呭�奸潰棰� * 骞冲彴鎶樻墸姣斾緥)锛�* 浣i噾姣斾緥
- var channlesRakePrice = grossProfit * (item.ChannlesRakeRate) / 100;
+ var channlesRakePrice = grossProfit * item.ChannlesRakeRate / 100;
+
if (channlesRakePrice.HasValue)
{
LifePayChannlesRake lifePayChannlesRake = new LifePayChannlesRake()
{
OrderNo = item.OrderNo,
- PayAmount = item.PayAmount.Value,
- ChannlesRakeRate = item.ChannlesRakeRate.Value,
- ChannlesRakePrice = channlesRakePrice.Value,
- FinishTime = item.FinishTime.Value,
+ PayAmount = item.RechargeAmount ?? 0,
+ ChannlesRakeRate = item.ChannlesRakeRate ?? 0,
+ ChannlesRakePrice = channlesRakePrice ?? 0,
ChannelId = item.ChannelId,
};
- var repeat = _lifePayChannlesRakeRepository.Where(x => x.OrderNo == item.OrderNo).FirstOrDefaultAsync();
- if (repeat != null)
+ if (item.FinishTime.HasValue)
+ {
+ lifePayChannlesRake.FinishTime = item.FinishTime.Value;
+ }
+
+ var repeat = await _lifePayChannlesRakeRepository.Where(x => x.OrderNo == item.OrderNo).AnyAsync();
+ if (!repeat)
{
await _lifePayChannlesRakeRepository.InsertAsync(lifePayChannlesRake);
}
@@ -433,10 +540,99 @@
}
#endregion
- #region 绉佹湁
+ #region 鏂规硶
+ public async Task CreatLifePayConsumption(ACOOLYStatusEnum status, string orderNo, string aCOOLYOrderNo,
+ decimal platformDeductionAmount, string channelId, DateTime orderCreationTime, DateTime? orderFinishTime, decimal? channelRate = 0, decimal? parValue = 0, decimal? actualParValue = 0)
+ {
+ LifePayConsumption lifePayConsumption = new LifePayConsumption()
+ {
+ OrderNo = orderNo,
+ AcoolyOrderNo = aCOOLYOrderNo,
+ Amount = platformDeductionAmount,
+ ChannelId = channelId,
+ };
+ switch (status)
+ {
+ case ACOOLYStatusEnum.鍏呭�间腑:
+ lifePayConsumption.FinishTime = orderCreationTime;
+ lifePayConsumption.ACOOLYStatus = ACOOLYStatusEnum.鍏呭�间腑;
+ lifePayConsumption.FrozenStatus = ConsumptionFrozenStatusEnum.Frozen;
+ lifePayConsumption.Flow = ConsumptionFlowEnum.Unchanged;
+ lifePayConsumption.DeductionAmount = 0;
+ lifePayConsumption.FrozenAmount = lifePayConsumption.Amount;
+ break;
+ case ACOOLYStatusEnum.宸插畬鎴�:
+ if (orderFinishTime.HasValue)
+ {
+ lifePayConsumption.FinishTime = orderFinishTime.Value;
+ }
+
+ lifePayConsumption.ACOOLYStatus = ACOOLYStatusEnum.宸插畬鎴�;
+ lifePayConsumption.FrozenStatus = ConsumptionFrozenStatusEnum.Thaw;
+ lifePayConsumption.Flow = ConsumptionFlowEnum.Out;
+ lifePayConsumption.DeductionAmount = lifePayConsumption.Amount;
+ lifePayConsumption.FrozenAmount = 0;
+ break;
+ case ACOOLYStatusEnum.鍏呭�煎け璐�:
+ lifePayConsumption.FinishTime = orderCreationTime;
+ lifePayConsumption.ACOOLYStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
+ lifePayConsumption.FrozenStatus = ConsumptionFrozenStatusEnum.Frozen;
+ lifePayConsumption.Flow = ConsumptionFlowEnum.Unchanged;
+ lifePayConsumption.DeductionAmount = 0;
+ lifePayConsumption.FrozenAmount = lifePayConsumption.Amount;
+ break;
+ case ACOOLYStatusEnum.宸查��娆�:
+ if (orderFinishTime.HasValue)
+ {
+ lifePayConsumption.FinishTime = orderFinishTime.Value;
+ }
+
+ lifePayConsumption.ACOOLYStatus = ACOOLYStatusEnum.宸查��娆�;
+ lifePayConsumption.FrozenStatus = ConsumptionFrozenStatusEnum.Thaw;
+ lifePayConsumption.Flow = ConsumptionFlowEnum.Unchanged;
+ lifePayConsumption.DeductionAmount = 0;
+ lifePayConsumption.FrozenAmount = 0;
+ break;
+ case ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�:
+ lifePayConsumption.FinishTime = orderCreationTime;
+ lifePayConsumption.ACOOLYStatus = ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�;
+ lifePayConsumption.FrozenStatus = ConsumptionFrozenStatusEnum.Thaw;
+ lifePayConsumption.Flow = ConsumptionFlowEnum.Out;
+ lifePayConsumption.DeductionAmount = lifePayConsumption.Amount;
+ lifePayConsumption.FrozenAmount = 0;
+ if ((parValue ?? 0) != 0 && (parValue ?? 0) != actualParValue)
+ {
+ LifePayConsumption lifePayConsumptionOther = new LifePayConsumption()
+ {
+ OrderNo = orderNo,
+ AcoolyOrderNo = aCOOLYOrderNo,
+ Amount = ((parValue ?? 0) - (actualParValue ?? 0)) * (channelRate ?? 0),
+ ChannelId = channelId,
+ FinishTime = orderCreationTime,
+ ACOOLYStatus = ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�,
+ FrozenStatus = ConsumptionFrozenStatusEnum.Thaw,
+ Flow = ConsumptionFlowEnum.Unchanged,
+ DeductionAmount = 0,
+ FrozenAmount = 0
+ };
+ await _lifePayConsumption.InsertAsync(lifePayConsumptionOther);
+ }
+
+ break;
+ default: break;
+ }
+
+ var repeat = await _lifePayConsumption.Where(x => x.OrderNo == lifePayConsumption.OrderNo
+ && x.ACOOLYStatus == lifePayConsumption.ACOOLYStatus && x.Flow == lifePayConsumption.Flow).AnyAsync();
+ if (!repeat)
+ {
+ await _lifePayConsumption.InsertAsync(lifePayConsumption);
+ }
+ }
+
private async Task<IQueryable<LifePayChannlesRakeListOutput>> GetLifePayChannlesRakeListFilter(LifePayChannlesRakePageInput input)
{
- var list = _lifePayChannlesRakeRepository.Where(x => x.IsDeleted == false)
+ var list = _lifePayChannlesRakeRepository
.WhereIf(input.ChannelId.IsNotNullOrEmpty(), x => x.ChannelId == input.ChannelId)
.WhereIf(input.CreationTimeBegin.HasValue, x => x.CreationTime >= input.CreationTimeBegin)
.WhereIf(input.CreationTimeEnd.HasValue, x => x.CreationTime <= input.CreationTimeEnd)
@@ -454,11 +650,9 @@
FinishTime = x.FinishTime,
CreationTime = x.CreationTime,
});
-
-
return list;
}
- #endregion
+ #endregion
}
}
--
Gitblit v1.9.1