|  | @ -51,26 +51,28 @@ router.post(APIv1.Chats.SM, function (req, res) {
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     // 字段判断
 |  |     // 字段判断
 | 
												
													
														
															|  |     if (message.to == null || message.title == null) {
 |  | 
 | 
												
													
														
															|  |         throw {httpStatus: 406, message: 'Missing fields.'}
 |  | 
 | 
												
													
														
															|  | 
 |  |     var testing = objectUtil.fieldsCheck(message, "to", "title", "summary", "contentType", "content");
 | 
												
													
														
															|  | 
 |  |     if (!testing.pass) {
 | 
												
													
														
															|  | 
 |  |         throw {httpStatus: 406, message: testing.message}
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     // 消息处理
 |  |     // 消息处理
 | 
												
													
														
															|  |     user.getUserStatus(message.to, function (err, userStatus) {
 |  | 
 | 
												
													
														
															|  | 
 |  |     user.getUserStatus(message.to, function (err, rows) {
 | 
												
													
														
															|  |         if (err) {
 |  |         if (err) {
 | 
												
													
														
															|  |             console.log("Lookup system message receiver failed: ", err);
 |  |             console.log("Lookup system message receiver failed: ", err);
 | 
												
													
														
															|  |             
 |  | 
 | 
												
													
														
															|  |             throw {httpStatus: 500, message: "Lookup system message receiver failed: "};
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         if(userStatus.length == 0){
 |  | 
 | 
												
													
														
															|  |             throw {httpStatus: 404, message: "User not found."};
 |  | 
 | 
												
													
														
															|  | 
 |  |             res.status(500).send({message: "Lookup system message receiver failed."});
 | 
												
													
														
															|  | 
 |  |             return;
 | 
												
													
														
															|  |         }
 |  |         }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         res.writeHead(200);
 |  | 
 | 
												
													
														
															|  | 
 |  |         if (rows.length == 0) {
 | 
												
													
														
															|  | 
 |  |             res.status(404).send({message: "User not found: " + message.to});
 | 
												
													
														
															|  | 
 |  |             return;
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         var pushable = userStatus.length > 0 && userStatus[0].is_online;
 |  | 
 | 
												
													
														
															|  |         var notifyMessage = JSON.stringify({type: message.contentType, content: message.content});
 |  | 
 | 
												
													
														
															|  | 
 |  |         var pushable = rows.length > 0 && rows[0].is_online;
 | 
												
													
														
															|  | 
 |  |         var notifyMessage = JSON.stringify({type: 'system_msg', content: message.content});
 | 
												
													
														
															|  | 
 |  |         var userStatus = rows[0];
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         // 保存该条推送信息
 |  |         // 保存该条推送信息
 | 
												
													
														
															|  |         systemMsg.save(message.to,
 |  |         systemMsg.save(message.to,
 | 
												
											
												
													
														
															|  | @ -80,12 +82,15 @@ router.post(APIv1.Chats.SM, function (req, res) {
 | 
												
													
														
															|  |             message.content,
 |  |             message.content,
 | 
												
													
														
															|  |             function (err, result) {
 |  |             function (err, result) {
 | 
												
													
														
															|  |                 if (err) {
 |  |                 if (err) {
 | 
												
													
														
															|  |                     log.error("Save system message failed, ", err);
 |  | 
 | 
												
													
														
															|  | 
 |  |                     log.error("Save system notify message failed, ", err);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                     throw {httpStatus: 500, message: "Save system message failed."};
 |  | 
 | 
												
													
														
															|  | 
 |  |                     res.status(500).send({message: "Save system notify message failed."});
 | 
												
													
														
															|  |                 } else {
 |  |                 } else {
 | 
												
													
														
															|  | 
 |  |                     // 先结束网络连接,再处理后续操作,减少客户端等待
 | 
												
													
														
															|  | 
 |  |                     res.status(200).send();
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                     // 保存通知到数据库中
 |  |                     // 保存通知到数据库中
 | 
												
													
														
															|  |                     notifyMessage.saveMessage(message.to,
 |  | 
 | 
												
													
														
															|  | 
 |  |                     notifyMsg.save(message.to,
 | 
												
													
														
															|  |                         message.contentType,
 |  |                         message.contentType,
 | 
												
													
														
															|  |                         message.title,
 |  |                         message.title,
 | 
												
													
														
															|  |                         message.summary,
 |  |                         message.summary,
 | 
												
											
												
													
														
															|  | @ -93,12 +98,12 @@ router.post(APIv1.Chats.SM, function (req, res) {
 | 
												
													
														
															|  |                         pushable,
 |  |                         pushable,
 | 
												
													
														
															|  |                         function (err, result) {
 |  |                         function (err, result) {
 | 
												
													
														
															|  |                             if (err) {
 |  |                             if (err) {
 | 
												
													
														
															|  |                                 log.error("Save system message failed, ", err);
 |  | 
 | 
												
													
														
															|  | 
 |  |                                 log.error("Save system notify message failed, ", err);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                                 throw {httpStatus: 500, message: "Save system notify message failed."};
 |  | 
 | 
												
													
														
															|  | 
 |  |                                 res.status(500).send({message: "Save system notify message failed."});
 | 
												
													
														
															|  |                             } else {
 |  |                             } else {
 | 
												
													
														
															|  |                                 if (pushable == true) {
 |  | 
 | 
												
													
														
															|  |                                     if (userStatus.platform == PLATFORMS.iOS) {
 |  | 
 | 
												
													
														
															|  | 
 |  |                                 if (pushable) {
 | 
												
													
														
															|  | 
 |  |                                     if (userStatus.platform === PLATFORMS.iOS) {
 | 
												
													
														
															|  |                                         getui.pushAPN(message.to,
 |  |                                         getui.pushAPN(message.to,
 | 
												
													
														
															|  |                                             userStatus.token,
 |  |                                             userStatus.token,
 | 
												
													
														
															|  |                                             message.contentType,
 |  |                                             message.contentType,
 | 
												
											
												
													
														
															|  | @ -108,7 +113,7 @@ router.post(APIv1.Chats.SM, function (req, res) {
 | 
												
													
														
															|  |                                             function (err, result) {
 |  |                                             function (err, result) {
 | 
												
													
														
															|  |                                                 err != null ? console.log(err) : console.log(result);
 |  |                                                 err != null ? console.log(err) : console.log(result);
 | 
												
													
														
															|  |                                             });
 |  |                                             });
 | 
												
													
														
															|  |                                     } else if (PLATFORMS.iOS.Android) {
 |  | 
 | 
												
													
														
															|  | 
 |  |                                     } else if (userStatus.platform === PLATFORMS.Android) {
 | 
												
													
														
															|  |                                         getui.pushAndroid(userStatus.client_id,
 |  |                                         getui.pushAndroid(userStatus.client_id,
 | 
												
													
														
															|  |                                             message.contentType,
 |  |                                             message.contentType,
 | 
												
													
														
															|  |                                             message.title,
 |  |                                             message.title,
 | 
												
											
												
													
														
															|  | @ -125,8 +130,6 @@ router.post(APIv1.Chats.SM, function (req, res) {
 | 
												
													
														
															|  |                 }
 |  |                 }
 | 
												
													
														
															|  |             });
 |  |             });
 | 
												
													
														
															|  |     });
 |  |     });
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     res.writeHead(200);
 |  | 
 | 
												
													
														
															|  | });
 |  | });
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | /**
 |  | /**
 | 
												
											
												
													
														
															|  | @ -153,57 +156,50 @@ router.post(APIv1.Chats.PM, function (req, res) {
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     // 字段判断
 |  |     // 字段判断
 | 
												
													
														
															|  |     if (message.from == null || message.to == null || message.contentType == null || message.content == null) {
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         throw {httpStatus: 406, message: 'Missing fields.'}
 |  | 
 | 
												
													
														
															|  | 
 |  |     var testing = objectUtil.fieldsCheck(message, "from", "to", "contentType", "content");
 | 
												
													
														
															|  | 
 |  |     if (!testing.pass) {
 | 
												
													
														
															|  | 
 |  |         throw {httpStatus: 406, message: testing.message}
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     // 处理消息
 |  |     // 处理消息
 | 
												
													
														
															|  |     user.isExist(message.to, function (err, result) {
 |  | 
 | 
												
													
														
															|  | 
 |  |     user.isExist(message.to, function (err, rows) {
 | 
												
													
														
															|  |         if (err) {
 |  |         if (err) {
 | 
												
													
														
															|  |             console.log('Lookup receiving users failed: ', err);
 |  |             console.log('Lookup receiving users failed: ', err);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |             throw {httpStatus: 500, message: 'Lookup receiving users failed.'};
 |  | 
 | 
												
													
														
															|  | 
 |  |             res.status(500).send({message: 'Lookup receiving users failed.'});
 | 
												
													
														
															|  | 
 |  |             return;
 | 
												
													
														
															|  |         }
 |  |         }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         if (result.length == 0) {
 |  | 
 | 
												
													
														
															|  |             throw {httpStatus: 404, message: 'Receiving users not found.'};
 |  | 
 | 
												
													
														
															|  | 
 |  |         if (rows.length == 0) {
 | 
												
													
														
															|  | 
 |  |             res.status(404).send({message: 'Receiving users not found.'});
 | 
												
													
														
															|  | 
 |  |             return;
 | 
												
													
														
															|  |         }
 |  |         }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         // 保存消息
 |  |         // 保存消息
 | 
												
													
														
															|  |         privateMsg.save(message.to, message.from, message.contentType, message.content, function (err, result) {
 |  |         privateMsg.save(message.to, message.from, message.contentType, message.content, function (err, result) {
 | 
												
													
														
															|  |             if (err) {
 |  |             if (err) {
 | 
												
													
														
															|  |                 throw {httpStatus: 500, message: 'Save private message failed.'};
 |  | 
 | 
												
													
														
															|  | 
 |  |                 res.status(500).send({message: 'Save private message failed.'});
 | 
												
													
														
															|  | 
 |  |                 return;
 | 
												
													
														
															|  |             }
 |  |             }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |             res.writeHead(200);
 |  | 
 | 
												
													
														
															|  | 
 |  |             // 结束网络连接,后续操作继续执行
 | 
												
													
														
															|  | 
 |  |             res.status(200).send();
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |             // 更新自身的聊天统计信息
 |  |             // 更新自身的聊天统计信息
 | 
												
													
														
															|  |             msgStats.updateP2PChatInfo(message.from,
 |  | 
 | 
												
													
														
															|  |                 message.to,
 |  | 
 | 
												
													
														
															|  |                 message.from,
 |  | 
 | 
												
													
														
															|  |                 CHANNELS.Private,
 |  | 
 | 
												
													
														
															|  |                 message.content,
 |  | 
 | 
												
													
														
															|  |                 function (err, result) {
 |  | 
 | 
												
													
														
															|  |                     if (err) log.error(err);
 |  | 
 | 
												
													
														
															|  |                 });
 |  | 
 | 
												
													
														
															|  | 
 |  |             msgStats.updateP2PChatInfo(message.from, message.to, message.from, message.contentType, message.content, function (err, result) {
 | 
												
													
														
															|  | 
 |  |                 if (err) log.error(err);
 | 
												
													
														
															|  | 
 |  |             });
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |             // 更新对端的聊天统计信息
 |  |             // 更新对端的聊天统计信息
 | 
												
													
														
															|  |             msgStats.updateP2PChatInfo(message.to,
 |  | 
 | 
												
													
														
															|  |                 message.from,
 |  | 
 | 
												
													
														
															|  |                 message.from,
 |  | 
 | 
												
													
														
															|  |                 message.contentType,
 |  | 
 | 
												
													
														
															|  |                 message.content,
 |  | 
 | 
												
													
														
															|  |                 function (err, result) {
 |  | 
 | 
												
													
														
															|  |                     if (err) log.error(err);
 |  | 
 | 
												
													
														
															|  |                 });
 |  | 
 | 
												
													
														
															|  | 
 |  |             msgStats.updateP2PChatInfo(message.to, message.from, message.from, message.contentType, message.content, function (err, result) {
 | 
												
													
														
															|  | 
 |  |                 if (err) log.error(err);
 | 
												
													
														
															|  | 
 |  |             });
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |             // 获取对方状态,即对端的系统平台,token等信息,并推送通知消息给对端
 |  |             // 获取对方状态,即对端的系统平台,token等信息,并推送通知消息给对端
 | 
												
													
														
															|  |             user.getUserStatus(message.to, function (err, result) {
 |  |             user.getUserStatus(message.to, function (err, result) {
 | 
												
													
														
															|  |                 if (err) {
 |  |                 if (err) {
 | 
												
													
														
															|  |                     log.error('Get users status failed: ' + message.to);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                     throw {httpStatus: 500, message: 'Find target users failed.'};
 |  | 
 | 
												
													
														
															|  | 
 |  |                     log.error('Get target user status for private message failed: ' + message.to);
 | 
												
													
														
															|  | 
 |  |                     return;
 | 
												
													
														
															|  |                 }
 |  |                 }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                 // 构建通知消息
 |  |                 // 构建通知消息
 | 
												
											
												
													
														
															|  | @ -228,57 +224,49 @@ router.post(APIv1.Chats.PM, function (req, res) {
 | 
												
													
														
															|  |                     }
 |  |                     }
 | 
												
													
														
															|  |                 }
 |  |                 }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                 var notifyMessage = JSON.stringify({type: 'p2p_msg', from: message.from});
 |  | 
 | 
												
													
														
															|  | 
 |  |                 var notifyMessage = JSON.stringify({type: 'p2p_msg', from_uid: message.from});
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                 // 保存通知消息到数据库中并根据用户在线状态推送此消息
 |  |                 // 保存通知消息到数据库中并根据用户在线状态推送此消息
 | 
												
													
														
															|  |                 notifyMsg.saveNotifyMessage(message.to,
 |  | 
 | 
												
													
														
															|  |                     message.contentType,
 |  | 
 | 
												
													
														
															|  |                     title,
 |  | 
 | 
												
													
														
															|  |                     content,
 |  | 
 | 
												
													
														
															|  |                     notifyMessage,
 |  | 
 | 
												
													
														
															|  |                     pushable,
 |  | 
 | 
												
													
														
															|  |                     function (err, result) {
 |  | 
 | 
												
													
														
															|  |                         if (err) {
 |  | 
 | 
												
													
														
															|  |                             log.error('Save private notify message failed, ', err);
 |  | 
 | 
												
													
														
															|  |                         } else {
 |  | 
 | 
												
													
														
															|  |                             if (pushable === true) {
 |  | 
 | 
												
													
														
															|  |                                 if (data.platform === PLATFORMS.iOS) {
 |  | 
 | 
												
													
														
															|  |                                     getui.pushAPN(message.to,
 |  | 
 | 
												
													
														
															|  |                                         data.token,
 |  | 
 | 
												
													
														
															|  |                                         message.contentType,
 |  | 
 | 
												
													
														
															|  |                                         title,
 |  | 
 | 
												
													
														
															|  |                                         content,
 |  | 
 | 
												
													
														
															|  |                                         notifyMessage,
 |  | 
 | 
												
													
														
															|  |                                         function (err, result) {
 |  | 
 | 
												
													
														
															|  |                                             if (err != null) {
 |  | 
 | 
												
													
														
															|  |                                                 console.log(err);
 |  | 
 | 
												
													
														
															|  |                                             } else {
 |  | 
 | 
												
													
														
															|  |                                                 console.log(result);
 |  | 
 | 
												
													
														
															|  |                                             }
 |  | 
 | 
												
													
														
															|  |                                         });
 |  | 
 | 
												
													
														
															|  |                                 } else if (data.platform === PLATFORMS.Android) {
 |  | 
 | 
												
													
														
															|  |                                     getui.pushAndroid(data.client_id,
 |  | 
 | 
												
													
														
															|  |                                         message.contentType,
 |  | 
 | 
												
													
														
															|  |                                         title,
 |  | 
 | 
												
													
														
															|  |                                         content,
 |  | 
 | 
												
													
														
															|  |                                         notifyMessage,
 |  | 
 | 
												
													
														
															|  |                                         data.status,
 |  | 
 | 
												
													
														
															|  |                                         function (err, result) {
 |  | 
 | 
												
													
														
															|  |                                             if (err != null) {
 |  | 
 | 
												
													
														
															|  |                                                 console.log(err);
 |  | 
 | 
												
													
														
															|  |                                             } else {
 |  | 
 | 
												
													
														
															|  |                                                 console.log(result);
 |  | 
 | 
												
													
														
															|  |                                             }
 |  | 
 | 
												
													
														
															|  |                                         });
 |  | 
 | 
												
													
														
															|  |                                 }
 |  | 
 | 
												
													
														
															|  | 
 |  |                 notifyMsg.save(message.to, message.contentType, title, content, notifyMessage, pushable, function (err, result) {
 | 
												
													
														
															|  | 
 |  |                     if (err) {
 | 
												
													
														
															|  | 
 |  |                         log.error('Save private notify message failed, ', err);
 | 
												
													
														
															|  | 
 |  |                     } else {
 | 
												
													
														
															|  | 
 |  |                         if (pushable === true) {
 | 
												
													
														
															|  | 
 |  |                             if (target.platform === PLATFORMS.iOS) {
 | 
												
													
														
															|  | 
 |  |                                 getui.pushAPN(message.to,
 | 
												
													
														
															|  | 
 |  |                                     target.token,
 | 
												
													
														
															|  | 
 |  |                                     message.contentType,
 | 
												
													
														
															|  | 
 |  |                                     title,
 | 
												
													
														
															|  | 
 |  |                                     content,
 | 
												
													
														
															|  | 
 |  |                                     notifyMessage,
 | 
												
													
														
															|  | 
 |  |                                     function (err, result) {
 | 
												
													
														
															|  | 
 |  |                                         if (err != null) {
 | 
												
													
														
															|  | 
 |  |                                             console.log(err);
 | 
												
													
														
															|  | 
 |  |                                         } else {
 | 
												
													
														
															|  | 
 |  |                                             console.log(result);
 | 
												
													
														
															|  | 
 |  |                                         }
 | 
												
													
														
															|  | 
 |  |                                     });
 | 
												
													
														
															|  | 
 |  |                             } else if (target.platform === PLATFORMS.Android) {
 | 
												
													
														
															|  | 
 |  |                                 getui.pushAndroid(data.client_id,
 | 
												
													
														
															|  | 
 |  |                                     message.contentType,
 | 
												
													
														
															|  | 
 |  |                                     title,
 | 
												
													
														
															|  | 
 |  |                                     content,
 | 
												
													
														
															|  | 
 |  |                                     notifyMessage,
 | 
												
													
														
															|  | 
 |  |                                     target.status,
 | 
												
													
														
															|  | 
 |  |                                     function (err, result) {
 | 
												
													
														
															|  | 
 |  |                                         if (err != null) {
 | 
												
													
														
															|  | 
 |  |                                             console.log(err);
 | 
												
													
														
															|  | 
 |  |                                         } else {
 | 
												
													
														
															|  | 
 |  |                                             console.log(result);
 | 
												
													
														
															|  | 
 |  |                                         }
 | 
												
													
														
															|  | 
 |  |                                     });
 | 
												
													
														
															|  |                             }
 |  |                             }
 | 
												
													
														
															|  |                         }
 |  |                         }
 | 
												
													
														
															|  |                     });
 |  | 
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                 });
 | 
												
													
														
															|  |             });
 |  |             });
 | 
												
													
														
															|  |         });
 |  |         });
 | 
												
													
														
															|  |     });
 |  |     });
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     res.writeHead(200);
 |  | 
 | 
												
													
														
															|  | });
 |  | });
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | /**
 |  | /**
 | 
												
											
												
													
														
															|  | @ -304,58 +292,62 @@ router.post(APIv1.Chats.GM, function (req, res) {
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     // 字段判断
 |  |     // 字段判断
 | 
												
													
														
															|  |     if (message.from == null || message.group == null || message.contentType == null || message.content == null) {
 |  | 
 | 
												
													
														
															|  |         throw {httpStatus: 406, message: 'Missing fields.'}
 |  | 
 | 
												
													
														
															|  | 
 |  |     var testing = objectUtil.fieldsCheck(message, 'from', 'at', 'group', 'groupType', 'contentType', 'content');
 | 
												
													
														
															|  | 
 |  |     if (!testing.pass) {
 | 
												
													
														
															|  | 
 |  |         throw {httpStatus: 406, message: testing.message}
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     // 消息处理
 |  |     // 消息处理
 | 
												
													
														
															|  |     group.isGroupMember(message.group, message.groupType, message.from, function (err, result) {
 |  |     group.isGroupMember(message.group, message.groupType, message.from, function (err, result) {
 | 
												
													
														
															|  |         if (err) {
 |  |         if (err) {
 | 
												
													
														
															|  |             throw {httpStatus: 500, message: 'Check group member failed.'};
 |  | 
 | 
												
													
														
															|  | 
 |  |             log.error('Check group member failed: ', err);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |             res.status(500).send({message: 'Check group member failed.'});
 | 
												
													
														
															|  | 
 |  |             return;
 | 
												
													
														
															|  |         }
 |  |         }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         if (result.length == 0) {
 |  |         if (result.length == 0) {
 | 
												
													
														
															|  |             throw {httpStatus: 404, message: 'Group member not found. Member id: ' + message.from};
 |  | 
 | 
												
													
														
															|  | 
 |  |             res.status(404).send({message: 'Member with id "' + message.from + '" is not in group "' + message.group + '"'});
 | 
												
													
														
															|  | 
 |  |             return;
 | 
												
													
														
															|  |         }
 |  |         }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         // 保存群组消息
 |  |         // 保存群组消息
 | 
												
													
														
															|  |         groupMsg.saveMessage(message.from, message.group, message.at, message.contentType, message.content, function (err, result) {
 |  | 
 | 
												
													
														
															|  | 
 |  |         groupMsg.save(message.from, message.group, message.at, message.contentType, message.content, function (err, result) {
 | 
												
													
														
															|  |             if (err) {
 |  |             if (err) {
 | 
												
													
														
															|  |                 throw {httpStatus: 500, message: 'Save group message failed.'};
 |  | 
 | 
												
													
														
															|  | 
 |  |                 log.error('Save group message failed: ', err);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |                 res.status(500).send({message: 'Save group message failed.'});
 | 
												
													
														
															|  | 
 |  |                 return;
 | 
												
													
														
															|  |             }
 |  |             }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |             res.writeHead(200);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |             // 统计信息
 |  | 
 | 
												
													
														
															|  |             msgStats.updateGroupChatInfo(message.from,
 |  | 
 | 
												
													
														
															|  |                 message.group,
 |  | 
 | 
												
													
														
															|  |                 message.from,
 |  | 
 | 
												
													
														
															|  |                 0,
 |  | 
 | 
												
													
														
															|  |                 message.contentType,
 |  | 
 | 
												
													
														
															|  |                 message.content,
 |  | 
 | 
												
													
														
															|  |                 false,
 |  | 
 | 
												
													
														
															|  |                 function (err, result) {
 |  | 
 | 
												
													
														
															|  |                     if (err) log.error(err);
 |  | 
 | 
												
													
														
															|  |                 });
 |  | 
 | 
												
													
														
															|  | 
 |  |             // 关闭网络连接后执行后续操作
 | 
												
													
														
															|  | 
 |  |             res.status(200).send();
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |             // 更新组内统计信息
 | 
												
													
														
															|  | 
 |  |             msgStats.updateGroupChatInfo(message.from, message.group, message.from, 0, message.contentType, message.content, false, function (err, result) {
 | 
												
													
														
															|  | 
 |  |                 if (err) log.error(err);
 | 
												
													
														
															|  | 
 |  |             });
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |             // 推送通知消息给群组成员
 |  |             // 推送通知消息给群组成员
 | 
												
													
														
															|  |             group.getMembers(message.group, message.groupType, function (err, result) {
 |  |             group.getMembers(message.group, message.groupType, function (err, result) {
 | 
												
													
														
															|  |                 if (err) {
 |  |                 if (err) {
 | 
												
													
														
															|  |                     log.error('Get group members failed: ', err);
 |  |                     log.error('Get group members failed: ', err);
 | 
												
													
														
															|  |                     throw {httpStatus: 500, message: 'Get group members failed.'};
 |  | 
 | 
												
													
														
															|  | 
 |  |                     return;
 | 
												
													
														
															|  |                 }
 |  |                 }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                 if (result.length == 0) {
 |  |                 if (result.length == 0) {
 | 
												
													
														
															|  |                     log.warn('No members in group ', message.group);
 |  | 
 | 
												
													
														
															|  | 
 |  |                     log.warn('No members in group ', message.group,
 | 
												
													
														
															|  | 
 |  |                         message.groupType === GROUP_TYPE.AdminTeam ? " of admin team." : "of discussion group.");
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                     return;
 |  |                     return;
 | 
												
													
														
															|  |                 }
 |  |                 }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                 // 逐个推送通知
 |  |                 // 逐个推送通知
 | 
												
													
														
															|  |                 for (var nIndex = 0; nIndex < result.length; nIndex++) {
 |  |                 for (var nIndex = 0; nIndex < result.length; nIndex++) {
 | 
												
													
														
															|  |                     var member = result[nIndex];
 |  |                     var member = result[nIndex];
 | 
												
													
														
															|  |                     if (member.member_code === message.from) continue;
 |  | 
 | 
												
													
														
															|  | 
 |  |                     if (member.user_id === message.from) continue;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                     user.getUserStatus(member.member_code, function (err, result) {
 |  | 
 | 
												
													
														
															|  | 
 |  |                     user.getUserStatus(member.user_id, function (err, result) {
 | 
												
													
														
															|  |                         if (err) {
 |  |                         if (err) {
 | 
												
													
														
															|  |                             console.error('Get group member status failed: ', err);
 |  |                             console.error('Get group member status failed: ', err);
 | 
												
													
														
															|  |                             return;
 |  |                             return;
 | 
												
											
												
													
														
															|  | @ -378,13 +370,15 @@ router.post(APIv1.Chats.GM, function (req, res) {
 | 
												
													
														
															|  |                         }
 |  |                         }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                         var pushable = result.length > 0 && result[0].is_online === 1;
 |  |                         var pushable = result.length > 0 && result[0].is_online === 1;
 | 
												
													
														
															|  |                         var notifyMessage = JSON.stringify({type: 'group_msg', groupId: message.group});
 |  | 
 | 
												
													
														
															|  | 
 |  |                         var notifyMessage = JSON.stringify({type: 'group_msg', gid: message.group});
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                         // 发送并保存通知到数据库中
 |  |                         // 发送并保存通知到数据库中
 | 
												
													
														
															|  |                         if (pushable) {
 |  |                         if (pushable) {
 | 
												
													
														
															|  |                             if (data.platform === PLATFORMS.iOS) {
 |  | 
 | 
												
													
														
															|  |                                 getui.pushAPN(member.member_code,
 |  | 
 | 
												
													
														
															|  |                                     data.token,
 |  | 
 | 
												
													
														
															|  | 
 |  |                             var userStatus = result[0];
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |                             if (userStatus.platform === PLATFORMS.iOS) {
 | 
												
													
														
															|  | 
 |  |                                 getui.pushAPN(member.user_id,
 | 
												
													
														
															|  | 
 |  |                                     userStatus.token,
 | 
												
													
														
															|  |                                     message.contentType,
 |  |                                     message.contentType,
 | 
												
													
														
															|  |                                     title,
 |  |                                     title,
 | 
												
													
														
															|  |                                     content,
 |  |                                     content,
 | 
												
											
												
													
														
															|  | @ -393,7 +387,7 @@ router.post(APIv1.Chats.GM, function (req, res) {
 | 
												
													
														
															|  |                                         err != null ? console.error(err) : console.log(result);
 |  |                                         err != null ? console.error(err) : console.log(result);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                                         // 这段代码重复
 |  |                                         // 这段代码重复
 | 
												
													
														
															|  |                                         notifyMsg.saveNotifyMessage(member.member_code,
 |  | 
 | 
												
													
														
															|  | 
 |  |                                         notifyMsg.save(member.user_id,
 | 
												
													
														
															|  |                                             message.contentType,
 |  |                                             message.contentType,
 | 
												
													
														
															|  |                                             title,
 |  |                                             title,
 | 
												
													
														
															|  |                                             content,
 |  |                                             content,
 | 
												
											
												
													
														
															|  | @ -407,18 +401,18 @@ router.post(APIv1.Chats.GM, function (req, res) {
 | 
												
													
														
															|  |                                                 }
 |  |                                                 }
 | 
												
													
														
															|  |                                             });
 |  |                                             });
 | 
												
													
														
															|  |                                     });
 |  |                                     });
 | 
												
													
														
															|  |                             } else if (data.platform === PLATFORMS.Android) {
 |  | 
 | 
												
													
														
															|  | 
 |  |                             } else if (userStatus.platform === PLATFORMS.Android) {
 | 
												
													
														
															|  |                                 getui.pushAndroid(data.client_id,
 |  |                                 getui.pushAndroid(data.client_id,
 | 
												
													
														
															|  |                                     message.contentType,
 |  |                                     message.contentType,
 | 
												
													
														
															|  |                                     title,
 |  |                                     title,
 | 
												
													
														
															|  |                                     content,
 |  |                                     content,
 | 
												
													
														
															|  |                                     notifyMessage,
 |  |                                     notifyMessage,
 | 
												
													
														
															|  |                                     data.status,
 |  | 
 | 
												
													
														
															|  | 
 |  |                                     userStatus.status,
 | 
												
													
														
															|  |                                     function (err, result) {
 |  |                                     function (err, result) {
 | 
												
													
														
															|  |                                         err != null ? console.error(err) : console.log(result);
 |  |                                         err != null ? console.error(err) : console.log(result);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                                         // 这段代码重复
 |  |                                         // 这段代码重复
 | 
												
													
														
															|  |                                         notifyMsg.saveNotifyMessage(member.member_code,
 |  | 
 | 
												
													
														
															|  | 
 |  |                                         notifyMsg.save(member.user_id,
 | 
												
													
														
															|  |                                             message.contentType,
 |  |                                             message.contentType,
 | 
												
													
														
															|  |                                             title,
 |  |                                             title,
 | 
												
													
														
															|  |                                             content,
 |  |                                             content,
 | 
												
											
												
													
														
															|  | @ -435,7 +429,7 @@ router.post(APIv1.Chats.GM, function (req, res) {
 | 
												
													
														
															|  |                             }
 |  |                             }
 | 
												
													
														
															|  |                         } else {
 |  |                         } else {
 | 
												
													
														
															|  |                             // 这段代码重复
 |  |                             // 这段代码重复
 | 
												
													
														
															|  |                             notifyMsg.saveNotifyMessage(member.member_code,
 |  | 
 | 
												
													
														
															|  | 
 |  |                             notifyMsg.save(member.user_id,
 | 
												
													
														
															|  |                                 message.contentType,
 |  |                                 message.contentType,
 | 
												
													
														
															|  |                                 title,
 |  |                                 title,
 | 
												
													
														
															|  |                                 content,
 |  |                                 content,
 | 
												
											
												
													
														
															|  | @ -451,13 +445,11 @@ router.post(APIv1.Chats.GM, function (req, res) {
 | 
												
													
														
															|  |                         }
 |  |                         }
 | 
												
													
														
															|  |                     });
 |  |                     });
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                     // 统计信息
 |  | 
 | 
												
													
														
															|  | 
 |  |                     // 统计'@'信息
 | 
												
													
														
															|  |                     var at = 0;
 |  |                     var at = 0;
 | 
												
													
														
															|  |                     if (message.at == member.member_code) {
 |  | 
 | 
												
													
														
															|  |                         at = 1;
 |  | 
 | 
												
													
														
															|  |                     }
 |  | 
 | 
												
													
														
															|  | 
 |  |                     if (message.at == member.user_id) at = 1;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |                     msgStats.updateGroupChatInfo(member.member_code,
 |  | 
 | 
												
													
														
															|  | 
 |  |                     msgStats.updateGroupChatInfo(member.user_id,
 | 
												
													
														
															|  |                         message.group,
 |  |                         message.group,
 | 
												
													
														
															|  |                         message.from,
 |  |                         message.from,
 | 
												
													
														
															|  |                         at,
 |  |                         at,
 | 
												
											
												
													
														
															|  | @ -489,7 +481,7 @@ router.post(APIv1.Chats.GM, function (req, res) {
 | 
												
													
														
															|  |  * 请求URL:
 |  |  * 请求URL:
 | 
												
													
														
															|  |  *  /pm?user_id=sand&peer_id=Rose&message_start_id=0&count=20
 |  |  *  /pm?user_id=sand&peer_id=Rose&message_start_id=0&count=20
 | 
												
													
														
															|  |  */
 |  |  */
 | 
												
													
														
															|  | router.get(APIv1.Chats.PM, function (req, res)  {
 |  | 
 | 
												
													
														
															|  | 
 |  | router.get(APIv1.Chats.PM, function (req, res) {
 | 
												
													
														
															|  |     var userId = req.query.user_id;
 |  |     var userId = req.query.user_id;
 | 
												
													
														
															|  |     var peerId = req.query.peer_id;
 |  |     var peerId = req.query.peer_id;
 | 
												
													
														
															|  |     var msgStartId = req.query.message_start_id === null ? MAX_INT : parseInt(req.query.message_start_id);
 |  |     var msgStartId = req.query.message_start_id === null ? MAX_INT : parseInt(req.query.message_start_id);
 | 
												
											
												
													
														
															|  | @ -499,7 +491,7 @@ router.get(APIv1.Chats.PM, function (req, res)  {
 | 
												
													
														
															|  |         throw {httpStatus: 400, message: "Missing field."};
 |  |         throw {httpStatus: 400, message: "Missing field."};
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     privateMsg.findMessage(userId, peerId, msgStartId, count, function (err, rows) {
 |  | 
 | 
												
													
														
															|  | 
 |  |     privateMsg.findByGroupId(userId, peerId, msgStartId, count, function (err, rows) {
 | 
												
													
														
															|  |         if (err) {
 |  |         if (err) {
 | 
												
													
														
															|  |             log.error("Get private message failed, ", err);
 |  |             log.error("Get private message failed, ", err);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
											
												
													
														
															|  | @ -537,7 +529,7 @@ router.get(APIv1.Chats.PM, function (req, res)  {
 | 
												
													
														
															|  |  * 请求URL:
 |  |  * 请求URL:
 | 
												
													
														
															|  |  *  /gm?user_id=sand&group_id=discussionGroup&message_start_id=0&count=20
 |  |  *  /gm?user_id=sand&group_id=discussionGroup&message_start_id=0&count=20
 | 
												
													
														
															|  |  */
 |  |  */
 | 
												
													
														
															|  | router.get(APIv1.Chats.GM, function (req, res)  {
 |  | 
 | 
												
													
														
															|  | 
 |  | router.get(APIv1.Chats.GM, function (req, res) {
 | 
												
													
														
															|  |     var groupId = req.query.group_id;
 |  |     var groupId = req.query.group_id;
 | 
												
													
														
															|  |     var userId = req.query.user_id;
 |  |     var userId = req.query.user_id;
 | 
												
													
														
															|  |     var msgStartId = req.query.message_start_id === null ? MAX_INT : parseInt(req.query.message_start_id);
 |  |     var msgStartId = req.query.message_start_id === null ? MAX_INT : parseInt(req.query.message_start_id);
 | 
												
											
												
													
														
															|  | @ -547,7 +539,7 @@ router.get(APIv1.Chats.GM, function (req, res)  {
 | 
												
													
														
															|  |         throw {httpStatus: 400, message: "Missing field."};
 |  |         throw {httpStatus: 400, message: "Missing field."};
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     groupMsg.findMessage(groupId, msgStartId, count, function (err, rows) {
 |  | 
 | 
												
													
														
															|  | 
 |  |     groupMsg.findByGroupId(groupId, msgStartId, count, function (err, rows) {
 | 
												
													
														
															|  |         if (err) {
 |  |         if (err) {
 | 
												
													
														
															|  |             console.log('Get group message failed: ', err);
 |  |             console.log('Get group message failed: ', err);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
											
												
													
														
															|  | @ -718,8 +710,8 @@ router.get(APIv1.Chats.GMStats, function (req, res) {
 | 
												
													
														
															|  |  *  peer_id:聊天对端id
 |  |  *  peer_id:聊天对端id
 | 
												
													
														
															|  |  */
 |  |  */
 | 
												
													
														
															|  | router.get(APIv1.Chats.PMStats, function (req, res) {
 |  | router.get(APIv1.Chats.PMStats, function (req, res) {
 | 
												
													
														
															|  |     var userId =  req.query.user_id;
 |  | 
 | 
												
													
														
															|  |     var peerId =  req.query.peer_id;
 |  | 
 | 
												
													
														
															|  | 
 |  |     var userId = req.query.user_id;
 | 
												
													
														
															|  | 
 |  |     var peerId = req.query.peer_id;
 | 
												
													
														
															|  |     if (userId == null || peerId == null) {
 |  |     if (userId == null || peerId == null) {
 | 
												
													
														
															|  |         throw {httpStatus: 406, message: "Missing fields."};
 |  |         throw {httpStatus: 406, message: "Missing fields."};
 | 
												
													
														
															|  |     }
 |  |     }
 |