import request from '@/utils/request'

// ==================== 邮箱配置 ====================

// 查询邮箱配置列表
export function listMailConfig(query) {
  return request({
    url: '/system/mail/config/list',
    method: 'get',
    params: query
  })
}

// 查询邮箱配置详细
export function getMailConfig(configId) {
  return request({
    url: '/system/mail/config/' + configId,
    method: 'get'
  })
}

// 新增邮箱配置
export function addMailConfig(data) {
  return request({
    url: '/system/mail/config',
    method: 'post',
    data: data
  })
}

// 修改邮箱配置
export function updateMailConfig(data) {
  return request({
    url: '/system/mail/config',
    method: 'put',
    data: data
  })
}

// 删除邮箱配置
export function delMailConfig(configId) {
  return request({
    url: '/system/mail/config/' + configId,
    method: 'delete'
  })
}

// 获取已启用的邮箱配置列表
export function getEnabledConfigList() {
  return request({
    url: '/system/mail/config/enabledList',
    method: 'get'
  })
}

// 测试邮箱连接
export function testMailConfig(data) {
  return request({
    url: '/system/mail/config/test',
    method: 'post',
    data: data
  })
}

// ==================== 邮件模板 ====================

// 查询邮件模板列表
export function listMailTemplate(query) {
  return request({
    url: '/system/mail/template/list',
    method: 'get',
    params: query
  })
}

// 查询邮件模板详细
export function getMailTemplate(templateId) {
  return request({
    url: '/system/mail/template/' + templateId,
    method: 'get'
  })
}

// 新增邮件模板
export function addMailTemplate(data) {
  return request({
    url: '/system/mail/template',
    method: 'post',
    data: data
  })
}

// 修改邮件模板
export function updateMailTemplate(data) {
  return request({
    url: '/system/mail/template',
    method: 'put',
    data: data
  })
}

// 删除邮件模板
export function delMailTemplate(templateId) {
  return request({
    url: '/system/mail/template/' + templateId,
    method: 'delete'
  })
}

// 预览邮件模板
export function previewMailTemplate(data) {
  return request({
    url: '/system/mail/template/preview',
    method: 'post',
    data: data
  })
}

// 获取模板选择列表
export function getTemplateSelectList() {
  return request({
    url: '/system/mail/template/selectList',
    method: 'get'
  })
}

// ==================== 邮件发送记录 ====================

// 查询邮件发送记录列表
export function listMailLog(query) {
  return request({
    url: '/system/mail/log/list',
    method: 'get',
    params: query
  })
}

// 查询邮件发送记录详细
export function getMailLog(logId) {
  return request({
    url: '/system/mail/log/' + logId,
    method: 'get'
  })
}

// 删除邮件发送记录
export function delMailLog(logId) {
  return request({
    url: '/system/mail/log/' + logId,
    method: 'delete'
  })
}

// 清空邮件发送记录
export function cleanMailLog() {
  return request({
    url: '/system/mail/log/clean',
    method: 'delete'
  })
}

// 重新发送邮件
export function resendMail(logId) {
  return request({
    url: '/system/mail/log/resend/' + logId,
    method: 'post'
  })
}

// ==================== 邮件发送 ====================

// 发送邮件
export function sendMail(data) {
  return request({
    url: '/system/mail/send',
    method: 'post',
    data: data
  })
}

// 使用模板发送邮件
export function sendMailByTemplate(data) {
  return request({
    url: '/system/mail/send/template',
    method: 'post',
    data: data
  })
}

// ==================== 收件箱 ====================

// 查询收件列表
export function listMailInbox(query) {
  return request({
    url: '/system/mail/inbox/list',
    method: 'get',
    params: query
  })
}

// 查询收件详细
export function getMailInbox(inboxId) {
  return request({
    url: '/system/mail/inbox/' + inboxId,
    method: 'get'
  })
}

// 获取未读数量
export function getUnreadCount(configId) {
  return request({
    url: '/system/mail/inbox/unreadCount',
    method: 'get',
    params: { configId }
  })
}

// 标记已读
export function markAsRead(inboxId) {
  return request({
    url: '/system/mail/inbox/markRead/' + inboxId,
    method: 'put'
  })
}

// 批量标记已读
export function batchMarkAsRead(inboxIds) {
  return request({
    url: '/system/mail/inbox/batchMarkRead',
    method: 'put',
    data: inboxIds
  })
}

// 切换星标
export function toggleStar(inboxId) {
  return request({
    url: '/system/mail/inbox/toggleStar/' + inboxId,
    method: 'put'
  })
}

// 删除收件
export function delMailInbox(inboxId) {
  return request({
    url: '/system/mail/inbox/' + inboxId,
    method: 'delete'
  })
}

// 同步邮件（不设置超时限制）
export function syncMails(configId) {
  return request({
    url: '/system/mail/inbox/sync/' + configId,
    method: 'post',
    timeout: 0 // 0表示不限制超时时间
  })
}

// 标记指定账户的所有未读邮件为已读
export function markAllAsReadByConfig(configId) {
  return request({
    url: '/system/mail/inbox/markAllAsRead/' + configId,
    method: 'put'
  })
}
