build-flow.api/src/BuildFlow.Host/Endpoints/platform/Menus/CreateMenuRequestValidator.cs
xiangning a978e7f868 feat(workflow): 添加自定义函数类型和按钮三阶段动作链功能
- 引入 CustomFunctionType 枚举,支持 Script 和 Http 两种函数类型
- 在自定义函数中添加 Http 相关字段(HttpMethod、HttpUrl、HttpHeaders、HttpBodyTemplate)
- 实现 HTTP 函数执行器,支持变量替换和 SSRF 防护
- 将按钮动作链拆分为 before、main、after 三个阶段
- 新增前置和后置动作 JSON 字段存储
- 实现批量执行多个函数的 executeFunctions 动作类型
- 更新数据库迁移以支持新的字段结构
- 调整相关 DTO、命令和处理器以兼容新功能
2026-07-06 18:03:22 +08:00

31 lines
1.3 KiB
C#

using BuildFlow.Platform.Application.Menus.DTOs;
namespace BuildFlow.Host.Endpoints.Platform.Menus;
/// <summary>
/// 创建菜单请求校验。
/// </summary>
public class CreateMenuRequestValidator : Validator<CreateMenuRequest>
{
public CreateMenuRequestValidator()
{
// Name 可选:留空时由后端根据 Code 派生,无需用户填写。
When(x => x.Name is not null, () =>
{
RuleFor(x => x.Name!).MaximumLength(100).WithMessage("菜单路由名称长度不能超过 100 个字符");
});
RuleFor(x => x.Path).NotEmpty().WithMessage("路由路径不能为空")
.MaximumLength(200).WithMessage("路由路径长度不能超过 200 个字符");
RuleFor(x => x.Title).NotEmpty().WithMessage("菜单标题不能为空")
.MaximumLength(100).WithMessage("菜单标题长度不能超过 100 个字符");
When(x => x.Component is not null, () =>
{
RuleFor(x => x.Component!).MaximumLength(200).WithMessage("组件路径长度不能超过 200 个字符");
});
When(x => x.Authority is not null, () =>
{
RuleFor(x => x.Authority!).MaximumLength(200).WithMessage("Authority 长度不能超过 200 个字符");
});
}
}