订单管理
This commit is contained in:
parent
db15e4c68b
commit
a9dae6df69
@ -1,4 +1,5 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using YD_Event.Core.Enum;
|
||||
|
||||
namespace YD_Event.Application.Order.Dtos;
|
||||
|
||||
|
||||
@ -20,6 +20,9 @@ public class OrderListOutput
|
||||
public decimal ActualAmount { get; set; } // Paid or Refunded
|
||||
public OrderStatus OrderStatus { get; set; }
|
||||
public DateTime CreatedTime { get; set; }
|
||||
public DateTime? PaymentTime { get; set; }
|
||||
public decimal? RefundAmount { get; set; }
|
||||
public DateTime? RefundTime { get; set; }
|
||||
}
|
||||
|
||||
public class OrderDetailOutput
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using System.Text;
|
||||
using YD_Event.Application.Auth;
|
||||
using YD_Event.Application.Order.Dtos;
|
||||
using YD_Event.Core.Entities;
|
||||
using YD_Event.Core.Enum;
|
||||
@ -20,6 +21,7 @@ public class OrderService : BaseService<YD_Event.Core.Entities.Order>, ITransien
|
||||
private readonly ISqlSugarRepository<YD_Event.Core.Entities.Merchant> _merchantRepository;
|
||||
private readonly RefundConfigService _refundConfigService;
|
||||
private readonly IIdGenerator _idGenerator;
|
||||
private readonly AuthManager _authManager;
|
||||
|
||||
public OrderService(
|
||||
ISqlSugarRepository<YD_Event.Core.Entities.Order> orderRepository,
|
||||
@ -30,7 +32,8 @@ public class OrderService : BaseService<YD_Event.Core.Entities.Order>, ITransien
|
||||
ISqlSugarRepository<EventInfo> eventRepository,
|
||||
ISqlSugarRepository<YD_Event.Core.Entities.Merchant> merchantRepository,
|
||||
RefundConfigService refundConfigService,
|
||||
IIdGenerator idGenerator) : base(orderRepository)
|
||||
IIdGenerator idGenerator,
|
||||
AuthManager authManager) : base(orderRepository)
|
||||
{
|
||||
_orderRepository = orderRepository;
|
||||
_registrationRepository = registrationRepository;
|
||||
@ -41,6 +44,7 @@ public class OrderService : BaseService<YD_Event.Core.Entities.Order>, ITransien
|
||||
_merchantRepository = merchantRepository;
|
||||
_refundConfigService = refundConfigService;
|
||||
_idGenerator = idGenerator;
|
||||
_authManager = authManager;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -134,6 +138,10 @@ public class OrderService : BaseService<YD_Event.Core.Entities.Order>, ITransien
|
||||
[HttpGet("page")]
|
||||
public async Task<PageResult<OrderListOutput>> Page([FromQuery] OrderQueryInput input)
|
||||
{
|
||||
var userId = _authManager.UserId;
|
||||
// 判断是否是商户账号
|
||||
var merchant = await _merchantRepository.GetFirstAsync(m => m.CreatedUserId == userId);
|
||||
|
||||
var query = _orderRepository.AsQueryable()
|
||||
.LeftJoin<EventInfo>((o, e) => o.EventId == e.Id)
|
||||
.LeftJoin<YD_Event.Core.Entities.Merchant>((o, e, m) => o.MerchantId == m.Id)
|
||||
@ -146,10 +154,24 @@ public class OrderService : BaseService<YD_Event.Core.Entities.Order>, ITransien
|
||||
.WhereIF(input.PaymentMethod.HasValue, (o, e, m, r, ro) => o.PaymentMethod == input.PaymentMethod)
|
||||
.WhereIF(input.RegistrationMode.HasValue, (o, e, m, r, ro) => o.RegistrationMode == input.RegistrationMode)
|
||||
.WhereIF(!string.IsNullOrWhiteSpace(input.ContactPhone), (o, e, m, r, ro) => r.ContactPhone.Contains(input.ContactPhone))
|
||||
.WhereIF(input.StartTime.HasValue, (o, e, m, r, ro) => o.CreatedTime >= input.StartTime)
|
||||
.WhereIF(input.EndTime.HasValue, (o, e, m, r, ro) => o.CreatedTime <= input.EndTime)
|
||||
.OrderByDescending((o, e, m, r, ro) => o.CreatedTime)
|
||||
.Select((o, e, m, r, ro) => new OrderListOutput
|
||||
.WhereIF(input.StartTime.HasValue, (o, e, m, r, ro) => o.PaymentTime >= input.StartTime) // 支付时间筛选
|
||||
.WhereIF(input.EndTime.HasValue, (o, e, m, r, ro) => o.PaymentTime <= input.EndTime)
|
||||
.OrderByDescending((o, e, m, r, ro) => o.CreatedTime);
|
||||
|
||||
if (merchant != null)
|
||||
{
|
||||
// 商户只能看到自己关联的订单(例如作为收款方,或者作为发起方?)
|
||||
// 假设订单中的 MerchantId 是收款商户。
|
||||
// 如果当前用户是商户,则只能查看 MerchantId 为自己的订单
|
||||
query = query.Where(o => o.MerchantId == merchant.Id);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 个人用户只能看到自己创建的订单
|
||||
query = query.Where(o => o.CreatedUserId == userId);
|
||||
}
|
||||
|
||||
var result = await query.Select((o, e, m, r, ro) => new OrderListOutput
|
||||
{
|
||||
Id = o.Id,
|
||||
OrderNo = o.OrderNo,
|
||||
@ -166,10 +188,14 @@ public class OrderService : BaseService<YD_Event.Core.Entities.Order>, ITransien
|
||||
DiscountAmount = o.DiscountAmount,
|
||||
ActualAmount = o.ActualAmount,
|
||||
OrderStatus = o.OrderStatus,
|
||||
CreatedTime = o.CreatedTime
|
||||
});
|
||||
CreatedTime = o.CreatedTime,
|
||||
PaymentTime = o.PaymentTime,
|
||||
RefundAmount = o.OrderType == 2 ? o.ActualAmount : 0, // 如果是退款订单,ActualAmount即为退款金额
|
||||
RefundTime = o.OrderType == 2 ? o.PaymentTime : null // 退款时间
|
||||
})
|
||||
.ToPagedListAsync(input);
|
||||
|
||||
return await query.ToPagedListAsync(input);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user