fork from bc4552c5a8
This commit is contained in:
63
server/utils/notice.js
Normal file
63
server/utils/notice.js
Normal file
@@ -0,0 +1,63 @@
|
||||
const yapi = require('../yapi.js');
|
||||
|
||||
function arrUnique(arr1, arr2) {
|
||||
let arr = arr1.concat(arr2);
|
||||
let res = arr.filter(function(item, index, arr) {
|
||||
return arr.indexOf(item) === index;
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
const noticeObj = {
|
||||
mail: {
|
||||
title: '邮件',
|
||||
hander: (emails, title, content)=>{
|
||||
yapi.commons.sendMail({
|
||||
to: emails,
|
||||
contents: content,
|
||||
subject: title
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
yapi.emitHook('addNotice', noticeObj)
|
||||
|
||||
yapi.commons.sendNotice = async function(projectId, data) {
|
||||
const projectModel = require('../models/project.js');
|
||||
const userModel = require('../models/user.js');
|
||||
const followModel = require('../models/follow.js');
|
||||
|
||||
const followInst = yapi.getInst(followModel);
|
||||
const userInst = yapi.getInst(userModel);
|
||||
const projectInst = yapi.getInst(projectModel);
|
||||
const list = await followInst.listByProjectId(projectId);
|
||||
const starUsers = list.map(item => item.uid);
|
||||
|
||||
const projectList = await projectInst.get(projectId);
|
||||
const projectMenbers = projectList.members
|
||||
.filter(item => item.email_notice)
|
||||
.map(item => item.uid);
|
||||
|
||||
const users = arrUnique(projectMenbers, starUsers);
|
||||
const usersInfo = await userInst.findByUids(users);
|
||||
const emails = usersInfo.map(item => item.email).join(',');
|
||||
|
||||
try {
|
||||
Object.keys(noticeObj).forEach(key=>{
|
||||
let noticeItem = noticeObj[key];
|
||||
try{
|
||||
noticeItem.hander(emails, data.title, data.content)
|
||||
}catch(err){
|
||||
yapi.commons.log('发送' + (noticeItem.title || key) + '失败' + err.message, 'error')
|
||||
}
|
||||
})
|
||||
// yapi.commons.sendMail({
|
||||
// to: emails,
|
||||
// contents: data.content,
|
||||
// subject: data.title
|
||||
// });
|
||||
} catch (e) {
|
||||
yapi.commons.log('发送失败:' + e, 'error');
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user