From 49c0b8b6fa292db8bd82f625044c0cf8bfd42560 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E6=A2=93=E5=BD=AD?= Date: Mon, 13 Apr 2026 06:58:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E4=BB=98=E7=9B=B8=E5=85=B3=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Client/Dtos/EventClientDtos.cs | 20 ++++++ .../Client/EventClientController.cs | 46 +++++++++++- .../Event/Dtos/EventRecordDtos.cs | 5 ++ .../Event/Dtos/UnifiedRegistrationDtos.cs | 5 ++ .../Event/EventRecordService.cs | 67 +++++++++++++---- .../Event/EventRegistrationService.cs | 72 ++++++++++++++++++- .../Event/UnifiedRegistrationService.cs | 41 ++++++++--- .../Order/Dtos/OrderListOutput.cs | 20 ++++++ YD_Event.Application/Order/OrderService.cs | 10 +++ YD_Event.Application/YD_Event.Application.xml | 55 ++++++++++++++ YD_Event.Core/Entities/EventRegistration.cs | 5 ++ YD_Event.Core/Enum/PaymentMethodType.cs | 33 +++++++++ YD_Event.Core/YD_Event.Core.xml | 37 +++++++++- 13 files changed, 391 insertions(+), 25 deletions(-) create mode 100644 YD_Event.Core/Enum/PaymentMethodType.cs diff --git a/YD_Event.Application/Client/Dtos/EventClientDtos.cs b/YD_Event.Application/Client/Dtos/EventClientDtos.cs index 6d73e77..4b6b75c 100644 --- a/YD_Event.Application/Client/Dtos/EventClientDtos.cs +++ b/YD_Event.Application/Client/Dtos/EventClientDtos.cs @@ -547,6 +547,21 @@ public class SubmitRegistrationInput [Required(ErrorMessage = "报名项目列表不能为空")] [MinLength(1, ErrorMessage = "请至少选择一个项目")] public List Items { get; set; } + + /// + /// 支付方式:1-线下,2-线上 + /// + public int PaymentMethod { get; set; } + + /// + /// 具体支付方式 + /// + public PaymentMethodType PaymentMethodType { get; set; } + + /// + /// 优惠码 + /// + public string? CouponCode { get; set; } } /// @@ -998,6 +1013,11 @@ public class SelectPaymentMethodInput [MaxLength(50, ErrorMessage = "OpenId长度不能超过50个字符")] [RegularExpression(@"^[a-zA-Z0-9_-]+$", ErrorMessage = "OpenId格式不正确,只能包含字母、数字、下划线和连字符")] public string? OpenId { get; set; } + + /// + /// 具体支付方式 + /// + public PaymentMethodType PaymentMethodType { get; set; } } /// diff --git a/YD_Event.Application/Client/EventClientController.cs b/YD_Event.Application/Client/EventClientController.cs index 95b5d5f..fbe6a48 100644 --- a/YD_Event.Application/Client/EventClientController.cs +++ b/YD_Event.Application/Client/EventClientController.cs @@ -703,6 +703,25 @@ public class EventClientController : IDynamicApiController // 调用统一报名服务 var result = await _unifiedRegistrationService.ProcessRegistrationAsync(unifiedInput); + // 如果用户在提交时已经选择了支付方式,立即处理支付方式设置 + if (input.PaymentMethod > 0) + { + // 构建统一支付输入 + var unifiedPaymentInput = new UnifiedPaymentInput + { + RegistrationId = result.RegistrationId, + PaymentMethod = input.PaymentMethod, + PaymentMethodType = input.PaymentMethodType, + CouponId = null, + OpenId = null, + PaymentProofUrl = null, + OperatorUserId = userId + }; + + // 调用统一支付服务处理支付方式 + await _unifiedRegistrationService.ProcessPaymentAsync(unifiedPaymentInput); + } + return result.RegistrationId; } @@ -738,6 +757,7 @@ public class EventClientController : IDynamicApiController { RegistrationId = input.RegistrationId, PaymentMethod = paymentMethod, + PaymentMethodType = reg.PaymentMethodType, CouponId = null, OpenId = input.OpenId, PaymentProofUrl = null, @@ -1042,7 +1062,31 @@ public class EventClientController : IDynamicApiController }; // 调用统一支付服务(仅设置支付方式,不处理实际支付) - reg.PaymentMethod = input.PaymentMethod; + // 处理支付方式转换逻辑 + if (input.PaymentMethodType == PaymentMethodType.WeChatPay || + input.PaymentMethodType == PaymentMethodType.AliPay) + { + reg.PaymentMethod = 2; // 线上支付 + } + else if (input.PaymentMethodType == PaymentMethodType.BankTransfer) + { + reg.PaymentMethod = 1; // 线下支付 + } + else + { + // 如果没有指定具体支付方式,使用输入的支付方式 + reg.PaymentMethod = input.PaymentMethod; + } + + // 设置具体支付方式 + reg.PaymentMethodType = input.PaymentMethodType; + + // 线下支付订单状态设置为待审核 + if (reg.PaymentMethod == 1) + { + reg.PaymentStatus = 0; // 待审核 + } + reg.UpdatedTime = DateTime.Now; reg.UpdatedUserId = userId; diff --git a/YD_Event.Application/Event/Dtos/EventRecordDtos.cs b/YD_Event.Application/Event/Dtos/EventRecordDtos.cs index e49c37f..83721bb 100644 --- a/YD_Event.Application/Event/Dtos/EventRecordDtos.cs +++ b/YD_Event.Application/Event/Dtos/EventRecordDtos.cs @@ -10,6 +10,11 @@ public class EventRecordPageInput : Pagination /// public long? AppUserId { get; set; } + /// + /// 系统用户ID + /// + public long? SysUserId { get; set; } + /// /// 商户ID /// diff --git a/YD_Event.Application/Event/Dtos/UnifiedRegistrationDtos.cs b/YD_Event.Application/Event/Dtos/UnifiedRegistrationDtos.cs index e488d2e..f0eb42e 100644 --- a/YD_Event.Application/Event/Dtos/UnifiedRegistrationDtos.cs +++ b/YD_Event.Application/Event/Dtos/UnifiedRegistrationDtos.cs @@ -237,6 +237,11 @@ public class UnifiedPaymentInput /// public string? PaymentProofUrl { get; set; } + /// + /// 具体支付方式 + /// + public PaymentMethodType PaymentMethodType { get; set; } + /// /// 操作用户ID /// diff --git a/YD_Event.Application/Event/EventRecordService.cs b/YD_Event.Application/Event/EventRecordService.cs index ffb3b6e..7c286c0 100644 --- a/YD_Event.Application/Event/EventRecordService.cs +++ b/YD_Event.Application/Event/EventRecordService.cs @@ -2,6 +2,8 @@ using YD_Event.Application.Event.Dtos; using YD_Event.Core.Entities; using YD_Event.Core.Enum; using AppUserEntity = YD_Event.Core.Entities.AppUser; +using SysUserEntity = YD_Event.Core.Entities.SysUser; +using MerchantEntity = YD_Event.Core.Entities.Merchant; namespace YD_Event.Application.Event; @@ -14,18 +16,21 @@ public class EventRecordService : BaseService, ITransient private readonly ISqlSugarRepository _eventRep; private readonly ISqlSugarRepository _certificateRep; private readonly ISqlSugarRepository _appUserRep; - private readonly ISqlSugarRepository _merchantRep; + private readonly ISqlSugarRepository _sysUserRep; + private readonly ISqlSugarRepository _merchantRep; public EventRecordService(ISqlSugarRepository registrationRep, ISqlSugarRepository eventRep, ISqlSugarRepository certificateRep, ISqlSugarRepository appUserRep, - ISqlSugarRepository merchantRep) : base(registrationRep) + ISqlSugarRepository sysUserRep, + ISqlSugarRepository merchantRep) : base(registrationRep) { _registrationRep = registrationRep; _eventRep = eventRep; _certificateRep = certificateRep; _appUserRep = appUserRep; + _sysUserRep = sysUserRep; _merchantRep = merchantRep; } @@ -35,20 +40,25 @@ public class EventRecordService : BaseService, ITransient [HttpGet("page")] public async Task> Page([FromQuery] EventRecordPageInput input) { + // 参数验证 + ValidateInput(input); + // Join EventRegistration and EventInfo var query = _registrationRep.AsQueryable() .LeftJoin((r, e) => r.EventId == e.Id) .LeftJoin((r, e, u) => r.CreatedUserId == u.Id) - .LeftJoin((r, e, u, m) => r.CreatedUserId == m.CreatedUserId) - .WhereIF(!string.IsNullOrWhiteSpace(input.EventName), (r, e, u, m) => e.EventName.Contains(input.EventName)) - .WhereIF(input.StartTime.HasValue, (r, e, u, m) => e.MatchStartTime >= input.StartTime) - .WhereIF(input.EndTime.HasValue, (r, e, u, m) => e.MatchStartTime <= input.EndTime) - .WhereIF(input.PaymentStatus.HasValue, (r, e, u, m) => r.PaymentStatus == input.PaymentStatus) - // Filter by User ID (AppUser or Merchant) - .WhereIF(input.AppUserId.HasValue, (r, e, u, m) => u.Id == input.AppUserId) - .WhereIF(input.MerchantId.HasValue, (r, e, u, m) => m.Id == input.MerchantId) - .OrderByDescending((r, e, u, m) => r.CreatedTime) - .Select((r, e, u, m) => new EventRecordOutput + .LeftJoin((r, e, u, s) => r.CreatedUserId == s.Id) + .LeftJoin((r, e, u, s, m) => r.CreatedUserId == m.CreatedUserId) + .WhereIF(!string.IsNullOrWhiteSpace(input.EventName), (r, e, u, s, m) => e.EventName.Contains(input.EventName)) + .WhereIF(input.StartTime.HasValue, (r, e, u, s, m) => e.MatchStartTime >= input.StartTime) + .WhereIF(input.EndTime.HasValue, (r, e, u, s, m) => e.MatchStartTime <= input.EndTime) + .WhereIF(input.PaymentStatus.HasValue, (r, e, u, s, m) => r.PaymentStatus == input.PaymentStatus) + // Filter by User ID (AppUser, SysUser, or Merchant) + .WhereIF(input.AppUserId.HasValue, (r, e, u, s, m) => u.Id == input.AppUserId) + .WhereIF(input.SysUserId.HasValue, (r, e, u, s, m) => s.Id == input.SysUserId) + .WhereIF(input.MerchantId.HasValue, (r, e, u, s, m) => m.CreatedUserId == input.MerchantId) + .OrderByDescending((r, e, u, s, m) => r.CreatedTime) + .Select((r, e, u, s, m) => new EventRecordOutput { Id = r.Id, EventName = e.EventName, @@ -65,6 +75,39 @@ public class EventRecordService : BaseService, ITransient return await query.ToPagedListAsync(input); } + /// + /// 验证输入参数 + /// + private void ValidateInput(EventRecordPageInput input) + { + // 检查是否同时提供了多个用户ID类型 + var userTypeCount = 0; + if (input.AppUserId.HasValue) userTypeCount++; + if (input.SysUserId.HasValue) userTypeCount++; + if (input.MerchantId.HasValue) userTypeCount++; + + if (userTypeCount > 1) + { + throw Oops.Bah("只能提供一种用户类型ID参数(AppUserId、SysUserId或MerchantId)"); + } + + // 验证用户ID有效性 + if (input.AppUserId.HasValue && input.AppUserId.Value <= 0) + { + throw Oops.Bah("普通用户ID无效"); + } + + if (input.SysUserId.HasValue && input.SysUserId.Value <= 0) + { + throw Oops.Bah("系统用户ID无效"); + } + + if (input.MerchantId.HasValue && input.MerchantId.Value <= 0) + { + throw Oops.Bah("商户ID无效"); + } + } + /// /// 获取证书列表 /// diff --git a/YD_Event.Application/Event/EventRegistrationService.cs b/YD_Event.Application/Event/EventRegistrationService.cs index 3b8f022..59b4803 100644 --- a/YD_Event.Application/Event/EventRegistrationService.cs +++ b/YD_Event.Application/Event/EventRegistrationService.cs @@ -14,6 +14,7 @@ public class EventRegistrationService : BaseService, ITransie private readonly ISqlSugarRepository _itemRepository; private readonly ISqlSugarRepository _personRepository; private readonly ISqlSugarRepository _paymentRepository; + private readonly ISqlSugarRepository _orderRepository; private readonly AuthManager _authManager; public EventRegistrationService( @@ -21,12 +22,14 @@ public class EventRegistrationService : BaseService, ITransie ISqlSugarRepository itemRepository, ISqlSugarRepository personRepository, ISqlSugarRepository paymentRepository, + ISqlSugarRepository orderRepository, AuthManager authManager) : base(repository) { _repository = repository; _itemRepository = itemRepository; _personRepository = personRepository; _paymentRepository = paymentRepository; + _orderRepository = orderRepository; _authManager = authManager; } @@ -121,12 +124,39 @@ public class EventRegistrationService : BaseService, ITransie { if (input.Ids == null || !input.Ids.Any()) return; + // 更新报名记录的支付状态 await _repository.UpdateAsync(x => new EventRegistration { PaymentStatus = input.PaymentStatus, ReviewRemark = input.ReviewRemark, ReviewTime = DateTime.Now }, x => input.Ids.Contains(x.Id)); + + // 如果审核通过(PaymentStatus = 1),同步更新相关订单的状态为已支付 + if (input.PaymentStatus == 1) + { + // 获取需要更新的报名记录 + var registrations = await _repository.GetListAsync(x => input.Ids.Contains(x.Id)); + + // 提取所有订单号 + var orderNos = registrations + .Where(r => !string.IsNullOrEmpty(r.OrderNo)) + .Select(r => r.OrderNo) + .ToList(); + + if (orderNos.Any()) + { + var now = DateTime.Now; + // 更新相关订单的状态为已支付 + await _orderRepository.UpdateAsync(x => new YD_Event.Core.Entities.Order + { + OrderStatus = YD_Event.Core.Enum.OrderStatus.Paid, + PaymentTime = now, + UpdatedTime = now, + UpdatedUserId = _authManager.UserId + }, x => orderNos.Contains(x.OrderNo)); + } + } } /// @@ -190,19 +220,33 @@ public class EventRegistrationService : BaseService, ITransie throw Oops.Bah("该记录已完成支付审核,无需重复操作"); } + var now = DateTime.Now; registration.PaymentStatus = input.PaymentStatus; registration.ReviewRemark = input.ReviewRemark; - registration.ReviewTime = DateTime.Now; + registration.ReviewTime = now; registration.Reviewer = _authManager.Account; - registration.UpdatedTime = DateTime.Now; + registration.UpdatedTime = now; registration.UpdatedUserId = _authManager.UserId; if (input.PaymentStatus == 1) { - registration.PaymentTime = DateTime.Now; + registration.PaymentTime = now; } await _repository.UpdateAsync(registration); + + // 如果审核通过(PaymentStatus = 1),同步更新相关订单的状态为已支付 + if (input.PaymentStatus == 1 && !string.IsNullOrEmpty(registration.OrderNo)) + { + // 更新相关订单的状态为已支付 + await _orderRepository.UpdateAsync(x => new YD_Event.Core.Entities.Order + { + OrderStatus = YD_Event.Core.Enum.OrderStatus.Paid, + PaymentTime = now, + UpdatedTime = now, + UpdatedUserId = _authManager.UserId + }, x => x.OrderNo == registration.OrderNo); + } } /// @@ -236,5 +280,27 @@ public class EventRegistrationService : BaseService, ITransie UpdatedUserId = _authManager.UserId, PaymentTime = input.PaymentStatus == 1 ? now : x.PaymentTime }, x => input.Ids.Contains(x.Id)); + + // 如果审核通过(PaymentStatus = 1),同步更新相关订单的状态为已支付 + if (input.PaymentStatus == 1) + { + // 提取所有订单号 + var orderNos = registrations + .Where(r => !string.IsNullOrEmpty(r.OrderNo)) + .Select(r => r.OrderNo) + .ToList(); + + if (orderNos.Any()) + { + // 更新相关订单的状态为已支付 + await _orderRepository.UpdateAsync(x => new YD_Event.Core.Entities.Order + { + OrderStatus = YD_Event.Core.Enum.OrderStatus.Paid, + PaymentTime = now, + UpdatedTime = now, + UpdatedUserId = _authManager.UserId + }, x => orderNos.Contains(x.OrderNo)); + } + } } } diff --git a/YD_Event.Application/Event/UnifiedRegistrationService.cs b/YD_Event.Application/Event/UnifiedRegistrationService.cs index 6bf105f..76aee2d 100644 --- a/YD_Event.Application/Event/UnifiedRegistrationService.cs +++ b/YD_Event.Application/Event/UnifiedRegistrationService.cs @@ -236,8 +236,38 @@ public class UnifiedRegistrationService : ITransient registration.OrderNo = await _orderNoGeneratorService.GenerateOrderNoAsync(); output.OrderNo = registration.OrderNo; } - registration.PaymentMethod = input.PaymentMethod; - registration.PaymentStatus = 0; + + // 处理支付方式转换逻辑 + // 微信支付或支付宝支付 -> 线上支付 + // 银行卡转账 -> 线下支付 + if (input.PaymentMethodType == PaymentMethodType.WeChatPay || + input.PaymentMethodType == PaymentMethodType.AliPay) + { + registration.PaymentMethod = 2; // 线上支付 + } + else if (input.PaymentMethodType == PaymentMethodType.BankTransfer) + { + registration.PaymentMethod = 1; // 线下支付 + } + else + { + // 如果没有指定具体支付方式,使用输入的支付方式 + registration.PaymentMethod = input.PaymentMethod; + } + + // 设置具体支付方式 + registration.PaymentMethodType = input.PaymentMethodType; + + // 线下支付订单状态设置为待审核 + if (registration.PaymentMethod == 1) + { + registration.PaymentStatus = 0; // 待审核 + } + else + { + registration.PaymentStatus = 0; // 线上支付初始状态也是待支付 + } + await _registrationRepository.UpdateAsync(registration); // 7. 创建订单记录 @@ -675,7 +705,7 @@ public class UnifiedRegistrationService : ITransient Phone = pInput.Mobile, Age = CalculateAge(pInput.BirthDate), PersonType = PersonType.Athlete, - UserId = pInput.UserId, + UserId = pInput.UserId ?? 0, CreatedUserId = input.CreatedUserId, CreatedTime = DateTime.Now }); @@ -880,11 +910,6 @@ public class UnifiedRegistrationService : ITransient /// private async Task HandleOfflinePaymentAsync(EventRegistration registration, UnifiedPaymentInput input) { - if (string.IsNullOrEmpty(input.PaymentProofUrl)) - { - throw Oops.Bah("线下支付需要上传付款凭证"); - } - registration.PaymentProofUrl = input.PaymentProofUrl; registration.PaymentStatus = 0; // 待审核 registration.UpdatedTime = DateTime.Now; diff --git a/YD_Event.Application/Order/Dtos/OrderListOutput.cs b/YD_Event.Application/Order/Dtos/OrderListOutput.cs index bce98aa..bd3cac8 100644 --- a/YD_Event.Application/Order/Dtos/OrderListOutput.cs +++ b/YD_Event.Application/Order/Dtos/OrderListOutput.cs @@ -42,6 +42,16 @@ public class OrderListOutput /// public string PaymentMethod { get; set; } + /// + /// 具体支付方式 + /// + public PaymentMethodType PaymentMethodType { get; set; } + + /// + /// 具体支付方式文本 + /// + public string PaymentMethodTypeText { get; set; } + /// /// 支付凭证URL /// @@ -173,6 +183,16 @@ public class OrderDetailOutput /// public string PaymentMethod { get; set; } + /// + /// 具体支付方式 + /// + public PaymentMethodType PaymentMethodType { get; set; } + + /// + /// 具体支付方式文本 + /// + public string PaymentMethodTypeText { get; set; } + /// /// 支付凭证URL /// diff --git a/YD_Event.Application/Order/OrderService.cs b/YD_Event.Application/Order/OrderService.cs index 97871c3..570eb1b 100644 --- a/YD_Event.Application/Order/OrderService.cs +++ b/YD_Event.Application/Order/OrderService.cs @@ -208,6 +208,11 @@ public class OrderService : BaseService, ITransien OrderType = o.OrderType == 1 ? "收入" : "退款", RelatedOrderNo = ro.OrderNo, PaymentMethod = r.PaymentMethod == 2 ? "线上" : "线下", + PaymentMethodType = r.PaymentMethodType, + PaymentMethodTypeText = + r.PaymentMethodType == PaymentMethodType.WeChatPay ? "微信支付" : + r.PaymentMethodType == PaymentMethodType.AliPay ? "支付宝支付" : + r.PaymentMethodType == PaymentMethodType.BankTransfer ? "银行卡转账" : "未选择", PaymentProofUrl = r.PaymentProofUrl, RegistrationMode = r.RegistrationMode == 1 ? "个人" : "团队", ContactName = r.ContactName, @@ -289,6 +294,11 @@ public class OrderService : BaseService, ITransien Items = itemDtos, Persons = personDtos, PaymentMethod = orderInfo.Registration?.PaymentMethod == 2 ? "线上" : "线下", + PaymentMethodType = orderInfo.Registration?.PaymentMethodType ?? PaymentMethodType.None, + PaymentMethodTypeText = + orderInfo.Registration?.PaymentMethodType == PaymentMethodType.WeChatPay ? "微信支付" : + orderInfo.Registration?.PaymentMethodType == PaymentMethodType.AliPay ? "支付宝支付" : + orderInfo.Registration?.PaymentMethodType == PaymentMethodType.BankTransfer ? "银行卡转账" : "未选择", PaymentProofUrl = orderInfo.Registration?.PaymentProofUrl, RegistrationMode = orderInfo.Registration?.RegistrationMode == 1 ? "个人" : "团队", OriginalAmount = orderInfo.Order.OriginalAmount, diff --git a/YD_Event.Application/YD_Event.Application.xml b/YD_Event.Application/YD_Event.Application.xml index 40f1f1f..99c713d 100644 --- a/YD_Event.Application/YD_Event.Application.xml +++ b/YD_Event.Application/YD_Event.Application.xml @@ -2117,6 +2117,21 @@ 报名项目列表 + + + 支付方式:1-线下,2-线上 + + + + + 具体支付方式 + + + + + 优惠码 + + 报名项目输入 @@ -2525,6 +2540,11 @@ - 允许的字符:字母、数字、下划线、连字符 + + + 具体支付方式 + + 取消报名退款输入DTO @@ -4555,6 +4575,11 @@ 普通用户ID + + + 系统用户ID + + 商户ID @@ -5780,6 +5805,11 @@ 支付凭证URL (线下支付时必填) + + + 具体支付方式 + + 操作用户ID @@ -7110,6 +7140,11 @@ 分页查询参赛记录 + + + 验证输入参数 + + 获取证书列表 @@ -8830,6 +8865,16 @@ 支付方式 + + + 具体支付方式 + + + + + 具体支付方式文本 + + 支付凭证URL @@ -8960,6 +9005,16 @@ 支付方式 + + + 具体支付方式 + + + + + 具体支付方式文本 + + 支付凭证URL diff --git a/YD_Event.Core/Entities/EventRegistration.cs b/YD_Event.Core/Entities/EventRegistration.cs index f790594..c79c202 100644 --- a/YD_Event.Core/Entities/EventRegistration.cs +++ b/YD_Event.Core/Entities/EventRegistration.cs @@ -62,6 +62,11 @@ public class EventRegistration : Entity, ISoftDelete, ICreatedUserId, ICre /// public int PaymentMethod { get; set; } + /// + /// 具体支付方式 + /// + public PaymentMethodType PaymentMethodType { get; set; } + /// /// 订单编号 /// diff --git a/YD_Event.Core/Enum/PaymentMethodType.cs b/YD_Event.Core/Enum/PaymentMethodType.cs new file mode 100644 index 0000000..762fea0 --- /dev/null +++ b/YD_Event.Core/Enum/PaymentMethodType.cs @@ -0,0 +1,33 @@ +using System.ComponentModel; + +namespace YD_Event.Core.Enum; + +/// +/// 具体支付方式 +/// +public enum PaymentMethodType +{ + /// + /// 未选择 + /// + [Description("未选择")] + None = 0, + + /// + /// 微信支付 + /// + [Description("微信支付")] + WeChatPay = 1, + + /// + /// 支付宝支付 + /// + [Description("支付宝支付")] + AliPay = 2, + + /// + /// 银行卡转账 + /// + [Description("银行卡转账")] + BankTransfer = 3 +} diff --git a/YD_Event.Core/YD_Event.Core.xml b/YD_Event.Core/YD_Event.Core.xml index b74de19..5163609 100644 --- a/YD_Event.Core/YD_Event.Core.xml +++ b/YD_Event.Core/YD_Event.Core.xml @@ -1714,6 +1714,11 @@ 支付方式:1-线下,2-线上 + + + 具体支付方式 + + 订单编号 @@ -2061,7 +2066,12 @@ - 关联的用户ID(可选) + 关联的用户ID(必填) + + + + + 关联的用户信息(导航属性) @@ -4512,6 +4522,31 @@ 退赛 + + + 具体支付方式 + + + + + 未选择 + + + + + 微信支付 + + + + + 支付宝支付 + + + + + 银行卡转账 + + 人员角色类型