import request from '@/utils/request'

// 通知服务API服务

/**
 * 获取通知模板列表
 * @param {Object} query - 查询参数
 * @param {string} query.pageNum - 页码
 * @param {string} query.pageSize - 每页数量
 * @param {string} query.templateType - 模板类型
 * @param {string} query.status - 模板状态
 * @returns {Promise} API响应
 */
export function getNotificationTemplates(query) {
  return request({
    url: '/api/notification/templates',
    method: 'get',
    params: query
  })
}

/**
 * 获取通知模板详情
 * @param {string} id - 模板ID
 * @returns {Promise} API响应
 */
export function getNotificationTemplate(id) {
  return request({
    url: `/api/notification/templates/${id}`,
    method: 'get'
  })
}

/**
 * 创建通知模板
 * @param {Object} data - 模板数据
 * @param {string} data.templateName - 模板名称
 * @param {string} data.templateType - 模板类型
 * @param {string} data.subject - 主题
 * @param {string} data.content - 内容
 * @param {Array} data.variables - 变量列表
 * @returns {Promise} API响应
 */
export function createNotificationTemplate(data) {
  return request({
    url: '/api/notification/templates',
    method: 'post',
    data: data
  })
}

/**
 * 更新通知模板
 * @param {Object} data - 模板数据
 * @returns {Promise} API响应
 */
export function updateNotificationTemplate(data) {
  return request({
    url: '/api/notification/templates',
    method: 'put',
    data: data
  })
}

/**
 * 删除通知模板
 * @param {string} id - 模板ID
 * @returns {Promise} API响应
 */
export function deleteNotificationTemplate(id) {
  return request({
    url: `/api/notification/templates/${id}`,
    method: 'delete'
  })
}

/**
 * 发送通知
 * @param {Object} data - 发送数据
 * @param {string} data.templateId - 模板ID
 * @param {Array} data.recipients - 接收者列表
 * @param {Object} data.variables - 变量值
 * @param {string} data.sendTime - 发送时间（可选，立即发送则不传）
 * @param {string} data.priority - 优先级
 * @returns {Promise} API响应
 */
export function sendNotification(data) {
  return request({
    url: '/api/notification/send',
    method: 'post',
    data: data
  })
}

/**
 * 批量发送通知
 * @param {Object} data - 批量发送数据
 * @param {string} data.templateId - 模板ID
 * @param {Array} data.recipientGroups - 接收者分组
 * @param {Object} data.globalVariables - 全局变量
 * @param {string} data.sendTime - 发送时间
 * @returns {Promise} API响应
 */
export function batchSendNotification(data) {
  return request({
    url: '/api/notification/batch-send',
    method: 'post',
    data: data
  })
}

/**
 * 获取通知发送历史
 * @param {Object} query - 查询参数
 * @param {string} query.pageNum - 页码
 * @param {string} query.pageSize - 每页数量
 * @param {string} query.status - 发送状态
 * @param {string} query.startDate - 开始日期
 * @param {string} query.endDate - 结束日期
 * @returns {Promise} API响应
 */
export function getNotificationHistory(query) {
  return request({
    url: '/api/notification/history',
    method: 'get',
    params: query
  })
}

/**
 * 获取通知详情
 * @param {string} id - 通知ID
 * @returns {Promise} API响应
 */
export function getNotificationDetail(id) {
  return request({
    url: `/api/notification/${id}`,
    method: 'get'
  })
}

/**
 * 获取投递状态
 * @param {string} id - 通知ID
 * @returns {Promise} API响应
 */
export function getDeliveryStatus(id) {
  return request({
    url: `/api/notification/delivery-status/${id}`,
    method: 'get'
  })
}

/**
 * 重新发送失败的通知
 * @param {string} id - 通知ID
 * @returns {Promise} API响应
 */
export function resendNotification(id) {
  return request({
    url: `/api/notification/${id}/resend`,
    method: 'post'
  })
}

/**
 * 取消待发送的通知
 * @param {string} id - 通知ID
 * @returns {Promise} API响应
 */
export function cancelNotification(id) {
  return request({
    url: `/api/notification/${id}/cancel`,
    method: 'put'
  })
}

/**
 * 获取通知统计信息
 * @param {Object} query - 查询参数
 * @returns {Promise} API响应
 */
export function getNotificationStats(query) {
  return request({
    url: '/api/notification/stats',
    method: 'get',
    params: query
  })
}

/**
 * 获取接收者分组列表
 * @returns {Promise} API响应
 */
export function getRecipientGroups() {
  return request({
    url: '/api/notification/recipient-groups',
    method: 'get'
  })
}

/**
 * 创建接收者分组
 * @param {Object} data - 分组数据
 * @param {string} data.groupName - 分组名称
 * @param {string} data.description - 分组描述
 * @param {Array} data.recipients - 接收者列表
 * @returns {Promise} API响应
 */
export function createRecipientGroup(data) {
  return request({
    url: '/api/notification/recipient-groups',
    method: 'post',
    data: data
  })
}

/**
 * 更新接收者分组
 * @param {Object} data - 分组数据
 * @returns {Promise} API响应
 */
export function updateRecipientGroup(data) {
  return request({
    url: '/api/notification/recipient-groups',
    method: 'put',
    data: data
  })
}

/**
 * 删除接收者分组
 * @param {string} id - 分组ID
 * @returns {Promise} API响应
 */
export function deleteRecipientGroup(id) {
  return request({
    url: `/api/notification/recipient-groups/${id}`,
    method: 'delete'
  })
}

/**
 * 预览通知内容
 * @param {Object} data - 预览数据
 * @param {string} data.templateId - 模板ID
 * @param {Object} data.variables - 变量值
 * @returns {Promise} API响应
 */
export function previewNotification(data) {
  return request({
    url: '/api/notification/preview',
    method: 'post',
    data: data
  })
}