
- 新增通知系统完整架构,包含通知设置、历史记录、任务管理等核心功能 - 实现工作任务分配服务,支持人员和设备的智能分配 - 添加人员分组管理功能,支持灵活的通知目标配置 - 完善相关枚举定义和数据传输对象 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
257 lines
7.9 KiB
C#
257 lines
7.9 KiB
C#
using System;
|
||
using System.Threading.Tasks;
|
||
using System.Collections.Generic;
|
||
using ZhonTai.Admin.Core.Dto;
|
||
using NPP.SmartSchedue.Api.Contracts.Services.Notification.Input;
|
||
using NPP.SmartSchedue.Api.Contracts.Services.Notification.Output;
|
||
using NPP.SmartSchedue.Api.Contracts.Core.Enums;
|
||
|
||
namespace NPP.SmartSchedue.Api.Contracts.Services.Notification;
|
||
|
||
/// <summary>
|
||
/// 通知服务接口
|
||
/// 决策点6:定时任务,支持定时检查和触发通知
|
||
/// 决策点7:模板通知,支持通知内容模板,可替换变量
|
||
/// </summary>
|
||
public interface INotificationService
|
||
{
|
||
#region 通知设置管理
|
||
|
||
/// <summary>
|
||
/// 查询通知设置
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
Task<NotificationSettingOutput> GetNotificationSettingAsync(long id);
|
||
|
||
/// <summary>
|
||
/// 查询通知设置分页
|
||
/// </summary>
|
||
/// <param name="input"></param>
|
||
/// <returns></returns>
|
||
Task<PageOutput<NotificationSettingOutput>> GetNotificationSettingPageAsync(PageInput<NotificationSettingCreateInput> input);
|
||
|
||
/// <summary>
|
||
/// 创建通知设置
|
||
/// </summary>
|
||
/// <param name="input"></param>
|
||
/// <returns></returns>
|
||
Task<long> CreateNotificationSettingAsync(NotificationSettingCreateInput input);
|
||
|
||
/// <summary>
|
||
/// 更新通知设置
|
||
/// </summary>
|
||
/// <param name="input"></param>
|
||
/// <returns></returns>
|
||
Task UpdateNotificationSettingAsync(NotificationSettingUpdateInput input);
|
||
|
||
/// <summary>
|
||
/// 删除通知设置
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
Task DeleteNotificationSettingAsync(long id);
|
||
|
||
/// <summary>
|
||
/// 启用/禁用通知设置
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <param name="enabled"></param>
|
||
/// <returns></returns>
|
||
Task ToggleNotificationSettingAsync(long id, bool enabled);
|
||
|
||
#endregion
|
||
|
||
#region 人员组管理
|
||
|
||
/// <summary>
|
||
/// 查询人员组
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
Task<PersonnelGroupOutput> GetPersonnelGroupAsync(long id);
|
||
|
||
/// <summary>
|
||
/// 查询人员组分页
|
||
/// </summary>
|
||
/// <param name="input"></param>
|
||
/// <returns></returns>
|
||
Task<PageOutput<PersonnelGroupOutput>> GetPersonnelGroupPageAsync(PageInput<PersonnelGroupCreateInput> input);
|
||
|
||
/// <summary>
|
||
/// 创建人员组
|
||
/// </summary>
|
||
/// <param name="input"></param>
|
||
/// <returns></returns>
|
||
Task<long> CreatePersonnelGroupAsync(PersonnelGroupCreateInput input);
|
||
|
||
/// <summary>
|
||
/// 更新人员组
|
||
/// </summary>
|
||
/// <param name="input"></param>
|
||
/// <returns></returns>
|
||
Task UpdatePersonnelGroupAsync(PersonnelGroupCreateInput input);
|
||
|
||
/// <summary>
|
||
/// 删除人员组
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
Task DeletePersonnelGroupAsync(long id);
|
||
|
||
/// <summary>
|
||
/// 获取人员组的实际人员列表
|
||
/// 根据决策点4:混合人员组,支持静态+动态规则
|
||
/// </summary>
|
||
/// <param name="personnelGroupId"></param>
|
||
/// <returns></returns>
|
||
Task<List<long>> GetPersonnelGroupMembersAsync(long personnelGroupId);
|
||
|
||
#endregion
|
||
|
||
#region 通知发送
|
||
|
||
/// <summary>
|
||
/// 发送通知
|
||
/// 决策点1:支持邮件和系统消息通知
|
||
/// </summary>
|
||
/// <param name="input"></param>
|
||
/// <returns></returns>
|
||
Task<SendNotificationOutput> SendNotificationAsync(SendNotificationInput input);
|
||
|
||
/// <summary>
|
||
/// 批量发送通知
|
||
/// </summary>
|
||
/// <param name="inputs"></param>
|
||
/// <returns></returns>
|
||
Task<List<SendNotificationOutput>> BatchSendNotificationAsync(List<SendNotificationInput> inputs);
|
||
|
||
/// <summary>
|
||
/// 根据通知设置发送通知
|
||
/// </summary>
|
||
/// <param name="notificationSettingId">通知设置ID</param>
|
||
/// <param name="businessType">业务类型</param>
|
||
/// <param name="businessId">业务ID</param>
|
||
/// <param name="businessData">业务数据</param>
|
||
/// <param name="templateVariables">模板变量(用于替换模板中的占位符)</param>
|
||
/// <returns></returns>
|
||
Task<SendNotificationOutput> SendNotificationBySettingAsync(
|
||
long notificationSettingId,
|
||
string businessType,
|
||
long? businessId = null,
|
||
string businessData = "",
|
||
Dictionary<string, string> templateVariables = null);
|
||
|
||
#endregion
|
||
|
||
#region 通知模板引擎(决策点7)
|
||
|
||
/// <summary>
|
||
/// 渲染通知模板
|
||
/// 支持通知内容模板,可替换变量
|
||
/// </summary>
|
||
/// <param name="template">模板内容</param>
|
||
/// <param name="variables">变量字典</param>
|
||
/// <returns></returns>
|
||
Task<string> RenderTemplateAsync(string template, Dictionary<string, string> variables);
|
||
|
||
/// <summary>
|
||
/// 验证模板语法
|
||
/// </summary>
|
||
/// <param name="template">模板内容</param>
|
||
/// <returns></returns>
|
||
Task<bool> ValidateTemplateAsync(string template);
|
||
|
||
#endregion
|
||
|
||
#region 通知历史记录(决策点8)
|
||
|
||
/// <summary>
|
||
/// 查询通知历史记录
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
Task<NotificationHistoryOutput> GetNotificationHistoryAsync(long id);
|
||
|
||
/// <summary>
|
||
/// 查询通知历史记录分页
|
||
/// </summary>
|
||
/// <param name="input"></param>
|
||
/// <returns></returns>
|
||
Task<PageOutput<NotificationHistoryOutput>> GetNotificationHistoryPageAsync(PageInput<NotificationHistoryOutput> input);
|
||
|
||
/// <summary>
|
||
/// 重试失败的通知
|
||
/// </summary>
|
||
/// <param name="notificationHistoryId"></param>
|
||
/// <returns></returns>
|
||
Task<bool> RetryFailedNotificationAsync(long notificationHistoryId);
|
||
|
||
/// <summary>
|
||
/// 批量重试失败的通知
|
||
/// </summary>
|
||
/// <param name="notificationHistoryIds"></param>
|
||
/// <returns></returns>
|
||
Task<int> BatchRetryFailedNotificationsAsync(List<long> notificationHistoryIds);
|
||
|
||
#endregion
|
||
|
||
#region 定时任务管理(决策点6)
|
||
|
||
/// <summary>
|
||
/// 创建定时通知任务
|
||
/// </summary>
|
||
/// <param name="notificationSettingId">通知设置ID</param>
|
||
/// <param name="businessType">业务类型</param>
|
||
/// <param name="businessId">业务ID</param>
|
||
/// <param name="businessData">业务数据</param>
|
||
/// <param name="plannedExecutionTime">计划执行时间</param>
|
||
/// <param name="cronExpression">Cron表达式(可选)</param>
|
||
/// <returns></returns>
|
||
Task<long> CreateScheduledNotificationTaskAsync(
|
||
long notificationSettingId,
|
||
string businessType,
|
||
long? businessId = null,
|
||
string businessData = "",
|
||
DateTime? plannedExecutionTime = null,
|
||
string cronExpression = "");
|
||
|
||
/// <summary>
|
||
/// 执行定时通知任务
|
||
/// </summary>
|
||
/// <param name="taskId">任务ID</param>
|
||
/// <returns></returns>
|
||
Task<bool> ExecuteScheduledNotificationTaskAsync(long taskId);
|
||
|
||
/// <summary>
|
||
/// 获取待执行的定时任务列表
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
Task<List<long>> GetPendingNotificationTasksAsync();
|
||
|
||
/// <summary>
|
||
/// 启用/禁用定时任务
|
||
/// </summary>
|
||
/// <param name="taskId"></param>
|
||
/// <param name="enabled"></param>
|
||
/// <returns></returns>
|
||
Task ToggleNotificationTaskAsync(long taskId, bool enabled);
|
||
|
||
#endregion
|
||
|
||
#region 通知统计
|
||
|
||
/// <summary>
|
||
/// 获取通知发送统计信息
|
||
/// </summary>
|
||
/// <param name="startTime">开始时间</param>
|
||
/// <param name="endTime">结束时间</param>
|
||
/// <param name="notificationSettingId">通知设置ID(可选)</param>
|
||
/// <returns></returns>
|
||
Task<Dictionary<string, object>> GetNotificationStatisticsAsync(
|
||
DateTime startTime,
|
||
DateTime endTime,
|
||
long? notificationSettingId = null);
|
||
|
||
#endregion
|
||
} |