using System.Threading.Tasks; using System.Collections.Generic; using NPP.SmartSchedue.Api.Contracts.Core.Enums; namespace NPP.SmartSchedue.Api.Contracts.Services.Notification; /// /// 系统消息服务接口 /// 决策点1:基础通知方式 - 系统消息通知 /// public interface ISystemMessageService { #region 单个消息发送 /// /// 发送系统消息 /// /// 接收人员ID /// 消息标题 /// 消息内容 /// 消息类型(通知、警告、错误等) /// 业务类型 /// 业务ID /// Task SendSystemMessageAsync( long recipientPersonnelId, string title, string content, SystemMessageTypeEnum messageType = SystemMessageTypeEnum.Info, string businessType = "", long? businessId = null); /// /// 发送带操作按钮的系统消息 /// /// 接收人员ID /// 消息标题 /// 消息内容 /// 操作按钮列表 /// 消息类型 /// 业务类型 /// 业务ID /// Task SendSystemMessageWithActionsAsync( long recipientPersonnelId, string title, string content, List actions, SystemMessageTypeEnum messageType = SystemMessageTypeEnum.Info, string businessType = "", long? businessId = null); #endregion #region 批量消息发送 /// /// 批量发送系统消息 /// /// 接收人员ID列表 /// 消息标题 /// 消息内容 /// 消息类型 /// 业务类型 /// 业务ID /// 发送结果,Key为人员ID,Value为是否发送成功 Task> BatchSendSystemMessageAsync( List recipientPersonnelIds, string title, string content, SystemMessageTypeEnum messageType = SystemMessageTypeEnum.Info, string businessType = "", long? businessId = null); /// /// 个性化批量发送系统消息 /// 每个收件人可以有不同的消息内容 /// /// 消息项列表 /// 发送结果,Key为人员ID,Value为是否发送成功 Task> BatchSendPersonalizedSystemMessageAsync(List messageItems); #endregion #region 消息模板 /// /// 使用模板发送系统消息 /// /// 接收人员ID /// 消息标题模板 /// 消息内容模板 /// 模板变量 /// 消息类型 /// 业务类型 /// 业务ID /// Task SendSystemMessageByTemplateAsync( long recipientPersonnelId, string titleTemplate, string contentTemplate, Dictionary variables, SystemMessageTypeEnum messageType = SystemMessageTypeEnum.Info, string businessType = "", long? businessId = null); #endregion #region 消息管理 /// /// 标记消息为已读 /// /// 消息ID /// 接收人员ID /// Task MarkMessageAsReadAsync(long messageId, long recipientPersonnelId); /// /// 批量标记消息为已读 /// /// 消息ID列表 /// 接收人员ID /// Task BatchMarkMessagesAsReadAsync(List messageIds, long recipientPersonnelId); /// /// 删除消息 /// /// 消息ID /// 接收人员ID /// Task DeleteMessageAsync(long messageId, long recipientPersonnelId); /// /// 获取用户未读消息数量 /// /// 接收人员ID /// Task GetUnreadMessageCountAsync(long recipientPersonnelId); #endregion } /// /// 系统消息类型枚举 /// public enum SystemMessageTypeEnum { /// /// 信息 /// Info = 1, /// /// 成功 /// Success = 2, /// /// 警告 /// Warning = 3, /// /// 错误 /// Error = 4, /// /// 紧急 /// Urgent = 5 } /// /// 系统消息项 /// public class SystemMessageItem { /// /// 接收人员ID /// public long RecipientPersonnelId { get; set; } /// /// 消息标题 /// public string Title { get; set; } = ""; /// /// 消息内容 /// public string Content { get; set; } = ""; /// /// 消息类型 /// public SystemMessageTypeEnum MessageType { get; set; } = SystemMessageTypeEnum.Info; /// /// 业务类型 /// public string BusinessType { get; set; } = ""; /// /// 业务ID /// public long? BusinessId { get; set; } /// /// 操作按钮列表 /// public List Actions { get; set; } = new List(); /// /// 个性化变量 /// public Dictionary Variables { get; set; } = new Dictionary(); } /// /// 系统消息操作按钮 /// public class SystemMessageAction { /// /// 操作ID /// public string ActionId { get; set; } = ""; /// /// 操作名称 /// public string ActionName { get; set; } = ""; /// /// 操作URL /// public string ActionUrl { get; set; } = ""; /// /// 操作类型(按钮、链接等) /// public string ActionType { get; set; } = "button"; /// /// 是否主要操作 /// public bool IsPrimary { get; set; } = false; }