Commit df044b44 authored by 陈家荣's avatar 陈家荣

导出评论数据

parent 8e43c323
......@@ -3,7 +3,9 @@ var express = require('express'),
router = express.Router(),
returnCode = require('../../utils/returnCode'),
_ = require('lodash'),
then = require('thenjs');
then = require('thenjs'),
moment = require('moment'),
nodeExcel = require('excel-export');
var mongoose = require('mongoose');
var ForumThread = mongoose.model('ForumThread'),
ForumPVLog = mongoose.model('ForumPVLog');
......@@ -43,6 +45,11 @@ var getClientIP = function(req) {
return ipAddress;
};
//格式化日期 (格式:年-月-日)
function date_format(date) {
return moment(date).format('YYYY-MM-DD hh:mm:ss');
}
//新增论坛文章
router.post('/thread/create', function(req, res, next) {
var rs = {},
......@@ -1011,102 +1018,137 @@ router.get('/thread/:tid/spreadchain', function(req, res, next) {
});
//给以前的已一级评论添加楼层
// router.get('/thread/updateConmentFloor', function(req, res, next) {
// res.json(returnCode.SUCCESS);
// var conditions = {
// // ent_code: ent_code
// };
// async.waterfall([
// function(callback) { // 查找文章的总数
// forumThreadService.getAllCountByFid(conditions,function(err, count){
// if(err){
// callback(err, null);
// }else{
// callback(null, count);
// }
// });
// },
// function(count, callback) { //查找所有文章
// forumThreadService.getAllThreadByFidNoLimit(conditions, 1, count, null, function(err, datas){
// if(err){
// callback(err, null);
// }else{
// callback(null, datas);
// }
// });
// }
// ], function (err, result) {
// var asyncTasks = [];
// result.items.forEach(function(doc, t) { //遍历文章
// asyncTasks.push(function(callback2) {
// //获取文章所有一级评论
// var conditions = {
// thread: doc._id,
// level: '1'
// };
// async.waterfall([
// function(callback) {
// //统计评论数
// forumCommentService.count(conditions, function(err, count) {
// if (err) {
// console.log(err);
// callback(err, null);
// } else {
// callback(null, count);
// }
// });
// },
// function(count, callback) {
// //获取所有评论
// forumCommentService.getAllComment(conditions, 1, count, function(err, results) {
// if (err) {
// console.log(err);
// callback(err, null);
// } else {
// callback(null, results.items);
// }
// });
// },
// function(comments, callback) {
// comments = _.sortBy(comments, function(comment){
// return comment.created;
// });
// if(comments.length > 0){
// // 给每一个评论添加楼层
// comments.forEach(function(comment,i){
// forumCommentService.updateCommentFloorById(comment._id, i + 1, function(err,docc){
// if (err) {
// console.error(err);
// // callback(err,null);
// } else {
// console.log('update '+i+1+' comment');
// // callback(null,null);
// }
// })
// });
// }
// }
// ], function(err, resultsss) {
// if (err) {
// console.error(err);
// // callback(err,null);
// } else {
// // callback2(null,null);
// }
// });
// });
// });
// async.parallel(asyncTasks, function(err, results) {
// if (err) {
// console.error(err);
// res.json(returnCode.BUSY);
// } else {
// // console.log("------------update done!-------------");
// res.json(returnCode.SUCCESS);
// }
// });
// });
// });
// 导出文章评论内容
router.get('/thread/:tid/exportComments', function(req, res, next) {
var tid = req.params.tid || null;
// var ent_code = req.query.ent_code;
if(req.query.ent_code){
var ent_code = req.query.ent_code;
}else{
var ent_code = 100056;
}
if(tid){
var conditions = {
ent_code: ent_code,
thread: tid
};
//查询所有评论
forumCommentService.getAllCommentByThread(conditions, function(err, results) {
if (err) {
console.log(err);
res.json(returnCode.BUSY);
} else {
//查询每个一级评论点赞
var asyncTasks = [];
_.forEach(results, function(e) {
asyncTasks.push(function(cb) {
if (e.level != 1) {
cb(null, e);
} else {
var con = {
ent_code:ent_code,
thread:tid,
type:2,
comment:e._id
}
forumPraiseLogService.queryPraiseLogV2(con, function(err, results){
if(err){
console.log(err);
cb(null, e);
}else{
if(results){
var praiseNames = [];
_.forEach(results, function(e2) {
praiseNames.push(e2.user.nickName);
});
e.praiseNames = praiseNames;
e.praiseCount = results.length;
}
cb(null, e);
}
});
}
});
});
async.parallel(asyncTasks, function(err, items) {
//表头
var conf = {};
conf.cols = [
{caption:'楼层', type:'number'},
{caption:'发布时间', type:'Date'},
{caption:'会员名', type:'string'},
{caption:'内容', type:'string'},
{caption:'点赞数', type:'number'},
{caption:'点赞人', type:'string'},
];
//内容
var rows = [];
for (var i = items.length - 1; i >= 0; i--) {
var comment = items[i];
var floor = comment.floor;
var time = date_format(comment.created);
var nickName = comment.from.nickName;
var content = comment.content;
var praiseCount = comment.praiseCount || 0;
var praiseNames = '';
if(comment.praiseNames){
praiseNames = comment.praiseNames.toString();
}
var this_row = [floor, time, nickName, content, praiseCount, praiseNames];
rows.push(this_row);
if(comment.comments.length > 0){
for (var i = comment.comments.length - 1; i >= 0; i--) {
var sub_comment = comment.comments[i];
var floor = sub_comment.floor;
var time = date_format(sub_comment.created);
var nickName = sub_comment.from.nickName || '';
var content = sub_comment.content || '';
var praiseCount = sub_comment.praiseCount || 0;
var praiseNames = '';
if(comment.praiseNames){
praiseNames = comment.praiseNames.toString();
}
var this_row = [null, time, nickName, content, praiseCount, praiseNames];
rows.push(this_row);
// console.log(time);
// console.log(nickName);
// console.log(content);
// console.log(praiseNames);
// console.log(praiseCount);
};
}
};
conf.rows = rows;
var result = nodeExcel.execute(conf);
res.setHeader('Content-Type', 'application/vnd.ms-excel');
res.setHeader('Content-Disposition', 'attachment; filename=commentsReport.xlsx');
res.end(result, 'binary');
});
}
});
}else{
res.json(returnCode.WRONG_PARAM);
}
});
......@@ -32,3 +32,14 @@ exports.queryPraiseLog=function(tid,cid,user,type,callback){
}
});
};
exports.queryPraiseLogV2=function(conditions,callback){
ForumPraiseLog.find(conditions).populate('user').exec(function(err,docs){
if(err){
callback(err,null);
}else{
callback(null,docs);
}
});
};
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