订单赛事管理员也可以查看全部

This commit is contained in:
马梓彭 2026-06-16 13:44:43 +08:00
parent 2d3fa6e09d
commit c38ccd8ccb
5 changed files with 43 additions and 6 deletions

View File

@ -7,7 +7,9 @@ using YD_Event.Application.Event;
using YD_Event.Application.Order.Dtos;
using YD_Event.Core.Entities;
using YD_Event.Core.Enum;
using YD_Event.Core.Options;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using YD_Event.Core.Domain;
namespace YD_Event.Application.Order;
@ -27,6 +29,8 @@ public class OrderService : BaseService<YD_Event.Core.Entities.Order>, ITransien
private readonly IIdGenerator _idGenerator;
private readonly AuthManager _authManager;
private readonly ISqlSugarClient _db;
private readonly ISqlSugarRepository<SysUserRole> _sysUserRoleRepository;
private readonly IOptionsMonitor<RoleOptions> _roleOptionsMonitor;
private readonly OrderNoGeneratorService _orderNoGeneratorService;
private readonly ILogger<OrderService> _logger;
private readonly UnifiedRegistrationService _unifiedRegistrationService;
@ -42,6 +46,8 @@ public class OrderService : BaseService<YD_Event.Core.Entities.Order>, ITransien
IIdGenerator idGenerator,
AuthManager authManager,
ISqlSugarClient db,
ISqlSugarRepository<SysUserRole> sysUserRoleRepository,
IOptionsMonitor<RoleOptions> roleOptionsMonitor,
OrderNoGeneratorService orderNoGeneratorService,
ILogger<OrderService> logger,
UnifiedRegistrationService unifiedRegistrationService) : base(orderRepository)
@ -56,11 +62,26 @@ public class OrderService : BaseService<YD_Event.Core.Entities.Order>, ITransien
_idGenerator = idGenerator;
_authManager = authManager;
_db = db;
_sysUserRoleRepository = sysUserRoleRepository;
_roleOptionsMonitor = roleOptionsMonitor;
_orderNoGeneratorService = orderNoGeneratorService;
_logger = logger;
_unifiedRegistrationService = unifiedRegistrationService;
}
/// <summary>
/// 判断当前用户是否是管理员(超级管理员、系统管理员或赛事管理员)
/// </summary>
private async Task<bool> IsCurrentUserAdminAsync()
{
if (_authManager.IsSuperAdmin) return true;
var userId = _authManager.UserId;
var roleOptions = _roleOptionsMonitor.CurrentValue;
return await _sysUserRoleRepository.IsAnyAsync(x =>
x.UserId == userId &&
(x.RoleId == roleOptions.AdminRoleId || x.RoleId == roleOptions.EventManagerRoleId));
}
/// <summary>
/// 创建订单
/// </summary>
@ -194,8 +215,8 @@ public class OrderService : BaseService<YD_Event.Core.Entities.Order>, ITransien
.WhereIF(input.EndTime.HasValue, (o, e, m, r, ro) => o.PaymentTime <= input.EndTime)
.OrderByDescending((o, e, m, r, ro) => o.CreatedTime);
// 权限判断:非超级管理员必须过滤订单
if (!_authManager.IsSuperAdmin)
// 权限判断:非管理员(超级管理员或系统管理员)必须过滤订单
if (!await IsCurrentUserAdminAsync())
{
if (certification != null)
{
@ -602,8 +623,8 @@ public class OrderService : BaseService<YD_Event.Core.Entities.Order>, ITransien
.WhereIF(input.EndTime.HasValue, (o, e, m, r, ro) => o.CreatedTime <= input.EndTime)
.OrderByDescending((o, e, m, r, ro) => o.CreatedTime);
// 权限判断:非超级管理员必须过滤订单
if (!_authManager.IsSuperAdmin)
// 权限判断:非管理员(超级管理员或系统管理员)必须过滤订单
if (!await IsCurrentUserAdminAsync())
{
if (certification != null)
{
@ -864,8 +885,8 @@ public class OrderService : BaseService<YD_Event.Core.Entities.Order>, ITransien
.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);
// 权限判断:非超级管理员必须过滤订单
if (!_authManager.IsSuperAdmin)
// 权限判断:非管理员(超级管理员或系统管理员)必须过滤订单
if (!await IsCurrentUserAdminAsync())
{
if (certification != null)
{

View File

@ -11464,6 +11464,11 @@
订单管理服务
</summary>
</member>
<member name="M:YD_Event.Application.Order.OrderService.IsCurrentUserAdminAsync">
<summary>
判断当前用户是否是管理员(超级管理员、系统管理员或赛事管理员)
</summary>
</member>
<member name="M:YD_Event.Application.Order.OrderService.Create(YD_Event.Application.Order.Dtos.CreateOrderInput)">
<summary>
创建订单

View File

@ -167,6 +167,7 @@
// 角色配置
"RoleSettings": {
"AdminRoleId": 1000,
"EventManagerRoleId": 1002,
"UnitUserRoleId": 1001,
"HiddenMenuIds": [2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009]
}

View File

@ -13,6 +13,11 @@ public class RoleOptions : IConfigurableOptions
/// </summary>
public long AdminRoleId { get; set; }
/// <summary>
/// 赛事管理员角色ID
/// </summary>
public long EventManagerRoleId { get; set; }
/// <summary>
/// 单位用户角色ID
/// </summary>

View File

@ -5968,6 +5968,11 @@
系统管理员角色ID
</summary>
</member>
<member name="P:YD_Event.Core.Options.RoleOptions.EventManagerRoleId">
<summary>
赛事管理员角色ID
</summary>
</member>
<member name="P:YD_Event.Core.Options.RoleOptions.UnitUserRoleId">
<summary>
单位用户角色ID