90 lines
3.2 KiB
JavaScript
90 lines
3.2 KiB
JavaScript
const {
|
||
readSupportEmailList,
|
||
readUserEmailList,
|
||
writeUserEmailList,
|
||
emailTransporter,
|
||
readNotifyList,
|
||
writeNotifyList } = require('../utils')
|
||
const commonTemp = require('../template/commonTemp')
|
||
|
||
function getSupportEmailList({ res }) {
|
||
const data = readSupportEmailList()
|
||
res.success({ data })
|
||
}
|
||
|
||
function getUserEmailList({ res }) {
|
||
const userEmailList = readUserEmailList().map(({ target, auth: { user } }) => ({ target, user }))
|
||
const supportEmailList = readSupportEmailList()
|
||
const data = userEmailList.map(({ target: userTarget, user: email }) => {
|
||
let name = supportEmailList.find(({ target: supportTarget }) => supportTarget === userTarget).name
|
||
return { name, email }
|
||
})
|
||
res.success({ data })
|
||
}
|
||
|
||
async function pushEmail({ res, request }) {
|
||
let { body: { toEmail, isTest } } = request
|
||
if(!isTest) return res.fail({ msg: '此接口暂时只做测试邮件使用, 需传递参数isTest: true' })
|
||
consola.info('发送测试邮件:', toEmail)
|
||
let { code, msg } = await emailTransporter({ toEmail, title: '测试邮件', html: commonTemp('邮件通知测试邮件') })
|
||
msg = msg && msg.message || msg
|
||
if(code === 0) return res.success({ msg })
|
||
return res.fail({ msg })
|
||
}
|
||
|
||
function updateUserEmailList({ res, request }) {
|
||
let { body: { target, auth } } = request
|
||
const supportList = readSupportEmailList()
|
||
let flag = supportList.some((item) => item.target === target)
|
||
if(!flag) return res.fail({ msg: `不支持的邮箱类型:${ target }` })
|
||
if(!auth.user || !auth.pass) return res.fail({ msg: 'missing params: auth.' })
|
||
|
||
let newUserEmail = { target, auth }
|
||
let userEmailList = readUserEmailList()
|
||
let idx = userEmailList.findIndex(({ auth: { user } }) => auth.user === user)
|
||
if(idx !== -1) userEmailList.splice(idx, 1, newUserEmail)
|
||
else userEmailList.unshift(newUserEmail)
|
||
|
||
const { code, msg } = writeUserEmailList(userEmailList)
|
||
if(code === 0) return res.success()
|
||
return res.fail({ msg })
|
||
}
|
||
|
||
function removeUserEmail({ res, request }) {
|
||
let { params: { email } } = request
|
||
const userEmailList = readUserEmailList()
|
||
let idx = userEmailList.findIndex(({ auth: { user } }) => user === email)
|
||
if(idx === -1) return res.fail({ msg: `删除失败, 不存在该邮箱:${ email }` })
|
||
userEmailList.splice(idx, 1)
|
||
const { code, msg } = writeUserEmailList(userEmailList)
|
||
if(code === 0) return res.success()
|
||
return res.fail({ msg })
|
||
}
|
||
|
||
function getNotifyList({ res }) {
|
||
const data = readNotifyList()
|
||
res.success({ data })
|
||
}
|
||
|
||
function updateNotifyList({ res, request }) {
|
||
let { body: { type, sw } } = request
|
||
if(!([true, false].includes(sw))) return res.fail({ msg: `Error type for sw:${ sw }, must be Boolean` })
|
||
const notifyList = readNotifyList()
|
||
let target = notifyList.find((item) => item.type === type)
|
||
if(!target) return res.fail({ msg: `更新失败, 不存在该通知类型:${ type }` })
|
||
target.sw = sw
|
||
console.log(notifyList)
|
||
writeNotifyList(notifyList)
|
||
res.success()
|
||
}
|
||
|
||
module.exports = {
|
||
pushEmail,
|
||
getSupportEmailList,
|
||
getUserEmailList,
|
||
updateUserEmailList,
|
||
removeUserEmail,
|
||
getNotifyList,
|
||
updateNotifyList
|
||
}
|