Your Name 1 долоо хоног өмнө
parent
commit
56a5cc5c16

+ 1 - 0
FuelCloud/Fuel.Application/Service/ITransactionsService.cs

@@ -14,6 +14,7 @@ namespace Fuel.Application.Service
          Task<ServiceResponse> CreateTransactions(UploadTransactions uploadTransactions);
 
         Task<ServiceResponse> GetTransactionsAsync(RequestModel input);
+        Task<ServiceResponse> GetPrepaymentTransactionsAsync(RequestModel input);
         Task<ServiceResponse> CommitPayment(int trxId, string AuthCode);
         Task<ServiceResponse> GetMiniProgramTransactionsUnpaidAsync(TransactionsInput input);
         Task<ServiceResponse> GetMiniProgramTransactionsUnpaidNozzleAsync(long NozzleId);

+ 247 - 11
FuelCloud/Fuel.Application/Service/TransactionsService.cs

@@ -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;
+        }
     }
 }

+ 2 - 0
FuelCloud/Fuel.Application/Service/UserService.cs

@@ -67,6 +67,7 @@ namespace Fuel.Application.Service
             permissionList.Add("Transactions:WXFindOrders:GET");
             permissionList.Add("Transactions:SendMessage:POST");
             permissionList.Add("Transactions:GetTransactions:POST");
+            permissionList.Add("Transactions:GetPrepaymentTransactions:POST");
 
             permissionList.Add("Site:AddMiniprogramUser:POST");
             permissionList.Add("Site:GetSiteInfo:GET");
@@ -119,6 +120,7 @@ namespace Fuel.Application.Service
             permissionList.Add("Transactions:WXFindOrders:GET");
             permissionList.Add("Transactions:SendMessage:POST");
             permissionList.Add("Transactions:GetTransactions:POST");
+            permissionList.Add("Transactions:GetPrepaymentTransactions:POST");
 
             permissionList.Add("Site:AddMiniprogramUser:POST");
             permissionList.Add("Site:GetSiteInfo:GET");

+ 14 - 0
FuelCloud/src/Fuel.Payment.Server/Controllers/TransactionsController.cs

@@ -46,6 +46,20 @@ namespace Fuel.PaymentServer.Controllers
             var serviceResult = await _transactionsService.GetTransactionsAsync(input);
             return Ok(serviceResult);
 
+        }
+        /// <summary>
+        /// 查询预支付订单
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [Permission("Transactions:GetPrepaymentTransactions:POST")]
+        [Route("GetPrepaymentTransactions")]
+        [HttpPost]
+        public async Task<IActionResult> GetPrepaymentTransactions(RequestModel input)
+        {
+            var serviceResult = await _transactionsService.GetPrepaymentTransactionsAsync(input);
+            return Ok(serviceResult);
+
         }
         /// <summary>
         /// 小程序用户查询未支付订单

+ 8 - 0
FuelCloud/src/FuelServer.Core/Transactions/Dto/RequestModel.cs

@@ -14,6 +14,14 @@ namespace Fuel.Core.Transactions.Dto
         public string PaymentMethod { get; set; }
         public string username { get; set; }
         public DateTime[]? TransactionTime { get; set; }
+        /// <summary>
+        /// 订单类型
+        /// </summary>
+        public string OrderType { get; set; }
+        /// <summary>
+        /// 支付状态
+        /// </summary>
+        public string OrderStatus { get; set; }
     }
 
     public class RequestModel

+ 80 - 0
FuelCloud/src/FuelServer.Core/Transactions/PrepaymentTransactionsList.cs

@@ -0,0 +1,80 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Fuel.Core.Transactions
+{
+    public class PrepaymentTransactionsList
+    {
+        /// <summary>
+        /// 订单流水号
+        /// </summary>
+        public string TransactionNumber { get; set; }
+        /// <summary>
+        /// 站点
+        /// </summary>
+        public string SiteName { get; set; }
+        /// <summary>
+        /// 油机号
+        /// </summary>
+        public string FuelId { get; set; }
+        /// <summary>
+        /// 油枪|油品
+        /// </summary>
+        public string NozzleProductName { get; set; }
+        /// <summary>
+        /// 单价升数
+        /// </summary>
+        public string PriceQty { get; set; }
+        /// <summary>
+        /// 原金额
+        /// </summary>
+        public string OriginalAmount { get; set; }
+        /// <summary>
+        /// 实际支付金额
+        /// </summary>
+        public string ActualPaymentAmount { get; set; }
+        /// <summary>
+        /// 加油时间
+        /// </summary>
+        public string TransactionTime { get; set; }
+        /// <summary>
+        /// 支付状态
+        /// </summary>
+        public string OrderStatus { get; set; }
+        /// <summary>
+        /// 授权状态
+        /// </summary>
+        public string authorizationStatus { get; set; }
+        /// <summary>
+        /// 支付方式
+        /// </summary>
+        public string PaymentMethod { get; set; }
+        /// <summary>
+        /// 用户名称
+        /// </summary>
+        public string UserName { get; set; }
+        /// <summary>
+        /// 退款金额
+        /// </summary>
+        public string RefundAmount { get; set; }
+        /// <summary>
+        /// 退款时间
+        /// </summary>
+        public string RefundTime{ get; set; }
+        /// <summary>
+        /// 退款状态
+        /// </summary>
+        public string RefundStatus { get; set; }
+        /// <summary>
+        /// 订单类型
+        /// </summary>
+        public string OrderType { get; set; }
+        /// <summary>
+        /// 用户手机号
+        /// </summary>
+        public string UserPhoneNumber { get; set; }
+    }
+}

+ 11 - 2
FuelCloud/src/FuelServer.Core/Transactions/TransactionsList.cs

@@ -1,4 +1,5 @@
-using Newtonsoft.Json;
+using FuelServer.Core.Entity;
+using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -49,6 +50,14 @@ namespace Fuel.Core.Transactions
         /// <summary>
         /// 退款金额
         /// </summary>
-        public decimal? RefundAmount { get; set; }
+        public string RefundAmount { get; set; }
+        /// <summary>
+        /// 订单类型
+        /// </summary>
+        public string OrderType { get; set; }
+        /// <summary>
+        /// 用户手机号
+        /// </summary>
+        public string UserPhoneNumber { get; set; }
     }
 }