Commit 6bec50cc authored by 张淼's avatar 张淼

1

parent 9c7bab2a
......@@ -7,6 +7,10 @@ var mongoose = require('mongoose');
var forumTagService=require('../../service/forumTagService');
var forumThreadService=require('../../service/forumThreadService');
var forumUserThreadControlService=require('../../service/forumUserThreadControlService');
var user=require('../../utils/user');
var async=require('async');
module.exports = function(app) {
app.use('/v1/forum', router);
......@@ -41,14 +45,39 @@ router.get('/tag/:tid/threads', function(req, res, next) {
};
if(tid){
conditions.tag={$in:[tid]};
forumThreadService.getAllThreadByFid(conditions,pageNo,pageSize,function(err,results){
if(err){
console.error(err);
res.json(returnCode.BUSY);
}else{
res.json(_.assign(results, returnCode.SUCCESS));
}
});
async.waterfall([
function(callback){
forumUserThreadControlService.getUserThreadControlById(user.getMobileUser(),function(err,doc){
if(err){
callback(err,null);
}else{
if(doc){
callback(null,doc);
}else{
callback(null,null);
}
}
});
}
],function(err,result){
if(err){
console.error(err);
res.json(returnCode.BUSY);
}else{
if(result){
conditions._id={$nin:result.thread};
}
forumThreadService.getAllThreadByFid(conditions,pageNo,pageSize,function(err,results){
if(err){
console.error(err);
res.json(returnCode.BUSY);
}else{
res.json(_.assign(results, returnCode.SUCCESS));
}
});
}
});
}else{
res.json(returnCode.WRONG_PARAM);
}
......
......@@ -5,6 +5,8 @@ var express = require('express'),
_ = require('lodash');
var mongoose = require('mongoose');
var ForumThread = mongoose.model('ForumThread');
var ForumComment = mongoose.model('ForumComment');
var forumThreadService=require('../../service/forumThreadService');
var forumRolePermissionService=require('../../service/forumRolePermissionService');
var forumPraiseLogService=require('../../service/forumPraiseLogService');
......@@ -26,6 +28,22 @@ router.post('/thread/create', function(req, res, next) {
var rs = {};
req.body.ent_code=req.session.user.ent_code;
req.body.from=user.getMobileUser();
// console.log(req.body);
//-----------处理前端上传图片开始
//格式为['http://imageurl','http://imageurl'],
//转换为[{urlFileName:'http://imageUrL'},{urlFileName:'http://imageUrL'}]
var images=req.body.images;
if(images){
var array=[];
for(var i=0;i<images.length;i=i+1){
array.push({
urlFileName:images[i]
});
}
req.body.images=array;
}
//-----------处理前端上传图片结束
forumThreadService.createThread(req.body,function(err,entity){
if (err) {
......@@ -141,65 +159,77 @@ router.post('/thread/:tid/raise', function(req, res, next) {
if(tid){
var integral=req.session.openUser.integral||0;
var exp=req.session.openUser.exp||0;
//1.检查是否有权限
forumRolePermissionService.checkRolePermiss(req.session.user.ent_code,req.body.action,integral,exp,function(err,result){
//判断是否已经点赞
forumPraiseLogService.queryPraiseLog(tid,null,user.getMobileUser(),function(err,logs){
if(err){
res.json(returnCode.BUSY);
}else{
if(result){//有操作权限
//2.获取论坛文章
forumThreadService.getThreadById(tid,function(err,thread){
if(logs && logs.length>0){
res.json(returnCode.CAN_NOT_RAISE_REPEAT);
}else{
//1.检查是否有权限
forumRolePermissionService.checkRolePermiss(req.session.user.ent_code,'raise',integral,exp,function(err,result){
if(err){
res.json(returnCode.BUSY);
}else{
async.parallel([
function(callback){
//3.更新文章统计数据(点赞数)
if(thread){
var raiseCount=thread.praise_count||0;
raiseCount=Number(raiseCount)+Number(1);
forumThreadService.updateThreadById(tid,{praise_count:raiseCount},function(err,result){
if(err){
callback(err,null);
}else{
callback(null,null);
}
});
}else{
callback('cannot find thread by id',null);
}
},
function(callback){
var entity={
ent_code:req.session.user.ent_code,
user:req.session.openUser.openId,
thread:tid,
ip:req.ip
};
//4.创建点赞日志
forumPraiseLogService.createPraiseLog(entity,function(err,result){
if(err){
callback(err,null);
}else{
callback(null,null);
}
});
}
],function(err,results){
if(result){//有操作权限
//2.获取论坛文章
forumThreadService.getThreadById(tid,function(err,thread){
if(err){
console.error(err);
res.json(returnCode.BUSY);
}else{
res.json(returnCode.SUCCESS);
}
});
}
});
}else{
res.json(returnCode.ACTION_NOT_PERMISSION);
async.parallel([
function(callback){
//3.更新文章统计数据(点赞数)
if(thread){
forumThreadService.updateThreadRaiseCount(tid,function(err,cb){
if(err){
callback(err,null);
}else{
callback(null,null);
}
});
}else{
callback('cannot find thread by id',null);
}
},
function(callback){
var entity={
ent_code:req.session.user.ent_code,
user:user.getMobileUser(),
thread:tid,
ip:req.ip,
comment:null,
type:1
};
//4.创建点赞日志
forumPraiseLogService.createPraiseLog(entity,function(err,result){
if(err){
callback(err,null);
}else{
callback(null,null);
}
});
}],function(err,results){
if(err){
console.error(err);
res.json(returnCode.BUSY);
}else{
res.json(returnCode.SUCCESS);
}
});
}
});
}else{
res.json(returnCode.ACTION_NOT_PERMISSION);
}
}
});
}
}
});
}else{
res.json(returnCode.WRONG_PARAM);
}
......@@ -213,7 +243,7 @@ router.post('/thread/:tid/share', function(req, res, next) {
var exp=req.session.openUser.exp||0;
var destination=req.body.destination||'1';
//1.检查是否有权限
forumRolePermissionService.checkRolePermiss(req.session.user.ent_code,req.body.action,integral,exp,function(err,result){
forumRolePermissionService.checkRolePermiss(req.session.user.ent_code,'share',integral,exp,function(err,result){
if(err){
res.json(returnCode.BUSY);
}else{
......@@ -227,9 +257,7 @@ router.post('/thread/:tid/share', function(req, res, next) {
function(callback){
//3.更新文章统计数据(分享数)
if(thread){
var shareCount=thread.share_count||0;
shareCount=Number(shareCount)+Number(1);
forumThreadService.updateThreadById(tid,{share_count:shareCount},function(err,result){
forumThreadService.updateThreadShareCount(tid,function(err,cb){
if(err){
callback(err,null);
}else{
......@@ -243,7 +271,7 @@ router.post('/thread/:tid/share', function(req, res, next) {
function(callback){
var entity={
ent_code:req.session.user.ent_code,
user:req.session.openUser.openId,
user:user.getMobileUser(),
thread:tid,
destination:destination,
ip:req.ip
......@@ -293,9 +321,8 @@ router.post('/thread/:tid/comment/create', function(req, res, next) {
var exp=req.session.openUser.exp||0;
var destination=req.body.destination||'1';
req.body.from=user.getMobileUser();
//1.检查是否有权限
forumRolePermissionService.checkRolePermiss(req.session.user.ent_code,req.body.action,integral,exp,function(err,result){
forumRolePermissionService.checkRolePermiss(req.session.user.ent_code,'comment',integral,exp,function(err,result){
if(err){
res.json(returnCode.BUSY);
}else{
......@@ -308,26 +335,29 @@ router.post('/thread/:tid/comment/create', function(req, res, next) {
res.json(returnCode.BUSY);
}else{
async.parallel([
function(callback){
var entity={
ent_code:req.session.user.ent_code,
from:req.session.openUser.openId,
to:req.session.openUser.openId,
from:user.getMobileUser(),
content:content,
ip:req.ip
ip:req.ip,
thread:thread,
level:'1'
};
//4.创建文章评论
forumCommentService.createComment(entity,function(err,result){
forumCommentService.createComment(entity,function(err,newComment){
if(err){
callback(err,null);
}else{
var comments=thread.comments;
// console.log('=========');
// console.log(comments);
// console.log('=========');
var array=[];
if(comments && comments.length>0){
array=comments;
if(comments && comments.items && comments.items.length>0){
array=comments.items;
}
array.push(result._id);
array.push(newComment._id);
forumThreadService.updateThreadById(tid,{comments:array},function(err,result){
if(err){
callback(err,null);
......@@ -341,10 +371,9 @@ router.post('/thread/:tid/comment/create', function(req, res, next) {
function(callback){
//3.更新文章统计数据(评论数)
if(thread){
var commentCount=thread.comment_count||0;
commentCount=Number(commentCount)+Number(1);
forumThreadService.updateThreadById(tid,{comment_count:commentCount},function(err,result){
forumThreadService.updateThreadCommentCount(tid,function(err,results){
if(err){
console.log(err);
callback(err,null);
}else{
callback(null,null);
......@@ -359,7 +388,44 @@ router.post('/thread/:tid/comment/create', function(req, res, next) {
console.error(err);
res.json(returnCode.BUSY);
}else{
res.json(returnCode.SUCCESS);
async.parallel([
function(callback){
//获取最新5条评论
var conditions={
thread:tid,
level:'1'
};
forumCommentService.getAllComment(conditions,1,5,function(err,results){
if(err){
console.log(err);
callback(err,null);
}else{
callback(null,results);
}
});
},
function(callback){
forumThreadService.getThreadById(tid,function(err,thread){
if(err){
console.log(err);
callback(err,null);
}else{
callback(null,thread);
}
});
}
],function(err,results){
if(err){
res.json(returnCode.BUSY);
}else{
console.log('in...................');
var rs={};
rs.comments=results[0].items;
rs.commentCount=results[1].comment_count;
res.json(_.assign(rs,returnCode.SUCCESS));
}
});
}
});
}
......@@ -388,7 +454,7 @@ router.post('/thread/:tid/comment/:cid/create', function(req, res, next) {
req.body.from=user.getMobileUser();
//1.检查是否有权限
forumRolePermissionService.checkRolePermiss(req.session.user.ent_code,req.body.action,integral,exp,function(err,result){
forumRolePermissionService.checkRolePermiss(req.session.user.ent_code,'reply',integral,exp,function(err,result){
if(err){
res.json(returnCode.BUSY);
}else{
......@@ -404,10 +470,12 @@ router.post('/thread/:tid/comment/:cid/create', function(req, res, next) {
function(callback){
var entity={
ent_code:req.session.user.ent_code,
from:req.session.openUser.openId,
to:req.session.openUser.openId,
from:user.getMobileUser(),
to:req.body.to,
content:content,
ip:req.ip
ip:req.ip,
thread:tid,
level:'2'
};
//4.创建文章评论
forumCommentService.createComment(entity,function(err,result){
......@@ -429,6 +497,16 @@ router.post('/thread/:tid/comment/:cid/create', function(req, res, next) {
});
}
});
},
function(callback){
forumCommentService.updateCommentCount(cid,function(err,results){
if(err){
console.log(err);
callback(err,null);
}else{
callback(null,null);
}
});
}
],function(err,results){
if(err){
......@@ -455,34 +533,147 @@ router.post('/thread/:tid/comment/:cid/create', function(req, res, next) {
//删除文章评论
router.post('/thread/:tid/comment/:cid/delete', function(req, res, next) {
//1.检查是否有权限
var tid = req.params.tid || null;
var cid=req.params.cid || null;
if(tid && cid){
forumCommentService.getCommentById(cid,function(err,result){
if(err){
res.json(returnCode.BUSY);
}else{
if(result){
if(result.from===user.getMobileUser()){
async.parallel([
function(callback){
forumCommentService.deleteCommentById(cid,function(err,result){
if(err){
callback(err,null);
}else{
callback(null,null);
}
});
}
],function(err,results){
if(err){
res.json(returnCode.BUSY);
}else{
res.json(returnCode.SUCCESS);
}
});
}else{
res.json(returnCode.ACTION_NOT_PERMISSION);
}
}else{
res.json(returnCode.WRONG_PARAM);
}
}
});
}else{
res.json(returnCode.WRONG_PARAM);
}
});
//2.获取论坛文章
//评论列表
router.post('/thread/:tid/comment/list', function(req, res, next) {
var tid=req.params.tid || null;
var pageNo = req.query.pageNo || 1;
var pageSize = req.query.pageSize || 5;
//3.新增文章评论
var conditions={
thread:tid,
level:'1'
};
//4.更新文章统计数据(评论数)
if(tid){
//获取最新5条评论
forumCommentService.getAllComment(conditions,pageNo,pageSize,function(err,results){
if(err){
console.log(err);
res.json(returnCode.BUSY);
}else{
res.json(_.assign(results, returnCode.SUCCESS));
}
});
}else{
res.json(returnCode.WRONG_PARAM);
}
});
//更新文章评论状态为:显示/不显示
router.post('/thread/:tid/comment/:cid/:status', function(req, res, next) {
var tid = req.params.tid || null;
var cid = req.params.cid || null;
var status=req.params.status || null;
if(tid && cid && status){
forumCommentService.getCommentById(cid,function(err,comment){
//评论点赞
router.post('/thread/:tid/comment/:cid/raise', function(req, res, next) {
var tid=req.params.tid || null;
var cid=req.params.cid || null;
if(tid && cid){
var integral=req.session.openUser.integral||0;
var exp=req.session.openUser.exp||0;
//判断是否已经点赞
forumPraiseLogService.queryPraiseLog(tid,cid,user.getMobileUser(),function(err,logs){
if(err){
res.json(returnCode.BUSY);
}else{
forumCommentService.updateThreadById(cid,{status:status},function(err,result){
if(err){
res.json(returnCode.BUSY);
}else{
res.json(returnCode.SUCCESS);
}
});
if(logs && logs.length>0){
res.json(returnCode.CAN_NOT_RAISE_REPEAT);
}else{
//1.检查是否有权限
forumRolePermissionService.checkRolePermiss(req.session.user.ent_code,'raise',integral,exp,function(err,result){
if(err){
res.json(returnCode.BUSY);
}else{
if(result){//有操作权限
//2.获取论坛文章
forumThreadService.getThreadById(tid,function(err,thread){
if(err){
res.json(returnCode.BUSY);
}else{
async.parallel([
function(callback){
forumCommentService.updatePraiseCount(cid,function(err,results){
if(err){
console.log(err);
res.json(returnCode.BUSY);
}else{
res.json(returnCode.SUCCESS);
}
});
},
function(callback){
var entity={
ent_code:req.session.user.ent_code,
user:user.getMobileUser(),
thread:tid,
ip:req.ip,
comment:cid,
type:2
};
//4.创建点赞日志
forumPraiseLogService.createPraiseLog(entity,function(err,result){
if(err){
callback(err,null);
}else{
callback(null,null);
}
});
}],function(err,results){
if(err){
console.error(err);
res.json(returnCode.BUSY);
}else{
res.json(returnCode.SUCCESS);
}
});
}
});
}else{
res.json(returnCode.ACTION_NOT_PERMISSION);
}
}
});
}
}
});
});
}else{
res.json(returnCode.WRONG_PARAM);
}
......@@ -499,7 +690,7 @@ router.post('/thread/:tid/userShield', function(req, res, next) {
if(doc){
var thread=doc.thread;
thread.push(tid);
forumUserThreadControlService.updateUserThreadControlById(user.getMobileUser(),{thread:thread},function(err,result){
forumUserThreadControlService.updateUserThreadControlById(doc._id,{thread:thread},function(err,result){
if(err){
res.json(returnCode.BUSY);
}else{
......@@ -526,11 +717,4 @@ router.post('/thread/:tid/userShield', function(req, res, next) {
}else{
res.json(returnCode.WRONG_PARAM);
}
//1.检查是否有权限
//2.获取论坛文章
//3.新增文章评论
//4.更新文章统计数据(评论数)
});
\ No newline at end of file
......@@ -21,9 +21,17 @@ var ForumCommentSchema = new Schema({
index: true,
ref: 'ForumUser'
},
comments: { //评论的评论
type: [ForumCommentSchema]
thread:{//文章
type: Schema.Types.ObjectId,
index: true,
ref: 'ForumThread',
require:true
},
level:{//评论等级 1、父评论 2、子评论
type:String,
require:true
},
comments:[{type: Schema.Types.ObjectId, ref: 'ForumComment'}], //评论的评论
content: { //评论内容
type: String,
require: true
......@@ -32,6 +40,16 @@ var ForumCommentSchema = new Schema({
type: String,
require: true
},
comment_count: { //评论数量
type: Number,
require: true,
default: 0
},
praise_count: { //点赞数量
type: Number,
require: true,
default: 0
},
created: { //评论时间
type: Date,
require: true,
......
......@@ -15,12 +15,22 @@ var ForumPraiseLogSchema = new Schema({
index: true,
ref: 'ForumUser'
},
type:{//点赞类型 1 文章 2 评论
type: Number,
require: true,
default: 1
},
thread: { //点赞话题
type: Schema.Types.ObjectId,
require: true,
index: true,
ref: 'ForumThread'
},
comment: { //点赞评论
type: Schema.Types.ObjectId,
index: true,
ref: 'ForumComment'
},
ip: { //IP地址
type: String,
require: true
......
......@@ -2,6 +2,8 @@
var mongoose = require('mongoose');
var ForumComment = mongoose.model('ForumComment');
var async=require('async');
//创建评论
exports.createComment=function(entity,callback){
var forum = new ForumComment(entity);
......@@ -37,4 +39,146 @@ exports.updateCommentById=function(cid,entity,callback){
callback(null,null);
}
});
};
\ No newline at end of file
};
//根据ID更新评论
exports.deleteCommentById=function(cid,callback){
ForumComment.remove({ _id: cid},function(err,result){
if (err) {
console.error(err);
callback(err,null);
} else {
callback(null,null);
}
});
};
//获取数量
function countAll(conditions,callback) {
ForumComment.count(conditions, function (err, count) {
if(err){
console.error(err);
callback(err,null);
}else{
callback(null,count);
}
});
}
//获取全部列表数据
exports.getAllComment= function(conditions,pageNo,pageSize,callback) {
countAll(conditions,function(err,count){
if(err){
console.error(err);
callback(err,null);
}else{
var skip = (pageNo - 1) * pageSize;
var limit = count - skip > pageSize ? pageSize : (count - skip);
ForumComment.find(conditions).populate('from').populate('to').limit(limit).skip(skip).sort('-created').exec(function(err, docs) {
if (err) {
console.error(err);
callback(err,null);
} else {
var obj={};
obj.total=count;
obj.pageNo=pageNo;
obj.pageSize=pageSize;
obj.items=docs;
if (docs && docs.length > 0) {
var asyncTasks = [];
docs.forEach(function(doc){
asyncTasks.push(function(callback) {
populateComment(doc, function(err,c){
if(err){
callback(err,null);
}else{
var newobj = doc.toObject();
newobj.comments = c;
callback(null,newobj);
}
});
});
});
async.parallel(asyncTasks, function(err, results) {
if (err) {
console.log(err);
callback(null, null);
} else {
obj.items=results;
callback(null,obj);
}
});
}else{
callback(null,obj);
}
}
});
}
});
};
//评论
function populateComment(doc, callback){
if (doc && doc.comments.length > 0) {
var asyncTasks = [];
doc.comments.forEach(function(comment){
asyncTasks.push(function(callback) {
ForumComment.findOne({_id: comment}).populate({path:'from to', select:'uid nickName icon'}).exec(function(err,c){
if (err) {
console.error(err);
callback(null, null);
} else{
callback(null ,c);
}
});
});
});
async.parallel(asyncTasks, function(err, results) {
if (err) {
console.log(err);
callback(null, null);
} else {
// console.log(results);
callback(null, results);
}
});
} else{
callback(null, null);
}
}
//原子更新评论点赞数
exports.updatePraiseCount=function(cid,callback){
ForumComment.update(
{_id:cid},
{$inc: {praise_count: 1 }},
{w:1,safe:true},
function(err,result){
if(err){
console.error(err);
callback(err,null);
}else{
callback(null,null);
}
});
};
//原子更新评论点赞数
exports.updateCommentCount=function(cid,callback){
ForumComment.update(
{_id:cid},
{$inc: {comment_count: 1 }},
{w:1,safe:true},
function(err,result){
if(err){
console.error(err);
callback(err,null);
}else{
callback(null,null);
}
});
};
......@@ -14,3 +14,20 @@ exports.createPraiseLog=function(entity,callback){
}
});
};
exports.queryPraiseLog=function(tid,cid,user,callback){
var conditions={
user:user,
thread:tid
};
if(cid){
conditions.comment=cid;
}
ForumPraiseLog.find(conditions).exec(function(err,docs){
if(err){
callback(err,null);
}else{
callback(null,docs);
}
});
};
......@@ -70,7 +70,9 @@ function getRolePermiss(ent_code,integral,exp,callback){
if(rules && rules.length>0){
for(var j=0;j<rules.length;j=j+1){
var json=rules[j];
json=JSON.parse(json);
// console.log(json);
// json= {value: '1-2', key: 'integral' }
// json=JSON.parse(json);
var key=json.key;
var value=json.value;
if(value && value!==''){
......@@ -84,15 +86,20 @@ function getRolePermiss(ent_code,integral,exp,callback){
var ge=array[0];
var le=array[1];
var result=true;
var isMatch=0;
// console.log(defaultValue);
if(ge && ge!==''){
isMatch=1;
result=Number(defaultValue)>=Number(ge);
}
if(result && le && le!==''){
isMatch=1;
result=Number(defaultValue)<=Number(le);
}
if(result){
if(result && isMatch===1){
obj=rolePermission;
break;
callback(null,obj);
return;
}
}
}
......@@ -115,14 +122,15 @@ exports.checkRolePermiss=function(ent_code,action,integral,exp,callback){
if(rolePermission && rolePermission.permission){
var permissions=rolePermission.permission;
for(var i=0;i<permissions.length;i=i+1){
var obj=JSON.parse(permissions[i]);
// var obj=JSON.parse(permissions[i]);
var obj=permissions[i];
var tmpAction=obj.action;
var value=obj.value;
if(tmpAction===action){
if(value==='1'){
result=true;
break;
}
break;
}
}
}
......
......@@ -2,6 +2,9 @@
var mongoose = require('mongoose');
var ForumThread = mongoose.model('ForumThread');
var ForumComment = mongoose.model('ForumComment');
var forumCommentService = require('./forumCommentService');
var async = require('async');
//创建文章
......@@ -19,32 +22,64 @@ exports.createThread=function(entity,callback){
//根据ID获取文章
exports.getThreadById=function(tid,callback){
var conditions={
_id:tid
};
ForumThread.find(conditions).populate('from').populate('info').populate({path:'comments',options:{limit:5}, select:'from to created content'}).exec(function(err, docs) {
if (err) {
console.error(err);
callback(err,null);
} else {
var thread={};
if (docs && docs.length > 0) {
thread=docs[0];
populateComment(thread, function(err,results){
if (err) {
console.log(err);
callback(null, null);
} else {
callback(null,thread);
}
});
async.parallel([
function(cb){
var conditions={
_id:tid
};
ForumThread.find(conditions).populate('from').populate('info').exec(function(err, docs) {
if (err) {
console.error(err);
callback(err,null);
} else {
var thread={};
if (docs && docs.length > 0) {
thread=docs[0];
cb(null,thread);
// populateComment(thread, function(err,results){
// if (err) {
// console.log(err);
// cb(null, null);
// } else {
// var threadObj = thread.toObject();
// threadObj.comments = results;
// cb(null,threadObj);
// }
// });
}else{
cb(null,thread);
}
}
});
},
function(cb){
var conditions={
thread:tid,
level:'1'
};
//获取最新5条评论
forumCommentService.getAllComment(conditions,1,5,function(err,results){
if(err){
console.log(err);
cb(err,null);
}else{
callback(null,thread);
cb(null,results);
}
}
});
});
}
],function(err,results){
if(err){
callback(err,null);
}else{
var thread=results[0];
var comments=results[1];
// console.log(comments);
var threadObj=thread.toObject();
threadObj.comments=comments;
callback(null,threadObj);
}
});
};
//根据ID更新文章
......@@ -71,30 +106,72 @@ exports.deleteThreadById=function(tid,callback){
});
};
//一级评论
function populateComment(doc, callback){
if (doc && doc.comments.length > 0) {
var asyncTasks = [];
doc.comments.forEach(function(comment){
asyncTasks.push(function(callback) {
ForumComment.populate(comment, {path:'from to', select:'uid nickName icon'} , function(err, c){
ForumComment.populate(comment, {path:'from to', select:'uid nickName icon comments'} , function(err, c){
if (err) {
console.error(err);
callback(null, null);
} else{
callback(null ,null);
if(comment.comments){
populateSubComment(comment,function(err, results){
if(err){
console.error(err);
callback(null, null);
} else {
var newobj = comment.toObject();
newobj.comments = results;
callback(null,newobj);
}
});
}else{
callback(null,null);
}
}
});
});
});
async.parallel(asyncTasks, function(err, results) {
if (err) {
console.log(err);
callback(null, null);
} else {
// console.log(results);
callback(null, results);
}
});
} else{
callback(null, null);
}
}
//二级评论
function populateSubComment(subComments, callback){
if (subComments.comments && subComments.comments.length > 0) {
var asyncTasks = [];
subComments.comments.forEach(function(comment){
asyncTasks.push(function(callback) {
ForumComment.findOne({_id: comment}).populate({path:'from to', select:'uid nickName icon'}).exec(function(err, c){
if (err) {
console.error(err);
callback(null, null);
} else{
callback(null ,c);
}
});
});
});
async.parallel(asyncTasks, function(err, results) {
if (err) {
console.log(err);
callback(null, null);
} else {
callback(null, null);
callback(null, results);
}
});
......@@ -130,7 +207,7 @@ exports.getAllThreadByFid= function(conditions,pageNo,pageSize,callback) {
var skip = (pageNo - 1) * pageSize;
var limit = count - skip > pageSize ? pageSize : (count - skip);
ForumThread.find(conditions).populate('from').populate('info').populate({path:'tag'}).populate({path:'comments',options:{limit:5}, select:'from to created content'}).limit(limit).skip(skip).sort('-top created').exec(function(err, docs) {
ForumThread.find(conditions).populate('from').populate('info').populate({path:'tag'}).populate({path:'comments',options:{limit:5,sort:'-created'}, select:'from to created content'}).limit(limit).skip(skip).sort('-top created').exec(function(err, docs) {
if (err) {
console.error(err);
callback(err,null);
......@@ -182,3 +259,51 @@ exports.updateTopByThreadId=function(infoId,threadId,callback){
}
});
};
//更新文章点赞数
exports.updateThreadRaiseCount=function(threadId,callback){
ForumThread.update(
{_id:threadId},
{$inc: { praise_count: 1 }},
{w:1,safe:true},
function(err,result){
if(err){
console.error(err);
callback(err,null);
}else{
callback(null,null);
}
});
};
//更新文章分享数
exports.updateThreadShareCount=function(threadId,callback){
ForumThread.update(
{_id:threadId},
{$inc: { share_count: 1 }},
{w:1,safe:true},
function(err,result){
if(err){
console.error(err);
callback(err,null);
}else{
callback(null,null);
}
});
};
//更新文章分享数
exports.updateThreadCommentCount=function(threadId,callback){
ForumThread.update(
{_id:threadId},
{$inc: { comment_count: 1 }},
{w:1,safe:true},
function(err,result){
if(err){
console.error(err);
callback(err,null);
}else{
callback(null,null);
}
});
};
......@@ -25,8 +25,8 @@ exports.getUserThreadControlById=function(uid,callback){
});
};
exports.updateUserThreadControlById=function(uid,entity,callback){
ForumUserThreadCotrol.update({ _id: uid}, entity,null,function(err,result){
exports.updateUserThreadControlById=function(id,entity,callback){
ForumUserThreadCotrol.update({ _id: id}, entity,null,function(err,result){
if (err) {
console.error(err);
callback(err,null);
......
......@@ -33,6 +33,10 @@ module.exports = {
ACTION_NOT_PERMISSION: {
errorcode: 10005,
errormsg: '没有权限'
},
CAN_NOT_RAISE_REPEAT: {
errorcode: 10006,
errormsg: '不能重复点赞'
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment