From 384ce2060d3422341f96c2f897e807b52d15cb0c Mon Sep 17 00:00:00 2001 From: lingling <kety1122@163.com> Date: 星期一, 24 三月 2025 15:06:31 +0800 Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/LifePaymentApi --- LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml | 80 +++++++ LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs | 30 +- LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs | 29 ++ LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs | 4 LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs | 4 LifePayment/LifePayment.Application/Setting/OperateHistoryService.cs | 1 LifePayment/LifePayment.Application/LifePay/StatisticsService.cs | 6 LifePayment/LifePayment.Application/LifePaymentServicesApplicationModuleAutoMapperProfile.cs | 2 LifePayment/LifePayment.Domain.Shared/WeChat/WxPayPostBaseModel.cs | 17 + LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs | 118 +++++++++++ LifePayment/LifePayment.Application.Contracts/User/CreateBackClientUserInput.cs | 9 LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs | 14 + LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs | 34 +++ LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml | 13 + LifePayment/LifePayment.Application/LifePay/LifePayService.cs | 192 +++++++++++++++---- 15 files changed, 480 insertions(+), 73 deletions(-) diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs index 8fd6eb2..dd567e3 100644 --- a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs +++ b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs @@ -50,7 +50,7 @@ Task LifePaySuccessHandler(string orderNo, string outOrderNo); /// <summary> - /// 鏀粯鎴愬姛鍥炶皟澶勭悊 + /// 渚涘簲鍟嗗洖璋冨鐞� /// </summary> /// <param name="orderNo"></param> /// <param name="acoolyOrderNo"></param> @@ -58,7 +58,7 @@ /// <param name="acoolyStatus"></param> /// <param name="payAmount"></param> /// <returns></returns> - Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status, ACOOLYStatusEnum acoolyStatus, decimal payAmount); + Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status, ACOOLYStatusEnum acoolyStatus, decimal payAmount, string refundApplyRemark); /// <summary> /// 鍒涘缓鐢熸椿缂磋垂璇濊垂璁㈠崟 @@ -142,6 +142,13 @@ /// </summary> /// <returns></returns> Task<List<LifePayRateListOutput>> GetRate(); + + + /// <summary> + /// 鑾峰彇娓犻亾鎶樻墸 + /// </summary> + /// <returns></returns> + Task<ChannelRateOutput> GetChannelRate(ChannelsBaseInput input); /// <summary> /// 鑾峰彇鎵嬬画璐硅垂鐜� @@ -250,6 +257,9 @@ Task<List<LifePayOrderListTemplate>> GetLifePayOrderPageExport(QueryLifePayOrderListInput input); + + Task<List<LifePayRefundOrderListTemplate>> GetLifePayRefudOrderPageExport(QueryLifePayRefundOrderListInput input); + Task<string> GetBillErceiptExport(string orderNo); /// <summary> diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs index f54f710..16a691b 100644 --- a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs +++ b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs @@ -357,6 +357,10 @@ /// 璁㈠崟鐘舵�� /// </summary> public LifePayOrderStatusEnum? LifePayOrderStatus { get; set; } + /// <summary> + /// 璁㈠崟鐘舵�� + /// </summary> + public LifePayRefundStatusEnum? LifePayRefundStatus { get; set; } /// <summary> /// 鐢ㄦ埛Id diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs index 88dfae2..da36ea5 100644 --- a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs +++ b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs @@ -176,6 +176,11 @@ public string OrderNo { get; set; } /// <summary> + /// 閫�娆捐鍗曞彿 + /// </summary> + public string RefundOrderNo { get; set; } + + /// <summary> /// 鍏呭�奸噾棰� /// </summary> public decimal RechargeAmount { get; set; } @@ -379,6 +384,103 @@ } + +public class LifePayRefundOrderListTemplate +{ + + [Name("搴忓彿")] + public int SerialNumber { get; set; } + + [Name("鎵嬫満鍙�")] + public string PhoneNumber { get; set; } + + public LifePayTypeEnum? LifePayType { get; set; } + + public LifePayOrderTypeEnum LifePayOrderType { get; set; } + + [Name("鍏呭�肩被鍨�")] + public string LifePayOrderTypeStr { get; set; } + + [Name("鍏呭�兼笭閬�")] + public string ChannelName { get; set; } + + /// <summary> + /// 閫�娆剧敵璇锋椂闂� + /// </summary> + [Name("鐢宠閫�娆炬椂闂�")] + public string RefundApplyTimeStr { get; set; } + + /// <summary> + /// 涓嬪崟鏃堕棿 + /// </summary> + public DateTime CreationTime { get; set; } + + [Name("涓嬪崟鏃堕棿")] + public string CreationTimeStr { get; set; } + + [Name("閫�娆捐鍗曞彿")] + public string RefundOrderNo { get; set; } + + + [Name("鍏呭�奸噾棰�")] + public string RechargeAmountStr { get; set; } + + + /// <summary> + /// 鍏呭�奸噾棰� + /// </summary> + public decimal RechargeAmount { get; set; } + + /// <summary> + /// 瀹為檯鍒拌处閲戦 + /// </summary> + [Name("瀹為檯鍒拌处閲戦")] + public string ActualReceivedAmount { get; set; } + + /// <summary> + /// 瀹炰粯閲戦 + /// </summary> + public decimal PayAmount { get; set; } + + [Name("瀹炰粯閲戦")] + public string PayAmountStr { get; set; } + + [Name("閫�娆炬笭閬�")] + public string LifePayTypeStr { get; set; } + + /// <summary> + /// 閫�娆鹃噾棰� + /// </summary> + [Name("閫�娆鹃噾棰�")] + public decimal? RefundPrice { get; set; } + + + public ACOOLYStatusEnum ACOOLYStatus { get; set; } + + /// <summary> + /// 渚涘簲鍟嗚鍗曠姸鎬� + /// </summary> + [Name("渚涘簲鍟嗚鍗曠姸鎬�")] + public string ACOOLYStatusStr { get; set; } + + + /// <summary> + /// 瀹屾垚鏃堕棿 + /// </summary> + public DateTime? FinishTime { get; set; } + + + /// <summary> + /// 骞冲彴閫�娆剧姸鎬� + /// </summary> + [Name("骞冲彴閫�娆剧姸鎬�")] + public string LifePayRefundStatus { get; set; } + + [Name("瀹屾垚鏃堕棿")] + public string FinishTimeStr { get; set; } + + +} public class UserLifePayOrderOutput { public Guid Id { get; set; } @@ -457,10 +559,21 @@ public string RefundApplyRemark { get; set; } public string RefundCheckRemark { get; set; } + /// <summary> /// 娓犻亾娴佹按鍙� /// </summary> public string ACOOLYOrderNo { get; set; } + + /// <summary> + /// 骞冲彴閫�娆剧姸鎬� + /// </summary> + public LifePayRefundStatusEnum? LifePayRefundStatus { get; set; } + + /// <summary> + /// 骞冲彴鐘舵�� + /// </summary> + public ACOOLYStatusEnum? ACOOLYStatus { get; set; } } public class LifePayOrderOutput @@ -924,4 +1037,9 @@ /// </summary> public int YesterdayActiveUsers { get; set; } +} + +public class ChannelRateOutput +{ + public decimal ChannlesRate { get; set; } } \ No newline at end of file diff --git a/LifePayment/LifePayment.Application.Contracts/User/CreateBackClientUserInput.cs b/LifePayment/LifePayment.Application.Contracts/User/CreateBackClientUserInput.cs index 2dbdc47..76e561d 100644 --- a/LifePayment/LifePayment.Application.Contracts/User/CreateBackClientUserInput.cs +++ b/LifePayment/LifePayment.Application.Contracts/User/CreateBackClientUserInput.cs @@ -1,5 +1,7 @@ -锘縰sing System; +锘縰sing LifePayment.Domain.Shared; +using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using ZeroD.Util; namespace LifePayment.Application.Contracts @@ -15,11 +17,16 @@ /// 鎵嬫満鍙� /// </summary> public string PhoneNumber { get; set; } + + /// <summary> + /// 瀵嗙爜 + /// </summary> public string Password { get; set; } /// <summary> /// 璐︽埛 /// </summary> + [RegularExpression(LifePaymentConstant.RegularExpression.UserNameEx, ErrorMessage = "璐﹀彿鏍煎紡涓嶆纭�")] public string UserName { get; set; } public string Remark { get; set; } diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs index 65a57b4..0db8bd2 100644 --- a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs +++ b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs @@ -152,6 +152,16 @@ } /// <summary> + /// 鑾峰彇娓犻亾鎶樻墸 + /// </summary> + /// <returns></returns> + public async Task<ChannelRateOutput> GetChannelRate(ChannelsBaseInput input) + { + return _lifePayChannlesRep.Where(x => x.IsDeleted == false && x.ChannlesNum == input.CheckChannelId).Select(x => new ChannelRateOutput() { ChannlesRate = x.ChannlesRate }) + .FirstOrDefault(); + } + + /// <summary> /// 鑾峰彇鎵嬬画璐硅垂鐜� /// </summary> /// <returns></returns> @@ -234,6 +244,7 @@ /// <returns></returns> public async Task<PageOutput<LifePayOrderListOutput>> GetLifePayOrderPage(QueryLifePayOrderListInput input) { + var channles = await _lifePayChannlesRep.Where(x => x.ChannlesName.Contains(input.KeyWords)).Select(x => x.ChannlesNum).ToListAsync(); var result = await (from a in _channelFilter.GetChannelLifePayOrderFilter(_lifePayOrderRepository) .WhereIf(input.BeginFinishTime.HasValue, x => x.FinishTime >= input.BeginFinishTime) .WhereIf(input.EndFinishTime.HasValue, x => x.FinishTime <= input.EndFinishTime) @@ -245,7 +256,7 @@ .WhereIf(input.ACOOLYStatus.HasValue, x => x.ACOOLYStatus == input.ACOOLYStatus.Value) .WhereIf(input.LifePayOrderType.HasValue, x => x.LifePayOrderType == input.LifePayOrderType.Value) .WhereIf(input.UserId.HasValue, x => x.UserId == input.UserId.Value) - .WhereIf(input.KeyWords.IsNotNullOrEmpty(), x => x.PhoneNumber.Contains(input.KeyWords) || x.OrderNo.Contains(input.KeyWords) || x.OutOrderNo.Contains(input.KeyWords) || x.ACOOLYOrderNo.Contains(input.KeyWords)) + .WhereIf(input.KeyWords.IsNotNullOrEmpty(), x => x.OrderNo.Contains(input.KeyWords) || x.OutOrderNo.Contains(input.KeyWords) || x.ACOOLYOrderNo.Contains(input.KeyWords) || channles.Contains(x.ChannelId)) join b in _lifePayChannlesRep on a.ChannelId equals b.ChannlesNum into temp from b in temp.DefaultIfEmpty() select new LifePayOrderListOutput @@ -290,15 +301,14 @@ { var result = await (from a in _channelFilter.GetChannelLifePayOrderFilter(_lifePayOrderRepository) - .Where(x => x.PayStatus == LifePayStatusEnum.寰呴��娆� || x.PayStatus == LifePayStatusEnum.宸查��娆� || x.PayStatus == LifePayStatusEnum.閫�娆句腑 - || x.LifePayOrderStatus == LifePayOrderStatusEnum.閫�娆惧緟瀹℃牳 || x.LifePayOrderStatus == LifePayOrderStatusEnum.宸查��娆� || x.LifePayOrderStatus == LifePayOrderStatusEnum.閫�娆惧け璐� + .Where(x => x.LifePayOrderStatus == LifePayOrderStatusEnum.寰呴��娆� || x.LifePayOrderStatus == LifePayOrderStatusEnum.宸查��娆� || x.LifePayOrderStatus == LifePayOrderStatusEnum.閫�娆句腑 || x.LifePayRefundStatus > LifePayRefundStatusEnum.鏃犻渶閫�娆�) .WhereIf(input.BeginFinishTime.HasValue, x => x.FinishTime >= input.BeginFinishTime) .WhereIf(input.EndFinishTime.HasValue, x => x.FinishTime <= input.EndFinishTime) .WhereIf(input.BeginRefundApplyTime.HasValue, x => x.RefundApplyTime >= input.BeginRefundApplyTime) .WhereIf(input.LifePayType.HasValue, x => x.LifePayType == input.LifePayType) .WhereIf(input.EndRefundApplyTime.HasValue, x => x.RefundApplyTime <= input.EndRefundApplyTime) - .WhereIf(input.LifePayOrderStatus.HasValue, x => x.LifePayOrderStatus == input.LifePayOrderStatus.Value) + .WhereIf(input.LifePayRefundStatus.HasValue, x => x.LifePayRefundStatus == input.LifePayRefundStatus.Value) .WhereIf(input.ACOOLYStatus.HasValue, x => x.ACOOLYStatus == input.ACOOLYStatus.Value) .WhereIf(input.LifePayOrderType.HasValue, x => x.LifePayOrderType == input.LifePayOrderType.Value) .WhereIf(input.UserId.HasValue, x => x.UserId == input.UserId.Value) @@ -338,6 +348,44 @@ return result; } + + /// <summary> + /// 閫�娆捐鍗曞垎椤� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + public async Task<List<LifePayRefundOrderListTemplate>> GetLifePayRefudOrderPageExport(QueryLifePayRefundOrderListInput input) + { + + + var result = await (await GetLifePayRefundOrderListFilter(input)).Select(x => new LifePayRefundOrderListTemplate + { + FinishTime = x.FinishTime, + RefundPrice = x.RefundPrice, + LifePayOrderType = x.LifePayOrderType, + LifePayType = x.LifePayType, + PayAmount = x.PayAmount, + PhoneNumber = x.PhoneNumber, + RefundOrderNo = x.RefundOrderNo, + ChannelName = x.ChannelName + }).OrderByDescending(r => r.CreationTime).ToListAsync(); + var i = 0; + result.ForEach(s => + { + s.SerialNumber = ++i; + s.ACOOLYStatusStr = s.ACOOLYStatus.GetDescription(); + s.LifePayOrderTypeStr = s.LifePayOrderType.GetDescription(); + s.CreationTimeStr = s.CreationTime.ToString(LifePaymentConstant.DateTimeFormatStr.yyyyMMddHHmm); + s.RechargeAmountStr = s.RechargeAmount.ToString("F2"); + s.ActualReceivedAmount = s.ActualReceivedAmount; + s.LifePayRefundStatus = s.LifePayRefundStatus.GetDescription(); + s.PayAmountStr = s.PayAmount.ToString("F2"); + s.LifePayTypeStr = s.LifePayType.GetDescription(); + s.FinishTimeStr = !s.FinishTime.HasValue ? string.Empty : s.FinishTime.Value.ToString(LifePaymentConstant.DateTimeFormatStr.yyyyMMddHHmm); + }); + return result; + } + public async Task<LifePayOrderOutput> GetLifePayOrderDetail(string orderNo) { @@ -477,6 +525,8 @@ RefundApplyRemark = x.RefundApplyRemark, RefundTime = x.RefundTime, ACOOLYOrderNo = x.ACOOLYOrderNo, + LifePayRefundStatus = x.LifePayRefundStatus, + ACOOLYStatus = x.ACOOLYStatus, }) .GetPageResult(input.PageModel); } @@ -777,7 +827,7 @@ var orderInput = new CreateLifePayOrderInput { OrderNo = channle.ChannlesNum + CreateOrderNo(), - LifePayOrderStatus = LifePayOrderStatusEnum.寰呯‘璁�, + LifePayOrderStatus = LifePayOrderStatusEnum.鍏呭�间腑, LifePayOrderType = LifePayOrderTypeEnum.璇濊垂璁㈠崟, //LifePayType = input.LifePayType, OrderParamDetailJsonStr = JsonConvert.SerializeObject(input.ProductData), @@ -826,7 +876,7 @@ var orderInput = new CreateLifePayOrderInput { OrderNo = channle.ChannlesNum + CreateOrderNo(), - LifePayOrderStatus = LifePayOrderStatusEnum.寰呯‘璁�, + LifePayOrderStatus = LifePayOrderStatusEnum.鍏呭�间腑, LifePayOrderType = LifePayOrderTypeEnum.鐢佃垂璁㈠崟, // LifePayType = input.LifePayType, OrderParamDetailJsonStr = JsonConvert.SerializeObject(input.ProductData), @@ -875,7 +925,7 @@ var orderInput = new CreateLifePayOrderInput { OrderNo = channle.ChannlesNum + CreateOrderNo(), - LifePayOrderStatus = LifePayOrderStatusEnum.寰呯‘璁�, + LifePayOrderStatus = LifePayOrderStatusEnum.鍏呭�间腑, LifePayOrderType = LifePayOrderTypeEnum.鐕冩皵璁㈠崟, // LifePayType = input.LifePayType, OrderParamDetailJsonStr = JsonConvert.SerializeObject(input.ProductData), @@ -1188,7 +1238,7 @@ } order.LifePayRefundStatus = LifePayRefundStatusEnum.鏃犻渶閫�娆�; - order.LifePayOrderStatus = LifePayOrderStatusEnum.寰呯‘璁�; + order.LifePayOrderStatus = LifePayOrderStatusEnum.鍏呭�间腑; //SetOrderStatus(order, result.Code); order.OutRequestNo = result.RequestNo.IsNullOrEmpty() ? null : result.RequestNo; order.ACOOLYOrderNo = result.ACOOLYOrderNo.IsNullOrEmpty() ? null : result.ACOOLYOrderNo; @@ -1196,7 +1246,7 @@ catch (Exception ex) { _logger.LogError(ex, "澶勭悊鐢熸椿缂磋垂鏀粯鎴愬姛鍥炶皟鏃跺紓甯�"); - order.LifePayOrderStatus = LifePayOrderStatusEnum.宸插け璐�; + order.LifePayOrderStatus = LifePayOrderStatusEnum.寰呴��娆�; order.LifePayRefundStatus = LifePayRefundStatusEnum.寰呴��娆�; } _logger.LogError("鐢熸椿缂磋垂璁㈠崟鐘舵�侊細" + order.LifePayOrderStatus.ToString()); @@ -1209,30 +1259,24 @@ /// <param name="orderNo"></param> /// <param name="outOrderNo"></param> /// <returns></returns> - public async Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status, ACOOLYStatusEnum acoolyStatus, decimal payAmount) + public async Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status, ACOOLYStatusEnum acoolyStatus, decimal payAmount,string refundApplyRemark) { var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�"); - if (order.LifePayOrderStatus == LifePayOrderStatusEnum.宸插畬鎴�) - { - return; - } + //if (order.LifePayOrderStatus == LifePayOrderStatusEnum.宸插畬鎴�) + //{ + // return; + //} order.PlatformDeductionAmount = payAmount; if (acoolyOrderNo.IsNotNullOrEmpty()) { order.ACOOLYOrderNo = acoolyOrderNo; } - - if (order.LifePayOrderStatus == LifePayOrderStatusEnum.宸插畬鎴�) + if (refundApplyRemark.IsNotNullOrEmpty()) { - order.FinishTime = DateTime.Now; - } - - if (order.LifePayOrderStatus == LifePayOrderStatusEnum.宸插け璐� && order.LifePayRefundStatus != LifePayRefundStatusEnum.宸查��娆�) - { - order.LifePayRefundStatus = LifePayRefundStatusEnum.寰呴��娆�; + order.RefundApplyRemark = refundApplyRemark; } order.LifePayOrderStatus = status; @@ -1267,7 +1311,7 @@ input.RefundPrice = order.PayAmount; } - if (order.LifePayOrderStatus != LifePayOrderStatusEnum.宸插け璐� && order.PayStatus != LifePayStatusEnum.寰呴��娆� && order.LifePayOrderStatus != LifePayOrderStatusEnum.閫�娆惧緟瀹℃牳) + if (order.LifePayOrderStatus != LifePayOrderStatusEnum.寰呴��娆� || order.PayStatus != LifePayStatusEnum.宸叉敮浠� || order.LifePayRefundStatus != LifePayRefundStatusEnum.寰呴��娆�) { throw new UserFriendlyException("褰撳墠璁㈠崟鐘舵�佹棤娉曢��娆�"); } @@ -1288,12 +1332,16 @@ order.LifePayOrderStatus = LifePayOrderStatusEnum.閫�娆句腑; order.LifePayRefundStatus = LifePayRefundStatusEnum.閫�娆句腑; } + else if (wxRefundResult.Message == "璁㈠崟宸插叏棰濋��娆�") + { + order.LifePayOrderStatus = LifePayOrderStatusEnum.宸查��娆�; + order.LifePayRefundStatus = LifePayRefundStatusEnum.宸查��娆�; + } else { - order.LifePayOrderStatus = LifePayOrderStatusEnum.閫�娆惧け璐�; + order.LifePayOrderStatus = LifePayOrderStatusEnum.寰呴��娆�; order.LifePayRefundStatus = LifePayRefundStatusEnum.寰呴��娆�; } - break; case LifePayTypeEnum.AliPay: var aliRefundResult = await AliTradeRefund(new AlipayTradeRefundRequest() { OutTradeNo = order.OrderNo, RefundAmount = Convert.ToInt32(input.RefundPrice * 100).ToString() }); @@ -1312,7 +1360,7 @@ order.RefundCheckUserId = CurrentUser.Id; order.RefundPrice = input.RefundPrice; - await _lifePayOrderRepository.UpdateAsync(order); + //await _lifePayOrderRepository.UpdateAsync(order); #region 璁板綍鏃ュ織 @@ -1342,17 +1390,25 @@ return; } - if (order.LifePayOrderStatus != LifePayOrderStatusEnum.寰呯‘璁� && order.LifePayOrderStatus != LifePayOrderStatusEnum.宸插け璐� - && order.PayStatus != LifePayStatusEnum.宸叉敮浠�) + if (order.PayStatus == LifePayStatusEnum.宸叉敮浠� && order.LifePayOrderStatus != LifePayOrderStatusEnum.宸插畬鎴� + && order.LifePayOrderStatus != LifePayOrderStatusEnum.寰呴��娆� && order.LifePayOrderStatus != LifePayOrderStatusEnum.宸查��娆�) + { + order.LifePayOrderStatus = LifePayOrderStatusEnum.寰呴��娆�; + order.RefundApplyRemark = input.RefundApplyRemark; + order.RefundApplyTime = DateTime.Now; + + await _lifePayOrderRepository.UpdateAsync(order); + } + else if (order.LifePayOrderStatus == LifePayOrderStatusEnum.寰呴��娆� || order.LifePayRefundStatus == LifePayRefundStatusEnum.寰呴��娆� || + order.LifePayOrderStatus == LifePayOrderStatusEnum.閫�娆句腑 || order.LifePayRefundStatus == LifePayRefundStatusEnum.閫�娆句腑 || + order.LifePayOrderStatus == LifePayOrderStatusEnum.宸查��娆� || order.LifePayRefundStatus == LifePayRefundStatusEnum.宸查��娆�) + { + throw new UserFriendlyException("褰撳墠璁㈠崟鏃犳硶閲嶅鐢宠閫�娆�"); + } + else { throw new UserFriendlyException("褰撳墠璁㈠崟鐘舵�佹棤娉曠敵璇烽��娆�"); } - - order.LifePayOrderStatus = LifePayOrderStatusEnum.閫�娆惧緟瀹℃牳; - order.RefundApplyRemark = input.RefundApplyRemark; - order.RefundApplyTime = DateTime.Now; - - await _lifePayOrderRepository.UpdateAsync(order); } /// <summary> @@ -1370,7 +1426,7 @@ { OutTradeNo = outTradeNo, OutRefundNo = outRefundNo, - Reason = reason, + //Reason = reason, Amount = new Model_WxPayDomesticRefunds_Amount { Refund = refund, @@ -1434,7 +1490,7 @@ if (input.LifePayType == LifePayOrderTypeEnum.璇濊垂璁㈠崟) { var extraProperties = JsonConvert.DeserializeObject<Model_UserAccountExtraProperties>(input.ExtraProperties); - if (!string.IsNullOrEmpty(extraProperties.Name)) + if (!string.IsNullOrEmpty(extraProperties.Name) && extraProperties.Phone == user.PhoneNumber) { user.Name = extraProperties.Name; } @@ -1476,10 +1532,17 @@ return; } - if ((order.LifePayOrderStatus == LifePayOrderStatusEnum.宸插け璐� && order.PayStatus == LifePayStatusEnum.寰呴��娆�) || - order.LifePayOrderStatus == LifePayOrderStatusEnum.閫�娆惧緟瀹℃牳 || order.LifePayOrderStatus == LifePayOrderStatusEnum.寰呯‘璁�) + if (order.LifePayOrderStatus == LifePayOrderStatusEnum.寰呴��娆�) { - order.LifePayOrderStatus = LifePayOrderStatusEnum.閫�娆惧け璐�; + if (order.ACOOLYStatus == ACOOLYStatusEnum.宸插畬鎴� || order.ACOOLYStatus == ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�) + { + order.LifePayOrderStatus = LifePayOrderStatusEnum.宸插畬鎴�; + } + else if (order.ACOOLYStatus == ACOOLYStatusEnum.鍏呭�煎け璐�) + { + order.LifePayOrderStatus = LifePayOrderStatusEnum.閫�娆惧け璐�; + } + order.RefundCheckRemark = input.RefundCheckRemark; order.RefundCheckUserId = CurrentUser.Id; @@ -1678,7 +1741,7 @@ order.FinishTime = DateTime.Now; break; case ACOOLYConstant.Code.PROCESSING: - order.LifePayOrderStatus = LifePayOrderStatusEnum.寰呯‘璁�; + order.LifePayOrderStatus = LifePayOrderStatusEnum.鍏呭�间腑; break; default: break; @@ -1906,6 +1969,55 @@ return result; } + private async Task<IQueryable<LifePayOrderListOutput>> GetLifePayRefundOrderListFilter(QueryLifePayRefundOrderListInput input) + { + var result = (from a in _channelFilter.GetChannelLifePayOrderFilter(_lifePayOrderRepository) + .Where(x => x.LifePayOrderStatus == LifePayOrderStatusEnum.寰呴��娆� || x.LifePayOrderStatus == LifePayOrderStatusEnum.宸查��娆� || x.LifePayOrderStatus == LifePayOrderStatusEnum.閫�娆句腑 + || x.LifePayRefundStatus > LifePayRefundStatusEnum.鏃犻渶閫�娆�) + .WhereIf(input.BeginFinishTime.HasValue, x => x.FinishTime >= input.BeginFinishTime) + .WhereIf(input.EndFinishTime.HasValue, x => x.FinishTime <= input.EndFinishTime) + .WhereIf(input.BeginRefundApplyTime.HasValue, x => x.RefundApplyTime >= input.BeginRefundApplyTime) + .WhereIf(input.LifePayType.HasValue, x => x.LifePayType == input.LifePayType) + .WhereIf(input.EndRefundApplyTime.HasValue, x => x.RefundApplyTime <= input.EndRefundApplyTime) + .WhereIf(input.LifePayOrderStatus.HasValue, x => x.LifePayOrderStatus == input.LifePayOrderStatus.Value) + .WhereIf(input.ACOOLYStatus.HasValue, x => x.ACOOLYStatus == input.ACOOLYStatus.Value) + .WhereIf(input.LifePayOrderType.HasValue, x => x.LifePayOrderType == input.LifePayOrderType.Value) + .WhereIf(input.UserId.HasValue, x => x.UserId == input.UserId.Value) + .WhereIf(input.KeyWords.IsNotNullOrEmpty(), x => x.PhoneNumber.Contains(input.KeyWords) || x.OrderNo.Contains(input.KeyWords) || x.OutOrderNo.Contains(input.KeyWords) || x.ACOOLYOrderNo.Contains(input.KeyWords)) + join b in _lifePayChannlesRep on a.ChannelId equals b.ChannlesNum into temp + from b in temp.DefaultIfEmpty() + select new LifePayOrderListOutput + { + DiscountAmount = a.DiscountAmount, + FinishTime = a.FinishTime, + Id = a.Id, + LifePayOrderStatus = a.LifePayOrderStatus, + LifePayOrderType = a.LifePayOrderType, + LifePayType = a.LifePayType, + OrderNo = a.OrderNo, + PayAmount = a.PayAmount, + PhoneNumber = a.PhoneNumber, + RechargeAmount = a.RechargeAmount, + UserId = a.UserId, + OutOrderNo = a.OutOrderNo, + PayStatus = a.PayStatus, + PayTime = a.PayTime, + ACOOLYOrderNo = a.ACOOLYOrderNo, + RefundCredentialsImgUrl = a.RefundCredentialsImgUrl.GetOssPath(), + CreationTime = a.CreationTime, + RefundCheckRemark = a.RefundCheckRemark, + RefundApplyRemark = a.RefundApplyRemark, + RefundApplyTime = a.RefundApplyTime, + RefundTime = a.RefundTime, + RefundPrice = a.RefundPrice, + ChannelName = b.ChannlesName, + ActualRechargeAmount = a.ActualRechargeAmount, + PlatformDeductionAmount = a.PlatformDeductionAmount, + ACOOLYStatus = a.ACOOLYStatus, + LifePayRefundStatus = a.LifePayRefundStatus, + }); + return result; + } private IQueryable<CreateEditPayChannelsInput> GetLifePayChannlesListFilter() { return _lifePayChannlesRep.Select(x => diff --git a/LifePayment/LifePayment.Application/LifePay/StatisticsService.cs b/LifePayment/LifePayment.Application/LifePay/StatisticsService.cs index d6b7fad..5bcd101 100644 --- a/LifePayment/LifePayment.Application/LifePay/StatisticsService.cs +++ b/LifePayment/LifePayment.Application/LifePay/StatisticsService.cs @@ -47,9 +47,9 @@ var accumulatedIncome = await _lifePayOrderRepository.Where(x => x.CreationTime < today).SumAsync(x => x.ActualRechargeAmount); var ordersNumYesterday = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today).CountAsync(); var yesterdaySuccess = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today && x.LifePayOrderStatus == LifePayOrderStatusEnum.宸插畬鎴�).CountAsync(); - var yesterdayFail = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today && x.LifePayOrderStatus == LifePayOrderStatusEnum.宸插け璐�).CountAsync(); + var yesterdayFail = await _lifePayOrderRepository.Where(x => x.CreationTime >= today.AddDays(-1) && x.CreationTime < today && x.LifePayOrderStatus == LifePayOrderStatusEnum.閫�娆惧け璐�).CountAsync(); var accumulatedUsers = await _lifePayUserRepository.CountAsync(); - + var yesterdayActiveUsers = await _lifePayUserRepository.Where(x => x.LastLoginTime >= today.AddDays(-1)).CountAsync(); var entity = new DallyStatistics() { Id = GuidGenerator.Create(), @@ -62,6 +62,7 @@ YesterdaySuccess = yesterdaySuccess, YesterdayFail = yesterdayFail, AccumulatedUsers = accumulatedUsers, + YesterdayActiveUsers = yesterdayActiveUsers }; await _dallyStatisticsRepository.InsertAsync(entity); @@ -75,6 +76,7 @@ YesterdaySuccess = entity.YesterdaySuccess, YesterdayFail = entity.YesterdayFail, AccumulatedUsers = entity.AccumulatedUsers, + YesterdayActiveUsers = yesterdayActiveUsers }; return topStatisticsOutput; } diff --git a/LifePayment/LifePayment.Application/LifePaymentServicesApplicationModuleAutoMapperProfile.cs b/LifePayment/LifePayment.Application/LifePaymentServicesApplicationModuleAutoMapperProfile.cs index 68e9053..abedd35 100644 --- a/LifePayment/LifePayment.Application/LifePaymentServicesApplicationModuleAutoMapperProfile.cs +++ b/LifePayment/LifePayment.Application/LifePaymentServicesApplicationModuleAutoMapperProfile.cs @@ -14,6 +14,8 @@ CreateMap<CreateLifePayOrderInput, LifePayOrder>(MemberList.None); CreateMap<CreateEditPayChannelsInput, LifePayChannles>(MemberList.None); + + CreateMap<CreateBackClientUserInput, CreateAccountInput>(MemberList.None); #endregion } } diff --git a/LifePayment/LifePayment.Application/Setting/OperateHistoryService.cs b/LifePayment/LifePayment.Application/Setting/OperateHistoryService.cs index b64e9cf..b1185f6 100644 --- a/LifePayment/LifePayment.Application/Setting/OperateHistoryService.cs +++ b/LifePayment/LifePayment.Application/Setting/OperateHistoryService.cs @@ -48,7 +48,6 @@ 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); diff --git a/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs b/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs index 3ab14a3..3acbb10 100644 --- a/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs +++ b/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs @@ -41,10 +41,35 @@ 閫�娆句腑 = 50, } +//public enum LifePayOrderStatusEnum +//{ +// [Description("鍏呭�间腑")] +// 寰呯‘璁� = 10, + +// [Description("宸插け璐�")] +// 宸插け璐� = 20, + +// [Description("宸插畬鎴�")] +// 宸插畬鎴� = 30, + +// [Description("閫�娆惧緟瀹℃牳")] +// 閫�娆惧緟瀹℃牳 = 40, + +// [Description("宸查��娆�")] +// 宸查��娆� = 50, + +// [Description("閫�娆惧け璐�")] +// 閫�娆惧け璐� = 60, + + +// [Description("閫�娆句腑")] +// 閫�娆句腑 = 70, +//} + public enum LifePayOrderStatusEnum { - [Description("寰呯‘璁�")] - 寰呯‘璁� = 10, + [Description("鍏呭�间腑")] + 鍏呭�间腑 = 10, [Description("宸插け璐�")] 宸插け璐� = 20, @@ -52,8 +77,8 @@ [Description("宸插畬鎴�")] 宸插畬鎴� = 30, - [Description("閫�娆惧緟瀹℃牳")] - 閫�娆惧緟瀹℃牳 = 40, + [Description("寰呴��娆�")] + 寰呴��娆� = 40, [Description("宸查��娆�")] 宸查��娆� = 50, @@ -64,6 +89,7 @@ [Description("閫�娆句腑")] 閫�娆句腑 = 70, + } public enum ACOOLYStatusEnum diff --git a/LifePayment/LifePayment.Domain.Shared/WeChat/WxPayPostBaseModel.cs b/LifePayment/LifePayment.Domain.Shared/WeChat/WxPayPostBaseModel.cs index 4c235b5..c94907b 100644 --- a/LifePayment/LifePayment.Domain.Shared/WeChat/WxPayPostBaseModel.cs +++ b/LifePayment/LifePayment.Domain.Shared/WeChat/WxPayPostBaseModel.cs @@ -613,11 +613,11 @@ [JsonProperty("out_refund_no")] public string OutRefundNo { get; set; } - /// <summary> - /// 閫�娆惧師鍥� - /// </summary> - [JsonProperty("reason")] - public string Reason { get; set; } + ///// <summary> + ///// 閫�娆惧師鍥� + ///// </summary> + //[JsonProperty("reason")] + //public string Reason { get; set; } /// <summary> /// 閫�娆剧粨鏋滃洖璋僽rl @@ -721,6 +721,13 @@ [JsonProperty("amount")] public Model_WxPayRetuenDomesticRefunds_Amount Amount { get; set; } + + /// <summary> + /// 杩斿洖淇℃伅 + /// </summary> + [JsonProperty("message")] + public string Message { get; set; } + } public class Model_WxPayRetuenDomesticRefunds_Amount: Model_WxPayDomesticRefunds_Amount diff --git a/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs b/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs index 01146f6..f6c1394 100644 --- a/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs +++ b/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs @@ -81,12 +81,12 @@ public string ACOOLYOrderNo { get; set; } /// <summary> - /// 璁㈠崟鐘舵�� + /// 骞冲彴璁㈠崟鐘舵�� /// </summary> public LifePayOrderStatusEnum LifePayOrderStatus { get; set; } /// <summary> - /// 骞冲彴鐘舵�� + /// 渚涘簲鍟嗙姸鎬� /// </summary> public ACOOLYStatusEnum? ACOOLYStatus { get; set; } diff --git a/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml b/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml index dc1a9ed..44eb421 100644 --- a/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml +++ b/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml @@ -104,6 +104,12 @@ </summary> <returns></returns> </member> + <member name="M:LifePayment.HttpApi.LifePayController.GetChannelRate(LifePayment.Domain.Shared.ChannelsBaseInput)"> + <summary> + 鑾峰彇娓犻亾鎶樻墸 + </summary> + <returns></returns> + </member> <member name="M:LifePayment.HttpApi.LifePayController.GetPremium"> <summary> 鑾峰彇鎵嬬画璐硅垂鐜� @@ -234,6 +240,13 @@ <param name="input"></param> <returns></returns> </member> + <member name="M:LifePayment.HttpApi.LifePayController.GetLifePayRefudOrderPageExport(LifePayment.Application.Contracts.QueryLifePayRefundOrderListInput)"> + <summary> + 瀵煎嚭閫�娆捐鍗旹xcel + </summary> + <param name="input"></param> + <returns></returns> + </member> <member name="M:LifePayment.HttpApi.LifePayController.CreateLifePayPhoneOrder(LifePayment.Application.Contracts.CreateLifePayOrderInput{LifePayment.Application.Contracts.LifePhoneData})"> <summary> 鍒涘缓鐢熸椿缂磋垂璇濊垂璁㈠崟 diff --git a/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml b/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml index 83e9f57..d1566ed 100644 --- a/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml +++ b/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml @@ -42,9 +42,9 @@ <param name="outOrderNo"></param> <returns></returns> </member> - <member name="M:LifePayment.Application.Contracts.ILifePayService.ACOOLYOrderNotifyHandler(System.String,System.String,LifePayment.Domain.Shared.LifePayOrderStatusEnum,LifePayment.Domain.Shared.ACOOLYStatusEnum,System.Decimal)"> + <member name="M:LifePayment.Application.Contracts.ILifePayService.ACOOLYOrderNotifyHandler(System.String,System.String,LifePayment.Domain.Shared.LifePayOrderStatusEnum,LifePayment.Domain.Shared.ACOOLYStatusEnum,System.Decimal,System.String)"> <summary> - 鏀粯鎴愬姛鍥炶皟澶勭悊 + 渚涘簲鍟嗗洖璋冨鐞� </summary> <param name="orderNo"></param> <param name="acoolyOrderNo"></param> @@ -127,6 +127,12 @@ <member name="M:LifePayment.Application.Contracts.ILifePayService.GetRate"> <summary> 鑾峰彇鎶樻墸 + </summary> + <returns></returns> + </member> + <member name="M:LifePayment.Application.Contracts.ILifePayService.GetChannelRate(LifePayment.Domain.Shared.ChannelsBaseInput)"> + <summary> + 鑾峰彇娓犻亾鎶樻墸 </summary> <returns></returns> </member> @@ -520,6 +526,11 @@ 璁㈠崟鐘舵�� </summary> </member> + <member name="P:LifePayment.Application.Contracts.QueryLifePayRefundOrderListInput.LifePayRefundStatus"> + <summary> + 璁㈠崟鐘舵�� + </summary> + </member> <member name="P:LifePayment.Application.Contracts.QueryLifePayRefundOrderListInput.UserId"> <summary> 鐢ㄦ埛Id @@ -725,6 +736,11 @@ 璁㈠崟鍙� </summary> </member> + <member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.RefundOrderNo"> + <summary> + 閫�娆捐鍗曞彿 + </summary> + </member> <member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.RechargeAmount"> <summary> 鍏呭�奸噾棰� @@ -865,6 +881,51 @@ 瀹屾垚鏃堕棿 </summary> </member> + <member name="P:LifePayment.Application.Contracts.LifePayRefundOrderListTemplate.RefundApplyTimeStr"> + <summary> + 閫�娆剧敵璇锋椂闂� + </summary> + </member> + <member name="P:LifePayment.Application.Contracts.LifePayRefundOrderListTemplate.CreationTime"> + <summary> + 涓嬪崟鏃堕棿 + </summary> + </member> + <member name="P:LifePayment.Application.Contracts.LifePayRefundOrderListTemplate.RechargeAmount"> + <summary> + 鍏呭�奸噾棰� + </summary> + </member> + <member name="P:LifePayment.Application.Contracts.LifePayRefundOrderListTemplate.ActualReceivedAmount"> + <summary> + 瀹為檯鍒拌处閲戦 + </summary> + </member> + <member name="P:LifePayment.Application.Contracts.LifePayRefundOrderListTemplate.PayAmount"> + <summary> + 瀹炰粯閲戦 + </summary> + </member> + <member name="P:LifePayment.Application.Contracts.LifePayRefundOrderListTemplate.RefundPrice"> + <summary> + 閫�娆鹃噾棰� + </summary> + </member> + <member name="P:LifePayment.Application.Contracts.LifePayRefundOrderListTemplate.ACOOLYStatusStr"> + <summary> + 渚涘簲鍟嗚鍗曠姸鎬� + </summary> + </member> + <member name="P:LifePayment.Application.Contracts.LifePayRefundOrderListTemplate.FinishTime"> + <summary> + 瀹屾垚鏃堕棿 + </summary> + </member> + <member name="P:LifePayment.Application.Contracts.LifePayRefundOrderListTemplate.LifePayRefundStatus"> + <summary> + 骞冲彴閫�娆剧姸鎬� + </summary> + </member> <member name="P:LifePayment.Application.Contracts.UserLifePayOrderOutput.LifePayType"> <summary> 鐢熸椿缂磋垂鏀粯绫诲瀷 @@ -938,6 +999,16 @@ <member name="P:LifePayment.Application.Contracts.UserLifePayOrderOutput.ACOOLYOrderNo"> <summary> 娓犻亾娴佹按鍙� + </summary> + </member> + <member name="P:LifePayment.Application.Contracts.UserLifePayOrderOutput.LifePayRefundStatus"> + <summary> + 骞冲彴閫�娆剧姸鎬� + </summary> + </member> + <member name="P:LifePayment.Application.Contracts.UserLifePayOrderOutput.ACOOLYStatus"> + <summary> + 骞冲彴鐘舵�� </summary> </member> <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.UserPhoneNumber"> @@ -1980,6 +2051,11 @@ 鎵嬫満鍙� </summary> </member> + <member name="P:LifePayment.Application.Contracts.CreateBackClientUserInput.Password"> + <summary> + 瀵嗙爜 + </summary> + </member> <member name="P:LifePayment.Application.Contracts.CreateBackClientUserInput.UserName"> <summary> 璐︽埛 diff --git a/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs b/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs index df58574..82e8728 100644 --- a/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs +++ b/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs @@ -52,10 +52,11 @@ } var baseInfo = JsonConvert.DeserializeObject<ACOOLYRequestBaseResponse>(body); var orderNo = string.Empty; - LifePayOrderStatusEnum status = LifePayOrderStatusEnum.宸插け璐�; + LifePayOrderStatusEnum status = LifePayOrderStatusEnum.寰呴��娆�; ACOOLYStatusEnum acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�; var acoolyOrderNo = string.Empty; decimal payAmount = 0; + string refundApplyRemark = string.Empty; _logger.LogError("ACOOLY鍥炶皟閫氬鐞嗙被鍨嬶細" + baseInfo.Service); _logger.LogError("ACOOLY鍥炶皟鍐呭锛�" + body); switch (baseInfo.Service) @@ -70,7 +71,7 @@ if (!confirmElectricOrderResponse.Success || (confirmElectricOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmElectricOrderResponse.Code != ACOOLYConstant.Code.PROCESSING)) { - status = LifePayOrderStatusEnum.宸插け璐�; + status = LifePayOrderStatusEnum.寰呴��娆�; acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�; } else @@ -82,14 +83,15 @@ else if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.鍏呭�间腑) { - status = LifePayOrderStatusEnum.寰呯‘璁�; + status = LifePayOrderStatusEnum.鍏呭�间腑; acoolyStatus = ACOOLYStatusEnum.鍏呭�间腑; } else if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.鍏呭�煎け璐�) { - status = LifePayOrderStatusEnum.宸插け璐�; + status = LifePayOrderStatusEnum.寰呴��娆�; acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�; + refundApplyRemark = "渚涘簲鍟嗗厖鍊煎け璐�"; } else if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.閫�娆句腑) @@ -106,7 +108,7 @@ else if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.澶辫触鍏抽棴) { - status = LifePayOrderStatusEnum.宸插け璐�; + status = LifePayOrderStatusEnum.寰呴��娆�; acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�; } break; @@ -119,7 +121,7 @@ if (!confirmPhoneOrderResponse.Success || (confirmPhoneOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmPhoneOrderResponse.Code != ACOOLYConstant.Code.PROCESSING)) { - status = LifePayOrderStatusEnum.宸插け璐�; + status = LifePayOrderStatusEnum.寰呴��娆�; acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�; } else @@ -133,13 +135,13 @@ if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.鍏呭�间腑) { - status = LifePayOrderStatusEnum.寰呯‘璁�; + status = LifePayOrderStatusEnum.鍏呭�间腑; acoolyStatus = ACOOLYStatusEnum.鍏呭�间腑; } else if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.鍏呭�煎け璐�) { - status = LifePayOrderStatusEnum.宸插け璐�; + status = LifePayOrderStatusEnum.寰呴��娆�; acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�; } else @@ -157,7 +159,7 @@ else if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.澶辫触鍏抽棴) { - status = LifePayOrderStatusEnum.宸插け璐�; + status = LifePayOrderStatusEnum.寰呴��娆�; acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�; } break; @@ -170,7 +172,7 @@ if (!confirmGasOrderResponse.Success || (confirmGasOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmGasOrderResponse.Code != ACOOLYConstant.Code.PROCESSING)) { - status = LifePayOrderStatusEnum.宸插け璐�; + status = LifePayOrderStatusEnum.寰呴��娆�; acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�; } else @@ -184,13 +186,13 @@ if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.鍏呭�间腑) { - status = LifePayOrderStatusEnum.寰呯‘璁�; + status = LifePayOrderStatusEnum.寰呴��娆�; acoolyStatus = ACOOLYStatusEnum.鍏呭�间腑; } else if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.鍏呭�煎け璐�) { - status = LifePayOrderStatusEnum.宸插け璐�; + status = LifePayOrderStatusEnum.寰呴��娆�; acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�; } else @@ -208,7 +210,7 @@ else if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.澶辫触鍏抽棴) { - status = LifePayOrderStatusEnum.宸插け璐�; + status = LifePayOrderStatusEnum.寰呴��娆�; acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�; } break; @@ -216,7 +218,7 @@ throw new UserFriendlyException("ACOOLY鍥炶皟閫氬鐞嗙被鍨嬩笉瀛樺湪"); } - await _lifePayService.ACOOLYOrderNotifyHandler(orderNo, acoolyOrderNo, status, acoolyStatus, payAmount); + await _lifePayService.ACOOLYOrderNotifyHandler(orderNo, acoolyOrderNo, status, acoolyStatus, payAmount, refundApplyRemark); } } } \ No newline at end of file diff --git a/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs b/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs index a7d2889..3758621 100644 --- a/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs +++ b/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs @@ -150,6 +150,17 @@ } /// <summary> + /// 鑾峰彇娓犻亾鎶樻墸 + /// </summary> + /// <returns></returns> + [HttpPost] + [AllowAnonymous] + public async Task<ChannelRateOutput> GetChannelRate(ChannelsBaseInput input) + { + return await _lifePayService.GetChannelRate(input); + } + + /// <summary> /// 鑾峰彇鎵嬬画璐硅垂鐜� /// </summary> /// <returns></returns> @@ -376,6 +387,24 @@ return Json(default); } + /// <summary> + /// 瀵煎嚭閫�娆捐鍗旹xcel + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpPost] + public async Task<ActionResult> GetLifePayRefudOrderPageExport(QueryLifePayRefundOrderListInput input) + { + var data = await _lifePayService.GetLifePayRefudOrderPageExport(input); + if (data.Any()) + { + var bytes = ExcelHelper.ListToByteForExcel(data, "xlsx"); + return File(bytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "閫�娆剧鐞�" + ".xlsx"); + } + return Json(default); + } + + [HttpGet] public async Task<string> GetBillErceiptExport(string orderNo) { -- Gitblit v1.9.1