feat: 角色模板改为数据库管理支持前端自定义
This commit is contained in:
@@ -30,9 +30,9 @@ public sealed class RolesController(IMediator mediator) : BaseApiController
|
||||
[HttpGet("templates")]
|
||||
[PermissionAuthorize("identity:role:read")]
|
||||
[ProducesResponseType(typeof(ApiResponse<IReadOnlyList<RoleTemplateDto>>), StatusCodes.Status200OK)]
|
||||
public async Task<ApiResponse<IReadOnlyList<RoleTemplateDto>>> ListTemplates(CancellationToken cancellationToken)
|
||||
public async Task<ApiResponse<IReadOnlyList<RoleTemplateDto>>> ListTemplates([FromQuery] bool? isActive, CancellationToken cancellationToken)
|
||||
{
|
||||
var result = await mediator.Send(new ListRoleTemplatesQuery(), cancellationToken);
|
||||
var result = await mediator.Send(new ListRoleTemplatesQuery { IsActive = isActive }, cancellationToken);
|
||||
return ApiResponse<IReadOnlyList<RoleTemplateDto>>.Ok(result);
|
||||
}
|
||||
|
||||
@@ -54,6 +54,49 @@ public sealed class RolesController(IMediator mediator) : BaseApiController
|
||||
: ApiResponse<RoleTemplateDto>.Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建角色模板。
|
||||
/// </summary>
|
||||
[HttpPost("templates")]
|
||||
[PermissionAuthorize("role-template:create")]
|
||||
[ProducesResponseType(typeof(ApiResponse<RoleTemplateDto>), StatusCodes.Status200OK)]
|
||||
public async Task<ApiResponse<RoleTemplateDto>> CreateTemplate([FromBody, Required] CreateRoleTemplateCommand command, CancellationToken cancellationToken)
|
||||
{
|
||||
var result = await mediator.Send(command, cancellationToken);
|
||||
return ApiResponse<RoleTemplateDto>.Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新角色模板。
|
||||
/// </summary>
|
||||
[HttpPut("templates/{templateCode}")]
|
||||
[PermissionAuthorize("role-template:update")]
|
||||
[ProducesResponseType(typeof(ApiResponse<RoleTemplateDto>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(ApiResponse<RoleTemplateDto>), StatusCodes.Status404NotFound)]
|
||||
public async Task<ApiResponse<RoleTemplateDto>> UpdateTemplate(
|
||||
string templateCode,
|
||||
[FromBody, Required] UpdateRoleTemplateCommand command,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
command = command with { TemplateCode = templateCode };
|
||||
var result = await mediator.Send(command, cancellationToken);
|
||||
return result is null
|
||||
? ApiResponse<RoleTemplateDto>.Error(StatusCodes.Status404NotFound, "角色模板不存在")
|
||||
: ApiResponse<RoleTemplateDto>.Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除角色模板。
|
||||
/// </summary>
|
||||
[HttpDelete("templates/{templateCode}")]
|
||||
[PermissionAuthorize("role-template:delete")]
|
||||
[ProducesResponseType(typeof(ApiResponse<bool>), StatusCodes.Status200OK)]
|
||||
public async Task<ApiResponse<bool>> DeleteTemplate(string templateCode, CancellationToken cancellationToken)
|
||||
{
|
||||
var result = await mediator.Send(new DeleteRoleTemplateCommand { TemplateCode = templateCode }, cancellationToken);
|
||||
return ApiResponse<bool>.Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 按模板复制角色并绑定权限。
|
||||
/// </summary>
|
||||
|
||||
@@ -39,6 +39,171 @@
|
||||
},
|
||||
"Identity": {
|
||||
"AdminSeed": {
|
||||
"RoleTemplates": [
|
||||
{
|
||||
"TemplateCode": "platform-admin",
|
||||
"Name": "平台管理员",
|
||||
"Description": "平台全量权限",
|
||||
"IsActive": true,
|
||||
"Permissions": [
|
||||
"identity:profile:read",
|
||||
"identity:role:read",
|
||||
"identity:role:create",
|
||||
"identity:role:update",
|
||||
"identity:role:delete",
|
||||
"identity:role:bind-permission",
|
||||
"identity:permission:read",
|
||||
"identity:permission:create",
|
||||
"identity:permission:update",
|
||||
"identity:permission:delete",
|
||||
"role-template:read",
|
||||
"role-template:create",
|
||||
"role-template:update",
|
||||
"role-template:delete",
|
||||
"tenant:create",
|
||||
"tenant:read",
|
||||
"tenant:review",
|
||||
"tenant:subscription",
|
||||
"tenant:quota:check",
|
||||
"tenant-package:read",
|
||||
"tenant-package:create",
|
||||
"tenant-package:update",
|
||||
"tenant-package:delete",
|
||||
"merchant:create",
|
||||
"merchant:read",
|
||||
"merchant:update",
|
||||
"merchant:delete",
|
||||
"merchant:review",
|
||||
"merchant_category:read",
|
||||
"merchant_category:create",
|
||||
"merchant_category:update",
|
||||
"merchant_category:delete",
|
||||
"store:create",
|
||||
"store:read",
|
||||
"store:update",
|
||||
"store:delete",
|
||||
"product:create",
|
||||
"product:read",
|
||||
"product:update",
|
||||
"product:delete",
|
||||
"order:create",
|
||||
"order:read",
|
||||
"order:update",
|
||||
"order:delete",
|
||||
"payment:create",
|
||||
"payment:read",
|
||||
"payment:update",
|
||||
"payment:delete",
|
||||
"delivery:create",
|
||||
"delivery:read",
|
||||
"delivery:update",
|
||||
"delivery:delete",
|
||||
"dictionary:group:read",
|
||||
"dictionary:group:create",
|
||||
"dictionary:group:update",
|
||||
"dictionary:group:delete",
|
||||
"dictionary:item:create",
|
||||
"dictionary:item:update",
|
||||
"dictionary:item:delete",
|
||||
"system-parameter:create",
|
||||
"system-parameter:read",
|
||||
"system-parameter:update",
|
||||
"system-parameter:delete"
|
||||
]
|
||||
},
|
||||
{
|
||||
"TemplateCode": "tenant-admin",
|
||||
"Name": "租户管理员",
|
||||
"Description": "管理本租户的门店、商品、订单与权限",
|
||||
"IsActive": true,
|
||||
"Permissions": [
|
||||
"identity:profile:read",
|
||||
"identity:role:read",
|
||||
"identity:role:create",
|
||||
"identity:role:update",
|
||||
"identity:role:delete",
|
||||
"identity:role:bind-permission",
|
||||
"identity:permission:read",
|
||||
"identity:permission:create",
|
||||
"identity:permission:update",
|
||||
"identity:permission:delete",
|
||||
"tenant:read",
|
||||
"tenant:subscription",
|
||||
"tenant:quota:check",
|
||||
"merchant:read",
|
||||
"merchant:update",
|
||||
"merchant_category:read",
|
||||
"merchant_category:create",
|
||||
"merchant_category:update",
|
||||
"merchant_category:delete",
|
||||
"store:create",
|
||||
"store:read",
|
||||
"store:update",
|
||||
"store:delete",
|
||||
"product:create",
|
||||
"product:read",
|
||||
"product:update",
|
||||
"product:delete",
|
||||
"order:create",
|
||||
"order:read",
|
||||
"order:update",
|
||||
"delivery:create",
|
||||
"delivery:read",
|
||||
"delivery:update",
|
||||
"payment:create",
|
||||
"payment:read",
|
||||
"payment:update",
|
||||
"dictionary:group:read",
|
||||
"dictionary:group:create",
|
||||
"dictionary:group:update",
|
||||
"dictionary:group:delete",
|
||||
"dictionary:item:create",
|
||||
"dictionary:item:update",
|
||||
"dictionary:item:delete",
|
||||
"system-parameter:read"
|
||||
]
|
||||
},
|
||||
{
|
||||
"TemplateCode": "store-manager",
|
||||
"Name": "店长",
|
||||
"Description": "负责门店运营与商品、订单管理",
|
||||
"IsActive": true,
|
||||
"Permissions": [
|
||||
"identity:profile:read",
|
||||
"store:read",
|
||||
"store:update",
|
||||
"product:create",
|
||||
"product:read",
|
||||
"product:update",
|
||||
"order:create",
|
||||
"order:read",
|
||||
"order:update",
|
||||
"delivery:read",
|
||||
"delivery:update",
|
||||
"payment:read",
|
||||
"payment:update",
|
||||
"dictionary:group:read",
|
||||
"dictionary:item:create",
|
||||
"dictionary:item:update",
|
||||
"dictionary:item:delete"
|
||||
]
|
||||
},
|
||||
{
|
||||
"TemplateCode": "store-staff",
|
||||
"Name": "店员",
|
||||
"Description": "处理订单履约与收款查询",
|
||||
"IsActive": true,
|
||||
"Permissions": [
|
||||
"identity:profile:read",
|
||||
"store:read",
|
||||
"product:read",
|
||||
"order:read",
|
||||
"order:update",
|
||||
"delivery:read",
|
||||
"payment:read"
|
||||
]
|
||||
}
|
||||
],
|
||||
"Users": [
|
||||
{
|
||||
"Account": "admin",
|
||||
@@ -47,17 +212,69 @@
|
||||
"TenantId": 1000000000001,
|
||||
"Roles": [ "PlatformAdmin" ],
|
||||
"Permissions": [
|
||||
"merchant:*",
|
||||
"merchant_category:*",
|
||||
"identity:profile:read",
|
||||
"identity:role:read",
|
||||
"identity:role:create",
|
||||
"identity:role:update",
|
||||
"identity:role:delete",
|
||||
"identity:role:bind-permission",
|
||||
"identity:permission:read",
|
||||
"identity:permission:create",
|
||||
"identity:permission:update",
|
||||
"identity:permission:delete",
|
||||
"role-template:read",
|
||||
"role-template:create",
|
||||
"role-template:update",
|
||||
"role-template:delete",
|
||||
"tenant:create",
|
||||
"tenant:read",
|
||||
"tenant:review",
|
||||
"tenant:subscription",
|
||||
"tenant:quota:check",
|
||||
"tenant-package:read",
|
||||
"tenant-package:create",
|
||||
"tenant-package:update",
|
||||
"tenant-package:delete",
|
||||
"merchant:create",
|
||||
"merchant:read",
|
||||
"merchant:update",
|
||||
"merchant:delete",
|
||||
"merchant:review",
|
||||
"merchant_category:read",
|
||||
"merchant_category:create",
|
||||
"merchant_category:update",
|
||||
"merchant_category:delete",
|
||||
"store:*",
|
||||
"product:*",
|
||||
"order:*",
|
||||
"payment:*",
|
||||
"delivery:*"
|
||||
"store:create",
|
||||
"store:read",
|
||||
"store:update",
|
||||
"store:delete",
|
||||
"product:create",
|
||||
"product:read",
|
||||
"product:update",
|
||||
"product:delete",
|
||||
"order:create",
|
||||
"order:read",
|
||||
"order:update",
|
||||
"order:delete",
|
||||
"payment:create",
|
||||
"payment:read",
|
||||
"payment:update",
|
||||
"payment:delete",
|
||||
"delivery:create",
|
||||
"delivery:read",
|
||||
"delivery:update",
|
||||
"delivery:delete",
|
||||
"dictionary:group:read",
|
||||
"dictionary:group:create",
|
||||
"dictionary:group:update",
|
||||
"dictionary:group:delete",
|
||||
"dictionary:item:create",
|
||||
"dictionary:item:update",
|
||||
"dictionary:item:delete",
|
||||
"system-parameter:create",
|
||||
"system-parameter:read",
|
||||
"system-parameter:update",
|
||||
"system-parameter:delete"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user