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;
}