| 123456789101112131415161718192021222324252627282930313233343536373839 |
- namespace Admin.NET.Plugin.ApprovalFlow.Service;
- /// <summary>
- /// 审批流通知推送器抽象(P4-16)
- /// 每种渠道一个实现,注册到 DI 容器,由 FlowNotifyService 按配置 + 启用状态并行调度。
- /// </summary>
- public interface INotifyPusher
- {
- /// <summary>
- /// 渠道名(SignalR / Email / Sms / DingTalk / WorkWeixin),与 NotifyChannelConfig 属性名一致
- /// </summary>
- string Channel { get; }
- /// <summary>
- /// 根据配置判断当前渠道是否启用
- /// </summary>
- bool IsEnabled(NotifyChannelConfig cfg);
- /// <summary>
- /// 实际推送
- /// </summary>
- /// <param name="userIds">目标用户 Id 列表(SignalR/Email/Sms 直接定位人;DingTalk/WorkWeixin Webhook 忽略,由群机器人向群成员广播)</param>
- /// <param name="notification">通知载荷</param>
- /// <returns>推送结果(含是否成功、目标数、耗时、错误)</returns>
- Task<FlowNotifyPushResult> PushAsync(List<long> userIds, FlowNotification notification);
- }
- /// <summary>
- /// 单次推送结果
- /// </summary>
- public class FlowNotifyPushResult
- {
- public bool Success { get; set; }
- public int ActualTargetCount { get; set; }
- public string? ErrorMessage { get; set; }
- public static FlowNotifyPushResult Ok(int count) => new() { Success = true, ActualTargetCount = count };
- public static FlowNotifyPushResult Fail(string error) => new() { Success = false, ErrorMessage = error };
- }
|