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

1

parent 9c7bab2a
...@@ -7,6 +7,10 @@ var mongoose = require('mongoose'); ...@@ -7,6 +7,10 @@ var mongoose = require('mongoose');
var forumTagService=require('../../service/forumTagService'); var forumTagService=require('../../service/forumTagService');
var forumThreadService=require('../../service/forumThreadService'); var forumThreadService=require('../../service/forumThreadService');
var forumUserThreadControlService=require('../../service/forumUserThreadControlService');
var user=require('../../utils/user');
var async=require('async');
module.exports = function(app) { module.exports = function(app) {
app.use('/v1/forum', router); app.use('/v1/forum', router);
...@@ -41,6 +45,29 @@ router.get('/tag/:tid/threads', function(req, res, next) { ...@@ -41,6 +45,29 @@ router.get('/tag/:tid/threads', function(req, res, next) {
}; };
if(tid){ if(tid){
conditions.tag={$in:[tid]}; conditions.tag={$in:[tid]};
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){ forumThreadService.getAllThreadByFid(conditions,pageNo,pageSize,function(err,results){
if(err){ if(err){
console.error(err); console.error(err);
...@@ -49,6 +76,8 @@ router.get('/tag/:tid/threads', function(req, res, next) { ...@@ -49,6 +76,8 @@ router.get('/tag/:tid/threads', function(req, res, next) {
res.json(_.assign(results, returnCode.SUCCESS)); res.json(_.assign(results, returnCode.SUCCESS));
} }
}); });
}
});
}else{ }else{
res.json(returnCode.WRONG_PARAM); res.json(returnCode.WRONG_PARAM);
} }
......
...@@ -5,6 +5,8 @@ var express = require('express'), ...@@ -5,6 +5,8 @@ var express = require('express'),
_ = require('lodash'); _ = require('lodash');
var mongoose = require('mongoose'); var mongoose = require('mongoose');
var ForumThread = mongoose.model('ForumThread'); var ForumThread = mongoose.model('ForumThread');
var ForumComment = mongoose.model('ForumComment');
var forumThreadService=require('../../service/forumThreadService'); var forumThreadService=require('../../service/forumThreadService');
var forumRolePermissionService=require('../../service/forumRolePermissionService'); var forumRolePermissionService=require('../../service/forumRolePermissionService');
var forumPraiseLogService=require('../../service/forumPraiseLogService'); var forumPraiseLogService=require('../../service/forumPraiseLogService');
...@@ -26,6 +28,22 @@ router.post('/thread/create', function(req, res, next) { ...@@ -26,6 +28,22 @@ router.post('/thread/create', function(req, res, next) {
var rs = {}; var rs = {};
req.body.ent_code=req.session.user.ent_code; req.body.ent_code=req.session.user.ent_code;
req.body.from=user.getMobileUser(); 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){ forumThreadService.createThread(req.body,function(err,entity){
if (err) { if (err) {
...@@ -141,8 +159,17 @@ router.post('/thread/:tid/raise', function(req, res, next) { ...@@ -141,8 +159,17 @@ router.post('/thread/:tid/raise', function(req, res, next) {
if(tid){ if(tid){
var integral=req.session.openUser.integral||0; var integral=req.session.openUser.integral||0;
var exp=req.session.openUser.exp||0; var exp=req.session.openUser.exp||0;
//判断是否已经点赞
forumPraiseLogService.queryPraiseLog(tid,null,user.getMobileUser(),function(err,logs){
if(err){
res.json(returnCode.BUSY);
}else{
if(logs && logs.length>0){
res.json(returnCode.CAN_NOT_RAISE_REPEAT);
}else{
//1.检查是否有权限 //1.检查是否有权限
forumRolePermissionService.checkRolePermiss(req.session.user.ent_code,req.body.action,integral,exp,function(err,result){ forumRolePermissionService.checkRolePermiss(req.session.user.ent_code,'raise',integral,exp,function(err,result){
if(err){ if(err){
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
}else{ }else{
...@@ -156,9 +183,7 @@ router.post('/thread/:tid/raise', function(req, res, next) { ...@@ -156,9 +183,7 @@ router.post('/thread/:tid/raise', function(req, res, next) {
function(callback){ function(callback){
//3.更新文章统计数据(点赞数) //3.更新文章统计数据(点赞数)
if(thread){ if(thread){
var raiseCount=thread.praise_count||0; forumThreadService.updateThreadRaiseCount(tid,function(err,cb){
raiseCount=Number(raiseCount)+Number(1);
forumThreadService.updateThreadById(tid,{praise_count:raiseCount},function(err,result){
if(err){ if(err){
callback(err,null); callback(err,null);
}else{ }else{
...@@ -172,9 +197,11 @@ router.post('/thread/:tid/raise', function(req, res, next) { ...@@ -172,9 +197,11 @@ router.post('/thread/:tid/raise', function(req, res, next) {
function(callback){ function(callback){
var entity={ var entity={
ent_code:req.session.user.ent_code, ent_code:req.session.user.ent_code,
user:req.session.openUser.openId, user:user.getMobileUser(),
thread:tid, thread:tid,
ip:req.ip ip:req.ip,
comment:null,
type:1
}; };
//4.创建点赞日志 //4.创建点赞日志
forumPraiseLogService.createPraiseLog(entity,function(err,result){ forumPraiseLogService.createPraiseLog(entity,function(err,result){
...@@ -184,8 +211,7 @@ router.post('/thread/:tid/raise', function(req, res, next) { ...@@ -184,8 +211,7 @@ router.post('/thread/:tid/raise', function(req, res, next) {
callback(null,null); callback(null,null);
} }
}); });
} }],function(err,results){
],function(err,results){
if(err){ if(err){
console.error(err); console.error(err);
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
...@@ -200,6 +226,10 @@ router.post('/thread/:tid/raise', function(req, res, next) { ...@@ -200,6 +226,10 @@ router.post('/thread/:tid/raise', function(req, res, next) {
} }
} }
}); });
}
}
});
}else{ }else{
res.json(returnCode.WRONG_PARAM); res.json(returnCode.WRONG_PARAM);
} }
...@@ -213,7 +243,7 @@ router.post('/thread/:tid/share', function(req, res, next) { ...@@ -213,7 +243,7 @@ router.post('/thread/:tid/share', function(req, res, next) {
var exp=req.session.openUser.exp||0; var exp=req.session.openUser.exp||0;
var destination=req.body.destination||'1'; var destination=req.body.destination||'1';
//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){ if(err){
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
}else{ }else{
...@@ -227,9 +257,7 @@ router.post('/thread/:tid/share', function(req, res, next) { ...@@ -227,9 +257,7 @@ router.post('/thread/:tid/share', function(req, res, next) {
function(callback){ function(callback){
//3.更新文章统计数据(分享数) //3.更新文章统计数据(分享数)
if(thread){ if(thread){
var shareCount=thread.share_count||0; forumThreadService.updateThreadShareCount(tid,function(err,cb){
shareCount=Number(shareCount)+Number(1);
forumThreadService.updateThreadById(tid,{share_count:shareCount},function(err,result){
if(err){ if(err){
callback(err,null); callback(err,null);
}else{ }else{
...@@ -243,7 +271,7 @@ router.post('/thread/:tid/share', function(req, res, next) { ...@@ -243,7 +271,7 @@ router.post('/thread/:tid/share', function(req, res, next) {
function(callback){ function(callback){
var entity={ var entity={
ent_code:req.session.user.ent_code, ent_code:req.session.user.ent_code,
user:req.session.openUser.openId, user:user.getMobileUser(),
thread:tid, thread:tid,
destination:destination, destination:destination,
ip:req.ip ip:req.ip
...@@ -293,9 +321,8 @@ router.post('/thread/:tid/comment/create', function(req, res, next) { ...@@ -293,9 +321,8 @@ router.post('/thread/:tid/comment/create', function(req, res, next) {
var exp=req.session.openUser.exp||0; var exp=req.session.openUser.exp||0;
var destination=req.body.destination||'1'; var destination=req.body.destination||'1';
req.body.from=user.getMobileUser();
//1.检查是否有权限 //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){ if(err){
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
}else{ }else{
...@@ -308,26 +335,29 @@ router.post('/thread/:tid/comment/create', function(req, res, next) { ...@@ -308,26 +335,29 @@ router.post('/thread/:tid/comment/create', function(req, res, next) {
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
}else{ }else{
async.parallel([ async.parallel([
function(callback){ function(callback){
var entity={ var entity={
ent_code:req.session.user.ent_code, ent_code:req.session.user.ent_code,
from:req.session.openUser.openId, from:user.getMobileUser(),
to:req.session.openUser.openId,
content:content, content:content,
ip:req.ip ip:req.ip,
thread:thread,
level:'1'
}; };
//4.创建文章评论 //4.创建文章评论
forumCommentService.createComment(entity,function(err,result){ forumCommentService.createComment(entity,function(err,newComment){
if(err){ if(err){
callback(err,null); callback(err,null);
}else{ }else{
var comments=thread.comments; var comments=thread.comments;
// console.log('=========');
// console.log(comments);
// console.log('=========');
var array=[]; var array=[];
if(comments && comments.length>0){ if(comments && comments.items && comments.items.length>0){
array=comments; array=comments.items;
} }
array.push(result._id); array.push(newComment._id);
forumThreadService.updateThreadById(tid,{comments:array},function(err,result){ forumThreadService.updateThreadById(tid,{comments:array},function(err,result){
if(err){ if(err){
callback(err,null); callback(err,null);
...@@ -341,10 +371,9 @@ router.post('/thread/:tid/comment/create', function(req, res, next) { ...@@ -341,10 +371,9 @@ router.post('/thread/:tid/comment/create', function(req, res, next) {
function(callback){ function(callback){
//3.更新文章统计数据(评论数) //3.更新文章统计数据(评论数)
if(thread){ if(thread){
var commentCount=thread.comment_count||0; forumThreadService.updateThreadCommentCount(tid,function(err,results){
commentCount=Number(commentCount)+Number(1);
forumThreadService.updateThreadById(tid,{comment_count:commentCount},function(err,result){
if(err){ if(err){
console.log(err);
callback(err,null); callback(err,null);
}else{ }else{
callback(null,null); callback(null,null);
...@@ -359,7 +388,44 @@ router.post('/thread/:tid/comment/create', function(req, res, next) { ...@@ -359,7 +388,44 @@ router.post('/thread/:tid/comment/create', function(req, res, next) {
console.error(err); console.error(err);
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
}else{ }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) { ...@@ -388,7 +454,7 @@ router.post('/thread/:tid/comment/:cid/create', function(req, res, next) {
req.body.from=user.getMobileUser(); req.body.from=user.getMobileUser();
//1.检查是否有权限 //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){ if(err){
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
}else{ }else{
...@@ -404,10 +470,12 @@ router.post('/thread/:tid/comment/:cid/create', function(req, res, next) { ...@@ -404,10 +470,12 @@ router.post('/thread/:tid/comment/:cid/create', function(req, res, next) {
function(callback){ function(callback){
var entity={ var entity={
ent_code:req.session.user.ent_code, ent_code:req.session.user.ent_code,
from:req.session.openUser.openId, from:user.getMobileUser(),
to:req.session.openUser.openId, to:req.body.to,
content:content, content:content,
ip:req.ip ip:req.ip,
thread:tid,
level:'2'
}; };
//4.创建文章评论 //4.创建文章评论
forumCommentService.createComment(entity,function(err,result){ forumCommentService.createComment(entity,function(err,result){
...@@ -429,6 +497,16 @@ router.post('/thread/:tid/comment/:cid/create', function(req, res, next) { ...@@ -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){ ],function(err,results){
if(err){ if(err){
...@@ -455,34 +533,147 @@ router.post('/thread/:tid/comment/:cid/create', function(req, res, next) { ...@@ -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) { 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);
}
});
//2.获取论坛文章 }else{
res.json(returnCode.ACTION_NOT_PERMISSION);
}
}else{
res.json(returnCode.WRONG_PARAM);
}
}
});
}else{
res.json(returnCode.WRONG_PARAM);
}
});
//3.新增文章评论 //评论列表
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;
//4.更新文章统计数据(评论数) var conditions={
thread:tid,
level:'1'
};
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) { router.post('/thread/:tid/comment/:cid/raise', function(req, res, next) {
var tid = req.params.tid || null; var tid=req.params.tid || null;
var cid = req.params.cid || null; var cid=req.params.cid || null;
var status=req.params.status || null;
if(tid && cid && status){ if(tid && cid){
forumCommentService.getCommentById(cid,function(err,comment){
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{
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){ if(err){
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
}else{ }else{
forumCommentService.updateThreadById(cid,{status:status},function(err,result){ async.parallel([
function(callback){
forumCommentService.updatePraiseCount(cid,function(err,results){
if(err){ if(err){
console.log(err);
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
}else{ }else{
res.json(returnCode.SUCCESS); 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{ }else{
res.json(returnCode.WRONG_PARAM); res.json(returnCode.WRONG_PARAM);
} }
...@@ -499,7 +690,7 @@ router.post('/thread/:tid/userShield', function(req, res, next) { ...@@ -499,7 +690,7 @@ router.post('/thread/:tid/userShield', function(req, res, next) {
if(doc){ if(doc){
var thread=doc.thread; var thread=doc.thread;
thread.push(tid); thread.push(tid);
forumUserThreadControlService.updateUserThreadControlById(user.getMobileUser(),{thread:thread},function(err,result){ forumUserThreadControlService.updateUserThreadControlById(doc._id,{thread:thread},function(err,result){
if(err){ if(err){
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
}else{ }else{
...@@ -526,11 +717,4 @@ router.post('/thread/:tid/userShield', function(req, res, next) { ...@@ -526,11 +717,4 @@ router.post('/thread/:tid/userShield', function(req, res, next) {
}else{ }else{
res.json(returnCode.WRONG_PARAM); res.json(returnCode.WRONG_PARAM);
} }
//1.检查是否有权限
//2.获取论坛文章
//3.新增文章评论
//4.更新文章统计数据(评论数)
}); });
\ No newline at end of file
...@@ -21,9 +21,17 @@ var ForumCommentSchema = new Schema({ ...@@ -21,9 +21,17 @@ var ForumCommentSchema = new Schema({
index: true, index: true,
ref: 'ForumUser' ref: 'ForumUser'
}, },
comments: { //评论的评论 thread:{//文章
type: [ForumCommentSchema] 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: { //评论内容 content: { //评论内容
type: String, type: String,
require: true require: true
...@@ -32,6 +40,16 @@ var ForumCommentSchema = new Schema({ ...@@ -32,6 +40,16 @@ var ForumCommentSchema = new Schema({
type: String, type: String,
require: true require: true
}, },
comment_count: { //评论数量
type: Number,
require: true,
default: 0
},
praise_count: { //点赞数量
type: Number,
require: true,
default: 0
},
created: { //评论时间 created: { //评论时间
type: Date, type: Date,
require: true, require: true,
......
...@@ -15,12 +15,22 @@ var ForumPraiseLogSchema = new Schema({ ...@@ -15,12 +15,22 @@ var ForumPraiseLogSchema = new Schema({
index: true, index: true,
ref: 'ForumUser' ref: 'ForumUser'
}, },
type:{//点赞类型 1 文章 2 评论
type: Number,
require: true,
default: 1
},
thread: { //点赞话题 thread: { //点赞话题
type: Schema.Types.ObjectId, type: Schema.Types.ObjectId,
require: true, require: true,
index: true, index: true,
ref: 'ForumThread' ref: 'ForumThread'
}, },
comment: { //点赞评论
type: Schema.Types.ObjectId,
index: true,
ref: 'ForumComment'
},
ip: { //IP地址 ip: { //IP地址
type: String, type: String,
require: true require: true
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
var mongoose = require('mongoose'); var mongoose = require('mongoose');
var ForumComment = mongoose.model('ForumComment'); var ForumComment = mongoose.model('ForumComment');
var async=require('async');
//创建评论 //创建评论
exports.createComment=function(entity,callback){ exports.createComment=function(entity,callback){
var forum = new ForumComment(entity); var forum = new ForumComment(entity);
...@@ -38,3 +40,145 @@ exports.updateCommentById=function(cid,entity,callback){ ...@@ -38,3 +40,145 @@ exports.updateCommentById=function(cid,entity,callback){
} }
}); });
}; };
//根据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){ ...@@ -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){ ...@@ -70,7 +70,9 @@ function getRolePermiss(ent_code,integral,exp,callback){
if(rules && rules.length>0){ if(rules && rules.length>0){
for(var j=0;j<rules.length;j=j+1){ for(var j=0;j<rules.length;j=j+1){
var json=rules[j]; 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 key=json.key;
var value=json.value; var value=json.value;
if(value && value!==''){ if(value && value!==''){
...@@ -84,15 +86,20 @@ function getRolePermiss(ent_code,integral,exp,callback){ ...@@ -84,15 +86,20 @@ function getRolePermiss(ent_code,integral,exp,callback){
var ge=array[0]; var ge=array[0];
var le=array[1]; var le=array[1];
var result=true; var result=true;
var isMatch=0;
// console.log(defaultValue);
if(ge && ge!==''){ if(ge && ge!==''){
isMatch=1;
result=Number(defaultValue)>=Number(ge); result=Number(defaultValue)>=Number(ge);
} }
if(result && le && le!==''){ if(result && le && le!==''){
isMatch=1;
result=Number(defaultValue)<=Number(le); result=Number(defaultValue)<=Number(le);
} }
if(result){ if(result && isMatch===1){
obj=rolePermission; obj=rolePermission;
break; callback(null,obj);
return;
} }
} }
} }
...@@ -115,17 +122,18 @@ exports.checkRolePermiss=function(ent_code,action,integral,exp,callback){ ...@@ -115,17 +122,18 @@ exports.checkRolePermiss=function(ent_code,action,integral,exp,callback){
if(rolePermission && rolePermission.permission){ if(rolePermission && rolePermission.permission){
var permissions=rolePermission.permission; var permissions=rolePermission.permission;
for(var i=0;i<permissions.length;i=i+1){ 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 tmpAction=obj.action;
var value=obj.value; var value=obj.value;
if(tmpAction===action){ if(tmpAction===action){
if(value==='1'){ if(value==='1'){
result=true; result=true;
}
break; break;
} }
} }
} }
}
callback(null,result); callback(null,result);
} }
}); });
......
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
var mongoose = require('mongoose'); var mongoose = require('mongoose');
var ForumThread = mongoose.model('ForumThread'); var ForumThread = mongoose.model('ForumThread');
var ForumComment = mongoose.model('ForumComment'); var ForumComment = mongoose.model('ForumComment');
var forumCommentService = require('./forumCommentService');
var async = require('async'); var async = require('async');
//创建文章 //创建文章
...@@ -19,32 +22,64 @@ exports.createThread=function(entity,callback){ ...@@ -19,32 +22,64 @@ exports.createThread=function(entity,callback){
//根据ID获取文章 //根据ID获取文章
exports.getThreadById=function(tid,callback){ exports.getThreadById=function(tid,callback){
async.parallel([
function(cb){
var conditions={ var conditions={
_id:tid _id:tid
}; };
ForumThread.find(conditions).populate('from').populate('info').populate({path:'comments',options:{limit:5}, select:'from to created content'}).exec(function(err, docs) { ForumThread.find(conditions).populate('from').populate('info').exec(function(err, docs) {
if (err) { if (err) {
console.error(err); console.error(err);
callback(err,null); callback(err,null);
} else { } else {
var thread={}; var thread={};
if (docs && docs.length > 0) { if (docs && docs.length > 0) {
thread=docs[0]; thread=docs[0];
populateComment(thread, function(err,results){ cb(null,thread);
if (err) { // populateComment(thread, function(err,results){
console.log(err); // if (err) {
callback(null, null); // console.log(err);
} else { // cb(null, null);
callback(null,thread); // } 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{ }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更新文章 //根据ID更新文章
...@@ -71,30 +106,72 @@ exports.deleteThreadById=function(tid,callback){ ...@@ -71,30 +106,72 @@ exports.deleteThreadById=function(tid,callback){
}); });
}; };
//一级评论
function populateComment(doc, callback){ function populateComment(doc, callback){
if (doc && doc.comments.length > 0) { if (doc && doc.comments.length > 0) {
var asyncTasks = []; var asyncTasks = [];
doc.comments.forEach(function(comment){ doc.comments.forEach(function(comment){
asyncTasks.push(function(callback) { 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) { if (err) {
console.error(err); console.error(err);
callback(null, null); callback(null, null);
} else{ } 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) { async.parallel(asyncTasks, function(err, results) {
if (err) { if (err) {
console.log(err); console.log(err);
callback(null, null); callback(null, null);
} else { } else {
callback(null, null); callback(null, results);
} }
}); });
...@@ -130,7 +207,7 @@ exports.getAllThreadByFid= function(conditions,pageNo,pageSize,callback) { ...@@ -130,7 +207,7 @@ exports.getAllThreadByFid= function(conditions,pageNo,pageSize,callback) {
var skip = (pageNo - 1) * pageSize; var skip = (pageNo - 1) * pageSize;
var limit = count - skip > pageSize ? pageSize : (count - skip); 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) { if (err) {
console.error(err); console.error(err);
callback(err,null); callback(err,null);
...@@ -182,3 +259,51 @@ exports.updateTopByThreadId=function(infoId,threadId,callback){ ...@@ -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){ ...@@ -25,8 +25,8 @@ exports.getUserThreadControlById=function(uid,callback){
}); });
}; };
exports.updateUserThreadControlById=function(uid,entity,callback){ exports.updateUserThreadControlById=function(id,entity,callback){
ForumUserThreadCotrol.update({ _id: uid}, entity,null,function(err,result){ ForumUserThreadCotrol.update({ _id: id}, entity,null,function(err,result){
if (err) { if (err) {
console.error(err); console.error(err);
callback(err,null); callback(err,null);
......
...@@ -33,6 +33,10 @@ module.exports = { ...@@ -33,6 +33,10 @@ module.exports = {
ACTION_NOT_PERMISSION: { ACTION_NOT_PERMISSION: {
errorcode: 10005, errorcode: 10005,
errormsg: '没有权限' 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