diff --git a/common/message.js b/common/message.js index a6bdd69..e2ec922 100644 --- a/common/message.js +++ b/common/message.js @@ -1,24 +1,38 @@ var models = require('../models'); +var eventproxy = require('eventproxy'); var Message = models.Message; var User = require('../proxy').User; +var push = require('../common/push'); var messageProxy = require('../proxy/message'); exports.sendReplyMessage = function (master_id, author_id, topic_id, reply_id, callback) { + var ep = new eventproxy(); + ep.fail(callback); var message = new Message(); message.type = 'reply'; message.master_id = master_id; message.author_id = author_id; message.topic_id = topic_id; message.reply_id = reply_id; - message.save(callback); + message.save(ep.done('message_saved')); + ep.all('message_saved', function (msg) { + push.send(message.type, author_id, master_id, topic_id); + callback && callback(); + }); }; exports.sendAtMessage = function (master_id, author_id, topic_id, reply_id, callback) { + var ep = new eventproxy(); + ep.fail(callback); var message = new Message(); message.type = 'at'; message.master_id = master_id; message.author_id = author_id; message.topic_id = topic_id; message.reply_id = reply_id; - message.save(callback); + message.save(ep.done('message_saved')); + ep.all('message_saved', function (msg) { + push.send(message.type, author_id, master_id, topic_id); + callback && callback(); + }); }; diff --git a/common/push.js b/common/push.js new file mode 100644 index 0000000..bdc15ac --- /dev/null +++ b/common/push.js @@ -0,0 +1,52 @@ +var User = require('../proxy/user'); +var Message = require('../proxy/message'); +var JPush = require("jpush-sdk"); +var eventproxy = require('eventproxy'); +var config = require('../config'); +var client = JPush.buildClient(config.jpush.appKey, config.jpush.secretKey); + +/** + * 通过极光推送发生消息通知 + * @param {String} type 消息类型 + * @param {String} author_id 消息作者ID + * @param {String} master_id 被通知者ID + * @param {String} topic_id 相关主题ID + */ +exports.send = function (type, author_id, master_id, topic_id) { + var ep = new eventproxy(); + User.getUserById(author_id, ep.done('author')); + Message.getMessagesCount(master_id, ep.done('count')); + ep.all('author', 'count', function(author, count) { + var msg = author.loginname + ' '; + var extras = { + topicId: topic_id + }; + switch(type) { + case 'at': + msg += '@了你'; + break; + case 'reply': + msg += '回复了你的主题'; + break; + default: + break; + } + client.push() + .setPlatform(JPush.ALL) + .setAudience(JPush.alias(master_id.toString())) + .setNotification(msg, + JPush.ios(msg, null, count, null, extras), + JPush.android(msg, null, null, extras) + ) + .send(function(err, res) { + if (config.debug) { + if (err) { + console.log(err.message); + } else { + console.log('Sendno: ' + res.sendno); + console.log('Msg_id: ' + res.msg_id); + } + } + }); + }) +}; diff --git a/config.default.js b/config.default.js index 2c0754d..5cf0ac1 100644 --- a/config.default.js +++ b/config.default.js @@ -108,7 +108,13 @@ var config = { ['share', '分享'], ['ask', '问答'], ['job', '招聘'], - ] + ], + + // 极光推送 + jpush: { + appKey: 'your access key', + secretKey: 'your secret key' + } }; module.exports = config; diff --git a/package.json b/package.json index 89696a1..4dbea51 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,8 @@ "validator": "3.22.1", "xmlbuilder": "2.4.4", "xss": "0.1.15", - "yaqrcode": "0.0.2" + "yaqrcode": "0.0.2", + "jpush-sdk": "3.1.0" }, "devDependencies": { "coveralls": "2.11.2",