|
@@ -150,40 +150,94 @@ namespace Fuel.Application.Service
|
|
|
return ServiceResponse.Error("订单信息插入失败");
|
|
|
}
|
|
|
}
|
|
|
+ /// <summary>
|
|
|
+ /// 后支付查询
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="input"></param>
|
|
|
+ /// <returns></returns>
|
|
|
public async Task<ServiceResponse> GetTransactionsAsync(RequestModel input)
|
|
|
{
|
|
|
Guid Buid = HttpRequestReader.GetCurrentBuId(); //站点id
|
|
|
var site = _fsql.Select<businessunitinfo>().Where(_ => _.Buid == Buid).First();
|
|
|
- var _nozzle = _fsql.Select<nozzle>().ToList();//根据油枪id查询外部枪号
|
|
|
- var user = _fsql.Select<miniprogramusers>().ToList();
|
|
|
+ var _nozzle = _fsql.Select<nozzle>().Where(_ => _.Buid == Buid).ToList();//根据油枪id查询外部枪号
|
|
|
+ var user = _fsql.Select<miniprogramusers>().Where(_ => _.Buid == Buid).ToList();
|
|
|
var paytype = _fsql.Select<paytype>().ToList();
|
|
|
Expression<Func<transactions, bool>> where = p => p.Buid == Buid;
|
|
|
+ //查油枪
|
|
|
if (input.filter.NozzleID != "")
|
|
|
{
|
|
|
long.TryParse(input.filter.NozzleID, out long NozzleID);
|
|
|
var nozzle = _nozzle.Where(_ => _.ExternalGunNumber == NozzleID).First();//根据油枪id查询外部枪号
|
|
|
where = CombineExpressions(where, p => p.NozzleId == nozzle.Id);
|
|
|
}
|
|
|
+ //查油品
|
|
|
if (input.filter.ProductName != "")
|
|
|
{
|
|
|
where = CombineExpressions(where, p => p.ProductName == input.filter.ProductName);
|
|
|
}
|
|
|
+ //查站点
|
|
|
if (input.filter.siteName != "")
|
|
|
{
|
|
|
|
|
|
where = CombineExpressions(where, p => p.Buid == site.Buid);
|
|
|
}
|
|
|
+ //查用户
|
|
|
if (input.filter.username != "")
|
|
|
{
|
|
|
var userid = user.Where(_ => _.UserName == input.filter.username).First();
|
|
|
where = CombineExpressions(where, p => p.MiniProgramID == userid.Id);
|
|
|
}
|
|
|
- //if (input.TransactionETime != null)
|
|
|
- //{
|
|
|
- // where = CombineExpressions(where, p => p.TransactionTime == input.TransactionETime);
|
|
|
- //}
|
|
|
- var result = await _entityHelper.GetEntitiesAsync<transactions>(where);
|
|
|
-
|
|
|
+ //查加油时间
|
|
|
+ if (input.filter.TransactionTime != null)
|
|
|
+ {
|
|
|
+ where = CombineExpressions(where, p => p.TransactionTime >= input.filter.TransactionTime[0] && p.TransactionTime <= input.filter.TransactionTime[1]);
|
|
|
+ }
|
|
|
+ //查支付模式
|
|
|
+ if (input.filter.OrderType != "")
|
|
|
+ {
|
|
|
+ transactionsORDERTYPE OrderType = transactionsORDERTYPE.Postpayment;
|
|
|
+ if (input.filter.OrderType == "0")
|
|
|
+ {
|
|
|
+ OrderType = transactionsORDERTYPE.Postpayment;
|
|
|
+ }
|
|
|
+ else if (input.filter.OrderType == "1")
|
|
|
+ {
|
|
|
+ OrderType = transactionsORDERTYPE.Prepayment;
|
|
|
+ }
|
|
|
+ where = CombineExpressions(where, p => p.OrderType == OrderType);
|
|
|
+ }
|
|
|
+ //查支付状态
|
|
|
+ if (input.filter.OrderStatus != "")
|
|
|
+ {
|
|
|
+ transactionsORDERSTATUS OrderStatus = transactionsORDERSTATUS.Paid;
|
|
|
+ if (input.filter.OrderStatus == "0")
|
|
|
+ {
|
|
|
+ OrderStatus = transactionsORDERSTATUS.Unpaid;
|
|
|
+ }
|
|
|
+ else if (input.filter.OrderStatus == "1")
|
|
|
+ {
|
|
|
+ OrderStatus = transactionsORDERSTATUS.Paid;
|
|
|
+ }
|
|
|
+ else if (input.filter.OrderStatus == "2")
|
|
|
+ {
|
|
|
+ OrderStatus = transactionsORDERSTATUS.Paying;
|
|
|
+ }
|
|
|
+ else if (input.filter.OrderStatus == "3")
|
|
|
+ {
|
|
|
+ OrderStatus = transactionsORDERSTATUS.CardPayment;
|
|
|
+ }
|
|
|
+ else if (input.filter.OrderStatus == "4")
|
|
|
+ {
|
|
|
+ OrderStatus = transactionsORDERSTATUS.Completed;
|
|
|
+ }
|
|
|
+ else if (input.filter.OrderStatus == "5")
|
|
|
+ {
|
|
|
+ OrderStatus = transactionsORDERSTATUS.Cancelled;
|
|
|
+ }
|
|
|
+ where = CombineExpressions(where, p => p.OrderStatus == OrderStatus);
|
|
|
+ }
|
|
|
+ var result = _fsql.Select<transactions>().Where(where).Count(out var total).Page(input.currentPage,input.pageSize).ToList();
|
|
|
+ result = result.OrderByDescending(_ => _.TransactionTime).ToList();
|
|
|
List<TransactionsList> list = new List<TransactionsList>();
|
|
|
foreach (var item in result)
|
|
|
{
|
|
@@ -196,20 +250,152 @@ namespace Fuel.Application.Service
|
|
|
transactions.TransactionNumber = item.TransactionNumber;
|
|
|
transactions.SiteName = site.Name;
|
|
|
transactions.NozzleProductName = item.NozzleId + " | " + item.ProductName;
|
|
|
- transactions.ActualPaymentAmount = item.ActualPaymentAmount.ToString();
|
|
|
+ transactions.ActualPaymentAmount = string.IsNullOrEmpty(item.ActualPaymentAmount.ToString()) ? null : item.ActualPaymentAmount.ToString() + "元";
|
|
|
transactions.TransactionTime = item.TransactionTime?.ToString("yyyy-MM-dd hh:mm:ss");
|
|
|
transactions.OrderStatus = GetChineseStatus(item.OrderStatus);
|
|
|
- transactions.RefundAmount = item.RefundAmount;
|
|
|
+ transactions.RefundAmount = string.IsNullOrEmpty(item.RefundAmount.ToString()) ? null : item.RefundAmount.ToString() + "元";
|
|
|
+ transactions.OrderType = item.OrderType == transactionsORDERTYPE.Prepayment ? "预支付":"后支付";
|
|
|
if (item.MiniProgramID != null)
|
|
|
{
|
|
|
var userid = user.Where(_ => _.Id == item.MiniProgramID).FirstOrDefault();
|
|
|
transactions.UserName = userid?.UserName;
|
|
|
+ string UserPhoneNumber = user.Where(_ => _.Id == item.MiniProgramID).FirstOrDefault()?.UserPhoneNumber;
|
|
|
+ if (!string.IsNullOrEmpty(UserPhoneNumber))
|
|
|
+ {
|
|
|
+ transactions.UserPhoneNumber = HideMiddleDigits(UserPhoneNumber,3,4);
|
|
|
+ }
|
|
|
}
|
|
|
transactions.PriceQty = item.Price + " | " + item.Qty;
|
|
|
transactions.PaymentMethod = pay;
|
|
|
+
|
|
|
list.Add(transactions);
|
|
|
}
|
|
|
- return ServiceResponse.Ok(list);
|
|
|
+
|
|
|
+ return ServiceResponse.Ok(new { list, total });
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 预支付查询
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="input"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<ServiceResponse> GetPrepaymentTransactionsAsync(RequestModel input)
|
|
|
+ {
|
|
|
+ Guid Buid = HttpRequestReader.GetCurrentBuId(); //站点id
|
|
|
+ var site = _fsql.Select<businessunitinfo>().Where(_ => _.Buid == Buid).First();
|
|
|
+ var _nozzle = _fsql.Select<nozzle>().Where(_ => _.Buid == Buid).ToList();//根据油枪id查询外部枪号
|
|
|
+ var user = _fsql.Select<miniprogramusers>().Where(_ => _.Buid == Buid).ToList();
|
|
|
+ var paytype = _fsql.Select<paytype>().ToList();
|
|
|
+ Expression<Func<transactions, bool>> where = p => p.Buid == Buid;
|
|
|
+ //查油枪
|
|
|
+ if (input.filter.NozzleID != "")
|
|
|
+ {
|
|
|
+ long.TryParse(input.filter.NozzleID, out long NozzleID);
|
|
|
+ var nozzle = _nozzle.Where(_ => _.ExternalGunNumber == NozzleID).First();//根据油枪id查询外部枪号
|
|
|
+ where = CombineExpressions(where, p => p.NozzleId == nozzle.Id);
|
|
|
+ }
|
|
|
+ //查油品
|
|
|
+ if (input.filter.ProductName != "")
|
|
|
+ {
|
|
|
+ where = CombineExpressions(where, p => p.ProductName == input.filter.ProductName);
|
|
|
+ }
|
|
|
+ //查站点
|
|
|
+ if (input.filter.siteName != "")
|
|
|
+ {
|
|
|
+
|
|
|
+ where = CombineExpressions(where, p => p.Buid == site.Buid);
|
|
|
+ }
|
|
|
+ //查用户
|
|
|
+ if (input.filter.username != "")
|
|
|
+ {
|
|
|
+ var userid = user.Where(_ => _.UserName == input.filter.username).First();
|
|
|
+ where = CombineExpressions(where, p => p.MiniProgramID == userid.Id);
|
|
|
+ }
|
|
|
+ //查加油时间
|
|
|
+ if (input.filter.TransactionTime != null)
|
|
|
+ {
|
|
|
+ where = CombineExpressions(where, p => p.TransactionTime >= input.filter.TransactionTime[0] && p.TransactionTime <= input.filter.TransactionTime[1]);
|
|
|
+ }
|
|
|
+ //查支付模式
|
|
|
+ if (input.filter.OrderType != "")
|
|
|
+ {
|
|
|
+ transactionsORDERTYPE OrderType = transactionsORDERTYPE.Postpayment;
|
|
|
+ if (input.filter.OrderType == "0")
|
|
|
+ {
|
|
|
+ OrderType = transactionsORDERTYPE.Postpayment;
|
|
|
+ }
|
|
|
+ else if (input.filter.OrderType == "1")
|
|
|
+ {
|
|
|
+ OrderType = transactionsORDERTYPE.Prepayment;
|
|
|
+ }
|
|
|
+ where = CombineExpressions(where, p => p.OrderType == OrderType);
|
|
|
+ }
|
|
|
+ //查支付状态
|
|
|
+ if (input.filter.OrderStatus != "")
|
|
|
+ {
|
|
|
+ transactionsORDERSTATUS OrderStatus = transactionsORDERSTATUS.Paid;
|
|
|
+ if (input.filter.OrderStatus == "0")
|
|
|
+ {
|
|
|
+ OrderStatus = transactionsORDERSTATUS.Unpaid;
|
|
|
+ }
|
|
|
+ else if (input.filter.OrderStatus == "1")
|
|
|
+ {
|
|
|
+ OrderStatus = transactionsORDERSTATUS.Paid;
|
|
|
+ }
|
|
|
+ else if (input.filter.OrderStatus == "2")
|
|
|
+ {
|
|
|
+ OrderStatus = transactionsORDERSTATUS.Paying;
|
|
|
+ }
|
|
|
+ else if (input.filter.OrderStatus == "3")
|
|
|
+ {
|
|
|
+ OrderStatus = transactionsORDERSTATUS.CardPayment;
|
|
|
+ }
|
|
|
+ else if (input.filter.OrderStatus == "4")
|
|
|
+ {
|
|
|
+ OrderStatus = transactionsORDERSTATUS.Completed;
|
|
|
+ }
|
|
|
+ else if (input.filter.OrderStatus == "5")
|
|
|
+ {
|
|
|
+ OrderStatus = transactionsORDERSTATUS.Cancelled;
|
|
|
+ }
|
|
|
+ where = CombineExpressions(where, p => p.OrderStatus == OrderStatus);
|
|
|
+ }
|
|
|
+ var result = _fsql.Select<transactions>().Where(where).Count(out var total).Page(input.currentPage, input.pageSize).ToList();
|
|
|
+ result = result.OrderByDescending(_ => _.TransactionTime).ToList();
|
|
|
+ List<PrepaymentTransactionsList> list = new List<PrepaymentTransactionsList>();
|
|
|
+ foreach (var item in result)
|
|
|
+ {
|
|
|
+ // var nozzle = _nozzle.Where(_ => _.Id == item.NozzleId)?.First();//根据油枪id查询外部枪号
|
|
|
+ var nozzle = _nozzle.FirstOrDefault(_ => _.Id == item.NozzleId);//根据油枪id查询外部枪号
|
|
|
+
|
|
|
+
|
|
|
+ var pay = paytype.FirstOrDefault(_ => _.Id == item.PaymentMethod)?.Name;
|
|
|
+ PrepaymentTransactionsList transactions = new PrepaymentTransactionsList();
|
|
|
+ transactions.TransactionNumber = item.TransactionNumber;
|
|
|
+ transactions.SiteName = site.Name;
|
|
|
+ transactions.NozzleProductName = item.NozzleId + " | " + item.ProductName;
|
|
|
+ transactions.ActualPaymentAmount = string.IsNullOrEmpty(item.ActualPaymentAmount.ToString()) ? null : item.ActualPaymentAmount.ToString() + "元";
|
|
|
+ transactions.TransactionTime = item.TransactionTime?.ToString("yyyy-MM-dd hh:mm:ss");
|
|
|
+ transactions.OrderStatus = GetChineseStatus(item.OrderStatus);
|
|
|
+ transactions.RefundAmount = string.IsNullOrEmpty(item.RefundAmount.ToString()) ? null : item.RefundAmount.ToString() + "元";
|
|
|
+ transactions.OrderType = item.OrderType == transactionsORDERTYPE.Prepayment ? "预支付" : "后支付";
|
|
|
+ if (item.MiniProgramID != null)
|
|
|
+ {
|
|
|
+ var userid = user.Where(_ => _.Id == item.MiniProgramID).FirstOrDefault();
|
|
|
+ transactions.UserName = userid?.UserName;
|
|
|
+ string UserPhoneNumber = user.Where(_ => _.Id == item.MiniProgramID).FirstOrDefault()?.UserPhoneNumber;
|
|
|
+ if (!string.IsNullOrEmpty(UserPhoneNumber))
|
|
|
+ {
|
|
|
+ transactions.UserPhoneNumber = HideMiddleDigits(UserPhoneNumber, 3, 4);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ transactions.PriceQty = item.Price + " | " + item.Qty;
|
|
|
+ transactions.PaymentMethod = pay;
|
|
|
+ transactions.authorizationStatus = GetAuthorizationStatus(item.authorizationStatus);
|
|
|
+ transactions.RefundStatus = GetRefundStatus(item.RefundStatus);
|
|
|
+ list.Add(transactions);
|
|
|
+ }
|
|
|
+
|
|
|
+ return ServiceResponse.Ok(new { list, total });
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 小程序查询未支付订单
|
|
@@ -655,6 +841,36 @@ namespace Fuel.Application.Service
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
+ public static string GetAuthorizationStatus(AuthorizationStatus status)
|
|
|
+ {
|
|
|
+ switch (status)
|
|
|
+ {
|
|
|
+ case AuthorizationStatus.Unauthorized:
|
|
|
+ return "未授权";
|
|
|
+ case AuthorizationStatus.Authorized:
|
|
|
+ return "已授权";
|
|
|
+ case AuthorizationStatus.WaitAuthorization:
|
|
|
+ return "等待授权";
|
|
|
+ case AuthorizationStatus.FillingUp:
|
|
|
+ return "加油中";
|
|
|
+ default:
|
|
|
+ throw new ArgumentOutOfRangeException(nameof(status), status, null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public static string GetRefundStatus(RefundStatus status)
|
|
|
+ {
|
|
|
+ switch (status)
|
|
|
+ {
|
|
|
+ case RefundStatus.NotRefunded:
|
|
|
+ return "无退款";
|
|
|
+ case RefundStatus.FullyRefunded:
|
|
|
+ return "订单全额退款";
|
|
|
+ case RefundStatus.PartiallyRefunded:
|
|
|
+ return "订单部分退款";
|
|
|
+ default:
|
|
|
+ throw new ArgumentOutOfRangeException(nameof(status), status, null);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
public static string GetChineseStatus(transactionsORDERSTATUS status)
|
|
|
{
|
|
@@ -676,5 +892,25 @@ namespace Fuel.Application.Service
|
|
|
throw new ArgumentOutOfRangeException(nameof(status), status, null);
|
|
|
}
|
|
|
}
|
|
|
+ /// <summary>
|
|
|
+ /// 隐藏手机号中间的几位数字
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="phoneNumber">原始手机号</param>
|
|
|
+ /// <param name="startIndex">开始隐藏的位置</param>
|
|
|
+ /// <param name="length">需要隐藏的字符长度</param>
|
|
|
+ /// <returns>处理后的手机号</returns>
|
|
|
+ public static string HideMiddleDigits(string phoneNumber, int startIndex, int length)
|
|
|
+ {
|
|
|
+ if (string.IsNullOrEmpty(phoneNumber) || startIndex + length > phoneNumber.Length)
|
|
|
+ {
|
|
|
+ return phoneNumber; // 如果输入无效,则返回原始手机号
|
|
|
+ }
|
|
|
+
|
|
|
+ string visiblePartStart = phoneNumber.Substring(0, startIndex); // 手机号前部分
|
|
|
+ string hiddenPart = new string('*', length); // 中间隐藏部分
|
|
|
+ string visiblePartEnd = phoneNumber.Substring(startIndex + length); // 手机号后部分
|
|
|
+
|
|
|
+ return visiblePartStart + hiddenPart + visiblePartEnd;
|
|
|
+ }
|
|
|
}
|
|
|
}
|