From 70c08d5a565139b440b73d8b9d9c8c20c7942cd6 Mon Sep 17 00:00:00 2001
From: lingling <kety1122@163.com>
Date: 星期五, 14 三月 2025 15:11:23 +0800
Subject: [PATCH] 添加逻辑
---
LifePayment/LifePayment.Domain/LifePay/LifePayChannles.cs | 25
LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml | 307 +++++++++
LifePayment/LifePayment.Domain/ACOOLY/IACOOLYManager.cs | 12
LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYInput.cs | 37
LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYOutput.cs | 28
LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs | 6
LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs | 181 +++++
LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs | 19
LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYOption.cs | 8
LifePayment/LifePayment.Domain/ACOOLY/ACOOLYClient.cs | 12
LifePayment/LifePayment.Domain/LifePay/LifePayAccount.cs | 53 +
LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs | 227 +++++++
LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYConstant.cs | 13
LifePayment/LifePayment.Domain/ACOOLY/ACOOLYManager.cs | 18
LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs | 112 +++
LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs | 64 +
LifePayment/LifePayment.Application/LifePay/LifePayService.cs | 721 ++++++++++++++++++++++-
LifePayment/LifePayment.Domain.Shared/LifePaymentConstant.cs | 8
18 files changed, 1,719 insertions(+), 132 deletions(-)
diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs
index 872a25d..93d2726 100644
--- a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs
+++ b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs
@@ -1,18 +1,10 @@
-锘縰sing LifePayment.Application.Contracts;
-using LifePayment.Domain;
-using LifePayment.Domain.Shared;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.Extensions.Logging;
+锘縰sing LifePayment.Domain.Shared;
using System;
using System.Collections.Generic;
-using System.Linq;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Services;
-using Volo.Abp.Domain.Repositories;
-using Volo.Abp.EventBus.Distributed;
using ZeroD.Util;
-using static LifePayment.Domain.Shared.LifePaymentConstant;
namespace LifePayment.Application.Contracts;
@@ -35,6 +27,18 @@
/// </summary>
/// <returns></returns>
Task<PhoneParValueResponse> GetPhoneParValue();
+
+ /// <summary>
+ /// 鑾峰彇鐕冩皵闈㈠��
+ /// </summary>
+ /// <returns></returns>
+ Task<GasParValueResponse> GetGasParValue();
+
+ /// <summary>
+ /// 鑾峰彇鐕冩皵鏀寔鍟嗘埛
+ /// </summary>
+ /// <returns></returns>
+ Task<GasOrgTypeValueResponse> GetGasOrgType();
/// <summary>
/// 鏀粯鎴愬姛鍥炶皟澶勭悊
@@ -68,12 +72,48 @@
Task<CreateLifePayOrderOutput> CreateLifePayElectricOrder(CreateLifePayOrderInput<LifeElectricData> input);
/// <summary>
+ /// 鍒涘缓鐢熸椿缂磋垂鐕冩皵璁㈠崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<CreateLifePayOrderOutput> CreateLifePayGasOrder(CreateLifePayOrderInput<LifeGasData> input);
+
+ /// <summary>
/// 閫�娆剧敓娲荤即璐硅鍗�
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
Task RefundLifePayOrder(RefundLifePayOrderInput input);
+
+ /// <summary>
+ /// 鐢ㄦ埛鍙戣捣鐢熸椿缂磋垂閫�娆�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task RefundUserLifePayOrder(RefundUserLifePayOrderInput input);
+
+ /// <summary>
+ /// 鐢ㄦ埛淇敼鎴峰彿淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<int> AddUpdateUserAccount(AddUpdateUserAccountInput input);
+
+ /// <summary>
+ /// 鍒犻櫎鐢ㄦ埛鎴峰彿
+ /// </summary>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ Task<int> DeleteUserAccount(Guid id);
+
+ Task RejectRefundLifePayOrder(RefundLifePayOrderInput input);
+
+ Task CreateEditPayChannels(CreateEditPayChannelsInput input);
+
+ Task SetLifePayChannelsStatus(Guid id, LifePayChannelsStatsEnum status);
+
+ Task CreateEditLifePayRate(List<LifePayRateInput> input);
/// <summary>
/// 鑾峰彇鎶樻墸
@@ -89,11 +129,26 @@
Task<PageOutput<UserLifePayOrderOutput>> GetUserLifePayOrderPage(QueryLifePayOrderListInput input);
/// <summary>
+ /// 鑾峰彇鎴戠殑璁㈠崟璇︽儏
+ /// </summary>
+ /// <param name="orderNo"></param>
+ /// <returns></returns>
+ Task<UserLifePayOrderOutput> GetUserLifePayOrderDetail(string orderNo);
+
+ /// <summary>
/// 鑾峰彇鐢ㄦ埛鍒嗛〉鏁版嵁
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<PageOutput<UserListOutput>> GetUserPage(PageInput input);
+
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛鎴峰彿鍒嗛〉鏁版嵁
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageOutput<UserAccountOutput>> GetAccountPage(QueryUserAccountListInput input);
/// <summary>
/// 鑾峰彇璁㈠崟鍒嗛〉鏁版嵁
@@ -108,6 +163,43 @@
/// <param name="orderNo"></param>
/// <returns></returns>
Task<LifePayStatusEnum> GetPayStatusByOrderNo(string orderNo);
+
+ /// <summary>
+ /// 鑾峰彇娓犻亾鍒嗛〉
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageOutput<CreateEditPayChannelsInput>> GetLifePayChannlesPage(PageInput input);
+
+ Task<CreateEditPayChannelsInput> GetLifePayChannlesDto(Guid id);
+
+
+ Task<CreateEditPayChannelsInput> GetLifePayChannlesDtoByNum(string channlesNum);
+
+ Task<UserLifePayOrderRefundOutput> GetUserLifePayOrderRefund(Guid id);
+
+ /// <summary>
+ /// 鑾峰彇鎴戠殑鎴峰彿鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageOutput<UserAccountOutput>> GetUserAccountList(QueryUserAccountListInput input);
+
+ /// <summary>
+ /// 鑾峰彇鎴戠殑鍏ㄩ儴鎴峰彿鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<UserAccountOutput>> GetUserAccountAllList(QueryUserAccountAllListInput input);
+
+ /// <summary>
+ /// 鑾峰彇鎴戠殑鎴峰彿璇︽儏
+ /// </summary>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ Task<UserAccountOutput> GetUserAccountDetail(Guid id);
+
+ Task<List<LifePayOrderListTemplate>> GetLifePayOrderPageExport(QueryLifePayOrderListInput input);
/// <summary>
/// 璁剧疆鐢熸椿缂磋垂鏀粯绫诲瀷
@@ -134,4 +226,6 @@
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
Task<string> GetPayQRCode(LifePayTypeEnum payType, string outTradeNo, string description, decimal amount, string ip, string h5Type);
+
+ Task<bool> CheckChannelsStatus(string channlesId);
}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs
index ff0ce6d..bb116ab 100644
--- a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs
+++ b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs
@@ -1,18 +1,21 @@
锘縰sing LifePayment.Domain.Shared;
using Newtonsoft.Json;
using System;
-using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using ZeroD.Util;
+using static LifePayment.Domain.Shared.LifePaymentConstant;
namespace LifePayment.Application.Contracts;
-public class CreateLifePayOrderInput<T> where T : class
+public class CreateLifePayOrderInput<T> : ChannelsBaseInput where T : class
{
public Guid UserId { get; set; }
+
+ /// <summary>
+ /// 娓犻亾鍚嶇О
+ /// </summary>
+ public string ChannelId { get; set; }
+
+ //public string CheckChannelId { get; set; }
///// <summary>
///// 鐢熸椿缂磋垂鏀粯绫诲瀷
@@ -42,6 +45,7 @@
/// 鎵嬫満鍙枫��
/// </summary>
[Required(ErrorMessage = "鎵嬫満鍙锋槸蹇呭~椤广��")]
+ [RegularExpression(RegularExpression.PhoneNumberRegEx, ErrorMessage = "鎵嬫満鍙锋牸寮忎笉姝g‘")]
[JsonProperty("phone")]
public string Phone { get; set; }
@@ -77,7 +81,7 @@
/// 鐢佃垂鎴峰彿銆�
/// </summary>
[Required(ErrorMessage = "鐢佃垂鎴峰彿鏄繀濉」銆�")]
- [StringLength(50, ErrorMessage = "鐢佃垂鎴峰彿闀垮害涓嶈兘瓒呰繃50涓瓧绗︺��")]
+ [RegularExpression(RegularExpression.ElectricAccountRegEx, ErrorMessage = "璇疯緭鍏�13浣嶇數缃戞埛鍙�")]
public string ElectricAccount { get; set; }
/// <summary>
@@ -98,6 +102,42 @@
/// 瀹㈡埛韬唤璇佸悗6浣嶏紝鍗楃綉蹇呬紶銆�
/// </summary>
public string SixID { get; set; }
+}
+public class LifeGasData
+{
+ /// <summary>
+ /// 鍏呭�奸潰棰濓紝鍗曚綅涓哄厓銆�
+ /// </summary>
+ [Required(ErrorMessage = "鍏呭�奸潰棰濇槸蹇呭~椤广��")]
+ public decimal ParValue { get; set; }
+
+ /// <summary>
+ /// 澶╃劧姘斿叕鍙哥被鍨嬶紝"zhong_ran"浠h〃涓噧鐕冩皵锛�"bei_jing"浠h〃鍖椾含鐕冩皵銆�
+ /// </summary>
+ [Required(ErrorMessage = "鐕冩皵绫诲瀷鏄繀濉」銆�")]
+ public string GasOrgType { get; set; }
+
+
+ /// <summary>
+ /// 鐕冩皵鎴峰彿
+ /// </summary>
+ [Required(ErrorMessage = "鐕冩皵鎴峰彿鏄繀濉」銆�")]
+ public string GasAccount { get; set; }
+
+ /// <summary>
+ /// 鐪佷唤
+ /// </summary>
+ [Required(ErrorMessage = "鐪佷唤鏄繀濉」銆�")]
+ [StringLength(20, ErrorMessage = "鐪佷唤闀垮害涓嶈兘瓒呰繃20涓瓧绗︺��")]
+ public string Province { get; set; }
+
+ /// <summary>
+ /// 鍩庡競
+ /// </summary>
+ //[Required(ErrorMessage = "鍩庡競鏄繀濉」銆�")]
+ [StringLength(20, ErrorMessage = "鍩庡競闀垮害涓嶈兘瓒呰繃20涓瓧绗︺��")]
+ public string City { get; set; }
+
}
public class CreateLifePayOrderInput
@@ -174,14 +214,34 @@
/// </summary>
public string OrderParamDetailJsonStr { get; set; }
+ /// <summary>
+ /// 涓嬪崟娓犻亾
+ /// </summary>
+ public Guid? ChannelId { get; set; }
+
}
-public class QueryLifePayOrderListInput : PageInput
+//public class ChannelsBaseInput : PageInput
+//{
+// public string CheckChannelId { get; set; }
+//}
+
+public class GetPayStatusByOrderNoInput : ChannelsBaseInput
+{
+ public string OrderNo { get; set; }
+}
+
+public class QueryLifePayOrderListInput : ChannelsBaseInput
{
/// <summary>
/// 璁㈠崟绫诲瀷
/// </summary>
public LifePayOrderTypeEnum? LifePayOrderType { get; set; }
+
+ /// <summary>
+ /// 鐢熸椿缂磋垂鏀粯绫诲瀷
+ /// </summary>
+ public LifePayTypeEnum? LifePayType { get; set; }
/// <summary>
/// 寮�濮嬫敮浠樻椂闂�
@@ -217,6 +277,12 @@
/// 鐢ㄦ埛Id
/// </summary>
public Guid? UserId { get; set; }
+
+ /// <summary>
+ /// 鎼滅储鍏抽敭璇�
+ /// </summary>
+ public string KeyWords { get; set; }
+
}
public class RefundLifePayOrderInput
@@ -224,4 +290,103 @@
public Guid Id { get; set; }
public string RefundCredentialsImgUrl { get; set; }
+
+ public string RefundCheckRemark { get; set; }
+}
+public class RefundUserLifePayOrderInput : ChannelsBaseInput
+{
+ public Guid Id { get; set; }
+
+ /// <summary>
+ /// 鐢ㄦ埛Id
+ /// </summary>
+ public Guid? UserId { get; set; }
+
+ public string RefundApplyRemark { get; set; }
+}
+
+public class CreateEditPayChannelsInput
+{
+ public Guid? Id { get; set; }
+
+ public string ChannlesName { get; set; }
+
+ public string ChannlesNum { get; set; }
+
+ public decimal ChannlesRate { get; set; }
+
+ public LifePaySwitchTypeEnum SwitchType { get; set; }
+
+ public LifePayChannelsStatsEnum Status { get; set; }
+
+ public LifePayChannlesTypeEnum ChannlesType { get; set; }
+
+}
+
+public class QueryUserAccountListInput : ChannelsBaseInput
+{
+ /// <summary>
+ /// 鐢ㄦ埛Id
+ /// </summary>
+ public Guid? UserId { get; set; }
+
+
+ public LifePayOrderTypeEnum? LifePayOrderType { get; set; }
+}
+
+public class QueryUserAccountAllListInput : ChannelsBaseInput
+{
+ /// <summary>
+ /// 鐢ㄦ埛Id
+ /// </summary>
+ public Guid? UserId { get; set; }
+
+ public LifePayOrderTypeEnum? LifePayOrderType { get; set; }
+}
+
+public class AddUpdateUserAccountInput : ChannelsBaseInput
+{
+ public Guid? Id { get; set; }
+
+ /// <summary>
+ /// 鐢ㄦ埛缂栧彿
+ /// </summary>
+ public Guid UserId { get; set; }
+
+ /// <summary>
+ /// 鐢熸椿缂磋垂绫诲瀷
+ /// </summary>
+ public LifePayOrderTypeEnum LifePayType { get; set; }
+
+ /// <summary>
+ /// 杩愯惀鍟�
+ /// </summary>
+ [Required(ErrorMessage = "杩愯惀鍟嗕笉鑳戒负绌猴紱")]
+ public string Operators { get; set; }
+
+ /// <summary>
+ /// 鎵嬫満鍙�/鎴峰彿
+ /// </summary>
+ public string Content { get; set; }
+
+ /// <summary>
+ /// 鐪�
+ /// </summary>
+ public string Province { get; set; }
+
+ /// <summary>
+ /// 甯�
+ /// </summary>
+ public string City { get; set; }
+
+ /// <summary>
+ /// 鎷撳睍瀛楁锛堢數璐圭被鍨嬶級
+ /// </summary>
+ public string ExtraProperties { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [StringLength(30, ErrorMessage = "澶囨敞淇℃伅浠呮敮鎸佸~鍐�30涓瓧绗︺��")]
+ public string Remark { get; set; } = string.Empty;
}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs
index 62aed58..2a06944 100644
--- a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs
+++ b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs
@@ -1,10 +1,6 @@
锘縰sing LifePayment.Domain.Shared;
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using ZeroD.Util;
+using ZeroD.Base.Web.Models;
namespace LifePayment.Application.Contracts;
@@ -13,6 +9,17 @@
public LifePayRateTypeEnum RateType { get; set; }
public decimal Rate { get; set; }
+
+ public Guid Id { get; set; }
+}
+
+public class LifePayRateInput
+{
+ public LifePayRateTypeEnum RateType { get; set; }
+
+ public decimal Rate { get; set; }
+
+ public Guid? Id { get; set; }
}
public class UserListOutput
@@ -44,6 +51,11 @@
/// 鐢熸椿缂磋垂鏀粯绫诲瀷
/// </summary>
public LifePayTypeEnum? LifePayType { get; set; }
+
+ /// <summary>
+ /// 娓犻亾鍚嶇О
+ /// </summary>
+ public string ChannelName { get; set; }
/// <summary>
/// 璁㈠崟绫诲瀷
@@ -104,6 +116,120 @@
/// 涓嬪崟鏃堕棿
/// </summary>
public DateTime CreationTime { get; set; }
+
+ /// <summary>
+ /// 閫�娆炬椂闂�
+ /// </summary>
+ public DateTime? RefundTime { get; set; }
+
+
+ public string RefundApplyRemark { get; set; }
+
+ public string RefundCheckRemark { get; set; }
+
+ public string ACOOLYOrderNo { get; set; }
+
+}
+
+public class LifePayOrderListTemplate
+{
+
+ [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>
+ public DateTime CreationTime { get; set; }
+
+ [Name("涓嬪崟鏃堕棿")]
+ public string CreationTimeStr { get; set; }
+
+ [Name("骞冲彴璁㈠崟鍙�")]
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鍏呭�奸噾棰�
+ /// </summary>
+ public decimal RechargeAmount { get; set; }
+
+ [Name("鍏呭�奸噾棰�")]
+ public string RechargeAmountStr { get; set; }
+
+ /// <summary>
+ /// 浼樻儬閲戦
+ /// </summary>
+ public decimal DiscountAmount { get; set; }
+
+ /// <summary>
+ /// 瀹炰粯閲戦
+ /// </summary>
+ public decimal PayAmount { get; set; }
+
+ [Name("瀹炰粯閲戦")]
+ public string PayAmountStr { get; set; }
+
+ /// <summary>
+ /// 鏀粯鏃堕棿
+ /// </summary>
+ public DateTime? PayTime { get; set; }
+
+ [Name("鏀粯鏃堕棿")]
+ public string PayTimeStr { get; set; }
+
+ [Name("鏀粯娓犻亾")]
+ public string LifePayTypeStr { get; set; }
+
+ [Name("澶栭儴璁㈠崟鍙�")]
+ public string ACOOLYOrderNo { get; set; }
+
+ /// <summary>
+ /// 鏀粯鐘舵��
+ /// </summary>
+ public LifePayStatusEnum PayStatus { get; set; }
+
+ [Name("鏀粯鐘舵��")]
+ public string PayStatusStr { get; set; }
+
+ [Name("鏀粯娓犻亾娴佹按鍙�")]
+ public string OutOrderNo { get; set; }
+
+ [Name("閫�娆剧敵璇�")]
+ public string RefundApplyRemark { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鐘舵��
+ /// </summary>
+ public LifePayOrderStatusEnum LifePayOrderStatus { get; set; }
+
+ [Name("璁㈠崟鐘舵��")]
+ public string LifePayOrderStatusStr { get; set; }
+
+ /// <summary>
+ /// 瀹屾垚鏃堕棿
+ /// </summary>
+ public DateTime? FinishTime { get; set; }
+
+ [Name("瀹屾垚鏃堕棿")]
+ public string FinishTimeStr { get; set; }
+
+
+
+
+
}
public class UserLifePayOrderOutput
@@ -174,9 +300,100 @@
/// 閫�娆炬椂闂�
/// </summary>
public DateTime? RefundTime { get; set; }
+
+ /// <summary>
+ /// 閫�娆惧嚟璇�
+ /// </summary>
+ public string RefundCredentialsImgUrl { get; set; }
+
+
+ public string RefundApplyRemark { get; set; }
+
+ public string RefundCheckRemark { get; set; }
+ /// <summary>
+ /// 娓犻亾娴佹按鍙�
+ /// </summary>
+ public string ACOOLYOrderNo { get; set; }
}
public class CreateLifePayOrderOutput
{
public string OrderNo { get; set; }
+}
+
+public class UserLifePayOrderRefundOutput
+{
+ /// <summary>
+ /// 璁㈠崟缂栧彿
+ /// </summary>
+ public Guid Id { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鍙�
+ /// </summary>
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 閫�娆惧師鍥�
+ /// </summary>
+ public string RefundApplyRemark { get; set; }
+
+ /// <summary>
+ /// 鍚庡彴濉啓鐨勯┏鍥炲師鍥�
+ /// </summary>
+ public string RefundCheckRemark { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鐘舵��
+ /// </summary>
+ public LifePayOrderStatusEnum LifePayOrderStatus { get; set; }
+}
+
+public class UserAccountOutput
+{
+
+ public Guid Id { get; set; }
+
+
+ /// <summary>
+ /// 鐢熸椿缂磋垂绫诲瀷
+ /// </summary>
+ public LifePayOrderTypeEnum LifePayType { get; set; }
+
+ /// <summary>
+ /// 杩愯惀鍟�
+ /// </summary>
+ public string Operators { get; set; }
+
+ /// <summary>
+ /// 鎵嬫満鍙�/鎴峰彿
+ /// </summary>
+ public string Content { get; set; }
+
+ /// <summary>
+ /// 鐪�
+ /// </summary>
+ public string Province { get; set; }
+
+ /// <summary>
+ /// 甯�
+ /// </summary>
+ public string City { get; set; }
+
+ /// <summary>
+ /// 鎷撳睍瀛楁锛堢數璐圭被鍨嬶級
+ /// </summary>
+ public string ExtraProperties { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public DateTime CreationTime { get; set; }
+
+ public bool IsDeleted { get; set; }
}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
index 8f950fe..fc3e010 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -26,6 +26,8 @@
using ZeroD.Util.Fadd;
using static LifePayment.Domain.Shared.LifePaymentConstant;
using static IdentityServer4.Models.IdentityResources;
+using Volo.Abp.Data;
+using Z.EntityFramework.Plus;
namespace LifePayment.Application;
@@ -37,6 +39,9 @@
private readonly IRepository<LifePayRate, Guid> _lifePayRateRepository;
private readonly IRepository<LifePayOrder, Guid> _lifePayOrderRepository;
private readonly IRepository<LifePayUser, Guid> _lifePayUserRepository;
+ private readonly IRepository<LifePayChannles, Guid> _lifePayChannlesRep;
+ private readonly IRepository<LifePayAccount, Guid> _lifePayAccount;
+ private readonly IDataFilter dataFilter;
private readonly IAliPayApi _aliPayApi;
private readonly IWxPayApi _wxPayApi;
@@ -52,7 +57,10 @@
IRepository<LifePayUser, Guid> lifePayUserRepository,
IAliPayApi aliPayApi,
IWxPayApi wxPayApi,
- IOptions<WxPayOption> wxPayOptions)
+ IOptions<WxPayOption> wxPayOptions,
+ IRepository<LifePayChannles, Guid> lifePayChannlesRep,
+ IRepository<LifePayAccount, Guid> lifePayAccount,
+ IDataFilter dataFilter)
{
_logger = logger;
_aCOOLYManager = aCOOLYManager;
@@ -63,6 +71,9 @@
_wxPayApi = wxPayApi;
_wxPayOptions = wxPayOptions.Value;
_distributedEventBus = distributedEventBus;
+ _lifePayChannlesRep = lifePayChannlesRep;
+ _lifePayAccount = lifePayAccount;
+ this.dataFilter = dataFilter;
}
#region 鏌ヨ
@@ -97,12 +108,31 @@
}
/// <summary>
+ /// 鑾峰彇璇濊垂闈㈠��
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ public async Task<GasParValueResponse> GetGasParValue()
+ {
+ return await _aCOOLYManager.GasParValue(new GasParValueRequestInput());
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐕冩皵鏀寔鍟嗘埛
+ /// </summary>
+ /// <returns></returns>
+ public async Task<GasOrgTypeValueResponse> GetGasOrgType()
+ {
+ return await _aCOOLYManager.GasOrgType(new GasOrgTypeRequestInput());
+ }
+
+ /// <summary>
/// 鑾峰彇鎶樻墸
/// </summary>
/// <returns></returns>
public async Task<List<LifePayRateListOutput>> GetRate()
{
- return await _lifePayRateRepository.Select(x => new LifePayRateListOutput() { Rate = x.Rate, RateType = x.RateType })
+ return await _lifePayRateRepository.Where(x => x.IsDeleted == false).Select(x => new LifePayRateListOutput() { Id = x.Id, Rate = x.Rate, RateType = x.RateType })
.ToListAsync();
}
@@ -125,42 +155,82 @@
}
/// <summary>
+ /// 鑾峰彇鐢ㄦ埛鎴峰彿鍒嗛〉鏁版嵁
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ public async Task<PageOutput<UserAccountOutput>> GetAccountPage(QueryUserAccountListInput input)
+ {
+ using (dataFilter.Disable<ISoftDelete>())
+ {
+ return await _lifePayAccount.Where(x => x.UserId == input.UserId)
+ .WhereIf(input.LifePayOrderType.HasValue, x => x.LifePayType == input.LifePayOrderType)
+ .OrderByDescending(x => x.CreationTime)
+ .Select(x =>
+ new UserAccountOutput
+ {
+ Id = x.Id,
+ LifePayType = x.LifePayType,
+ Content = x.Content,
+ CreationTime = x.CreationTime,
+ Remark = x.Remark,
+ Operators = x.Operators,
+ Province = x.Province,
+ City = x.City,
+ ExtraProperties = x.ExtraProperties,
+ IsDeleted = x.IsDeleted
+ })
+ .GetPageResult(input.PageModel);
+ }
+
+ }
+
+ /// <summary>
/// 鑾峰彇璁㈠崟鍒嗛〉鏁版嵁
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<PageOutput<LifePayOrderListOutput>> GetLifePayOrderPage(QueryLifePayOrderListInput input)
{
- return await _lifePayOrderRepository.Where(x => x.PayStatus != LifePayStatusEnum.鏈敮浠�)
- .WhereIf(input.BeginFinishTime.HasValue, x => x.FinishTime >= input.BeginFinishTime)
+ var result = await (from a in _lifePayOrderRepository.Where(x => x.PayStatus != LifePayStatusEnum.鏈敮浠�)
+ .WhereIf(input.BeginFinishTime.HasValue, x => x.FinishTime >= input.BeginFinishTime)
.WhereIf(input.EndFinishTime.HasValue, x => x.FinishTime <= input.EndFinishTime)
.WhereIf(input.BeginPayTime.HasValue, x => x.PayTime >= input.BeginPayTime)
+ .WhereIf(input.LifePayType.HasValue, x => x.LifePayType == input.LifePayType)
.WhereIf(input.EndPayTime.HasValue, x => x.PayTime <= input.EndPayTime)
.WhereIf(input.LifePayOrderStatus.HasValue, x => x.LifePayOrderStatus == input.LifePayOrderStatus.Value)
.WhereIf(input.PayStatus.HasValue, x => x.PayStatus == input.PayStatus.Value)
.WhereIf(input.LifePayOrderType.HasValue, x => x.LifePayOrderType == input.LifePayOrderType.Value)
.WhereIf(input.UserId.HasValue, x => x.UserId == input.UserId.Value)
- .Select(x =>
- new LifePayOrderListOutput
- {
- DiscountAmount = x.DiscountAmount,
- FinishTime = x.FinishTime,
- Id = x.Id,
- LifePayOrderStatus = x.LifePayOrderStatus,
- LifePayOrderType = x.LifePayOrderType,
- LifePayType = x.LifePayType,
- OrderNo = x.OrderNo,
- PayAmount = x.PayAmount,
- PhoneNumber = x.PhoneNumber,
- RechargeAmount = x.RechargeAmount,
- UserId = x.UserId,
- OutOrderNo = x.OutOrderNo,
- PayStatus = x.PayStatus,
- PayTime = x.PayTime,
- RefundCredentialsImgUrl = x.RefundCredentialsImgUrl,
- CreationTime = x.CreationTime
- })
- .GetPageResult(input.PageModel);
+ .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.Id 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,
+ RefundTime = a.RefundTime,
+ ChannelName = b.ChannlesName
+ }).GetPageResult(input.PageModel);
+
+ return result;
}
/// <summary>
@@ -199,10 +269,45 @@
PayStatus = x.PayStatus,
PayTime = x.PayTime,
OrderParamDetailJsonStr = x.OrderParamDetailJsonStr,
+ RefundCredentialsImgUrl = x.RefundCredentialsImgUrl.GetOssPath(),
CreationTime = x.CreationTime,
- RefundTime = x.RefundTime
+ RefundCheckRemark = x.RefundCheckRemark,
+ RefundApplyRemark = x.RefundApplyRemark,
+ RefundTime = x.RefundTime,
+ ACOOLYOrderNo = x.ACOOLYOrderNo,
})
.GetPageResult(input.PageModel);
+ }
+
+ public async Task<UserLifePayOrderOutput> GetUserLifePayOrderDetail(string orderNo)
+ {
+ var result = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo)
+ .Select(x =>
+ new UserLifePayOrderOutput
+ {
+ DiscountAmount = x.DiscountAmount,
+ FinishTime = x.FinishTime,
+ Id = x.Id,
+ LifePayOrderStatus = x.LifePayOrderStatus,
+ LifePayOrderType = x.LifePayOrderType,
+ LifePayType = x.LifePayType,
+ OrderNo = x.OrderNo,
+ PayAmount = x.PayAmount,
+ RechargeAmount = x.RechargeAmount,
+ PayStatus = x.PayStatus,
+ PayTime = x.PayTime,
+ OrderParamDetailJsonStr = x.OrderParamDetailJsonStr,
+ RefundCredentialsImgUrl = x.RefundCredentialsImgUrl.GetOssPath(),
+ CreationTime = x.CreationTime,
+ RefundCheckRemark = x.RefundCheckRemark,
+ RefundApplyRemark = x.RefundApplyRemark,
+ RefundTime = x.RefundTime,
+ ACOOLYOrderNo = x.ACOOLYOrderNo,
+ })
+ .FirstOrDefaultAsync();
+ CheckExtensions.IfTrueThrowUserFriendlyException(result == null, "璁㈠崟涓嶅瓨鍦�");
+
+ return result;
}
/// <summary>
@@ -217,6 +322,184 @@
.FirstOrDefaultAsync();
}
+ public async Task<PageOutput<CreateEditPayChannelsInput>> GetLifePayChannlesPage(PageInput input)
+ {
+
+ return await _lifePayChannlesRep.Select(x =>
+ new CreateEditPayChannelsInput
+ {
+ Id = x.Id,
+ ChannlesRate = x.ChannlesRate,
+ ChannlesName = x.ChannlesName,
+ ChannlesNum = x.ChannlesNum,
+ Status = x.Status,
+ SwitchType = x.SwitchType,
+ ChannlesType = x.ChannlesType,
+ })
+ .GetPageResult(input.PageModel);
+ }
+
+ public async Task<CreateEditPayChannelsInput> GetLifePayChannlesDto(Guid id)
+ {
+ return await _lifePayChannlesRep.Where(x => x.Id == id).Select(x =>
+ new CreateEditPayChannelsInput
+ {
+ Id = x.Id,
+ ChannlesRate = x.ChannlesRate,
+ ChannlesName = x.ChannlesName,
+ ChannlesNum = x.ChannlesNum,
+ Status = x.Status,
+ SwitchType = x.SwitchType,
+ ChannlesType = x.ChannlesType,
+ }).FirstOrDefaultAsync();
+ }
+
+ public async Task<CreateEditPayChannelsInput> GetLifePayChannlesDtoByNum(string channlesNum)
+ {
+ var result = await _lifePayChannlesRep.Where(x => x.ChannlesNum == channlesNum && x.Status == LifePayChannelsStatsEnum.鍚敤).Select(x =>
+ new CreateEditPayChannelsInput
+ {
+ Id = x.Id,
+ ChannlesRate = x.ChannlesRate,
+ ChannlesName = x.ChannlesName,
+ ChannlesNum = x.ChannlesNum,
+ Status = x.Status,
+ SwitchType = x.SwitchType,
+ ChannlesType = x.ChannlesType,
+ }).FirstOrDefaultAsync();
+ return result;
+ }
+
+ public async Task<UserLifePayOrderRefundOutput> GetUserLifePayOrderRefund(Guid id)
+ {
+ var order = await _lifePayOrderRepository.Where(x => x.Id == id).Select(x =>
+ new UserLifePayOrderRefundOutput
+ {
+ Id = x.Id,
+ OrderNo = x.OrderNo,
+ RefundCheckRemark = x.RefundCheckRemark,
+ RefundApplyRemark = x.RefundApplyRemark,
+ LifePayOrderStatus = x.LifePayOrderStatus,
+ }).FirstOrDefaultAsync();
+
+ CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "鏈壘鍒拌鍗曚俊鎭�");
+
+ return order;
+ }
+
+ public async Task<PageOutput<UserAccountOutput>> GetUserAccountList(QueryUserAccountListInput input)
+ {
+ if (!input.UserId.HasValue)
+ {
+ return new PageOutput<UserAccountOutput>();
+ }
+
+ var result = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.IsDeleted == false)
+ .WhereIf(input.LifePayOrderType.HasValue, x => x.LifePayType == input.LifePayOrderType)
+ .OrderByDescending(x => x.CreationTime)
+ .Select(x =>
+ new UserAccountOutput
+ {
+ Id = x.Id,
+ LifePayType = x.LifePayType,
+ Content = x.Content,
+ CreationTime = x.CreationTime,
+ Remark = x.Remark,
+ Operators = x.Operators,
+ Province = x.Province,
+ City = x.City,
+ ExtraProperties = x.ExtraProperties,
+ })
+ .GetPageResult(input.PageModel);
+ return result;
+ }
+
+ public async Task<List<UserAccountOutput>> GetUserAccountAllList(QueryUserAccountAllListInput input)
+ {
+ if (!input.UserId.HasValue)
+ {
+ return new List<UserAccountOutput>();
+ }
+
+ var result = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.IsDeleted == false)
+ .WhereIf(input.LifePayOrderType.HasValue, x => x.LifePayType == input.LifePayOrderType)
+ .OrderByDescending(x => x.CreationTime)
+ .Select(x =>
+ new UserAccountOutput
+ {
+ Id = x.Id,
+ LifePayType = x.LifePayType,
+ Content = x.Content,
+ CreationTime = x.CreationTime,
+ Remark = x.Remark,
+ Operators = x.Operators,
+ Province = x.Province,
+ City = x.City,
+ ExtraProperties = x.ExtraProperties,
+ }).ToListAsync();
+ return result;
+ }
+
+ public async Task<UserAccountOutput> GetUserAccountDetail(Guid id)
+ {
+ var result = await _lifePayAccount.Where(x => x.Id == id)
+ .OrderByDescending(x => x.CreationTime)
+ .Select(x =>
+ new UserAccountOutput
+ {
+ Id = x.Id,
+ LifePayType = x.LifePayType,
+ Content = x.Content,
+ CreationTime = x.CreationTime,
+ Remark = x.Remark,
+ Operators = x.Operators,
+ Province = x.Province,
+ City = x.City,
+ ExtraProperties = x.ExtraProperties,
+ }).FirstOrDefaultAsync();
+
+ CheckExtensions.IfTrueThrowUserFriendlyException(result == null, "鏈壘鍒版埛鍙蜂俊鎭�");
+ return result;
+ }
+
+ public async Task<List<LifePayOrderListTemplate>> GetLifePayOrderPageExport(QueryLifePayOrderListInput input)
+ {
+ var result = await (await GetLifePayOrderListFilter(input)).Select(x => new LifePayOrderListTemplate
+ {
+ DiscountAmount = x.DiscountAmount,
+ FinishTime = x.FinishTime,
+ LifePayOrderStatus = x.LifePayOrderStatus,
+ LifePayOrderType = x.LifePayOrderType,
+ LifePayType = x.LifePayType,
+ OrderNo = x.OrderNo,
+ PayAmount = x.PayAmount,
+ PhoneNumber = x.PhoneNumber,
+ RechargeAmount = x.RechargeAmount,
+ OutOrderNo = x.OutOrderNo,
+ PayStatus = x.PayStatus,
+ PayTime = x.PayTime,
+ ACOOLYOrderNo = x.ACOOLYOrderNo,
+ CreationTime = x.CreationTime,
+ RefundApplyRemark = x.RefundApplyRemark,
+ ChannelName = x.ChannelName
+ }).OrderByDescending(r => r.CreationTime).ToListAsync();
+ var i = 0;
+ result.ForEach(s =>
+ {
+ s.SerialNumber = ++i;
+ s.LifePayOrderTypeStr = s.LifePayOrderType.GetDescription();
+ s.CreationTimeStr = s.CreationTime.ToString(LifePaymentConstant.DateTimeFormatStr.yyyyMMddHHmm);
+ s.RechargeAmountStr = s.RechargeAmount.ToString("F2");
+ s.PayAmountStr = s.PayAmount.ToString("F2");
+ s.PayTimeStr = !s.PayTime.HasValue ? string.Empty : s.PayTime.Value.ToString(LifePaymentConstant.DateTimeFormatStr.yyyyMMddHHmm);
+ s.LifePayTypeStr = s.LifePayType.GetDescription();
+ s.PayStatusStr = s.PayStatus.GetDescription();
+ s.LifePayOrderStatusStr = s.LifePayOrderStatus.GetDescription();
+ s.FinishTimeStr = !s.FinishTime.HasValue ? string.Empty : s.FinishTime.Value.ToString(LifePaymentConstant.DateTimeFormatStr.yyyyMMddHHmm);
+ });
+ return result;
+ }
+
#endregion
#region 鎿嶄綔
@@ -228,8 +511,14 @@
/// <returns></returns>
public async Task<CreateLifePayOrderOutput> CreateLifePayPhoneOrder(CreateLifePayOrderInput<LifePhoneData> input)
{
+ CheckExtensions.IfTrueThrowUserFriendlyException(input.ProductData.IspCode == "dianxin" && string.IsNullOrEmpty(input.ProductData.Name), "鐢典俊鎵嬫満鍙峰繀濉満涓诲悕");
+
+
var user = await _lifePayUserRepository.FirstOrDefaultAsync(x => x.Id == input.UserId);
CheckExtensions.IfTrueThrowUserFriendlyException(user == null, "鐢ㄦ埛涓嶅瓨鍦紝璇峰厛鐧诲綍鍐嶆搷浣�");
+
+ var channle = await GetLifePayChannlesDtoByNum(input.ChannelId);
+ CheckExtensions.IfTrueThrowUserFriendlyException(channle == null, "娓犻亾涓嶅瓨鍦�");
var rate = await GetRate();
CheckExtensions.IfTrueThrowUserFriendlyException(rate.IsNullOrEmpty(), "鏈厤缃姌鎵�");
@@ -249,6 +538,7 @@
PayAmount = amount.PayAmont,
DiscountAmount = amount.DiscountAmount,
RechargeAmount = amount.RechargeAmount,
+ ChannelId = channle.Id
};
await CreateLifePayOrder(orderInput);
@@ -270,6 +560,10 @@
var user = await _lifePayUserRepository.FirstOrDefaultAsync(x => x.Id == input.UserId);
CheckExtensions.IfTrueThrowUserFriendlyException(user == null, "鐢ㄦ埛涓嶅瓨鍦紝璇峰厛鐧诲綍鍐嶆搷浣�");
+ var channle = await GetLifePayChannlesDtoByNum(input.ChannelId);
+ CheckExtensions.IfTrueThrowUserFriendlyException(channle == null, "娓犻亾涓嶅瓨鍦�");
+ CheckExtensions.IfTrueThrowUserFriendlyException(channle.Status == LifePayChannelsStatsEnum.绂佺敤, "娓犻亾宸茶绂佺敤");
+
var rate = await GetRate();
CheckExtensions.IfTrueThrowUserFriendlyException(rate.IsNullOrEmpty(), "鏈厤缃姌鎵�");
@@ -288,6 +582,51 @@
PayAmount = amount.PayAmont,
DiscountAmount = amount.DiscountAmount,
RechargeAmount = amount.RechargeAmount,
+ ChannelId = channle.Id
+ };
+
+ await CreateLifePayOrder(orderInput);
+
+ var result = new CreateLifePayOrderOutput()
+ {
+ OrderNo = orderInput.OrderNo,
+ };
+ return result;
+ }
+
+ /// <summary>
+ /// 鍒涘缓鐢熸椿缂磋垂鐕冩皵璁㈠崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ public async Task<CreateLifePayOrderOutput> CreateLifePayGasOrder(CreateLifePayOrderInput<LifeGasData> input)
+ {
+ var user = await _lifePayUserRepository.FirstOrDefaultAsync(x => x.Id == input.UserId);
+ CheckExtensions.IfTrueThrowUserFriendlyException(user == null, "鐢ㄦ埛涓嶅瓨鍦紝璇峰厛鐧诲綍鍐嶆搷浣�");
+
+ var channle = await GetLifePayChannlesDtoByNum(input.ChannelId);
+ CheckExtensions.IfTrueThrowUserFriendlyException(channle == null, "娓犻亾涓嶅瓨鍦�");
+ CheckExtensions.IfTrueThrowUserFriendlyException(channle.Status == LifePayChannelsStatsEnum.绂佺敤, "娓犻亾宸茶绂佺敤");
+
+ var rate = await GetRate();
+ CheckExtensions.IfTrueThrowUserFriendlyException(rate.IsNullOrEmpty(), "鏈厤缃姌鎵�");
+
+ var amount = CalculateAmount(input.ProductData.ParValue, rate.FirstOrDefault(x => x.RateType == LifePayRateTypeEnum.榛樿鐕冩皵鎶樻墸).Rate);
+
+ var orderInput = new CreateLifePayOrderInput
+ {
+ OrderNo = CreateOrderNo(),
+ LifePayOrderStatus = LifePayOrderStatusEnum.寰呯‘璁�,
+ LifePayOrderType = LifePayOrderTypeEnum.鐕冩皵璁㈠崟,
+ // LifePayType = input.LifePayType,
+ OrderParamDetailJsonStr = JsonConvert.SerializeObject(input.ProductData),
+ UserId = user.Id,
+ PayStatus = LifePayStatusEnum.鏈敮浠�,
+ PhoneNumber = user.PhoneNumber,
+ PayAmount = amount.PayAmont,
+ DiscountAmount = amount.DiscountAmount,
+ RechargeAmount = amount.RechargeAmount,
+ ChannelId = channle.Id
};
await CreateLifePayOrder(orderInput);
@@ -363,6 +702,9 @@
case LifePayOrderTypeEnum.鐢佃垂璁㈠崟:
desc += "鐢佃垂";
break;
+ case LifePayOrderTypeEnum.鐕冩皵璁㈠崟:
+ desc += "鐕冩皵";
+ break;
default:
break;
}
@@ -373,12 +715,10 @@
// var result = await PayTransactionsJsAPI(input.OpenId, input.Attach, order.PayAmount, input.OrderNo, desc);
- var result = await PayTransactionsJsAPI(input.OpenId, input.Attach, order.PayAmount, input.OrderNo, desc);
+ var result = await PayTransactionsJsAPI(input.OpenId, input.PayAppId, input.Attach, order.PayAmount, input.OrderNo, desc);
return result;
//var payUrl = await GetPayQRCode(order.LifePayType.Value, order.OrderNo, desc, 0.01m, ip, input.H5Type);
//var payUrl = await GetPayQRCode(order.LifePayType.Value, order.OrderNo, desc, order.PayAmount, ip, input.H5Type);
-
-
}
@@ -454,14 +794,46 @@
return (result.Code, requestInput.RequestNo, result.ElectricChargeOrder.BusiOrderNo);
}
- public async Task<ModelPaymentMiniPay> PayTransactionsJsAPI(string openid, string order_guid, decimal amount, string outTradeNo, string description)
+ /// <summary>
+ /// 鍒涘缓ACOOLY鐕冩皵璁㈠崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ public async Task<(string Code, string RequestNo, string ACOOLYOrderNo)> CreateACOOLYGasOrder(LifeGasData input, string orderNo)
{
- string time_expire = DateTime.Now.AddMinutes(5).ToString("yyyy-MM-ddTHH:mm:ss") + "+08:00";//璁㈠崟澶辨晥鏃堕棿
+ var requestInput = new ConfirmGasOrderRequestInput()
+ {
+ GasOrgType = input.GasOrgType,
+ ParValue = input.ParValue,
+ GasAccount = input.GasAccount,
+ OutOrderNo = orderNo,
+ AreaName = input.Province + "-" + input.City
+ };
+ var result = await _aCOOLYManager.ConfirmGasOrder(requestInput);
+#if DEBUG
+
+ _logger.LogInformation($"CreateACOOLYGasOrder:{JsonConvert.SerializeObject(result)}");
+
+#endif
+
+ CheckExtensions.IfTrueThrowUserFriendlyException(!result.Success || (result.Code != ACOOLYConstant.Code.SUCCESS && result.Code != ACOOLYConstant.Code.PROCESSING),
+ "璋冪敤ACOOLY鎺ュ彛ConfirmElectricOrder杩斿洖閿欒:" + JsonConvert.SerializeObject(result));
+
+ return (result.Code, requestInput.RequestNo, result.GasChargeOrder.BusiOrderNo);
+ }
+
+ public async Task<ModelPaymentMiniPay> PayTransactionsJsAPI(string openid, string appId, string order_guid, decimal amount, string outTradeNo, string description)
+ {
+ string time_expire = DateTime.Now.AddMinutes(5).ToString("yyyy-MM-ddTHH:mm:ss") + "+08:00"; /// 璁㈠崟澶辨晥鏃堕棿
+ if (string.IsNullOrEmpty(appId))
+ {
+ appId = _wxPayOptions.AppID;
+ }
+
ModelMiniPayRequest req = new ModelMiniPayRequest
{
-
TimeExpire = time_expire,
- Appid = _wxPayOptions.AppID,
+ Appid = appId,
Mchid = _wxPayOptions.Mchid,
Attach = order_guid,
Description = description,
@@ -486,7 +858,7 @@
if (res != null)
{
- string paytext = BuildSignByPay(_wxPayOptions.AppID, timestamp, nonce, package);
+ string paytext = BuildSignByPay(appId, timestamp, nonce, package);
string paysign = _wxPayApi.GeneratePaySignByKey(paytext);
info.Timestamp = timestamp.ToString();
@@ -542,6 +914,9 @@
break;
case LifePayOrderTypeEnum.鐢佃垂璁㈠崟:
result = await CreateACOOLYElectricOrder(JsonConvert.DeserializeObject<LifeElectricData>(order.OrderParamDetailJsonStr), order.OrderNo);
+ break;
+ case LifePayOrderTypeEnum.鐕冩皵璁㈠崟:
+ result = await CreateACOOLYGasOrder(JsonConvert.DeserializeObject<LifeGasData>(order.OrderParamDetailJsonStr), order.OrderNo);
break;
default:
break;
@@ -613,14 +988,17 @@
return;
}
- if (order.LifePayOrderStatus != LifePayOrderStatusEnum.宸插け璐� && order.PayStatus != LifePayStatusEnum.寰呴��娆�)
+ if (order.LifePayOrderStatus != LifePayOrderStatusEnum.宸插け璐� && order.PayStatus != LifePayStatusEnum.寰呴��娆� && order.LifePayOrderStatus != LifePayOrderStatusEnum.閫�娆惧緟瀹℃牳)
{
throw new UserFriendlyException("褰撳墠璁㈠崟鐘舵�佹棤娉曢��娆�");
}
order.PayStatus = LifePayStatusEnum.宸查��娆�;
+ order.LifePayOrderStatus = LifePayOrderStatusEnum.宸查��娆�;
order.RefundCredentialsImgUrl = input.RefundCredentialsImgUrl;
+ order.RefundCheckRemark = input.RefundCheckRemark;
order.RefundTime = DateTime.Now;
+ order.RefundCheckUserId = CurrentUser.Id;
await _lifePayOrderRepository.UpdateAsync(order);
@@ -631,6 +1009,227 @@
#endregion
}
+
+ /// <summary>
+ /// 鐢ㄦ埛鍙戣捣鐢熸椿缂磋垂閫�娆�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ /// <exception cref="UserFriendlyException"></exception>
+ public async Task RefundUserLifePayOrder(RefundUserLifePayOrderInput input)
+ {
+ var order = await _lifePayOrderRepository.FirstOrDefaultAsync(x => x.Id == input.Id);
+ CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�");
+ if (order.UserId != input.UserId)
+ {
+ throw new UserFriendlyException("闈炵敤鎴锋湰浜洪��娆�");
+ }
+
+ if (order.PayStatus == LifePayStatusEnum.宸查��娆�)
+ {
+ return;
+ }
+
+ if (order.LifePayOrderStatus != LifePayOrderStatusEnum.寰呯‘璁� && order.LifePayOrderStatus != LifePayOrderStatusEnum.宸插け璐�
+ && order.PayStatus != LifePayStatusEnum.宸叉敮浠�)
+ {
+ throw new UserFriendlyException("褰撳墠璁㈠崟鐘舵�佹棤娉曠敵璇烽��娆�");
+ }
+
+ order.LifePayOrderStatus = LifePayOrderStatusEnum.閫�娆惧緟瀹℃牳;
+ order.RefundApplyRemark = input.RefundApplyRemark;
+ order.RefundTime = DateTime.Now;
+
+ await _lifePayOrderRepository.UpdateAsync(order);
+ }
+
+ public async Task<int> AddUpdateUserAccount(AddUpdateUserAccountInput input)
+ {
+ if (input.Id.HasValue)
+ {
+ var userAccount = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.Id == input.Id)
+ .FirstOrDefaultAsync();
+ CheckExtensions.IfTrueThrowUserFriendlyException(userAccount == null, "鎴峰彿涓嶅瓨鍦�");
+ var repeatAccountContent = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.LifePayType == input.LifePayType && x.Content == input.Content && x.Id != input.Id)
+ .FirstOrDefaultAsync();
+ CheckExtensions.IfTrueThrowUserFriendlyException(repeatAccountContent != null, "鎴峰彿宸插瓨鍦�");
+
+ userAccount.LifePayType = input.LifePayType;
+ userAccount.Content = input.Content;
+ userAccount.Province = input.Province;
+ userAccount.City = input.City;
+ userAccount.Remark = input.Remark;
+ userAccount.Operators = input.Operators;
+ userAccount.ExtraProperties = input.ExtraProperties;
+ }
+ else
+ {
+
+ var repeatAccountContent = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.LifePayType == input.LifePayType && x.Content == input.Content)
+ .FirstOrDefaultAsync();
+ CheckExtensions.IfTrueThrowUserFriendlyException(repeatAccountContent != null, "鎴峰彿宸插瓨鍦�");
+ var userAccount = new LifePayAccount
+ {
+ Id = Guid.NewGuid(),
+ UserId = input.UserId,
+ Content = input.Content,
+ Province = input.Province,
+ LifePayType = input.LifePayType,
+ City = input.City,
+ Remark = input.Remark,
+ Operators = input.Operators,
+ ExtraProperties = input.ExtraProperties,
+ };
+ await _lifePayAccount.InsertAsync(userAccount);
+ }
+
+ return Constant.SUCCESS;
+ }
+
+ /// <summary>
+ /// 鐢ㄦ埛鍒犻櫎鎴峰彿淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ public async Task<int> DeleteUserAccount(Guid id)
+ {
+ var userAccount = await _lifePayAccount.Where(x => x.Id == id)
+ .FirstOrDefaultAsync();
+ CheckExtensions.IfTrueThrowUserFriendlyException(userAccount == null, "鎴峰彿涓嶅瓨鍦�");
+ userAccount.DeleterId = userAccount.UserId;
+ userAccount.DeletionTime = DateTime.Now;
+ userAccount.IsDeleted = true;
+ return Constant.SUCCESS;
+ }
+
+ /// <summary>
+ /// 閫�娆鹃┏鍥�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ /// <exception cref="UserFriendlyException"></exception>
+ public async Task RejectRefundLifePayOrder(RefundLifePayOrderInput input)
+ {
+ var order = await _lifePayOrderRepository.FirstOrDefaultAsync(x => x.Id == input.Id);
+ CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�");
+
+ if (order.PayStatus == LifePayStatusEnum.宸查��娆�)
+ {
+ return;
+ }
+
+ if ((order.LifePayOrderStatus == LifePayOrderStatusEnum.宸插け璐� && order.PayStatus == LifePayStatusEnum.寰呴��娆�) ||
+ order.LifePayOrderStatus == LifePayOrderStatusEnum.閫�娆惧緟瀹℃牳 || order.LifePayOrderStatus == LifePayOrderStatusEnum.寰呯‘璁�)
+ {
+ order.LifePayOrderStatus = LifePayOrderStatusEnum.閫�娆惧け璐�;
+ order.RefundCheckRemark = input.RefundCheckRemark;
+ order.RefundCheckUserId = CurrentUser.Id;
+
+ await _lifePayOrderRepository.UpdateAsync(order);
+
+ #region 璁板綍鏃ュ織
+
+ await PublishLifePayOrderHistoryEvent("閫�娆鹃┏鍥�", "閫�娆�", order.Id);
+
+ #endregion
+ }
+ else
+ {
+ throw new UserFriendlyException("褰撳墠璁㈠崟鐘舵�佹棤娉曢��娆�");
+ }
+
+
+ }
+
+ public async Task CreateEditPayChannels(CreateEditPayChannelsInput input)
+ {
+ if (input.Id.HasValue)
+ {
+ var dto = await _lifePayChannlesRep.FirstOrDefaultAsync(r => r.Id == input.Id.Value);
+ CheckExtensions.IfTrueThrowUserFriendlyException(dto == null, "鏈幏鍙栧埌娓犻亾鎶樻墸鏁版嵁");
+ dto.ChannlesName = input.ChannlesName;
+ dto.ChannlesNum = input.ChannlesNum;
+ dto.ChannlesRate = input.ChannlesRate;
+ dto.SwitchType = input.SwitchType;
+ dto.ChannlesType = input.ChannlesType;
+ dto.Status = input.Status;
+ #region 璁板綍鏃ュ織
+
+ await PublishLifePayOrderHistoryEvent("娓犻亾绠$悊", "缂栬緫", input.Id.Value, TableType.LifePayChannles);
+
+ #endregion
+ }
+ else
+ {
+ CheckExtensions.IfTrueThrowUserFriendlyException(input.ChannlesRate < 0.01m, "娓犻亾鎶樻墸璁剧疆閿欒");
+ input.Id = Guid.NewGuid();
+ var entity = ObjectMapper.Map<CreateEditPayChannelsInput, LifePayChannles>(input);
+ await _lifePayChannlesRep.InsertAsync(entity);
+
+ #region 璁板綍鏃ュ織
+
+ await PublishLifePayOrderHistoryEvent("娓犻亾绠$悊", "鏂板", input.Id.Value, TableType.LifePayChannles);
+
+ #endregion
+ }
+
+
+ }
+
+ public async Task SetLifePayChannelsStatus(Guid id, LifePayChannelsStatsEnum status)
+ {
+ await _lifePayChannlesRep.Where(r => r.Id == id).UpdateAsync(r => new LifePayChannles
+ {
+ Status = status,
+ });
+
+ #region 璁板綍鏃ュ織
+
+ await PublishLifePayOrderHistoryEvent("娓犻亾绠$悊", status.GetDescription(), id, TableType.LifePayChannles);
+
+ #endregion
+ }
+
+ public async Task<bool> CheckChannelsStatus(string channlesId)
+ {
+ var dto = await _lifePayChannlesRep.FirstOrDefaultAsync(r => r.ChannlesNum == channlesId);
+ CheckExtensions.IfTrueThrowUserFriendlyException(dto == null, "褰撳墠娓犻亾鍟嗕笉瀛樺湪");
+ CheckExtensions.IfTrueThrowUserFriendlyException(dto.Status == LifePayChannelsStatsEnum.绂佺敤, "褰撳墠娓犻亾鍟嗗凡绂佺敤");
+ return true;
+ }
+ public async Task CreateEditLifePayRate(List<LifePayRateInput> input)
+ {
+ CheckExtensions.IfTrueThrowUserFriendlyException(input.Where(r => r.Rate <= 0).Any(), "鎶樻墸涓嶅緱灏忎簬绛変簬0");
+ var baseRate = input.FirstOrDefault(r => r.RateType == LifePayRateTypeEnum.渚涘簲鍟嗘姌鎵d环)?.Rate;
+ var listData = new List<LifePayRate>();
+ foreach (var item in input)
+ {
+ CheckExtensions.IfTrueThrowUserFriendlyException(item.Rate < (baseRate ?? 0), "鎶樻墸涓嶅緱灏忎簬渚涘簲鍟嗘姌鎵�");
+ var tmpDto = await _lifePayRateRepository.FirstOrDefaultAsync(r => r.RateType == item.RateType);
+ if (tmpDto != null)
+ {
+ tmpDto.Rate = item.Rate;
+ }
+ else
+ {
+ listData.Add(new LifePayRate
+ {
+ CreationTime = DateTime.Now,
+ Rate = item.Rate,
+ RateType = item.RateType,
+ Id = Guid.NewGuid(),
+ });
+ }
+ }
+
+ if (listData.Any())
+ {
+ await _lifePayRateRepository.InsertManyAsync(listData);
+ }
+
+ }
+
+
#endregion
@@ -643,7 +1242,12 @@
private (decimal PayAmont, decimal DiscountAmount, decimal RechargeAmount) CalculateAmount(decimal amount, decimal rate)
{
- var payAmount = decimal.Round(amount * rate, 2, MidpointRounding.AwayFromZero);
+ /// 姝e父鏀粯
+ var payAmount = decimal.Round(amount * rate / 100, 2, MidpointRounding.AwayFromZero);
+
+ /// 1鍒嗛挶鏀粯
+ //decimal payAmount = 0.01m;
+
CheckExtensions.IfTrueThrowUserFriendlyException(payAmount < 0.01m, "鏀粯閲戦閿欒");
return (payAmount, amount - payAmount, amount);
@@ -697,9 +1301,6 @@
{
var codeUrl = string.Empty;
switch (payType)
-
-
-
{
case LifePayTypeEnum.AliPay:
codeUrl = await GetAliPayQRCode(outTradeNo, description, amount);
@@ -834,5 +1435,47 @@
}
+ private async Task<IQueryable<LifePayOrderListOutput>> GetLifePayOrderListFilter(QueryLifePayOrderListInput input)
+ {
+ var result = (from a in _lifePayOrderRepository.Where(x => x.PayStatus != LifePayStatusEnum.鏈敮浠�)
+ .WhereIf(input.BeginFinishTime.HasValue, x => x.FinishTime >= input.BeginFinishTime)
+ .WhereIf(input.EndFinishTime.HasValue, x => x.FinishTime <= input.EndFinishTime)
+ .WhereIf(input.BeginPayTime.HasValue, x => x.PayTime >= input.BeginPayTime)
+ .WhereIf(input.EndPayTime.HasValue, x => x.PayTime <= input.EndPayTime)
+ .WhereIf(input.LifePayOrderStatus.HasValue, x => x.LifePayOrderStatus == input.LifePayOrderStatus.Value)
+ .WhereIf(input.PayStatus.HasValue, x => x.PayStatus == input.PayStatus.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.Id 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,
+ RefundTime = a.RefundTime,
+ ChannelName = b.ChannlesName
+ });
+ return result;
+ }
+
+
#endregion
}
diff --git a/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYConstant.cs b/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYConstant.cs
index 3c6984d..8d96436 100644
--- a/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYConstant.cs
+++ b/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYConstant.cs
@@ -1,11 +1,4 @@
-锘縰sing Nest;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace LifePayment.Domain.Shared;
+锘縩amespace LifePayment.Domain.Shared;
public static class ACOOLYConstant
{
@@ -24,6 +17,10 @@
/// 鎻愪氦鐕冩皵璁㈠崟
/// </summary>
public const string ConfirmGasOrder = "confirmGasOrder";
+ /// <summary>
+ /// 鏌ヨ鐕冩皵鏀寔鍟嗘埛
+ /// </summary>
+ public const string QueryGasOrgType = "queryGasOrgType";
/// <summary>
/// 鑾峰彇鐢佃垂闈㈠��
diff --git a/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYInput.cs b/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYInput.cs
index a55ccd9..84e4b6d 100644
--- a/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYInput.cs
+++ b/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYInput.cs
@@ -1,10 +1,7 @@
锘縰sing Newtonsoft.Json;
using System;
-using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using ZeroD.Util;
namespace LifePayment.Domain.Shared;
@@ -85,6 +82,21 @@
[JsonProperty("gasOrgType")]
public string GasOrgType { get; set; }
+}
+
+public class GasOrgTypeRequestInput : ACOOLYRequestBaseInput
+{
+ /// <summary>
+ /// 澶栭儴鍟嗘埛璁㈠崟鍙�
+ /// </summary>
+ [JsonProperty("outOrderNo")]
+ public string OutOrderNo { get; set; }
+
+ /// <summary>
+ /// 骞冲彴璁㈠崟鍙�
+ /// </summary>
+ [JsonProperty("busiOrderNo")]
+ public string BusiOrderNo { get; set; }
}
/// <summary>
@@ -231,8 +243,11 @@
[JsonProperty("name")]
public string Name { get; set; }
}
-
-public class SetLifePayOrderPayTypeInput
+public class ChannelsBaseInput : PageInput
+{
+ public string CheckChannelId { get; set; }
+}
+public class SetLifePayOrderPayTypeInput : ChannelsBaseInput
{
[Required(ErrorMessage = "璁㈠崟鍙蜂笉鍙负绌�")]
public string OrderNo { get; set; }
@@ -252,9 +267,10 @@
/// </summary>
public string Attach { get; set; }
+
}
-public class GetPayOrderForJsAPIInput
+public class GetPayOrderForJsAPIInput : ChannelsBaseInput
{
[Required(ErrorMessage = "璁㈠崟鍙蜂笉鍙负绌�")]
public string OrderNo { get; set; }
@@ -272,4 +288,11 @@
/// </summary>
public string Attach { get; set; }
+ /// <summary>
+ /// 鏀粯搴旂敤鐨刟ppId
+ /// </summary>
+ public string PayAppId { get; set; }
+
+ //public string CheckChannelId { get; set; }
+
}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYOption.cs b/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYOption.cs
index be26f3c..8dbee6c 100644
--- a/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYOption.cs
+++ b/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYOption.cs
@@ -1,10 +1,4 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace LifePayment.Domain.Shared;
+锘縩amespace LifePayment.Domain.Shared;
public class ACOOLYOption
{
diff --git a/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYOutput.cs b/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYOutput.cs
index c8c348d..3375781 100644
--- a/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYOutput.cs
+++ b/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYOutput.cs
@@ -1,10 +1,5 @@
锘縰sing Newtonsoft.Json;
-using System;
using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace LifePayment.Domain.Shared;
@@ -136,10 +131,31 @@
/// 澶╃劧姘斿叕鍙哥被鍨�
/// </summary>
[JsonProperty("gasParValue")]
- public GasParValueOutput GasParValue { get; set; }
+ public List<GasParValueOutput> GasParValue { get; set; }
+
+}
+public class GasOrgTypeValueResponse : ACOOLYRequestBaseResponse
+{
+ /// <summary>
+ /// 澶╃劧姘斿叕鍙哥被鍨�
+ /// </summary>
+ [JsonProperty("gasSupportMerchantInfos")]
+ public List<GasSupportMerchantInfos> GasSupportMerchantInfos { get; set; }
}
+public class GasSupportMerchantInfos
+{
+ /// <summary>
+ /// 鐕冩皵鏀寔鍟嗘埛缂栫爜
+ /// </summary>
+ public string gasOrgTypeCode { get; set; }
+
+ /// <summary>
+ /// 鐕冩皵鏀寔鍟嗘埛鍚嶇О
+ /// </summary>
+ public string gasOrgTypeName { get; set; }
+}
/// <summary>
/// 鐕冩皵闈㈠�兼暟鎹�
/// </summary>
diff --git a/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs b/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs
index bddbf34..78394fa 100644
--- a/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs
+++ b/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs
@@ -1,51 +1,95 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+锘縰sing System.ComponentModel;
namespace LifePayment.Domain.Shared;
public enum LifePayTypeEnum
{
+ [Description("寰俊鏀粯")]
WxPay = 10,
+ [Description("鏀粯瀹濇敮浠�")]
AliPay = 20
}
public enum LifePayOrderTypeEnum
{
+ [Description("璇濊垂璁㈠崟")]
璇濊垂璁㈠崟 = 10,
+ [Description("鐢佃垂璁㈠崟")]
鐢佃垂璁㈠崟 = 20,
+
+ [Description("鐕冩皵璁㈠崟")]
+ 鐕冩皵璁㈠崟 = 30,
}
public enum LifePayStatusEnum
{
-
+ [Description("鏈敮浠�")]
鏈敮浠� = 10,
+ [Description("宸叉敮浠�")]
宸叉敮浠� = 20,
+ [Description("寰呴��娆�")]
寰呴��娆� = 30,
- 宸查��娆� = 40
+ [Description("宸查��娆�")]
+ 宸查��娆� = 40,
}
public enum LifePayOrderStatusEnum
{
+ [Description("寰呯‘璁�")]
寰呯‘璁� = 10,
+ [Description("宸插け璐�")]
宸插け璐� = 20,
- 宸插畬鎴� = 30
+ [Description("鏀粯瀹濇敮浠�")]
+ 宸插畬鎴� = 30,
+
+ [Description("閫�娆惧緟瀹℃牳")]
+ 閫�娆惧緟瀹℃牳 = 40,
+
+ [Description("宸查��娆�")]
+ 宸查��娆� = 50,
+
+ [Description("閫�娆惧け璐�")]
+ 閫�娆惧け璐� = 60,
}
public enum LifePayRateTypeEnum
{
榛樿璇濊垂鎶樻墸=10,
- 榛樿鐢佃垂鎶樻墸=20
+ 榛樿鐢佃垂鎶樻墸=20,
+
+ 榛樿鐕冩皵鎶樻墸=30,
+
+ 渚涘簲鍟嗘姌鎵d环=40,
}
+
+public enum LifePaySwitchTypeEnum
+{
+ H5 = 10,
+
+ 寰俊灏忕▼搴� = 20,
+
+ 寰俊鍏紬鍙� = 30,
+}
+
+public enum LifePayChannelsStatsEnum
+{
+ 鍚敤 = 10,
+
+ 绂佺敤 = 20,
+}
+
+public enum LifePayChannlesTypeEnum
+{
+ 鍐呴儴娓犻亾 = 10,
+
+ 澶栭儴娓犻亾 = 20,
+}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Domain.Shared/LifePaymentConstant.cs b/LifePayment/LifePayment.Domain.Shared/LifePaymentConstant.cs
index f7252d6..747fde5 100644
--- a/LifePayment/LifePayment.Domain.Shared/LifePaymentConstant.cs
+++ b/LifePayment/LifePayment.Domain.Shared/LifePaymentConstant.cs
@@ -725,6 +725,8 @@
public const int LgGigWorkerSignFreeSetting = 151;
public const int LifePayOrder = 200;
+
+ public const int LifePayChannles = 210;
}
public static class LogsSpecies
@@ -1022,6 +1024,7 @@
/// </summary>
public const string PhoneNumberRegEx = @"^1[3-9]\d{9}$";
+
/// <summary>
/// 鎵嬫満鍙风爜+搴ф満姝e垯琛ㄨ揪寮�
/// </summary>
@@ -1051,6 +1054,11 @@
/// 鐢ㄦ埛璐﹀彿姝e垯琛ㄨ揪寮�
/// </summary>
public const string UserNameEx = @"^[A-Za-z0-9]{8,13}$";
+
+ /// <summary>
+ /// 鐢佃垂鎴峰彿姝e垯琛ㄨ揪寮�
+ /// </summary>
+ public const string ElectricAccountRegEx = @"^.{13}$";
}
public static class ResponseCode
diff --git a/LifePayment/LifePayment.Domain/ACOOLY/ACOOLYClient.cs b/LifePayment/LifePayment.Domain/ACOOLY/ACOOLYClient.cs
index 1c0c8fe..9d23a71 100644
--- a/LifePayment/LifePayment.Domain/ACOOLY/ACOOLYClient.cs
+++ b/LifePayment/LifePayment.Domain/ACOOLY/ACOOLYClient.cs
@@ -1,24 +1,14 @@
-锘縰sing LifePayment.Application.Contracts;
-using LifePayment.Domain.Shared;
+锘縰sing LifePayment.Domain.Shared;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.IO;
using System.Linq;
using System.Net.Http;
-using System.Reflection;
using System.Security.Cryptography;
-using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
-using System.Web;
-using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Services;
-using ZeroD.Util;
-using ZeroD.Util.Fadd;
namespace LifePayment.Domain
{
diff --git a/LifePayment/LifePayment.Domain/ACOOLY/ACOOLYManager.cs b/LifePayment/LifePayment.Domain/ACOOLY/ACOOLYManager.cs
index be502bc..16b7128 100644
--- a/LifePayment/LifePayment.Domain/ACOOLY/ACOOLYManager.cs
+++ b/LifePayment/LifePayment.Domain/ACOOLY/ACOOLYManager.cs
@@ -1,17 +1,7 @@
-锘縰sing LifePayment.Application;
-using LifePayment.Application.Contracts;
-using LifePayment.Domain.Shared;
-using Microsoft.AspNetCore.Components.Forms;
+锘縰sing LifePayment.Domain.Shared;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
using System.Threading.Tasks;
-using Volo.Abp.Domain.Services;
-using Volo.Abp.Users;
-using ZeroD.Util.Fadd;
namespace LifePayment.Domain;
@@ -39,6 +29,12 @@
return await PostAsync<GasParValueRequestInput, GasParValueResponse>(input);
}
+ public async Task<GasOrgTypeValueResponse> GasOrgType(GasOrgTypeRequestInput input)
+ {
+ SetBaseInfo(input, ACOOLYConstant.Sevice.QueryGasOrgType);
+ return await PostAsync<GasOrgTypeRequestInput, GasOrgTypeValueResponse>(input);
+ }
+
/// <summary>
/// 鎻愪氦鐕冩皵璁㈠崟
/// </summary>
diff --git a/LifePayment/LifePayment.Domain/ACOOLY/IACOOLYManager.cs b/LifePayment/LifePayment.Domain/ACOOLY/IACOOLYManager.cs
index f5e865b..4ee1455 100644
--- a/LifePayment/LifePayment.Domain/ACOOLY/IACOOLYManager.cs
+++ b/LifePayment/LifePayment.Domain/ACOOLY/IACOOLYManager.cs
@@ -1,10 +1,5 @@
锘縰sing LifePayment.Domain.Shared;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
using System.Threading.Tasks;
-using Volo.Abp.Domain.Services;
namespace LifePayment.Domain;
@@ -21,6 +16,13 @@
Task<GasParValueResponse> GasParValue(GasParValueRequestInput input);
/// <summary>
+ /// 鑾峰彇鐕冩皵鏀寔鍟嗘埛
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<GasOrgTypeValueResponse> GasOrgType(GasOrgTypeRequestInput input);
+
+ /// <summary>
/// 鎻愪氦鐕冩皵璁㈠崟
/// </summary>
/// <param name="input"></param>
diff --git a/LifePayment/LifePayment.Domain/LifePay/LifePayAccount.cs b/LifePayment/LifePayment.Domain/LifePay/LifePayAccount.cs
new file mode 100644
index 0000000..e2db0a5
--- /dev/null
+++ b/LifePayment/LifePayment.Domain/LifePay/LifePayAccount.cs
@@ -0,0 +1,53 @@
+锘縰sing LifePayment.Domain.Shared;
+using System;
+using Volo.Abp;
+using Volo.Abp.Domain.Entities.Auditing;
+
+namespace LifePayment.Domain.Models
+{
+ public partial class LifePayAccount : FullAuditedEntity<Guid>, IDataUserFilter
+ {
+ public LifePayAccount()
+ {
+ }
+ /// <summary>
+ /// 鐢ㄦ埛缂栧彿
+ /// </summary>
+ public Guid UserId { get; set; }
+
+ /// <summary>
+ /// 鐢熸椿缂磋垂绫诲瀷
+ /// </summary>
+ public LifePayOrderTypeEnum LifePayType { get; set; }
+
+ /// <summary>
+ /// 杩愯惀鍟�
+ /// </summary>
+ public string Operators { get; set; }
+
+ /// <summary>
+ /// 鎵嬫満鍙�/鎴峰彿
+ /// </summary>
+ public string Content { get; set; }
+
+ /// <summary>
+ /// 鐪�
+ /// </summary>
+ public string Province { get; set; }
+
+ /// <summary>
+ /// 甯�
+ /// </summary>
+ public string City { get; set; }
+
+ /// <summary>
+ /// 鎷撳睍瀛楁锛堢數璐圭被鍨嬶級
+ /// </summary>
+ public string ExtraProperties { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Domain/LifePay/LifePayChannles.cs b/LifePayment/LifePayment.Domain/LifePay/LifePayChannles.cs
new file mode 100644
index 0000000..64ee759
--- /dev/null
+++ b/LifePayment/LifePayment.Domain/LifePay/LifePayChannles.cs
@@ -0,0 +1,25 @@
+锘縰sing LifePayment.Domain.Shared;
+using System;
+using Volo.Abp;
+using Volo.Abp.Domain.Entities.Auditing;
+
+namespace LifePayment.Domain;
+
+public partial class LifePayChannles : FullAuditedEntity<Guid>, IDataUserFilter
+{
+ public LifePayChannles()
+ {
+ }
+
+ public string ChannlesName { get; set; }
+
+ public string ChannlesNum { get; set; }
+
+ public decimal ChannlesRate { get; set; }
+
+ public LifePaySwitchTypeEnum SwitchType { get; set; }
+
+ public LifePayChannelsStatsEnum Status { get; set; }
+
+ public LifePayChannlesTypeEnum ChannlesType { get; set; }
+}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs b/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs
index 592a574..f5336a2 100644
--- a/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs
+++ b/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs
@@ -1,5 +1,4 @@
锘縰sing LifePayment.Domain.Shared;
-using Org.BouncyCastle.Bcpg.OpenPgp;
using System;
using Volo.Abp;
using Volo.Abp.Domain.Entities.Auditing;
@@ -65,6 +64,11 @@
public string OutOrderNo { get; set; }
/// <summary>
+ /// 娓犻亾娴佹按鍙�
+ /// </summary>
+ public string ACOOLYOrderNo { get; set; }
+
+ /// <summary>
/// 璁㈠崟鐘舵��
/// </summary>
public LifePayOrderStatusEnum LifePayOrderStatus { get; set; }
@@ -90,13 +94,16 @@
public string OutRequestNo { get; set; }
/// <summary>
- /// ACOOLY璁㈠崟鍙�
- /// </summary>
- public string ACOOLYOrderNo { get; set; }
-
- /// <summary>
/// 閫�娆炬椂闂�
/// </summary>
public DateTime? RefundTime { get; set; }
+
+ public string RefundApplyRemark { get; set; }
+
+ public string RefundCheckRemark { get; set; }
+
+ public Guid? RefundCheckUserId { get; set; }
+
+ public Guid? ChannelId { get; set; }
}
}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs b/LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs
index 5b0d428..24e64e5 100644
--- a/LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs
+++ b/LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs
@@ -22,6 +22,12 @@
public virtual DbSet<LifePayRate> LifePayRate { get; set; }
+
+
+ public virtual DbSet<LifePayChannles> LifePayChannles { get; set; }
+
+ public virtual DbSet<LifePayAccount> LifePayAccount { get; set; }
+
[UnitOfWork]
protected override void OnModelCreating(ModelBuilder builder)
{
diff --git a/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml b/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
index 701d5bf..96ce053 100644
--- a/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
+++ b/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
@@ -22,6 +22,18 @@
</summary>
<returns></returns>
</member>
+ <member name="M:LifePayment.Application.Contracts.ILifePayService.GetGasParValue">
+ <summary>
+ 鑾峰彇鐕冩皵闈㈠��
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:LifePayment.Application.Contracts.ILifePayService.GetGasOrgType">
+ <summary>
+ 鑾峰彇鐕冩皵鏀寔鍟嗘埛
+ </summary>
+ <returns></returns>
+ </member>
<member name="M:LifePayment.Application.Contracts.ILifePayService.LifePaySuccessHandler(System.String,System.String)">
<summary>
鏀粯鎴愬姛鍥炶皟澶勭悊
@@ -53,6 +65,13 @@
<param name="input"></param>
<returns></returns>
</member>
+ <member name="M:LifePayment.Application.Contracts.ILifePayService.CreateLifePayGasOrder(LifePayment.Application.Contracts.CreateLifePayOrderInput{LifePayment.Application.Contracts.LifeGasData})">
+ <summary>
+ 鍒涘缓鐢熸椿缂磋垂鐕冩皵璁㈠崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
<member name="M:LifePayment.Application.Contracts.ILifePayService.RefundLifePayOrder(LifePayment.Application.Contracts.RefundLifePayOrderInput)">
<summary>
閫�娆剧敓娲荤即璐硅鍗�
@@ -60,6 +79,27 @@
<param name="input"></param>
<returns></returns>
<exception cref="T:Volo.Abp.UserFriendlyException"></exception>
+ </member>
+ <member name="M:LifePayment.Application.Contracts.ILifePayService.RefundUserLifePayOrder(LifePayment.Application.Contracts.RefundUserLifePayOrderInput)">
+ <summary>
+ 鐢ㄦ埛鍙戣捣鐢熸椿缂磋垂閫�娆�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:LifePayment.Application.Contracts.ILifePayService.AddUpdateUserAccount(LifePayment.Application.Contracts.AddUpdateUserAccountInput)">
+ <summary>
+ 鐢ㄦ埛淇敼鎴峰彿淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:LifePayment.Application.Contracts.ILifePayService.DeleteUserAccount(System.Guid)">
+ <summary>
+ 鍒犻櫎鐢ㄦ埛鎴峰彿
+ </summary>
+ <param name="id"></param>
+ <returns></returns>
</member>
<member name="M:LifePayment.Application.Contracts.ILifePayService.GetRate">
<summary>
@@ -74,9 +114,23 @@
<param name="input"></param>
<returns></returns>
</member>
+ <member name="M:LifePayment.Application.Contracts.ILifePayService.GetUserLifePayOrderDetail(System.String)">
+ <summary>
+ 鑾峰彇鎴戠殑璁㈠崟璇︽儏
+ </summary>
+ <param name="orderNo"></param>
+ <returns></returns>
+ </member>
<member name="M:LifePayment.Application.Contracts.ILifePayService.GetUserPage(ZeroD.Util.PageInput)">
<summary>
鑾峰彇鐢ㄦ埛鍒嗛〉鏁版嵁
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:LifePayment.Application.Contracts.ILifePayService.GetAccountPage(LifePayment.Application.Contracts.QueryUserAccountListInput)">
+ <summary>
+ 鑾峰彇鐢ㄦ埛鎴峰彿鍒嗛〉鏁版嵁
</summary>
<param name="input"></param>
<returns></returns>
@@ -93,6 +147,34 @@
鏍规嵁璁㈠崟鍙疯幏鍙栨敮浠樼姸鎬�
</summary>
<param name="orderNo"></param>
+ <returns></returns>
+ </member>
+ <member name="M:LifePayment.Application.Contracts.ILifePayService.GetLifePayChannlesPage(ZeroD.Util.PageInput)">
+ <summary>
+ 鑾峰彇娓犻亾鍒嗛〉
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:LifePayment.Application.Contracts.ILifePayService.GetUserAccountList(LifePayment.Application.Contracts.QueryUserAccountListInput)">
+ <summary>
+ 鑾峰彇鎴戠殑鎴峰彿鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:LifePayment.Application.Contracts.ILifePayService.GetUserAccountAllList(LifePayment.Application.Contracts.QueryUserAccountAllListInput)">
+ <summary>
+ 鑾峰彇鎴戠殑鍏ㄩ儴鎴峰彿鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:LifePayment.Application.Contracts.ILifePayService.GetUserAccountDetail(System.Guid)">
+ <summary>
+ 鑾峰彇鎴戠殑鎴峰彿璇︽儏
+ </summary>
+ <param name="id"></param>
<returns></returns>
</member>
<member name="M:LifePayment.Application.Contracts.ILifePayService.SetLifePayOrderPayType(LifePayment.Domain.Shared.SetLifePayOrderPayTypeInput,System.String)">
@@ -120,6 +202,11 @@
<param name="amount"></param>
<returns></returns>
<exception cref="T:Volo.Abp.UserFriendlyException"></exception>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.CreateLifePayOrderInput`1.ChannelId">
+ <summary>
+ 娓犻亾鍚嶇О
+ </summary>
</member>
<member name="P:LifePayment.Application.Contracts.LifePhoneData.IspCode">
<summary>
@@ -174,6 +261,31 @@
<member name="P:LifePayment.Application.Contracts.LifeElectricData.SixID">
<summary>
瀹㈡埛韬唤璇佸悗6浣嶏紝鍗楃綉蹇呬紶銆�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifeGasData.ParValue">
+ <summary>
+ 鍏呭�奸潰棰濓紝鍗曚綅涓哄厓銆�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifeGasData.GasOrgType">
+ <summary>
+ 澶╃劧姘斿叕鍙哥被鍨嬶紝"zhong_ran"浠h〃涓噧鐕冩皵锛�"bei_jing"浠h〃鍖椾含鐕冩皵銆�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifeGasData.GasAccount">
+ <summary>
+ 鐕冩皵鎴峰彿
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifeGasData.Province">
+ <summary>
+ 鐪佷唤
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifeGasData.City">
+ <summary>
+ 鍩庡競
</summary>
</member>
<member name="P:LifePayment.Application.Contracts.CreateLifePayOrderInput.PhoneNumber">
@@ -241,9 +353,19 @@
璁㈠崟鍙傛暟璇︽儏
</summary>
</member>
+ <member name="P:LifePayment.Application.Contracts.CreateLifePayOrderInput.ChannelId">
+ <summary>
+ 涓嬪崟娓犻亾
+ </summary>
+ </member>
<member name="P:LifePayment.Application.Contracts.QueryLifePayOrderListInput.LifePayOrderType">
<summary>
璁㈠崟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.QueryLifePayOrderListInput.LifePayType">
+ <summary>
+ 鐢熸椿缂磋垂鏀粯绫诲瀷
</summary>
</member>
<member name="P:LifePayment.Application.Contracts.QueryLifePayOrderListInput.BeginPayTime">
@@ -281,6 +403,66 @@
鐢ㄦ埛Id
</summary>
</member>
+ <member name="P:LifePayment.Application.Contracts.QueryLifePayOrderListInput.KeyWords">
+ <summary>
+ 鎼滅储鍏抽敭璇�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.RefundUserLifePayOrderInput.UserId">
+ <summary>
+ 鐢ㄦ埛Id
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.QueryUserAccountListInput.UserId">
+ <summary>
+ 鐢ㄦ埛Id
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.QueryUserAccountAllListInput.UserId">
+ <summary>
+ 鐢ㄦ埛Id
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.AddUpdateUserAccountInput.UserId">
+ <summary>
+ 鐢ㄦ埛缂栧彿
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.AddUpdateUserAccountInput.LifePayType">
+ <summary>
+ 鐢熸椿缂磋垂绫诲瀷
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.AddUpdateUserAccountInput.Operators">
+ <summary>
+ 杩愯惀鍟�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.AddUpdateUserAccountInput.Content">
+ <summary>
+ 鎵嬫満鍙�/鎴峰彿
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.AddUpdateUserAccountInput.Province">
+ <summary>
+ 鐪�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.AddUpdateUserAccountInput.City">
+ <summary>
+ 甯�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.AddUpdateUserAccountInput.ExtraProperties">
+ <summary>
+ 鎷撳睍瀛楁锛堢數璐圭被鍨嬶級
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.AddUpdateUserAccountInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
<member name="P:LifePayment.Application.Contracts.UserListOutput.PhoneNumber">
<summary>
鐢ㄦ埛鎵嬫満鍙�
@@ -294,6 +476,11 @@
<member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.LifePayType">
<summary>
鐢熸椿缂磋垂鏀粯绫诲瀷
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.ChannelName">
+ <summary>
+ 娓犻亾鍚嶇О
</summary>
</member>
<member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.LifePayOrderType">
@@ -354,6 +541,51 @@
<member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.CreationTime">
<summary>
涓嬪崟鏃堕棿
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.RefundTime">
+ <summary>
+ 閫�娆炬椂闂�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListTemplate.CreationTime">
+ <summary>
+ 涓嬪崟鏃堕棿
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListTemplate.RechargeAmount">
+ <summary>
+ 鍏呭�奸噾棰�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListTemplate.DiscountAmount">
+ <summary>
+ 浼樻儬閲戦
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListTemplate.PayAmount">
+ <summary>
+ 瀹炰粯閲戦
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListTemplate.PayTime">
+ <summary>
+ 鏀粯鏃堕棿
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListTemplate.PayStatus">
+ <summary>
+ 鏀粯鐘舵��
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListTemplate.LifePayOrderStatus">
+ <summary>
+ 璁㈠崟鐘舵��
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListTemplate.FinishTime">
+ <summary>
+ 瀹屾垚鏃堕棿
</summary>
</member>
<member name="P:LifePayment.Application.Contracts.UserLifePayOrderOutput.LifePayType">
@@ -421,6 +653,81 @@
閫�娆炬椂闂�
</summary>
</member>
+ <member name="P:LifePayment.Application.Contracts.UserLifePayOrderOutput.RefundCredentialsImgUrl">
+ <summary>
+ 閫�娆惧嚟璇�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.UserLifePayOrderOutput.ACOOLYOrderNo">
+ <summary>
+ 娓犻亾娴佹按鍙�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.UserLifePayOrderRefundOutput.Id">
+ <summary>
+ 璁㈠崟缂栧彿
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.UserLifePayOrderRefundOutput.OrderNo">
+ <summary>
+ 璁㈠崟鍙�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.UserLifePayOrderRefundOutput.RefundApplyRemark">
+ <summary>
+ 閫�娆惧師鍥�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.UserLifePayOrderRefundOutput.RefundCheckRemark">
+ <summary>
+ 鍚庡彴濉啓鐨勯┏鍥炲師鍥�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.UserLifePayOrderRefundOutput.LifePayOrderStatus">
+ <summary>
+ 璁㈠崟鐘舵��
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.UserAccountOutput.LifePayType">
+ <summary>
+ 鐢熸椿缂磋垂绫诲瀷
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.UserAccountOutput.Operators">
+ <summary>
+ 杩愯惀鍟�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.UserAccountOutput.Content">
+ <summary>
+ 鎵嬫満鍙�/鎴峰彿
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.UserAccountOutput.Province">
+ <summary>
+ 鐪�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.UserAccountOutput.City">
+ <summary>
+ 甯�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.UserAccountOutput.ExtraProperties">
+ <summary>
+ 鎷撳睍瀛楁锛堢數璐圭被鍨嬶級
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.UserAccountOutput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.UserAccountOutput.CreationTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
<member name="P:LifePayment.Application.Contracts.RecordOperateHistoryEto.RelationId">
<summary>
鍏宠仈鍏崇郴ID
--
Gitblit v1.9.1